Съдържание:

Проектиране на многоузлова LED PWM лампа: 6 стъпки (със снимки)
Проектиране на многоузлова LED PWM лампа: 6 стъпки (със снимки)

Видео: Проектиране на многоузлова LED PWM лампа: 6 стъпки (със снимки)

Видео: Проектиране на многоузлова LED PWM лампа: 6 стъпки (със снимки)
Видео: Проектиране на холна маса с Google SketchUp 2024, Ноември
Anonim
Проектиране на многоузлова LED PWM лампа
Проектиране на многоузлова LED PWM лампа

Тази инструкция ще покаже как проектирах контролер за LED PWM лампа. Няколко лампи могат да бъдат нанизани заедно, за да направят големи струни светлина. Създаването на някои мигащи LED светлини за Коледа винаги е било в моя списък с желания. Миналия коледен сезон наистина започнах да мисля за изграждане на нещо. Първата ми мисъл беше, че всяка LED лампа може просто да бъде свързана към чифт проводници. Захранването на LED лампите може да бъде променлив сигнал, който да премине от ниска до висока честота. Вграден във всяка лампа лентов филтър ще включва светодиода, когато честотата съвпада с централната честота на лентовия филтър. Ако лентовите филтри са били правилно настроени, може да се направи последователност от LED преследване. Наистина, чрез прескачане на различни честоти вместо преместване, всеки един от светодиодите може да се включи. Използването на чип на драйвера на H -Bridge, задвижването на желаната честота надолу по проводниците не трябва да бъде прекалено трудно. След няколко теста, бързо се отказах от използването на аналогов. Това, което наистина исках, беше LED лампа, която можеше да бъде напълно контролирана, за да показва всеки цвят, който искам. О, и той трябва да може да използва PWM (широчинно -импулсна модулация), така че светодиодите да могат да бъдат включени или изключени в наистина готини модели. това изпадна от желанието ми за светлини за коледно дърво. Разгледайте бързо видеото по -долу, за да видите бързо какво може да покаже контролерът за лампи на Kemper LED PWM. Обърнете внимание, че е трудно да се получи добро видео на светодиоди в действие, които използват ШИМ за контрол на интензивността. Същият проблем е и при опит за видеозапис на компютърен монитор. 60Hz на светодиодите влизат в битка с честота на биене с 30Hz на видеокамерата. Следователно, въпреки че има моменти, в които видеото на светодиодите е малко „блъскащо“, това всъщност не е така. Изглежда, че светодиодите нямат проблеми, когато се гледат от човешкото око. Вижте стъпката на софтуера по -долу за повече дискусия относно подслушването на видео светодиоди.

Стъпка 1: Цели за проектиране

Дизайнерски цели
Дизайнерски цели

След като прекарах коледните ваканции, обмисляйки този проект, измислих списък с желания. Ето някои от функциите (подредени по ред), които исках с моя LED контролер: 1) Всяка LED лампа трябва да е възможно най -евтина. Низ от 100 лампи ще струва куп, ако всяка лампа струва много. Следователно цената е основен фактор. 2) Всяка лампа ще има миниатюрен микро борд, който ще задвижва светодиодите. Малкият микро ще генерира ШИМ сигнали, така че светодиодите да могат да бъдат затъмнени или избледнели. Светодиодите могат да изглеждат груби, когато са просто включени и изключени. Използвайки PWM сигнали, светодиодите могат да се избледняват нагоре и надолу, без твърдите ръбове да са нормални за светодиодите. 3) За да се поддържа лесното окабеляване, всяка лампа ще приема команди, използващи двупроводен интерфейс. Захранването и комуникациите ще споделят същите два проводника. Командите към лампите ще кажат на микрофона на борда кой от светодиодите да се управлява с PWM.4) Трябва да изглежда страхотно! Предполагам, че това наистина трябва да бъде преномерирано, така че да е номер едно. Ето някои от второстепенните дизайнерски цели (без конкретна поръчка): 1) За разработка трябва да е лесно да се препрограмира / препрограмира във веригата. 2) Компютърът трябва да може да генерирайте командите към лампите. Това прави разработването на модели много по -лесно, отколкото използването на друг вграден микро.3) Всяка лампа трябва да има уникален адрес. Всеки светодиод, в рамките на една лампа, също трябва да бъде уникално адресиран. 4) Командният протокол трябва да поддържа МНОГО лампи на един низ от проводници. Настоящият дизайн поддържа 128 лампи на един низ. С 4 светодиода на лампа, който работи до 512 светодиода на един низ от два проводника! Също така имайте предвид, че всеки от тези 512 светодиода има пълен ШИМ, който го управлява.5) Протоколът трябва да има команда, която казва: "Започнете да избледнявате светодиода от това ниво до това ниво". След като избледняването започне, други светодиоди също могат да бъдат настроени и настроени да избледняват на същата лампа. С други думи, настройте светодиода в избледняващ модел и след това го забравете, знаейки, че светодиодът ще изпълни командата. Това предполага многозадачен софтуер на микро! 6) Трябва да има глобални команди, които засягат всички лампи едновременно. Следователно, всички светодиоди могат да бъдат командвани само с една команда. Ето някои наистина незначителни дизайнерски цели (отново няма конкретна поръчка): 1) Нуждаете се от начин да получите сигнал за лампата, когато възникне комуникационна грешка. Това ще позволи повторно изпращане на командата. 2) Командният протокол се нуждае от начин да има фантастичен модел на глобално съвпадение. Това би позволило всеки x брой лампи да бъде избран с една команда. Това би улеснило създаването на модели за преследване с голям брой лампи. Като пример това би позволило да се изпрати команда до всяка трета лампа на низ от лампи. След това следващата команда може да бъде изпратена до следващата група от трима. 3) Логическата система за автоматично откриване на полярност на комуникацията също би била чудесна. След това полярността на двата захранващи проводника към LED лампите става без значение. Вижте хардуерния раздел за повече информация за тази функция.

Стъпка 2: Прототипиране:

Прототипиране
Прототипиране
Прототипиране
Прототипиране
Прототипиране
Прототипиране

Сега е началото на януари и тръгвам. Намерих 10F206 в Digikey и е наистина евтин! И така, завъртя прото платка, за да държи 10F206 микро от Microchip. Проектирах бърза дъска, защото 10F2xx не се предлага в DIP пакет. В крайна сметка, не исках да се занимавам с малкия чип. (Бях толкова уверен през януари) Аз също отидох и си купих нов CSS C компилатор, насочен към микрофоните 10F2xx. Фамилията чипове 10F2xx е наистина евтина! С големи надежди се потопих и започнах да пиша много код. 10F206 има огромни 24 байта RAM - чипът също така разполага с 512 байта флаш и един осембитов таймер. Докато ресурсите са оскъдни, цената е добра на 41 цента в големи количества. Боже мой, милион инструкции в секунда (1 MIPS) за 41 цента! Просто обичам закона на Мур. Евън на еднократни цени, 10F206 от Digikey е на цена от 66 цента. Прекарах доста време в работа с 10F206. По време на работа с 10F206 открих, че многозадачността е абсолютно необходима. Изходните сигнали на ШИМ ТРЯБВА да се актуализират дори при получаване на нови комуникационни съобщения. Всяко прекъсване при актуализирането на ШИМ сигналите ще се разглежда като проблеми на светодиодите. Човешкото око е наистина добро за виждане на проблеми. Има няколко фундаментални проблема с чипа 10F206. Поне фундаментални проблеми за моето приложение. Първият проблем е, че няма прекъсвания! Улавянето на началото на нови комуникации с помощта на анкета за допитване води до грешки в времето. Втори проблем е, че има само един таймер. Просто не можах да намеря начин да получавам команди, като същевременно поддържам ШИМ изходите. Светодиодите ще грешат всеки път, когато се получава нова команда. Споделянето на таймера между получаване на команди и задвижване на ШИМ изходите също беше сериозен софтуерен проблем. Не можах да нулирам таймера, докато получавам нов символ, тъй като таймерът се използваше и за контрол на PWM сигналите. Докато работех с 10F206, видях статия в Circuit Cellar за новия малък MC9RS08KA1 micro на Freescale. Обичам чиповете Freescale - голям фен съм на тяхното отстраняване на грешки в BDM. В миналото използвах много чипове Star12 (написах целия софтуер за ултразвуковата система GM Cadillac & Lacern на Star12 - моят ултразвуков софтуер сега се произвежда на тези две коли). Така че наистина се надявах новите им малки чипове да са добри. Цената също е правилна, Digikey има тези чипове на 38 цента в голямо количество. Freescale беше добър и ми изпрати няколко безплатни мостри. Чипът Freescale 9RS08 обаче изглеждаше наистина глупав - не можах да постигна голям напредък с него. Чипът също страда с липса на прекъсвания и само с един таймер. О, добре, поне разбрах, че всичко това, без да губя пари за завъртане на друга прото дъска. Вижте снимки по -долу. Сега знам - за моето приложение трябва да има прекъсвания и повече от един таймер. Обратно към Microchip, намерих чипа 12F609. Има прекъсвания и два таймера. Той също така има 1K флаш и 64 байта RAM. Недостатък е цената; Digikey изброява тези чипове на 76 цента в голямо количество. О, добре, законът на Мур скоро ще се погрижи за това. От друга страна, 12F609 може да се поръча и в DIP пакети. От минусите, трябваше да купя компилатор от следващо ниво нагоре - това ми изгори @#$%&.Сега е април и научих много за това, което няма да работи. Завъртях дъска и пропилях пари за компилатор, който не ми трябва. Въпреки това, досегашното тестване е окуражаващо. С новия компилатор и 12F209 чипове в DIP пакети тестването на ниво на ниво премина бързо. Тестването потвърди, че имам правилния чип. Време е да завъртите още една прото дъска! До този момент съм решен.

Стъпка 3: 12F609 Board за развитие

12F609 Борд за развитие
12F609 Борд за развитие
12F609 Борд за развитие
12F609 Борд за развитие
12F609 Борд за развитие
12F609 Борд за развитие
12F609 Борд за развитие
12F609 Борд за развитие

Добре, ново тестване извън скамейката, готов съм да опитам друго завъртане на борда. В този дизайн на дъската наистина исках да опитам идеята за изпращане на захранване и комуникация през същите два проводника. Ако комуникационните грешки бяха игнорирани, ще са необходими само два проводника. Това е просто надолу, страхотно! Докато изпращането на комуникации през захранващите проводници е хладно, това не се изисква. Всички лампи могат да бъдат свързани по един комуникационен кабел, ако желаете. Това би означавало, че всяка лампа ще изисква три проводника с четвърти по избор проводник за състоянието на обратната връзка. Вижте диаграмата по-долу. Захранването и комуникацията могат да се комбинират с помощта на прост H-Bridge. H-Bridge може да задвижва големи токове без никакви проблеми. Много светодиоди с голям ток могат да бъдат нанизани заедно само на два проводника. Полярността на DC захранването към лампите може да се превключи много бързо с H-Bridge. Така че всяка лампа използва мост с пълна вълна, за да коригира превключването на DC обратно в нормална DC мощност. Един от микро пиновете се свързва към суровото входящо превключващо DC захранване, така че комуникационният сигнал може да бъде открит. Резистор за ограничаване на тока защитава цифровия вход на микро. Вътре в микро входния щифт, необработеното превключващо DC напрежение се захваща с помощта на вътрешните лагери на микрото - превключващият DC се захваща (от нула до Vcc волта) от тези диоди. Мостът с пълна вълна, който коригира входящата мощност, генерира две диодни капки. Двата диодни падания от моста просто се преодоляват чрез регулиране на захранващото напрежение на H-Bridge. Шест волтово напрежение на H-Bridge осигурява приятно петволтово захранване на микро. След това се използват отделни ограничаващи резистори за подрязване на тока през всеки светодиод. Тази схема за захранване / комуникация изглежда работи много добре. Исках също да опитам да добавя транзисторни изходи между микро и светодиодите. По време на тестване на стенд, ако 12F609 бъде натиснат до твърд (прекалено много ток в изходната му пътека), той ще трепти всички изходи. Максималният ток за целия чип според листа с данни, който 12F609 може да поддържа, е общо 90mA. Е, това няма да работи! Може би ще ми трябва много повече ток от това. Добавянето на транзистори ми дава възможност за 100mA на светодиод. Диодният мост е оценен на 400mA, така че 100mA на LED способност просто пасва. Има недостатък; транзисторите струват по 10 цента, всеки. Поне транзисторите, които избрах, имат вградени резистори - номерът на частта на Digikey е MMUN2211LT1OSCT -ND. С поставените транзистори НЯМА трептене на светодиодите. За производствени лампи мисля, че транзисторите няма да са необходими, ако се използват "нормални" 20mA светодиоди. Разработената платка, проектирана в тази стъпка, е само за тестване и разработка. Дъската може да бъде много по -малка, ако се използват по -малки резистори. Елиминирането на транзисторите също би спестило куп пространство на платката. Входният програмен порт може да бъде премахнат и за производствени платки. Основната точка на борда за разработка е само да се докаже схемата за захранване/комуникация. Всъщност, след като получих дъските, открих, че има проблем с оформлението на дъската. Мостът с пълна вълна има глупав извод. Трябваше да изрежа две следи и да добавя две джъмперни проводници в долната част на всяка дъска. В допълнение, следите от светодиодите и конектора са твърде тънки. О, живей и се учи. Няма да бъда за първи път заблуден с ново оформление на таблото. Имах осем дъски, направени с помощта на BatchPCB. Имат най -добрите цени, но са много страшни. Връщането на дъските отнема седмици. И все пак, ако цената ви е чувствителна, BatchPCB е единственият начин да отидете. Все пак ще се върна към AP Circuits - те са супер бързи. Просто ми се иска да имат по -евтин начин да изпратят дъските извън Канада. AP Circuits ми дава 25 долара за доставка за всяка поръчка. Това боли, ако купувам само дъски на стойност 75 долара. Отне ми два дни да запоя осемте малки дъски. Отне още един ден, за да разбера, че издърпващият резистор R6 (виж схемата) ми се бърка. Предполагам, че резисторът R6 просто не е необходим. Бях притеснен, след като прочетох листа с данни и той показа, че няма вътрешни микро издърпвания на този входен щифт. В моя дизайн щифтът се задвижва активно през цялото време, така че издърпване в действителност не е необходимо. За да изпращам команди до дъската, използвах прости съобщения с 9600 бода от програма на Python. Суровият RS232, излизащ от компютъра, се преобразува в TTL с помощта на чип MAX232. RS232 TTL сигналът отива към контролния вход на H-Bridge. RS232 TTL също преминава през инверторен порт в чип 74HC04. Инвертираният RS232 след това отива към другия вход за управление на H-Bridge. Така че, без RS232 трафик, H-Bridge извежда 6 волта. За всеки бит на RS232, H -Bridge обръща полярността до -6 волта, докато трае битът RS232. Вижте снимките на блоковата диаграма по -долу. Приложена е и програмата Python. За светодиодите купих куп от https://besthongkong.com. Те имаха ярки 120 градусови светодиоди в червено/зелено/синьо/бяло. Не забравяйте, че светодиодите, които използвах, са само за тестване. Купих по 100 от всеки цвят. Ето цифрите за светодиодите, които използвах: Син: 350mcd / 18 цента / 3.32V @ 20mAG Екран: 1500mcd / 22 цента / 3.06V @ 20mA Бял: 1500mcd / 25 цента / 3.55V @ 20mARed: 350mcd / 17 цента / 2.00V @ 20mAИзползвайки тези четири светодиода за запълване на лампата, те струват колкото микро на 82 цента! Аууу.

Стъпка 4: Софтуер

Софтуер
Софтуер
Софтуер
Софтуер
Софтуер
Софтуер

Софтуерът наистина прави този проект отметка! Изходният код в 12F609 е наистина сложен. Използвам последно място в паметта! Всичките 64 байта са консумирани от моя код. Останаха ми огромни 32 байта флаш като резервни. Така че, използвам 100% от RAM и 97% от флаш паметта. Удивително е обаче колко функционалност получавате за цялата тази сложност. Съобщението към всяка лампа се архивира чрез изпращане на осем-байтови пакети данни. Всеки пакет данни завършва с контролна сума - така че наистина има седем байта данни плюс последна контролна сума. При 9600 бода за пристигането на един пакет данни са необходими малко над 8 милисекунди. Номерът е да изпълнявате много задачи едновременно, докато пакетът от байтове пристига. Ако някой от светодиодите е активен с PWM сигнал, изходният ШИМ трябва да се актуализира дори при получаване на нови пакетни байтове. Това е трикът. Отне ми седмици и седмици, за да реша това. Прекарах огромно количество време в работа с моя Logiport LSA, опитвайки се да следвам всеки бит. Това е един от най -сложните кодове, които съм писал. Това е така, защото микрото е толкова ограничено. На микроси, които са по -мощни, е лесно да се напише разхлабен/лесен код и да се извърши бързото микроразкъсване, без да се оплаквате. С 12F609 всеки разхлабен код ви струва много. Целият изходен код на микро е написан на C, с изключение на рутинната услуга за прекъсване. Защо имате такива големи пакети данни, може да попитате. Е, защото искаме светодиодите да се скачат нагоре и надолу по собствено желание. След като профилът на рампата е зареден, светодиодът може да изгасне и да започне да се увеличава, дори когато получава нови команди за друг светодиод. Всяка лампа трябва да приема и декодира целия трафик на пакети данни, дори ако пакетът не е предназначен за него. LED профил се състои от начално ниво, време на начален престой, скорост на рампа, най -високо ниво, най -високо време на престой, скорост на рамп, най -ниско ниво. Вижте приложената диаграма. Уау, това е много за един светодиод. Сега умножете това по броя на светодиодите. Става твърде много - успях да проследя само три светодиода с пълни профили на рампата. Четвъртият (бял светодиод на таблото за разработчици) има само рампа от/до възможност. Това е компромис. Вижте приложената снимка на профил на рампата. ШИМ сигналът се генерира от таймер, който работи с 64uS на отметка. Осембитовият таймер се преобръща на всеки 16.38mS. Това означава, че PWM сигналът работи на 61.04Hz. Това не е добре за подслушване на видео! И така, използвах софтуерен трик и скочих няколко допълнителни броя в таймера, за да го разтягам до 60Hz. Това прави подслушването на видеото да изглежда много по-добре. При всяко преобръщане на PWM таймера (16.67mS) актуализирам профила (ите) на рампата. Следователно, всяка отметка за рампа/престой е 1/60 от секундата или 60Hz. Най -дългият сегмент на профила (като се използва броене 255) ще продължи 4.25 секунди, а най -краткият (използвайки брой 1) трае 17ms. Това дава добър диапазон за работа в рамките на. Разгледайте приложената снимка от логическия анализатор. За да видите наистина детайлите на снимката, отворете снимката в режим на висока разделителна способност. Това отнема няколко допълнителни кликвания върху инструктирания уеб сайт. Има и чертеж на профил, показан по -долу. Документирането на командния протокол е в моя списък с задачи. Планирам да напиша тип документ с лист с данни, който да опиша напълно в протокола. Започнах лист с данни за чипа - предварителната версия вече е на моя уеб сайт.

Стъпка 5: Потенциални приложения

Потенциални приложения
Потенциални приложения
Потенциални приложения
Потенциални приложения

Светлинка на коледното дърво: Разбира се, мисля, че едно дърво, изпълнено с тези бебета, би било просто страхотно. Мога да си представя хубав топъл блясък на зелени светлини с лек сняг, падащ през дървото. Може би бавно избледняване от зелено до червено с случаен падащ сняг. Светлините на Chaser, които правят спираловиден спирален модел нагоре и надолу по дървото, също биха били чисти. Най -грубо, ще паркирам това дърво в двора и ще подлудя съседския „Джоунс“. Опитайте се да победите това! Акцентно осветление: Всичко, което се нуждае от акцентно осветление, е мишена за тези лампи. Зет ми иска да ги сложи на дъното на аквариума си. Един приятел иска да акцентира върху неговия двигател с горещи пръти - тропането по педала на газта ще засили червена светкавица. Аз също обмислях да направя една от тези с моите лампи: https://www.instructables.com/id/LED_Paper_Craft_Lamps/ Биха направили страхотен проект за Cub Scouts. Седем лампи могат да бъдат сгънати в седем сегментен LED модел. Може да се направи огромен дисплей - би бил чудесен дисплей за обратно броене за нови години! Или може би дисплей, който да показва борсата - червени цифри в лоши дни и зелени в добри. Може би голям дисплей, показващ външна температура. 3D Grid С окачването и подреждането на низ от светодиоди, лесно може да се създаде 3D мрежа от светодиоди. Има някои готини примери за 3D LED масиви в YouTube. Съществуващите примери, които съм виждал обаче, изглеждат малки и болезнени за свързване. Може би голяма 3D мрежа в двора по време на Коледа. Plug-In на WinAmp: Всеки, който е бил в моята лаборатория и е видял светлините, пита дали танцуват под музика. Порових се малко, изглежда би било доста лесно да добавя приставка към WinAmp. Плъгинът ще изпраща съобщения до прикрепен низ от лампи, така че светлините да бъдат синхронизирани с музиката, която WinAmp пуска. Синхронизирането на коледна музика с моята елха би било просто страхотно. Вграден робот-контролер за бебешки орангутан B-328 с H-Bridge: Малкият контролер от Pololu би бил перфектен. Вижте: https://www.pololu.com/catalog/product/1220 Тази платка вече има H-Bridge готов за работа. Моделите на лампите могат да бъдат програмирани в микро, така че компютърът да може да бъде изключен. 802.15.4: Чрез добавяне на 802.15.4 лампите могат да станат безжични. За светлините на коледното дърво, разпръснати из къщата, това би било чудесно. Или би било възможно добавянето на лампи към всеки прозорец в голям сграден комплекс. Cool. Rotating 'Lighthouse Beacon: Синът ми имаше училищен проект за изграждане на Lighthouse. Идеята беше да се изгради сирена батерийна лампа с превключвател за кламери, така че Фарът да светне реално. Никой мой син няма да ходи на училище с това, когато може да има пълноценен въртящ се фар! Разгледайте приложените снимки и видео.

Стъпка 6: Обобщение

Наистина ме изумява, че всяка лампа има 2 MIPS конски сили в SOIC-8 за 80 цента. Тъй като низ от лампи се разширява чрез добавяне на повече лампи, количеството MIPS върху низ също се увеличава. С други думи, това е мащабируем дизайн. Низ от 16 лампи бръмчи заедно с 32 MIPS процесорна мощ. Просто невероятно. Все още предстои много работа. Съветът за развитие трябва да бъде актуализиран. Има няколко грешки в оформлението, които се нуждаят от коригиране. Изходното окабеляване на комуникационната грешка изглежда не работи с изхода на транзистора. Все още не съм сигурен защо - все още не съм прекарал време да подредя това. Кодът за получаване на комуникация също се нуждае от малко повече работа. Гледайки светодиодите, виждам, че често има грешки в комуникацията. Изглежда, че има средно една случайна грешка на 1000 съобщения. Трябва да намеря SMD производител, който би бил готов да направи лампи за мен. Може би Spark Fun би проявил интерес? Имам приятел в Хонконг, който може да ми намери производство. Сглобяването на борда трябва да бъде автоматизирано. Просто не е възможно да се изграждат тези дъски на ръка, както направих аз. Необходимо е да се разработи интерфейсна платка за компютър. Това би трябвало да бъде наистина лесно - просто е въпрос на отделяне на време, за да го направите. Разходите са кралски - минимални разходи за лампа (80 цента за микро + три светодиода по 10 цента всяка + платка / резистори / 20 центов диоден мост) общо може би 1,50 долара. Добавете монтаж, окабеляване и печалба и говорим от 2,00 до 2,50 долара за лампа. Дали отрепки ще платят $ 40 долара за низ от 16 RGB лампи на низ? Накрая се надявам, че има интерес от тълпата „Направи си сам“. С известна положителна обратна връзка ще продължа да се стремя да превърна тази идея в продукт. Можех да си представя да продавам чиповете, лампите за разработка и пълните леки струни. Дайте ми обратна връзка и ме уведомете какво мислите. За повече информация и новини за продължаващото развитие посетете уебсайта ми на https://www.powerhouse-electronics.com Благодаря, Джим Кемп

Препоръчано: