Varzinstas писал(а):mickbell
1. Про RS-485 почитаю, чуть позже щас пока со временем беда, нога 13 на УНО уже имеет встроенный диод, на Нано не смотрел... я вообще предполагал, что связь будет через внутренние средства без доп. микросхем, не зря же Мега и Дуе имеет аж 4 пары ног RX и TX...
Просто тянуть линии уарта по всему автомобилю - так делать нежелательно. Помех наловит. Интерфейс RS-485 - это всего лишь одна микросхема-восьминожка, практически без обвязки (блокировочный конденсатор по питанию - это мелочь), зато - дифференциальная пара. Настоятельно рекомендую - если не именно RS485, то всё равно что-то надо.
Varzinstas писал(а):2. Железного нет, вернее своего нет, есть на одной из работ, в самом крайнем случае можно воспользоваться эпизодически, но не удобно так, как стоит не в моём кабинете...
Возможно, когда-то потребуется. А сейчас, учитывая его отсутствие, будем для отладки ставить светодиоды, где надо будет контролировать сигналы.
Varzinstas писал(а):4. ШИМ перенёс на 9, жалюзи на 8... Попутно ряд вопросов, во всех описаниях есть несколько ног поддерживающих ШИМ, без деления на аппаратный и программный, на ногах без ШИМ также можно сделать ШИМ, но мутно и большим кол-вом программного кода... Проясните этот момент по возможности... и попутно ещё, сейчас концевик А и Б подаёт на вход 5в(лог.1) для включения, можно ли программно поменять так чтоб на входе уже висело 5в(лог.1) а включение происходило замыкание на массу (лог. 0) Проясните плиз... и последний вопрос сейчас переменные резисторы устанавливающие пороги и имитирующие датчики температуры подключены так: крайние ноги 5в и GND а средняя нога на вход, но в реальной ситуации датчик окажется между землёй и входом, не могли бы Вы набросать простенькую схемку, как мне подключить переменники по такому принципу... аааа ещё глупый вопрос: у меня есть данные соответствия определённой температуры интервалам сопротивления, усреднив значения в интервалах можно построить график, но никак не пойму, как вычислить формулу, чтоб рассчитывать сопротивление под любую температуру, и соответственно построить график точнее и главное за пределы приведённого интервала температут?
Откройте даташит на мегу8 (в нынешней ардуине она ведь стоит?), найдите раздел "16-bit Timer/Counter1", в первом же рисунке - его блок-схема. По ней видно, что выхода у таймера всего два: OCnA и OCnB (n здесь - номер таймера, в нашем случае 1). Запоминаем эту информацию. Далее лезем в самый верх даташита, где показаны ноги меги. Смотрим: OC1A выведено на ногу 15 (в DIP-корпусе), она же PB1, а OC1B - на ногу 16, она же PB2. Потом по схеме ардуины проследим, на какие пины её разъёма попали эти ноги. OC - Output Compare - это сигнал, который получается при сравнении текущего значения счётчика и регистра, в который записано некое число. Если счётчик, начав считать от нуля, ещё не досчитал до него, то этот сигнал нулевой, а если уже досчитал - то единичный вплоть до своего максимального значения (которое потом сменится на нулевое, выходной сигнал опять станет низкого уровня...) - так ШИМ и получается. То есть, кроме того как один раз при включении инициализировать этот таймер-счётчик, в ходе работы придётся только записывать число в регистр сравнения этого счётчика, когда оно меняется, а ШИМ он уже сам сгенерирует. Так что для простоты ноги рекомендую именно эти. Можно с одного таймера-счётчика иметь два канала ШИМа, независимых (но одной частоты). Нам пока это не надо, но на будущее выход, управляющий жалюзи, неплохо бы тоже взять с выхода, умеющего аппаратно ШИМить - вдруг хотелки придётся скорректировать...
Дальше. Конечники закорачивать на общий? Так и надо делать. Чтобы не схватить по линии конечника напряжение, которое убьёт вход МК, надо будет ставить защиту. Можно опторазвязку (это самое простое), можно два диода (от ноги к общему и к плюсу питания МК), небольшой конденсатор параллельно нижнему, далее последовательный резистор и к нему подтяжку (резистор) на напряжение бортсети, а конечник уже на общий... на массу, которая с общим МК соединена, как полагается, в одной точке.
Что там ещё? Переменный(е) резистор(ы), имитирующий(е) термодатчик(и), подключать так: движок и один из крайних выходов соединить вместе и с общим проводом, другой - на вход АЦП, туда же резистор номиналом 130 Ом, который другим выводом подключен к плюсу питания МК. Понятно? Если нет - потом нарисую.
О графике. Приближённо напряжение, поступающее на вход АЦП в этой схеме, можно описать так: Uadc = 5000 - 30 * T, температура здесь в градусах Цельсия (от 0 до 120 где-то), а напряжение получается в милливольтах. Но это - приближённая формула, более точную нарисовать я не могу, разброс сопротивлений слишком большой.
Varzinstas писал(а):Ещё подскажите в сторону какого оператора копать, чтоб отслеживать реальное время в милисекудах, для определения сколько времени прошло с моментра включения мотор-редуктора жалюзи до момента срабатывания концевика...
В программе будет задействован ещё один счётчик-таймер, он будет настроен таким образом, чтобы каждую миллискунду происходило какое-то событие (потом выберем, какое именно) - или переполнение, или досчёт до определённого числа. По этому событию он будет генерировать прерывание. В прерывании будут меняться значения переменных, которые считают время - скажем, каждое прерывание каждая из них увеличивается на единицу. Если мы хотим измерить какое-то время, то сначала сбрасываем переменную в ноль (как секундомер перед стартом), а когда захотим узнать, сколько прошло времени, просто посмотрим, чему равно значение этой переменной - оно каждую миллисекунду увеличивалось на единицу. Так же делаются и задержки: сначала записываем в соответствующую переменную число, а потом ждём, пока оно не обнулится - понятно, что в прерывании эта переменная, наоборот, уменьшается раз в миллисекунду.