Инструменты пользователя

Инструменты сайта


upgrades:reborn2:neopixel

При осмотре платы Reborn 2 был обнаружен разъем, подписанный, как Neopixel. Учитывая, что мой принтер уже работал под управлением Klipper на этот момент, я полез в документацию и понял, что управление лентой можно брать в принципе с любого подходящего pin'a с платы, но раз есть такой разъем, надо его и использовать.

Так как каждый светодиод «жрет» около 60мА я взял кусок ленты WS2812 на 5 вольт с 12 светодиодами (плотность 30 на метр), купил дюралевый уголок с рассеивателем, покрасил его черной краской, просверлил отверстия для крепления к профилю принтера и для крепления магнита держателя дверей.

Для получения 5 вольт я взял преобразователь с 24 на 5 вольт на алиэкспрессе. Светодиоды жрут максимум 12 шт х 60мА = 720мА. Подключать такое напрямую к материнке я побоялся, я еще не знал, какой запас мощности заложил производитель в онбоардный преобразователь на плате.. по идее, если потребляемый ток выше 1А, то вообще стоит делать отдельный блок питания для ленты.

Пришедший преобразователь оказался с общим «минусом», поэтому я первым делом подключил его к блоку питания принтера на клеммы 24 вольт, +5в с преобразователя подключил к светодиодной ленте, а минус и сигнал взял с разъема Neopixel (G и S, соответственно). Прописал минимальный конфиг в клиппере… включаем. Лента осветилась неземным сиянием.. правильнее сказать, загорелись какие попало светодиоды, часть одним цветом, часть другим, некоторые вообще не загорелись. Попробовал давать команды через интерфейс клиппера - или не реагирует или что-то менятся как попало. Вывод - сигнал управления не проходит. Не тот пин? Специально полез смотреть фотки низа платы, PE7, все правильно.

Обратился за помощью к evgs@ в нашем чате Ждунов, и дальше он уже помогал мне дебажить эту историю.

У неопикселя уровни входа по КМОП-логике, соответственно логическая единица должна быть 0.7*VCC, VCC=5В, значит не менее 3.5В. Меряем тестером… 0.59 вольта на сигнальной линии.. что это? На цифровой управляющей линии по идее должна быть логическая единица при отсутствии передачи данных… Управляющая посылка короткая, частота сигнала 800кГц, тестером ее не увидишь. Нужен осциллограф. Но мой сломан (его удалось починить, позднее, с помощью нового :) ), новый на замену еще едет. Появляется мысль, что налицо несогласованный уровень сигнала, типа плата реборна выдает сигнал по уровню 3.3В, хотя на разъеме неопикселя подписано и выведено +5В.

Нахожу схему буфера-преобразователя уровня сигнала на 1 полевом транзисторе (у меня как раз был такой). Схема Решено. Макетная плата, делаем. Это фото прототипа. Фото прототипа Дальше начинается упячка. Подключаю плату в транзит сигнала, включаю принтер… на PE7 3.29В. Т.е. вроде как 0.01в не хватает до логической единицы (что же тогда было ранее 0.59в?), значит мы идем верным путем… но на выходе (на стоке транзистора) с преобразователя уровня почему-то 3.03в, а не 4.9в, как ожидается. Инициализируем клиппер, напряжение на PE7 падает до 1.03в. Загорается _один_ светодиод. Первый. Что вообще происходит? Горит только первый светодиод На команды управления лента не реагирует… Ок, выключаем питание, отключаем ленту, включаем питание - на входе 3.29в, на выходе преобразователя 4.89. Выглядит, что преобразователь работает. Инициализируем клиппер. На входе сигнал падает в логический 0 (1.08 вольта), на выходе преобразователя 1.11. Нормально. Подключаем ленту. На входе 3.29, на выходе снова 3.02… что с лентой не так? Уменьшаем номинал подтягивающего резистора (R2 на схеме) с 10к до 2к, напряжение вырастает до 4.3В. Уже лучше, вроде… но с самой лентой без изменений. По-прежнему не реагирует на команды. Появляется подозрение, что что-то не то с самим выходом неопикселя. Начинаем пытаться разобраться с китайской схемотехникой (сразу надо было!).

evgs@ рисует схему (у него FBG6, но схема похожа).

Вот так запитана стоковая белая светодиодная лента на Ghost6, которая в норме от 5В потребляет около 100мА. В реальности контроллер выжимает только 40мА, превышая свой паспортный максимум 25мА. Вот почему нужен отдельный источник питания.

Это все не сильно помогает, я решаю сделать паузу и дождаться осциллографа. И вот, наконец, день Х.

Уровень логического нуля на PE7, до преобразователя и ленты. Выглядит ок. Все же осциллограф явно лучше тестера в данной ситуации :)

Триггер поймал какой-то сигнал, но он совсем не похож на цифровой!

Увеличиваем разрешение и чувствительность и ловим помехи от работы импульсного блока питания (еще одно открытие!):

Ради эксперимента пытаемся переключиться на другой пин - решаем выбрать PE9 с разъема WiFi, все равно он демонтирован ради подключения клиппера по UART.

и видим на нем похожий сигнал, какой мы видели на PE7!!!

Ищем схему… и… сюрприз.

Мы поймали результат работы ФНЧ (фильтр низких частот), неужели такой же конденсатор стоит в линии PE7 неопикселя? Уже не хочется ковыряться в разводке дорожек и идентификации smd-элементов, поэтому решаем взять уже PC3, на нем точно нет никаких конденсаторов.

И…. Да, наконец-то нормальный цифровой сигнал!

Включаем через буфер на полевике и получаем:

Кажется, ура. Подключаем ленту… не реагирует. Первый светодиод не горит. Решаю не испытывать судьбу, отрезаю еще кусочек из 12 светодиодов… и о чудо, все начинает работать! Видимо, в процессе жестоких экспериментов сгорел как минимум первый светодиод в ленте. Это исследование решено оставить на потом, а сейчас время насладиться результатом :)

итого. «Плюс» питания ленты (+5В) взят от преобразователя DC-DC с 24 на +5, земля осталась с разъема неопикселя, а управляющий сигнал взят с пина PC3 разъема WiFi и включен через преобразователь уровня на полевом транзисторе по схеме выше. Работает.

Конфиг клиппера:

[neopixel my_neopixel] 
pin: PC3
chain_count: 12

Автор: korxif

upgrades/reborn2/neopixel.txt · Последнее изменение: 2023/01/27 19:33 — sav