Контроллер подсветки ступенек лестницы. Часть 1.
В общем, всё началось с того, что мой друг попросил меня сделать ему сей девайс. Я как раз только начинал изучать микроконтроллеры STM32, и для меня это первый настоящий проект - до этого я баловался светодиодами и кнопками, а хотелось чего-то реального, что может пригодиться.
В этот раз постараюсь описать всё по подробнее. В прошлый раз несколько пикабушников спрашивали, как подобрать параметры деталей, кто-то спрашивал о технологии изготовления платы и прочее. В общем, читайте, спрашивайте, если что не понятно.
Проект еще не закончен, буду выкладывать статьи по мере готовности проекта. На данный момент, готова и обкатана программа на макетке, готова схема, фотошаблоны для печатной платы с маской и шелкографией.
Итак, приступим. Суть работы контроллера проста. Внизу и наверху лестницы установлены датчики, которые "чувствуют", что кто-то хочет подняться по лестнице, или спуститься по ней. Тогда светодиодные ленты, расположенные под ступеньками, плавно и по очереди загораются.
Датчик внизу будет расположен где-то здесь:
Сразу скажу, фотки делал с той лестницы, на которой всё будет работать. В доме ремонт не закончен, пардон за бардак.
Датчик наверху лестницы будет здесь:
Что же представляют из себя сами датчики? Это ультразвуковые датчики, сонары, HC-SR04. Привет ардуинщикам!
Небольшое описалово. Здесь видно, что у него 4 контакта: Vcc, Trig, Echo, Gnd. К Vcc мы подключаем + питания, к Gnd -. Питается он от напряжения 5 вольт, но после подачи питания датчик на самом деле ничего не измеряет. Для чего же нужны Trig и Echo? Оказывается, на датчик сначала нужно подать импульс, на контакт Trig, а затем считать результат с контакта Echo. Давайте посмотрим на отрывок из даташита:
Здесь сказано, что нужно подать короткий импульс длительностью 10мкс на ногу Trig. Затем модуль пошлёт 8 ультразвуковых сигналов и примет эхо. А затем выдаст расстояние до объекта на ноге Echo импульсом, длительность которого будет пропорциональна расстоянию до объекта. Расстояние можно вычислить по формуле: Расстояние(см) = длительность_импульса_echo / 58. Так же, производитель рекомендует, чтобы минимальный цикл замеров составлял 60мс. В своем контроллере замер происходит 10 раз в секунду, этого вполне достаточно и цикл замеров составит 100мс. Так же, для экономии ног микроконтроллера и упрощения программы, выводы Trig можно объединить в один. Таким образом, сигналы Trig на датчики будут посылаться одновременно:
Теперь о силовой части. Светодиодные ленты, естественно, нельзя подключать напрямую к микроконтроллеру, так как одна нога микроконтроллера STM32F100x может коммутировать ток максимум 20мА, а ток для ленты может достигать чуть больше 1А на метр. Да и напряжение эти ленты требуют 12/24В (в моём случае 12В). Поэтому, нужно как-то подавать на них напряжение, не повредив микроконтроллер. Самое простое решение в данном случае - полевой транзистор! Управляется напряжением, то есть, чтобы его открыть, важно, каким напряжением его открываешь, а ток может быть ничтожным. Давайте посмотрим на схемку:
Как видите, всё довольно просто. R2 это подтяжка к минусу питания. Он нужен для того, чтобы транзистор не "ловил" помехи извне. Резистор R1 в принципе тоже нужен, хотя некоторые его не ставят. Он для защиты самого микроконтроллера. Дело в том, что "управляющий вход" полевого транзистора, или затвор, имеет свою ёмкость. Во время подачи на него управляющего напряжения эта ёмкость заряжается и немного но проводит ток. Чтобы ограничить этот ток и ставят резистор R1, дабы не спалить микроконтроллер. Хотя опять же, не все его ставят, так как ёмкость затвора очень маленькая. Номиналы резисторов - почти с потолка, тут как бы ничего критичного нет.
Давайте теперь поговорим, как выбрать транзистор для наших целей, и да, надпись IRLML2502 здесь не случайно, именно такие и будут использоваться в данном проекте. Так как подобрать нужный транзистор? Я исходил из того, что предлагает местный магазин, затем смотрел в даташиты от этих транзисторов и так подбирал. Первое, что нам интересно, это максимальное напряжение, которое способен коммутировать транзистор:
Идем ниже по даташиту, и находим максимальный ток:
Подходит. Дальше, немаловажный параметр, это напряжение, при котором транзистор откроется. Здесь смотрим график:
На нижней оси мы получим падение напряжения на стоке транзистора, то есть сколько вольт потеряется на транзисторе при коммутации тока 2, при условии, что открывать его будут напряжением 3В. Как видим, копейки, то есть можно сказать, что транзистор откроется полностью. Значит, он нам подходит. Отлично!
Ну и к завершению занудной теории схема:
И фотка ковра на фоне девайса на макетке:
Здесь я использовал всего 7 каналов, программа позволяет использовать столько, на сколько ног хватит )))
По поводу схемы сразу хотел сказать. Дело в том, что изначально составлял схему и разводил плату в Eagle CAD. Но потом, по разным причинам, решил таки пересесть на KiCAD. Конвертировал схему с платой, на первый взгляд всё нормально, но присмотрелся и пришлось вычищать мусор. Пока прилизывал схему и получилось так, что индексы элементов изменились и они не совпадают с индексами на печатке. Печатку тоже потом доделывал в KiCAD-е. Вобщем, имейте ввиду. Выложу конечно, в следующий раз, с фотошаблонами.






















