"Сердце" на микроконтроллере, или подарок на 8 марта Близиться 8 марта, и это устройство может стать отличным подарком Итак основой является PIC контроллер PIC16F873. управляется устройство одной кнопкой - при нажатии на кнопку сердце включиться и начнеться исполняться программа, записаная в кристалл. При повторном нажатии кнопки эффект переключиться. При удержании кнопки устройство выключиться. Каждая пара светодиодов управляется одной линией ввода\вывода контроллера, за исключением первого, последнего светодиода и маленького сердца, оно управляется одной линией с аппаратным ШИМом. Изменяя прошивку можно добавить множество эффектов, что ограничиваеться лишь фантазией =) Меняя скважность импульсов, можно менять яркость светодиодов маленького (вложеного) серца. [Описание] Устройство выполнено на двух платах: на одной распологаеться сам Микроконтроллер, токоограничивающие резисторы и остальные детали. само сердце выполнено на другой плате, лицевая сторона которой была покрашена белой краской(баллончиком), тоесть это плата только с светодиодами. Платы одного размера (100х102мм) совмещаються через отверстия, расположеные по углам, и жестко закрепляються. Эту конструкцию желательно поместить в корпус, но на момент написания этого у меня нету материала. Корпус я планирую сделать из широких коробов для локальных сетей. Связь между платами осуществляется шлейфами. Я взял от флопешника и просто напаял на плату, однако советую тем кто вдруг загориться мыслью собрать этот девайс - делать с разъемами. Принципиальная схема Питание устройства осуществляется от четырех миинчиковых батареек, которые помещаютсья в два батарейных отсека, которые распологаются на плате. Я не стал применять стабилизатор в схеме, потомучто в этом случае напряжение питания не играет большой роли, а когда батарейки начнут садиться то микроконтроллер сможет еще работать. Рабочее напряжение Микрокотнроллера от 2в до 5В, однако это не критично, если питать его от четырех батареек по 1,5В (получаеться 6В). Для защиты от переплюсовки и снятия лишнего напряжения служит диод VD1. Если подать напряжение в схему то устройство останется в выключеном состоянии. При нажатии на кнопку SB1 ток пройдя через диод VD1, кнопку SB1, диод VD2 поступает на выводы питания микроконтроллера. Начинает выполняться программа, в результате чего выставляется высокий уровень на выводе RB6(27 ножка микросхемы) что приводит к открытию транзисторов VT2 затем VT1, и к микроконтроллеру подается питание. Также при нажатии кнопки выставляется лог.1 на выводе RB7, и во время выполнения программы идет опрос этого вывода. По приходу на него лог.1 программа переключает эффект, а при удержании кнопки программа устанавливает на выводе RB6 лог. 0, транзисторы VT2, VT1 закрываются и при отпускании кнопки SB1 устройсто обесточивается. Светодиоды - диаметр линзы 5мм, напряг питания 2,5В ,яркость чем больше тем лучше (у меня 15000 мКд), для сравнения - 1 канделл - яркость свечения свечи, тоесть 1,5 яркости свечки. L-53SRC-DV, 58 штук. [Что пригодиться при сборке и наладке] Предже всего прямые руки. Печатная плата http://l-portal.ath.cx/download.php?file=fef1f249e6f4a361d2a7a5c06bc0e01f прошивка http://l-portal.ath.cx/download.php?file=057e656b841dcb66538ba1f51485cd33 фото платы с "мозгами", обратная сторона. описание микроконтроллера на Русском языке http://l-portal.ath.cx/download.php?file=cda1ab0d70a96d6ab91c2f391f8a6439 Видео с некоторыми эффектами http://l-portal.ath.cx/download.php?file=b6c385075528a349430dd0b4cfff4317 http://l-portal.ath.cx/download.php?file=dccbe3616c37a8dded0180a596876386 Работа ШИМ [Заключение] Схема программатора, которым я шил камень взята отсюда http://pic16f84.narod.ru/ печатную плату смотреть программой Sprint - layout. вообщем все... если есть какието вопросы пишите 154488. PS спросите зачем я вкрячил кварц, когда сдесь не требуется стабилизации частоты? в этом камне нету внутреннего генератора, а мне проще было вкрячить кварц и 2 кондера чем RC цепочку. Оформлять я статьи неумею, рассказывать тоже, такчто принимайте как есть. Схемы, прошивка, разводка печатки и это убогое описание by (с)MegaDeth. Огромное спасибо Animal, подсказал мне алгоритм одной процедуры в проишвке.
Спасибо, очень интересно и познавательно. Я правда так и не понял схему включения Правду говорили, что надо учить аналоговую схемотехнику. Помню долго мы с тобой обсуждали эту тему, но у меня так руки и недошли к этому. Кстати, а насколько хватает батареек (если брать хорошие). И еще есть просьба, мож пожалуйста выложить исходники. Интересно!
Да ладно, не за что! Вот еще интересная наводка в тему к светодиодным мигалкам: я тут сейчас в одну из задач включил сдвиговые регистры 74HC595. У меня возникла необходимость подавать лог уровни на большое колличество входов (около двухсот) и я решил использовать каскадированную батарею этих регистров. От контроллера используется пять ног, а выходов получается сколько хочешь (мне 256 хватит точно). Так вот у этой микрухи есть интересный аналог STPIC6C595, заточенный специально под светодиоды. Корпус SO-16, открытый коллектор, ток до 250ма, напряжение на выходах до 33В. тут даташит: http://www.datasheetarchive.com/pdf/3256535.pdf а это включение: в паралель можно натыкать любое колличество корпусов. блин, не успеваю... завтра допишу с утра.
ну схема включения проста довольно, один транзистор управляется МК, другой этим транзистором :/ насчет батареек - мизинчиковая батарейка - 1А\час, сколько потребляет схема... во "внешнем" сердце 19 линий, на каждой ток грубо гря (5-2,5)/1000=2,5Ма... 19*2,5=47,5 Ма на внешнее сердце. но учитывая то что есть и внутренее, а ток там изменяется еще... блин чо я мучаюс попозж измерю ток... 47,5/1000 = 21 час предварительно. исходник в паблик небуду, тока тем кто действительно заинтересован =)
я тоже сначала хотел сделать на регистрах сдвиговых и взять контроллер попороще, но я просто несмог найти в магазинах в наличии нужной мне микрухи, и остановился на выборе камня с достаточно мощной для этой цели переферией. кому исходник надо пишите в асю либо ПМ
а какую микруху искал то? Я по чипу-дипу смотрел, там она около 20р. стоит. просто я ее подглядел на светодиодном табло. Состоит из нескольких листов. Там лист пимерно квадратный метр. 12х8 ячеек, в ячейке 9 светодиодов. Управляет этим табло какой-то маленький AVR и двенадцать этих регистров в соике (это в каждом листе).
спроси ченить полегче я этот проект с августа месяца задумал и переделывал по 10 раз платы аа. у мя тожи схемка есть табло светодиодов, патом отсканирую при случае. там дажи анимации оно могет воспроизводить...
немного Покритикую Без токовыравнивающих резисторов , параллельно соединять светодиоды не рекомендуется, т.к. падение напряжения (свечения) у светодиодов разное и светится они будут по-разному. Хотя, в единичном экземпляре их можно сгруппировать по яркости.
ну да это так но они все попарно соеденены, ну первый и последний :/ я чессгря впаял 2 резистора на 680ом , 10 на 1к и остальные на 820ом. разницы чота в свечении я невижу никакой :\ паял так потомучто больше под рукой небыло килоомных. Другое дело если на все светодиоды 1 резистор был бы, тогда 1 горел бы ярче чем включеные два, два горели бы ярче чем 3 итд потомучто ток резистор ограничивал бы. поэтому и пришлось столько резисторов паять....
Animal кстати, у меня сначала вообще возникла такая идея как использовать разширитель ввода\вывода, но я подумал что намучаюсь с ним и опять таки подтолкнуло взять меня мощный проц (относительно конешн) такчто если уж критиковать то это в самой "нелогичности" схемы, хотя она хорошо показывает именно работу Микроконтроллера. Однако в гугле ввел "Сердце на микроконтроллерах" - увидел продающуюся сборку Мастеркита, больше чем за полкосаря, и от этого вида "сердца" извинити чуть не сблевало :\ я уж думал начто я непутевый художник, а они это еще ПРОДАЮТ!!!
я сегодня с этим узлом расширеня буду плотно работать, так что в паралель и здесь отпишусь. Помоему для подобных "светодиодных" проектов - это отличное решение.
Animal панятно, если требуется изменить состояние на одном или нескольких выводов регистра, МК последовательно будет загружать n-разрядное число, а регистр в парарельный код переведет тогда...
вот кусок, который загружает в последовательный регистр содержимое регистра Data_Out, а затем выплевывает это на выходы. Большой плюс в том, что когда таких регистров будет штук двадцать, то пока на выходах горит одно состояние, в это время в регистры уже грузится другое, затем мгновенно состояние выходов меняется. SCK - синхронизация послед. порта (по переднему фронту считывается состояние со входа SI) SI - вход послед порта RCK - синхронизация паралел порта (по переднему фронту данные считываются из послед регистра в паралельный) G - разрешение выхода ( лог 1 - все выходы в третьем состоянии, лог 0 - на выходах данные из паралельного регистра) SCLR - сброс (лог 0 - выходы в третьем состоянии, ничего не работает, передний фронт - во всех регистрах нули) unsigned int16 Data_out; unsigned int8 Count; void main() { Initial(); output_low(Out_SCK); output_low(Out_SI); output_low(Out_RCK); output_high(Out_G); output_low(Out_SCLR); delay_ms(1); output_high(Out_SCLR); count=0; Data_Out=0b1010010001000010; do { if (bit_test(Data_Out,count)) {output_high(Out_SI);} delay_ms(1); output_high(Out_SCK); delay_ms(1); output_low(Out_SCK); output_low(Out_SI); count++; } while (count<16); output_high(Out_RCK); delay_ms(1); output_low(Out_RCK); output_low(Out_G); do {} while(1); }