Notice: Memcache::get(): Server localhost (tcp 11211) failed with: Connection refused (111) in /home/a146/www/we.easyelectronics.ru/engine/lib/external/DklabCache/Zend/Cache/Backend/Memcached.php on line 134
чарлиплексинг: 12 светодиодов на 4 ножки без регистрации и СМС / AVR / Сообщество EasyElectronics.ru

чарлиплексинг: 12 светодиодов на 4 ножки без регистрации и СМС

AVR
перепало мне задание сделать из подножного корма простенькое устройство, дающее на выходе определенную частоту, её выбирает пользователь (одну из десяти заранее заложенных) и соответственно как-то нужно показать какая частота сейчас выдаётся. Была найдена жменя светодиодов, кварц и мега48, ну и дабв не скучно было городить было принято решения придумать проблем на свою ж какое-то забавное техническое решение.
Для подключения 12 светодиодов нужно:
а) 12 ножек контроллера и 12 резисторов
б) соединить в группы по 4 лампочки катодами или анодами(в зависимости от религиозных убеждений)и потратить 7 ножек и 4 резистора
в) приколоться и соединить их как на рисунке ниже, потратив 4 ножки контроллера и 4 резистора номиналом в два раза меньше обычного(я брал по 500 ом, но должно работать и с меньшими)


суть данного рукоблуда в том, чтобы включать светодиоды между ног контроллера по два встречно, на такую мысль меня натолкнул красно-зелёный светодиод с двумя выводами, забавная штука.
При таком включении без потери яркости зажечь можно только один светодиод, а для того, чтобы потушить все остальные, я переводил неиспользованные выходы в высокоимпедансное состояние (настраивал на вход)
и тут нас ждёт «страшная расплата» за три сэкономленных ножки:
а) чтобы зажечь светодиод нужно отправить не один байт в регистр, а два байта в два регистра;
б) чтобы засветить все светодиоды вместе можно воспользоваться динамической индикацией со скважностью 12, что на грани фола по комфортной яркости.
Развелось-же всё это чудо в одном слое без перемычек (правда не в логичном порядке, однако учитывая то, что слать все равно нужно два байта и в разные регистры, это не так страшно)

дорожки кривые поскольку там должно быть место под крепление
На всякий случай, вставлю пример как я зажигал их из под codevision

void mode_led(int num)
{
switch (num) {
    case 1:
    DDRC= (1<<DDC3)   | (0<<DDC2)   | (0<<DDC1)   | (1<<DDC0);
    PORTC=(1<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
    
    break; 
    
    case 2: 
    DDRC= (1<<DDC3)   | (0<<DDC2)   | (0<<DDC1)   | (1<<DDC0);
    PORTC=(0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (1<<PORTC0);
    break; 

и т.д.
P/S пинайте сильно что где не так написал/оформил
  • +5
  • 26 ноября 2015, 02:00
  • tip_ok

Комментарии (24)

RSS свернуть / развернуть
Насколько я вижу, это то, что известно под названием «чарлиплексинг».
0
  • avatar
  • Vga
  • 26 ноября 2015, 12:00
спасибо, теперь я знаю этому название, поправил заголовок
0
Если перебрать всю таблицу истинности (при всех линиях на выход), можно по несколько с/д одновременно зажигать.
Коэффициент мультиплексирования снижается как минимум в два раза.
Правда, управление ещё сложнее. С другой стороны, один раз забить таблицу и пусть машина думает.
Делал давным-давно таким образом гирлянду на 3 проводах с серией из 6 с/д и простейшей дискретной логикой
0
с небольшим дополнением в виде резистора на каждый светодиод отдельно можно, но алгоритм управления становится в разы круче…
0
это же старый трюк
на самом деле про него писали довольно давно и много, но вот я на удивление нашел только ссылки
web.archive.org/web/20111223183421/http://atmel.moy.su/publ/13-1-0-92
вот современная перепечатка:
gzip.ru/instructions/mk_pins.htm

geektimes.ru/post/253838/#comment_8451168 (выпилена страница)
но идея то вобщем многим давно известна…
0
  • avatar
  • neco
  • 26 ноября 2015, 22:38
0
Есть ещё 4-й вариант. Использовать логику например 74hc595 и тогда будет больше профита.
1. Не надо быдлокодить и постоянно дёргать пины МК тратя вычислительные мощности контроллера.
2. Меньше вероятность накосячить в коде и следовательно меньше головной боли и затрат времени.
3. Используется всего 3-4 вывода для управления любого количества светодиодов/устройств.
4. Количество выходов конфигурится всего 1 константой.
5. Все светодиоды можно зажигать с максимальной яркостью.
Правда недостатки у этой схемы тоже есть.
1. Пусть копеечные, но расходы на сдвиговые регистры и рассыпуху.
2. Сложно управлять яркостью светодиодов методом ШИМ. Хотя это не совсем минус т.к. при стробировании любым из выше описанных способах затраты ресурсов МК будут примерно одинаковые.
3. Немного больший расход энергии. Хотя тут сложно сказать — нужно считать затраты МК на то что бы постоянно мигать светодиодами и потребление логики что больше расходует энергии. Склоняюсь к тому что логика потребляет электричество только в момент переключения (КМОП).
0
Забыл пару самых существенных недостатков данного способа.
1. Это занимаемое место на печатной плате
2. Сложность разводки
0
1. Не надо быдлокодить и постоянно дёргать пины МК тратя вычислительные мощности контроллера.
Лучше потратить их на delay-цикл? А быдлокодить вообще не надо, ни программируя чарлиплексинг, ни программируя вывод в регистр.
0
Лучше МК спатинькать уложить.
0
укладывать спать при светящихся ледах чуть менее чем бесполезно
0
еть и пятый вариант — специатльный дрйвер типа MAX7219 там и яркость регулируется не слжно и одна микросхема на 64 лампрчки и всё всё всё
0
Подозрение на плагиат без регистрации и СМС
Начинающим 16 Февраль 2011 Steel.ne: Мультиплексирование
http://easyelectronics.ru/multipleksirovanie.html
-1
да, вы правы, а я фу-фу-фу…
з.ы. простите за плагиат кирилицы, тут я не специально
0
гумно. дорого, крупно, разводить удобнее не становится. нет масштабирования «в длину»(хотя нахрен оно ненадо и так много). это все относительно 595
0
кстати яркость регулируется так себе. в том плане что для всех и разом
0
ШИМ на общий пин светодиодов можно подавать.
+1
у 595 есть вывод ~OE отлично подходящий для этих целей
+1
с машинным временем проблем минимум. 74hc595 прекрасно управляется аппаратным SPI, что при наличии разгружает ядро практически полностью. шим (вернее bam) решается жертвуя памятью.
0
Это при условии что у тебя есть этот 74hc595.
Мне вот на работе запчасти для поделок на внутренние нужды очень неохотно оплачивают.
в результате рождаются подобные мутанты не из того что надо а из того что было.
0
обычно «того что было» довольно много остаётся после каждого супер важного проекта, на который комплектующие покупаются с расчётом на потерял\спалил\не подошло…
помню(не так давно) как в одну контору устроился сразу после универа — получал особое удовольствие от того, что 60-70% всего необходимого можно насобирать прогуливаясь вдоль стенки с коробочками… и 74 серии обычно в таких коробочках как мусора
0
Ну это смотря чем контора занимается.
У меня вот пачка не очень нужных контакторов на 80А есть… индукционные лампы сомнительной ценности (тестовые образцы) и даже несколько бензогенераторов так далее. Но при этом практически нет радиодеталей.
0
Если контора не может позволить себе покупку 74HC595, то оттуда РВАТЬ КОГТИ надо!!!
0
Она может. Но для этого надо запросить счёт. завести его в базу 1С и планировщика (2 копии получается) потом его согласуют 2 человека и оплатит бухгалтер. надо подать заявку экспедитору на забор груза (потому что «так надо»). В результате покупать поштучно не вариант, поскольку достаточно сложно делать на это покупки по безналу.

К тому же чтобы одобрили счёт надо ещё и проект под который он согласовать и объяснить зачем нам надо потратить 300р и почему мы вдруг не можем без этого а до этого могли.

И это всё время. а так взять с полочки и использовать не получится — основной профиль компании совсем не изготовление электроники. Крепежа сотни видов и размеров у меня на работе без счёта…

Это как в автосервисе можно и не найти лишней банки пива, а на оптовом складе палет списать можно, не говоря уж о банке.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.