WS8212B + Level shifter
- Войдите на сайт для отправки комментариев
Коллеги, подмогните мыслёй, кому не жалко...
Взял я Wemos D1 Mini (TTL 3.3V) и подключил к нему колечко с WS2812B (TTL 5V). Заливаю FastLED-овский тест - иногда проскакивают неправильные цвета и пр. глюки. На ардуине с TTL 5V всё ок. Помня рекомендацию поставить преобразователь уровней - ставлю. Никаких изменений - всё те же глюки. Смотрю осциллографом: на входе в level shifter сигнал ~3.2V, на выходе ~3.6V. Очень удивляюсь, пробую отдельно на макетке согласователь (подаю питание и тыкаю во вход VCC/GND) - всё ОК, на входе ~3.2 V, на выходе ~4.7V. Подключаю к Wemos, заливаю на него блинк. Вижу на осциллографе нормальную картинку - на выходе согласователя уровней сигнал в ~4.7V. Заливаю FastLED-овскую мигалку и опять наблюдаю ~3.6V на выходе согласователя.
Согласователь вот такой:
3.3V из 5V он делает сам, у него стабилизатор на борту. Транзисторы J1Y, судя по интернетам являются BSS138 со временем переключения 20ns. Вроде как с запасом хватает на WS8212B.
Отчего такое плохое поведение может быть у level shifter и есть ли шанс его приструнить? Возможно, что кто-то знает чем гарантированно-совместимо приподнять уровень для этих пикселей...
А как все оно подключено друг к другу? И 5В откуда подается?
5V подаётся со внешнего БП (5V/2A) на +5V вемосу и прямо на level shifter. Шифтер сам делает себе 3.3V. Сигнал заводится... ну, положим, с D6.
Т.е. ничего не просаживается вроде как. Потому что колечко я отключал, мерял просто на выходе шифтера. Блинк нормально раскачивает выход, а вот FastLED - не может. С частототой как-то связано что ли... Может блинку газу поддать и посмотреть, когда сорвётся...
Да там 800КГц, вроде немного для транзисторов.
Разогнал немножко blink... На ESP это с приключениями проходит - Software WTD резетит МК. Но, тем не менее - до 20KHz Peak-to-Peak на осциллографе 4.96V, c ~22KHz начинает скакать, на ~28KHz 4.96V уже не видно и к 79KHz падает до 4.4V, т.е. полвольта как корова слизнула. Дальше не измерял (нужен нормальный генератор, а не блинк), но, думаю, эта тенденция и приводит к 3.6V на частоте передачи пикселей :(
Какие могут быть подозрения? Транзисторы не тянут или их обвязка не даёт разгонятся? Передний фронт, вижу, скруглён, задний - четкий. По фотографии на осциллографе (JINHAN JDS2022A) пока диагноз не умею ставить :(
Фронты завалены капитально. Может просто бракованые компонетны? Китай, как никак.
Фронты завалены капитально. Может просто бракованые компонетны?
Не могу ни подтвердить, ни опровергнуть - навыка контроля в этой области у меня нет. Поэтому и решил посоветоватся - стоит ли напрягаться в этой ситуации или переходить к какому-нить плану Б?
Не могу ни подтвердить, ни опровергнуть - навыка контроля в этой области у меня нет. Поэтому и решил посоветоватся - стоит ли напрягаться в этой ситуации или переходить к какому-нить плану Б?
Да просто взять, какой-нибудь n-p-n транзитстор, и подключить через него.
По картинке - однозначно не успевают переключиться транзисторы, видно по завалу фронтов. Видимо китайские BSS138.
Навели вы меня на мысль, которая должна была стать самой первой - посмотреть на исходные фронты. По мне так - получше...
Однако, я поставил еще один эксперимент с роботдиновским шифтером
Получил почти то же самое
Так что, видать, из одной коробки транзисторы взяты... Поможет ли самопал на n-p-n, если даже у роботдина такая же фигня?
диод в другую сторону
Попалась в Интернете (где не помню) такая схема:
Для преобразования используется промежуточный диод WS2812, слева от него обычный диод - на нём падает 0,7 В.
wdrakula правильно сказал, только диод желательно шоттки, что-то типа BAT42, иначе уровень нуля может оказаться слишком высоким.
Вообще, чем выше частоты, тем большие токи нужны для перезарядки всяких паразитных емкостей.
http://we.easyelectronics.ru/Shematech/soglasovanie-logicheskih-urovney-5v-i-33v-ustroystv.html Вариантов много.
Помню где-то кто-то писал, что при подключении WS желательно резистор последовательно ставить около 470 Ом, типа она ток сосёт. Это тоже кстати может быть. Попробуйте после шифтера сопротивление воткнуть.
Сопротивление стоит, на 300 ом. Статью по преобразованиям читал, поэтому и взял сборку на BSS138, которая под рукой была - в статье ровно та же схемотехника. Сейчас у меня выбор невелик - или заказывать шифтер, которые рекомендован Adafruit или колхозить на чём-то, что имеется в наличии (диоды, резисторы... мелочёвка, вобщем). Отделять первый пиксель можно (об этом, как раз, статья электробоба), но это палка о двух концах - требуется подбирать такой же, как и в остальной ленте. Или отрезать от ленты пиксель... Вобщем, не лучший вариант, по-моему.
Небольшое тематическое тестирование шифтеров, в котором мосфет тоже показал себя не с лучшей стороны: https://happyinmotion.com/?p=1247
Я однажды с шифтерами(правда двусторонними) такого г поел, на всю жизнь запомнил, причём это были девайсы от AD и TI. Я бы попробовал сколхозить для начала. А у вашего контроллера нет режима выходов без пулл-ап, просто ОК? Может вообще можно без всего, если он толерантен?
wdrakula правильно сказал, только диод желательно шоттки, что-то типа BAT42, иначе уровень нуля может оказаться слишком высоким.
Вообще, чем выше частоты, тем большие токи нужны для перезарядки всяких паразитных емкостей.
Я тоже имел предположение, что тут чего-то на ёмкости завязано, так как передний фронт с долгим нарастанием, но не понимал, как это купировать. На первом шифтере 3.3V формируется с помощью KB33 (похоже, что это MIC5205, LDO 3.3V/150mA), второму 3.3 я давал с Wemos-а - там трудится ME6211 (LDO 3.3V/ 500mA). Но на вемосе от LDO питаются все, так что шифтеру много не достаётся...
Можно ли полагать, что если взять какой-нить выделенный LDO типа AMS1117 (3,3V/до 1A), то он поможет качнуть мосфет на заданной частоте или же шансов нет?
Я однажды с шифтерами(правда двусторонними) такого г поел, на всю жизнь запомнил, причём это были девайсы от AD и TI. Я бы попробовал сколхозить для начала. А у вашего контроллера нет режима выходов без пулл-ап, просто ОК? Может вообще можно без всего, если он толерантен?
Ну, это не мой контроллер, это ESP. Я вообще ESP второй раз в жизни взял в руки, так что пока не интересовался его внутренним миром. А толерантность тут каким боком? Мне же надо сигнал уровня 3.3V с контроллера превратить в уровень 5V, а не наоборот.
Тогда подтяжки на +5 в руки. Ноль он ноль и есть, если выход не боится перенапряжения - управляйте пятивольтовой логикой.
Вот что имеется в ESP8266EX Datasheet Version 4.3 насчёт толерантности:
All digital IO pins are protected from over-voltage with a snap-back circuit connected between the pad and ground. The snap back voltage is typically about 6V, and the holding voltage is 5.8V. This provides protection from over-voltages and ESD. The output devices are also protected from reversed voltages with diodes.
Вы имеете в виду необходимость толерантности для сценария, в котором через подтяжку и диод на ESP потечет напряжение выше, чем 3.3V?
Выход не боится земли, опасно если у него внутренняя подтяжка к +3. Я это имел в виду. Если можно верхнюю подтяжку у контроллера отключить - управляйте чем хотите. Открытый коллектор есть? На выводах порта?
На этот счёт не могу ничего сказать... По ходу дела схемотехника ESP - это великая китайская тайна и может зависеть от релиза МС.
https://www.ba0sh1.com/blog/2016/08/03/is-esp8266-io-really-5v-tolerant/
> Teo Swee Ann i can reply officially here: it is 5V tolerant at the IO. while the supply voltage is at 3.3V.
Но-но-но. У вас есть? На выводах контроллера? Судя по картинке, должно быть. Про верх забудем. Но опендрейн должен быть. Стопудово.
Хотя этот ваш контроллер да. Не ардуино, ни разу)) Очень очень интересная штука.
В первый раз вижу такую хрень. Он действительно считывает программу с eeprom?
Но-но-но. У вас есть? На выводах контроллера? Судя по картинке, должно быть. Про верх забудем. Но опендрейн должен быть. Стопудово.
Не могу ни подтвердить, ни опровергнуть наличе ОК на GPIO - внутрешнюю схему от ESP пока найти не удалось. Однако, меня смущает тот факт, что та же Adafruit не подключает пикселы напрямую к своим 3.3V контроллерам (Feather family) через подтяжку, а упрямо рекомендуют Level Shifter.
В первый раз вижу такую хрень. Он действительно считывает программу с eeprom?
Насчёт "программы" не знаю, но EEPROM у неё эмулируется. На самом деле по EEPROM.commit() открывается сеанс по SPI с рядом стоящей флешкой и... Больше, к сожалению, о внутреннем мире ESP мне неизвестно. Вернее - есть только общие догадки.
Вот тут точно ничего не скажу. Ваш контроллер, я с такими не имел дела. Как он работает? Как у него порты внешние организованы?
Тут я точно не смогу помочь( Особенно с китайским братом. Есть здесь на форуме люди, которые с этими контроллерами уже имели дела. И походу у меня такие же lgt. Тут надо курить китайский rtfm))_P
это просто посмотреть осцилом по питанию, просаживается оно или нет.
далее. берете свой шифтер из первого поста, подключаете штатно+ вешаете дополнительный резистор 470 -1к с +5в на сигнальный ленты.
смотрите сигнал. щуп должен быть 1:10, у щупа 1:1 у самого хз какая входная емкость
Докладаю. С непонимаемой пока мной принципа работы схемой на диоде-резисторе связываться сразу не стал, решил зайти с простого и более-менее понятного - каскада на транзисторе.
Точно такого же транзистора не было, нашёлся BC557C. На макетке собрал... Ну, конечно, уровень сигнала он мне немного приподнял, но фронты на выходе остались плохими на сигнальной частоте ленты, пиксели продолжали подмаргивать.
Немного подумав и вспомнив, что основная необходимость подъёма напряжения логических уровней заключена в требовании достичь 0.7VDD (3,5V при 5V питании) страйпа при лог 1, а так же поразмыслив над схемкой с отделением первого пикселя, решил для пробы тупо занизить напряжение на всём страйпе. Покрутил ручку БП и обнаружил, что ситуация вообще не меняется при снижении VCC до 3V. Это меня озадачило, конечно.
Дальнейшие поиски привели меня в FastLED issues , где один товарищ рекомендовал при фликеринге поступить так:
Почитал типсы от микрочипа: http://ww1.microchip.com/downloads/en/DeviceDoc/chapter%208.pdf (TIP #7 3.3V → 5V Using a Diode Offset)
Затем интерес возобладал над разумом и я таки, приняв успокоительного, применил схему с диодом (перевернув его, как и наказано было) 1N5818 и резистором к вемосу. Ничего не задымилось, как не странно. Но сигнального ~3.65V достиг только при 200 Ом. Хочу поинтересоваться - не маловато ли сопротивление?
ток около 23 мА, не знаю какие у этого проца допуски по току на пин, может и многовато ..
Диод тут играет роль смещения уровня сигнала, от нуля вверх на величину падения напряжения на диоде.
т.е. можно пробовать ставить и 1n4148 или аналогичные шустрые кремнивые, если только с уровнем нуля проблем не возникнет.
Можно и ваш эмиттерный повторитель пробовать доработать, ставить ему и в базу и в эмиттер по 200 Ом.
Ага, ну с транзистором сегодня я уже не буду пробовать... Насчёт допусков китайцы что-то хвостом вертят: https://bbs.espressif.com/viewtopic.php?t=139 . Кратко - 12mA source, about 20mA - sink. Я так понимаю, что мне нужно ориентироваться на вторую цифру. Т.е., чтобы с минимальным запасом остаться, взять 300-400 Ом?
П применил схему с диодом (перевернув его, как и наказано было) 1N5818 и резистором к вемосу.
?????? 0_0. Поясни выделенное, если можно, картинкой. ;))
Это успокоительное так заставило написать. Всё, как в #10, только диод носом к вемосу.
Это успокоительное так заставило написать. Всё, как в #10, только диод носом к вемосу.
Уфф! А то я испугался! ;)))