В своих статьях о микроконтроллерах, а вернее о их работе и работе с ними, я уже не раз реализовывал несколько интересных проектов на таких "букашках" как Attiny 13. Хотя сейчас уже лучше обратиться к 85 серии, так как среда Ардуино перестала поддерживать 13 серию через программатор. Принцип тот же самый. Все их вполне можно применить для использования на машине, на что и были изначально ориентированы все замыслы и поделки.
В этот же раз речь пойдет также о весьма прагматичном, а самое главное о совершенно новом в плане реализации и алгоритме работы проекте, о работе микроконтроллера в режиме АЦП. Сейчас я буквально пару слов расскажу о том, что же такое АЦП и как я его собрался применять. ...и да, конечно же для чего я его собрался применять.
АЦП как аббревиатура расшифровывается как аналогово - цифровой преобразователь. По факту это возможность цифрового устройства работать с аналоговыми сигналами и реагировать на их изменение путем явного переключения сигнала уже в цифровом виде. В качестве примера можно привести работу всех современных музыкальных центров и систем, когда из аналогового сигнала, которым является сигнал звука, с изменяющимся уровнем, мы получаем запись в цифре в виде уже набора, если хотите массива цифровых сигналов, записанных на карту памяти или CD диск. Принцип я думаю понятен, но в моем случае все будет немного проще!
Я решил применить режим работы с аналоговым сигналом (analogRead), для того, чтобы отслеживать аналоговый сигнал бортовой сети автомобиля, еще точнее ее напряжения. Так как бортовое напряжение незначительно меняется при заведенном двигателе, как правило повышается, то такое изменение как раз и будет свидетельствовать о том, что двигатель завели. (можно использовать для ДХО, что и делают автопроизводители) Если скажем при заглушенном двигателе напряжение в сети порядка 12,2 вольт, то при заведенном 12,6 и доходит в некоторых случаях до 13 - 14 вольт. Итак, с критериями разобрались, переходим к содержанию статьи!
1. Алгоритм работы устройства
2. Схема и плата
3. Видео по теме
4. Вопросы и заказ устройства
В моем случае реализация незатейливая.
Алгоритм работы будет следующий:
- измеряем опорное напряжение сразу после подачи питания - разово,
(измерения записываются в 1 массив - 5 раз, чтобы усреднить показатель и повысить точность);
- начинаем измерять напряжения бортовой сети постоянно - циклично;
(измерения записываются во 2 массив - 5 раз, чтобы усреднить показатель и повысить точность);
- сравниваем средние значения массива 1 и 2;
- если значение в массиве 2 выше, чем в массиве 1 на заданную величину, то наш двигатель заведен;
- включаем нашу нагрузку по предшествующему критерию (разница ср. значения массива 1 и 2).
С задачами определились, теперь подумаем о реализации.
Схема устройства включения нагрузки при заведенном двигателе
Давайте взглянем на схему. Здесь как мне кажется все весьма аскетично, то есть минимум того, что вообще должно быть. однако вкратце все же надо сказать пару слов для тех, кто не в теме.
У нас есть напряжение питания на штекере j1, с этого же коннектора будет сниматься и опорное напряжение через согласующие резисторы R1, R2 для ножки 2 микроконтроллера. Выходу управляющего напряжения появляется на ножке 6 и идет сигнал на силовой ключ, опять же через согласующие элементы. Питание и его стабильность обеспечивается стабилизатором напряжения LM 7805 и конденсатором С1.
Теперь о материальной базе проекта.
Применяемые радиоэлементы
Наименование | Обозначение на схеме | Номинал | Кол-во | Примечание |
Резистор | R1, R5 | 10 кОм | 4 | 1206 корпус |
Резистор | R3 | 330 Ом | 2 | 1206 корпус |
Транзистор | Q1 | PD3055LD или 2SK3918 | 2 | TO-252 |
Микроконтроллер | u1 | Attiny 13 | 1 | 13 или 45 или 85 |
Конденсатор | с1 | 100мкФ*30v | 1 | |
Стабилизатор | lm | LM7805 | 1 | TO-252 |
Сама схема открывается в программе TinyCAD и может быть в ней же отредактирована.
Теперь перехожу к плате.
Плата устройства АЦП на микроконтроллере для ДХО
Сама плата является средством коммутации всех радиоэлементов по схеме приведенной выше, детали я уже привел в таблице. Поэтому здесь особо рассказывать нечего, разве сказать о том, что плата не идеально подходит к данному проекту, (два ключа - транзистора, используется только один) но она у меня универсальная... Сам проект платы можно скачать и открывается он в программе FreePCB. А вот если вы захотите заказать такую плату в Китае, обычно это от 5 штук, то вам понадобятся слои платы, сгенерированные в этой же программе.
* - обратите внимание, что на плате силовые цепи по площади сечения увеличены за счет дублирующих дорожек с одной и второй стороны платы.
В принципе плата справляется со своими обязанностями на все сто! Давайте дальше!
Скетч для включение нагрузки при заведенном двигателе (АЦП) (для ДХО)
Теперь приступаем к творческому процессу, ибо любое написание программы схоже с написанием повести писателем или картины художником. Кто-то акцентирует внимание на одном, кто-то на другом, все это весьма любопытно и является отражением идеи "я так вижу".
Здесь по моей задумке дела обстоят так:
Назначение | Физическая ножка | Программная ножка | Примеч. |
Вход 1 (in) | 2 | 3 | Вход |
Выход 1 (out) | 6 | 1 | Через транзистор |
Теперь пишем скетч под эти условия. Сам скетч написан для среды Arduino, то есть подразумевается, что и заливаться он будет через Ардуинку.
Для этого надо:
- подключить Ардуинку к компьютеру;
- «залить» платы нужного нам микроконтроллера;
- залить САМ СКЕТЧ.
Собственно здесь комментировать нечего, каждая из «ступеней» освоения и выполнения проекта имеет свою отдельную специализированную статью, а скетч приведен в отдельном файле.
Теперь немного о том, как же все это будет работать.
Общий принцип (алгоритм) работы схемы и скетча (АЦП для включения ДХО на микроконтроллере)
В принципе об алгоритме я уже говорил, но еще раз, дабы уж точно без пробелов в понимании, что и как работает. При включении зажигания мы одновременно получаем напряжение для питания устройства и для снятия сигнала. В первые микросекунды происходит снятие напряжения в бортовой сети, чтобы принять его за опорное. После поворота ключа, наше напряжение незначительно повышается, само собой устройство уже получит и повышенное напряжение на контрольную ножку микроконтроллера, она у нас 2 физическая. Микроконтроллер сравнит первоначальное напряжение с повышенным и сделает заключение о том, что двигатель заведен. В итоге нагрузку включится путем открытия силового транзистора. Вот и все кино!
Видео об устройстве АЦП на микроконтроллере для ДХО (включение нагрузки при заведенном двигателе)
Теперь приведу видео, чтобы у вас все еще раз уложилось в голове, как все реализовано и как это все работает.
Заказать устройство АЦП на микроконтроллере для включения ДХО при заведенном двигателе
Если вас интересует нечто подобное, то напишите в комментариях об этом. Проекты к сожалению не особо популярны, поэтому наверняка обещать что-то подобное в железе не буду, хотя это тоже возможно, но советом помогу.
Второе, если надо получить другой уровень для срабатывания, то меняем строку suml > 55, где ставим вместо 55 более высокое значение