вторник, 2 октября 2012 г.


Мастерим светодиодный светильник - часть II

Описание процесса изготовления управляющего устройства

    В этой заметке я поясню процесс создания устройства управления светодиодной лампой. Из функций сейчас реализованы часы, термометр на 1 или 2 датчика, приём команд от компьютера, отсылка данных о температурах и текущем времени на него и выставление указанной в команде яркости. В сочетании с небольшой настройкой компьютера это даёт возможность автоматического управления яркостью по расписанию.


    Предполагается, что читатель имеет хотя бы начальные сведения о микроконтроллерах семейства AtMega. Умение писать прошивки не обязательно - ниже выложен файл со схемой и прошивкой, однако умения паять и "прошивать" контроллер необходимы (если Вы не уверены в своих знаниях - советую посетить хороший сайт-самоучитель - http://avr123.nm.ru/) . Так же Вам потребуется программатор, или знакомый, который "прошьёт" контроллер. Из программных средств обязательно нужна среда программирования - CodeVision AVR, с помощью неё будет производится загрузка прошивки в контроллер, и желателен симулятор Proteus для обкатки модели ещё до сборки и лучшего понимания схемы.   
    Для начала, нагуглите и скачайте CodeVision и, желательно, Proteus. Потом - скачайте архив "LED-device.rar", который идёт приложением к странице. Архив содержит собранную в симуляторе схему, работу которой можно в симуляторе же и попробовать, версии схемы в bmp и pdf форматах (для просмотра, если нет симулятора) и проект CodeVision с исходными кодами прошивки. 
    После того, как с программами всё станет более-менее ясно, можно приступать к сборке устройства. В моём случае устройство делалось в единственном экземпляре на макетной плате, использовался контроллер в корпусе TQFP. Такой корпус компактен, но его несколько сложнее паять. Если у Вас небольшой опыт - лучше воспользоваться контроллером в DIP-корпусе. Внешний вид контроллера AtMega32, пустой макетной платы, микросхемы MAX232(для связи с COM-портом), а так же датчика температуры DS18B20+ приведены на фотографиях ниже: 

Пустая макетная плата

Контроллер в корпусе типа DIP

Контроллер в корпусе типа TQFP

Он же на макетной плате

Микросхема MAX232(преобразователь TTL-COM)

Температурный датчик DS18B20+

    Если Вы решили использовать корпус TQFP, то для его удобной и лёгкой пайки можно воспользоваться феном - для этого контроллер располагается точно над дорожками макетной платы, "прихватывается" паяльником за крайние выводы по всем четырём сторонам и аккуратно нагревается температурой 250-300 градусов в течение 3-4 секунд. После каждого "захода" полезно сделать паузу где-то на 30 секунд, чтобы не перегреть кристалл. Можно обойтись и без фена, в таком случае следует двигать жало паяльника от корпуса контроллера к концу выводов строго параллельно выводам, паяльник при этом должен быть чистым от припоя. Сложность в том, что можно сдвинуть контроллер или закоротить выводы между собой припоем. После распайки контроллера распаяйте раъёмы дисплея(по схеме) и программирования, если контроллер будет программироваться уже в плате, или если хочется иметь возможность обновлять прошивку после изготовления. Про разъём программирования почитать можно тут: http://proavr.narod.ru/07.htm . Соединение с дисплеем можно сделать неразъёмным, но это будет не так удобно. Разъёмы можно использовать от отслуживших своё материнских плат. Там же можно взять конденсаторы, полевые транзисторы и много других вкусностей. Если у Вас возникают вопросы о том, куда что припаивать, т.е. вопросы по цоколёвке контроллера -  посмотрите описание на него (datasheet) - http://www.atmel.com/atmel/acrobat/doc2503.pdf. Вообще, описания в виде pdf файлов есть практически на каждый импортный радиоэлемент, гуглите! При использовании макетной платы элементы можно соединить проводками, для этого хорошо подходят старые floppy или IDE шлейфы. В моём случае получилось так:
    На фото выше можно наблюдать распаяный микроконтроллер. Серебристый бочёнок слева -резонатор для тактирования контроллера. Можно пользоваться внутренним RC-осциллятором для тактирования, но тогда точность хода часов будет никакой. Со внешним резонатором ошибка будет порядка 2 секунд в сутки, что вполне приемлемо, учитывая коррекцию времени от компьютера один раз в сутки.
    Резисторы снизу с одной стороны подключены к выходам ШИМ контроллера, с другой стороны к затворам полевых транзисторов, коммутирующих ток светодиодов. Номинал резисторов 1,5К. В моём случае плата управления и блок диодов разнесены далеко, для соединения использован кабель типа "витая пара". Резисторы нужны с целью защитить контроллер от возможного замыкания в нагрузке. Разнесение блока управления и излучателей даёт возможность со временем собрать ещё блоки излучателей и подключить их к этому же контроллеру, тем самым легко нарастив мощность и яркость освещения. 

Вид на центральную часть платы
В центральной части платы располагаются - сглаживающий конденсатор питания (большой), один из конденсаторов в цепи преобразования MAX232(маленький), термодатчик внутренней температуры и резистор подтяжки датчиков. Разъём с подписью HDD LED используется для подключения наружного(уличного) датчика температуры.
В левой части платы - микросхема MAX232. Её назначение состоит в том, чтобы согласовывать уровни напряжения на приёмопередатчике микроконтроллера (TTL уровни 0..+5 Вольт) с уровнями напряжения в COM-порту (-10...+10 Вольт). Если Вы используете "настоящий" COM, либо преобразователь интерфейсов USB-COM, то она нужна. Микросхему я добавил в последний момент, и в схеме симулятора её нет. Если Вам нужна схема соединения, воспользуйтесь гуглокартинками по тегу "atmega32 max232", или посмотрите datasheet на MAX232 (можно взять тут http://focus.ti.com/lit/ds/symlink/max232.pdf).

В конечном итоге получаем плату такого вида: 
До убирания платы в аккуратный корпус у меня, к сожалению, пока руки не дошли...

Пара слов о подключении диодов к контроллеру. Общий плюс диодной сборки подключаем к источнику питания +5 В, минусы каналов - подключаем к минусу источника питания последовательно с ключевыми полевыми транзисторами. Подойдут транзисторы от старых материнских плат. Минусы источника питания и контроллера в любом случае нужно соединить вместе, а выводы ШИМ с контроллера - подать на затворы полевых транзисторов. Так же полезно соединить затворы с минусом источника питания через высокоомное сопротивление (порядка 100 кОм), чтобы при обрыве сигнального провода транзисторы закрылись, а не остались в промежуточном положении(в нормальном режиме работы транзисторы бОльшую часть времени проводят или в закрытом состоянии, когда тока через них нет, и тепло не выделяется, или в открытом, когда их сопротивление стремится к нулю, и выделение тепла невелико. В случае, если транзистор окажется в промежуточном состоянии (обрыв затворной цепи, например) - выделение тепла будет значительным и это может привести к его повреждению).



После сборки и подключения можно управлять светом с компьютера. Я использую для этого cron, вот такие записи следует добавить в /etc/crontab: 
0 0    * * *    root    echo "H00M00" > /dev/ttyUSB0
59 22   * * *   root    echo "R05G05B03" > /dev/ttyUSB0
20 5  * * *     root    echo "R15G15B10" > /dev/ttyUSB0
30 5  * * *     root    echo "R30G30B10" > /dev/ttyUSB0
45 5   * * *    root    echo "R50G50B10" > /dev/ttyUSB0
50 5  * * *     root    echo "R60G60B10" > /dev/ttyUSB0
51 5   * * *    root    echo "R65G65B10" > /dev/ttyUSB0
52 5   * * *    root    echo "R70G70B10" > /dev/ttyUSB0
54 5   * * *    root    echo "R75G75B10" > /dev/ttyUSB0
56 5   * * *    root    echo "R80G80B10" > /dev/ttyUSB0
58 5   * * *    root    echo "R85G85B10" > /dev/ttyUSB0
05 6   * * *    root    echo "R99G99B30" > /dev/ttyUSB0                                           
00 6   * * *    root    echo "R99G99B15" > /dev/ttyUSB0                                           
59 8   * * *    root    echo "R50G99B15" > /dev/ttyUSB0                                           
59 10  * * *    root    echo "R15G30B05" > /dev/ttyUSB0                                           
59 19  * * *    root    echo "R40G99B25" > /dev/ttyUSB0  

Первая строка здесь отвечает за синхронизацию времени в контроллере и на компьютере, остальные - задают яркость свечения каналов по времени. При начальной загрузке следует выполнять команду stty -F /dev/ttyUSB0 4800, для того, чтобы установить скорость порта.

Данное устройство способно на большее, чем просто управлять светом. При наличии соответствующего софта на компьютере, возможно на определённые внешние факторы вырабатывать управляющее воздействие. Например, на понижение температуры в помещении можно реагировать включением нагревателей. Если вместо полевых транзисторов на выходе использовать твёрдотельные реле или контакторы, то можно коммутировать и силовую нагрузку, рассчитаную 220 или 380 Вольт. Сфера применения ограничивается только Вашим воображением.
Вообще, в идеале, хотелось бы создать некий мост между компьютером и обычными бытовыми устройствами, что, в конечном итоге, откроет возможность создания дешёвой и эффективной системы "умный дом".

И само устройство, и данное руководство ещё очень "сырые". Если Вы прочитали это, и Вам что-то непонятно, есть какие-то мысли, дополнения - пожалуйста, оставьте свой комментарий. 

Комментариев нет:

Отправить комментарий