LED controller: схема

Ну вот, наконец, мы и добрались до схемы электрической LED controller‘а. Устройство будем строить по модульному принципу. Для этого надо разделить его на функционально законченные части, в нашем случае это будет:

  • схема питания;
  • драйвер канала;
  • внешние устройства;
  • интерфейсный модуль;
  • микроконтроллер и обвязка;
Структурная схема устройства

Модульный принцип построения означает, что в случае, если нам нужен, например, вместо Ethernet’а RS-485 или CAN, мы можем не разрабатывать заново всё, а установить соответствующую плату расширения на место интерфейсного модуля. Это в большей степени относится к разводке платы и конструкции устройства, но и на схемотехнику накладывает определенные ограничения.

Схема питания

Для функционирования платы нам понадобятся следующие напряжения: +19…35 В силовое для питания драйверов, +3,3 В для питания контроллера и других микросхем, +12 В для дискретных входных сигналов выключателей и питания датчиков.

Схема питания

F1 — это самовосстанавливающийся предохранитель (MultiFuse). Устройство предполагается запитывать постоянным напряжением (24 В) от  AC/DC преобразователя. И несмотря на то, что AC/DC уже содержит в себе защиту от КЗ в нагрузке, предохранитель всё равно необходим. На всякий случай.

R3, R4 — делитель напряжения. Нужен для того, чтобы завести входное напряжение в микроконтроллер для мониторинга. Так как входное напряжение существенно выше рабочего напряжения МК, то вполне возможна ситуация, когда после аварийного снижения напряжения питания драйвер не будет работать, но МК будет еще бодр и весел и сможет сигнализировать нам об аварийной ситуации. Стабилитрон D2 защищает порт микроконтроллера от аварийного повышения напряжения выше всяких разумных пределов.

Преобразователь напряжения построен на базе старой доброй MC34063. Микросхема дешевая, универсальная и простая, как сатиновые трусы. Делают ее все, кому не лень. Под этим же самым названием она есть у Texas Instruments, ST и ON Semiconductor. Тут всё предельно просто — смотрим в даташит и перерисовываем к себе, не забывая соотносить со своими требованиями и возможностями.

Преобразователь для 12 В у нас будет линейным для простоты. На базе UA78L12. Этот тот же 78Lxx, только в маленьком SOT-89-3 корпусе и с пониженным максимальным током в 100 мА. По задумке, 12-ю вольтами у нас будут питаться два датчика (движения и освещенности) и подтяжки дискретных сигналов. Для них 100 мА должно хватить.

J1 и прочие с надписью «Pin» — это просто контактные площадки на плате, которые нужны для реализации модульного принципа. Если мы захотим заменить блок питания и поставить, например, AC/DC со входом ~220 В, то нужно будет просто водрузить отдельную плату-мезонин сверху (монтаж штатных компонентов в этом случае не производится, естественно). Резисторы R2, R73 нужны чтобы, в случае необходимости, отсоединить полюсы входного напряжения от напряжения питания драйвера (в случае с входным ~220 В это совсем разные вещи).

Драйвер канала

Схема драйвера канала

С драйвером канала всё достаточно просто — он уже был отработан на макете, да и схема тут несложная. Минимум внешних компонентов. Единственное отличие от макетной схемы — это наличие нагорождения в верхней части схемы. Это своего рода микропереключатель, выполненный на джамперах. Он позволяет задавать номинальный ток драйвера без перепайки резисторов и программных танцев с бубном. Ток задается подключением резистора нужного номинала или их комбинации. Резисторы имеют разный «вес» и позволяют довольно точно «набирать» нужный ток.

R15R17R19R21R23R25R27Ток, мА
3002002001001005021
000000121
0000110150
0010001221
1011110750
0110010450
1111111971

В таблице показаны примеры выставления номинального тока. Вторая строка — это «вес» соответствующего резистора (ток в миллиамперах, который мы добавим к номинальному, подключив резистор).

 У этой схемы есть два недостатка: джампер вносит дополнительное сопротивление контакта, ненадежность крепления джампера (возможность самопроизвольного выпадения, при монтаже платы лицевой стороной вниз). По поводу первого вопроса — предполагаемое переходное сопротивление (50 мОм) не внесет значимой погрешности в номинальный ток. Второй вопрос гораздо интереснее. На первый взгляд, механическое соединение джампера со штырьками не выглядит надежным. Однако, знающие люди утверждают, что платы с джамперами (без дополнительных фиксирующих приспособлений и покрытий) спокойно проходят ударные испытания на копре и ничего никуда не вылетает. В общем, будем посмотреть.

Больше тут ничего примечательного нет, кроме Pin‘ов, которые здесь (как и в схеме питания) нужны для модульности. Проблема этого драйвера заключается в том, что он не может работать в режиме контроля напряжения, что не позволяет управлять светодиодной лентой, например. А вдруг нам захочется? Не делать же отдельный драйвер для этого. Поэтому каналы тоже сделаем модульными.

Внешние устройства

Схема подключения внешних кнопок и датчиков

Внешние устройства у нас представлены кнопками (выключателями) и дискретными датчиками движения и освещенности. На выключатель (кнопку) подается 12 В через резистор R7 (например) и кнопка коммутирует линию на землю. Стабилитрон D3 нужен для того, чтобы погасить напряжение с 12 В до приемлемых 3,3 В на входе контроллера. Если цепь выключателя разомкнута, то на линии switch_in будет напряжение 3,3 В (ограниченное стабилитроном). При этом через стабилитрон будет протекать небольшой ток в 1 мА.

Датчики движения и освещенности подключаются по трехпроводной схеме. На них нужно подать 12 В, а с них снимать Push-Pull сигнал: либо 0 либо напряжение питания (12 В в данном случае). Так как мы подаем питание за пределы платы — нам нужен какой-то ограничитель. В принципе, хорошим тоном является концепция, при которой считается, что за пределами платы все наши выводы могут подключить как угодно. А значит, мы должны защитить себя (то есть плату) от дураков, ну или хотя бы от КЗ. Для этого нам отлично подойдет тот же Multifuse. Обратно мы получаем сигнал через резистор R10 и гасим его на стабилитроне до 3,3 В.

Возможно это не самая лучшая схема преобразования уровней, зато самая простая.

Интерфейсный модуль

Схема Ethernet

Тут все по даташиту. К физике DP83848 мы поключаемся по интерфейсу RMII. Он требует для своей работы всего 7 сигналов:

  • RXD[0]
  • RXD[1]
  • CRS_DV
  • TXD[0]
  • TXD[1]
  • TX_EN
  • REF_CLK
  • RX_ER (optional)

Последний (восьмой) сигнал помечен как необязательный. Кроме того, следует подключить сигналы MDIO и MDC.

Для обеспечения возможности установки вместо проводного Ethernet’а какого-нибудь беспроводного модуля (например, WiFi) нужно подвести туда же UART (линии TXD, RXD). А также на линиях MDIO и MDC сделать контактные площадки, чтобы иметь возможность использовать их как GPIO в случае установки радиомодуля.

Микроконтроллер и обвязка

Обвязка микроконтроллера. Фильтры питания.

Линии питания микроконтроллера. Тут основное правило: конденсаторов много не бывает. На каждую ногу вешаем по паре: 0,1 мкФ и 0,01 мкФ. Для VDDA добавляем дополнительный дроссель. Ну и желтый светодиод POWER, который горит всегда, когда есть питание 3,3В.

Обвязка микроконтроллера

Здесь мы просто соединяем воедино все те части схемы, которые были описаны выше. Ну и добавляем два светодиода для удобства отладки изделия: WORK и MOTION. WORK будет мигать с частотой 1 раз в секунду, обозначая, что наш контроллер не завис и выполняет программу, а MOTION будет гореть при обнаружении движения датчиком.

В процессе рисования схемы мне чрезвычайно помог PinPlanner (не знаю, как он у них правильно называется, PinPlanner — это из Quartus’а) из ST-шного CubeMX. Здорово экономит время.

Pin view. STM32 CubeMX

Ну вот и всё на сегодня. В следующий раз будем разводить плату и прорабатывать конструкцию.

PS: исходники можно взять тут. Пока что в виде архива. Как только дойдут руки — перенесу на Github.

PSS: добавил исходники на Github: репозиторий.

About the Author: admin

Добавить комментарий