July 2025

S M T W T F S
  12345
67891011 12
13141516171819
20212223242526
2728293031  

Style Credit

Expand Cut Tags

No cut tags
Saturday, January 10th, 2015 22:44
Как вы относитесь к легализации курения мануалов?
Вопрос на собеседовании.

Господа и дамы, френды и френдессы, я знаю, среди вас достаточно много умных людей, которые понимают в электронике, электротехнике, схемотехнике и программировании микроконтроллеров с помощью Visual FoxPro! Не дайте пропасть начинающему погромисту, объясните, почему нижеприведённая схема не будет работать?


Это всё ещё для моего проекта по индикации всего-всего. По сравнению с предыдущим разом схема переработана и дополнена.

Пояснения в двух словах, с начала к концу:

  • Демультиплексор (в верхнем левом углу) получает на вход три бита, после чего подаёт 5 вольт на одну из своих ножек вывода. При некотором удачном стечении обстоятельств, номер этой ножки будет соответствовать числу, полученному на вход в бинарном виде: при 100 включится четвёртая ножка, при 010 — вторая, и так далее. На остальных ножках при этом остаётся ноль. Всего ножек восемь.
  • К каждому выводу демультиплексора через килоомный резистор подключена база NPN-транзистора. (На схеме показан только один транзистор, потому что схема подключения остальных абсолютно такая же). NPN-транзистор позволит течь через себя току, если на его базу подано напряжение. Таким образом, в каждый момент времени только один транзистор будет открыт, остальные семь будут закрыты.
  • На коллектор каждого из этих восьми транзисторов постоянно подаётся 5 вольт.
  • Эмиттер каждого из этих восьми транзисторов подключён к 13-му пину одного из восьми коннекторов (на схеме, по тем же причинам, показан только один коннектор). Таким образом, когда транзистор открыт, пять вольт напряжения проходят к 13-му пину соответствующего коннектора.
  • Каждый такой коннектор 14-жильным проводом подключается к модулю LED`ов, выполненному в формате выносной линейки из 12 LED`ов. Аноды каждого LED`а подключены к этому тринадцатому пину (там ещё 220-омные резисторы воткнуты, чтобы LED`ы не сдохли раньше срока).
  • Катод каждого из этих LED`ов подключён к своему собственному пину коннектора.
  • Каждый из 12-ти пинов, подключённых к катодам LED`ов, подключён к коллектору своего собственного транзистора, база которого подключена (посредством ещё одного килоомного резистора) к ножке микроконтроллера.
  • Эмиттеры всех этих 12 транзисторов соединены и связаны с землёй.
  • 12 из 13 используемых пинов всех 8 коннекторов подключены параллельно. Ток подаётся по 13-му, который через транзистор контролируется демультиплексором.
  • Катоды всех LED`ов с номером N во всех восьми линейках подключены к одному и тому же транзистору. Но ток будет в каждый момент времени течь только через один из этих LED`ов, согласно тому, на какой коннектор был подан ток демультиплексором.
  • В качестве средства ввода у меня предусмотрены три кнопки, на которые я повешу прерывания. И будет ещё термометр.

Как максимум, в каждый момент времени будут гореть 12 LED`ов. Потребляемый каждым LED`ом ток — 20 миллиампер; значит, вся линейка LED`ов будет потреблять как максимум 240 миллиампер. Микроконтроллер Atmel AT90USB162 потребляет 12 миллиампер. Демультиплексор 74HC238 потребляет 50 миллиампер. При том, что я могу брать из порта USB до 500 миллиампер, — мне кажется, запас ещё есть. Правда, в будущем я планирую подключить ещё два символьных экрана (16 символов × 2 строки), которые должны будут работать постоянно, но каждый из них потребляет всего 4 миллиампера, так что это не страшно.

Жду реакций, рекомендаций и рацпредложений.

Tags:
[identity profile] yuri tabachnik (from livejournal.com)
Wednesday, January 21st, 2015 12:08 (UTC)
Схему на сдвиговых регистрах зато гораздо проще расширять. Я забыл упомянуть - у сдвигового регистра есть выход, который можно каскадом подключать к входу следующего в схеме регистра. Таким образом, чтобы добавить к одному регистру еще 7, не нужно тянуть к каждому регистру отдельный хвост - достаточно соединить их каскадом и передавать не 8, а 256 бит по последовательному каналу. А непосредственно управление все равно происходит программно.
Wednesday, January 21st, 2015 14:39 (UTC)
Я тут почитал слегка… А чем плохо будет использовать прямо драйвер LED`ов? Типа TLC5940NT. Вот как он используется. Он и ШИМ по каждому LED`у в отдельности умеет (чего со сдвиговыми регистрами добиться будет нелегко), и расширяется точно так же, как сдвиговые регистры, цепочкой. В общем, хорошая же вещь, разве нет?
[identity profile] yuri tabachnik (from livejournal.com)
Monday, January 26th, 2015 10:42 (UTC)
Ничем не плохо, более того - именно так и надо делать. В программировании же ты не изобретаешь велосипеды, а используешь готовые библиотеки. То же самое и здесь. Я просто исходил из того, что проще достать (ну по крайней мере у нас).
Monday, January 26th, 2015 11:05 (UTC)
Достать не проблема. Ebay работает, а мне эта штука не завтра нужна.

Я сейчас думаю о питании. При использовании TLC5940NT все леды подключены к питанию всегда, а, исходя из условий, они все могут зажечься одновременно. Но одна линейка с 12 LED`ами жрёт до 240 миллиампер. 6 линеек будут жрать полтора ампера. Тут уже придётся либо с внешним питанием корячиться, причём с блоком питания типа Apple`овского, чтобы выдавал два ампера с пятью вольтами, либо изобретать какой-нибудь внешний распределитель питания, как я поначалу с демультиплексором хотел поступить.
[identity profile] yuri tabachnik (from livejournal.com)
Monday, January 26th, 2015 12:40 (UTC)
Рекомендую для начала делать схему с внешним источником питания. Потом померять потребление, если влазишь в ограничения USB по питанию - отказаться от внешнего источника. Если блока питания совсем нет, можно взять +5 вольт с блока питания компьютера (ATX).
Monday, January 26th, 2015 12:49 (UTC)
Внешний источник питания найти не проблема. Распотрошу USB-провод и возьму плюс и ноль оттуда, а другой конец USB-провода воткну в зарядное устройство от гаджетов Apple, оно даёт 2.4 ампера при 5.2 вольтах. Если я использую настоящий USB от компа, который под напряжением всегда (потому что через powered USB-hub), для питания логики, а внешний адаптер для питания LED`ов и прочей периферии, я смогу решить самую важную проблему: подключение LED`ов только после того, как включается драйвер LED`ов, (иначе драйвер сгорает, есть у него такая техническая особенность).

Может, даже получится настроить питание LED`ов отдельным транзистором, чтобы уж точно подавать питание на LED`ы только тогда, когда подано напряжение на драйвер. Но это должен быть очень крутой транзистор, чтобы 2.4 ампера через себя пропускать. Или, может, реле взять?..
Edited Jan. 26th, 2015 12:50 (UTC)
[identity profile] yuri tabachnik (from livejournal.com)
Monday, January 26th, 2015 13:06 (UTC)
2.4 ампера для современных MOSFET-транзисторов и не ток вовсе - они десятки ампер через себя пропускают и при этом почти не греются, потому что работают в ключевом режиме и имеют очень маленькое внутреннее сопротивление. Но рекомендую сначала почитать про/пощупать MOSFETы отдельно от драйвера, а потом уже интегрировать их в схему. Для начала можно и релюху взять.
Monday, January 26th, 2015 13:28 (UTC)
MOSFET-ка у меня должна где-то валяться, а вот реле придётся покупать. А в чём преимущество транзистора перед реле? Ну, кроме щелчков, один раз при включении компа и один раз при выключении.
[identity profile] yuri tabachnik (from livejournal.com)
Monday, January 26th, 2015 15:44 (UTC)
Реле - оно 1) механический элемент, ресурс которого конечный 2)инерционно - на MOSFETах можно реализовать, например, ШИМ, а реле быстрее чем пару раз в секунду не переключишь 3) во включенном состоянии реле потребляет существенный по сравнению с транзистором ток.

Из преимуществ реле - очень низкое сопротивление во включенном состоянии и абсолютная гальваническая развязка.
Monday, January 26th, 2015 16:19 (UTC)
Спасибо, буду изучать матчасть и курить мануалы! :)