WS8212B + Level shifter

sadman41
Offline
Зарегистрирован: 19.10.2016

Коллеги, подмогните мыслёй, кому не жалко...

Взял я 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 и есть ли шанс его приструнить? Возможно, что кто-то знает чем гарантированно-совместимо приподнять уровень для этих пикселей...

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А как все оно подключено друг к другу? И 5В откуда подается?

sadman41
Offline
Зарегистрирован: 19.10.2016

5V подаётся со внешнего БП (5V/2A) на +5V вемосу и прямо на level shifter. Шифтер сам делает себе 3.3V. Сигнал заводится... ну, положим, с D6. 

Т.е. ничего не просаживается вроде как. Потому что колечко я отключал, мерял просто на выходе шифтера. Блинк нормально раскачивает выход, а вот FastLED - не может. С частототой как-то связано что ли... Может блинку газу поддать и посмотреть, когда сорвётся...

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Да там 800КГц, вроде немного для транзисторов.

sadman41
Offline
Зарегистрирован: 19.10.2016

Разогнал немножко blink... На ESP это с приключениями проходит - Software WTD резетит МК. Но, тем не менее - до 20KHz Peak-to-Peak на осциллографе 4.96V, c ~22KHz начинает скакать, на ~28KHz 4.96V уже не видно и к 79KHz падает до 4.4V, т.е. полвольта как корова слизнула. Дальше не измерял (нужен нормальный генератор, а не блинк), но, думаю, эта тенденция и приводит к 3.6V на частоте передачи пикселей :(

Какие могут быть подозрения? Транзисторы не тянут или их обвязка не даёт разгонятся? Передний фронт, вижу, скруглён, задний - четкий. По фотографии на осциллографе (JINHAN JDS2022A) пока диагноз не умею ставить :(

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Фронты завалены капитально. Может просто бракованые компонетны? Китай, как никак.

sadman41
Offline
Зарегистрирован: 19.10.2016

asam пишет:

Фронты завалены капитально. Может просто бракованые компонетны?

Не могу ни подтвердить, ни опровергнуть - навыка контроля в этой области у меня нет. Поэтому и решил посоветоватся - стоит ли напрягаться в этой ситуации или переходить к какому-нить плану Б?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

sadman41 пишет:

Не могу ни подтвердить, ни опровергнуть - навыка контроля в этой области у меня нет. Поэтому и решил посоветоватся - стоит ли напрягаться в этой ситуации или переходить к какому-нить плану Б?

Да просто взять, какой-нибудь n-p-n транзитстор, и подключить через него.

Schwarz78
Offline
Зарегистрирован: 19.01.2019

По картинке - однозначно не успевают переключиться транзисторы, видно по завалу фронтов. Видимо китайские BSS138.

sadman41
Offline
Зарегистрирован: 19.10.2016

Навели вы меня на мысль, которая должна была стать самой первой - посмотреть на исходные фронты. По мне так - получше...

Однако, я поставил еще один эксперимент с роботдиновским шифтером 


Получил почти то же самое

Так что, видать, из одной коробки транзисторы взяты... Поможет ли самопал на n-p-n, если даже у роботдина такая же фигня? 

sadman41
Offline
Зарегистрирован: 19.10.2016
Нашёл один рецепт шифтинга тут: http://www.electrobob.com/ws2812-level-translator
 
Here is another simple method : connect your 3.3v swing output via a diode and pullup resistor to 5v.
The connection between diode and resistor will swing from 0.7 to 4.0V (the same 3.3v swing, but raised by the 0.7v over the diode)
Vlow = 0.7V, well below Vlowmax of 0.3*5 = 1.5v
Vhigh = 4.0v, well above Vhighmin of 0.7*5 = 3.5v
Much simpler than a transistor or level shifter and 100% within spec.
 
Насколько я понял, схема такова:
 
Правильно ли я понял совет и стоит ли пытаться применить (теоретически) ? А то я свой полигон успел свернуть :(
 
wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

диод в другую сторону

arduinec
Offline
Зарегистрирован: 01.09.2015

Попалась в Интернете (где не помню) такая схема:

Для преобразования используется промежуточный диод WS2812, слева от него обычный диод - на нём падает 0,7 В.

ВН
Offline
Зарегистрирован: 25.02.2016

 wdrakula правильно сказал, только диод желательно шоттки, что-то типа BAT42, иначе уровень нуля может оказаться слишком высоким.

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

Schwarz78
Offline
Зарегистрирован: 19.01.2019
Schwarz78
Offline
Зарегистрирован: 19.01.2019

Помню где-то кто-то писал, что при подключении WS желательно резистор последовательно ставить около 470 Ом, типа она ток сосёт. Это тоже кстати может быть. Попробуйте после шифтера сопротивление воткнуть.

sadman41
Offline
Зарегистрирован: 19.10.2016

Сопротивление стоит, на 300 ом. Статью по преобразованиям читал, поэтому и взял сборку на BSS138, которая под рукой была - в статье ровно та же схемотехника. Сейчас у меня выбор невелик - или заказывать шифтер, которые рекомендован Adafruit или колхозить на чём-то, что имеется в наличии (диоды, резисторы... мелочёвка, вобщем). Отделять первый пиксель можно (об этом, как раз, статья электробоба), но это палка о двух концах - требуется подбирать такой же, как и в остальной ленте. Или отрезать от ленты пиксель... Вобщем, не лучший вариант, по-моему.

Небольшое тематическое тестирование шифтеров, в котором мосфет тоже показал себя не с лучшей стороны: https://happyinmotion.com/?p=1247

 

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Я однажды с шифтерами(правда двусторонними) такого г поел, на всю жизнь запомнил, причём это были девайсы от AD и TI. Я бы попробовал сколхозить для начала. А у вашего контроллера нет режима выходов без пулл-ап, просто ОК? Может вообще можно без всего, если он толерантен?

sadman41
Offline
Зарегистрирован: 19.10.2016

ВН пишет:

 wdrakula правильно сказал, только диод желательно шоттки, что-то типа BAT42, иначе уровень нуля может оказаться слишком высоким.

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

Я тоже имел предположение, что тут чего-то на ёмкости завязано, так как передний фронт с долгим нарастанием, но не понимал, как это купировать.  На первом шифтере 3.3V формируется с помощью KB33 (похоже, что это MIC5205, LDO 3.3V/150mA), второму 3.3 я давал с Wemos-а - там трудится ME6211 (LDO 3.3V/ 500mA). Но на вемосе от LDO питаются все, так что шифтеру много не достаётся... 

Можно ли полагать, что если взять какой-нить выделенный LDO типа AMS1117 (3,3V/до 1A), то он поможет качнуть мосфет на заданной частоте или же шансов нет?

sadman41
Offline
Зарегистрирован: 19.10.2016

Schwarz78 пишет:

Я однажды с шифтерами(правда двусторонними) такого г поел, на всю жизнь запомнил, причём это были девайсы от AD и TI. Я бы попробовал сколхозить для начала. А у вашего контроллера нет режима выходов без пулл-ап, просто ОК? Может вообще можно без всего, если он толерантен?

Ну, это не мой контроллер, это ESP. Я вообще ESP второй раз в жизни взял в руки, так что пока не интересовался его внутренним миром. А толерантность тут каким боком? Мне же надо сигнал уровня 3.3V с контроллера превратить в уровень 5V, а не наоборот.

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Тогда подтяжки на +5 в руки. Ноль он ноль и есть, если выход не боится перенапряжения - управляйте пятивольтовой логикой.

sadman41
Offline
Зарегистрирован: 19.10.2016

Вот что имеется в 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?

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Выход не боится земли, опасно если у него внутренняя  подтяжка к +3. Я это имел в виду. Если можно верхнюю подтяжку у контроллера отключить - управляйте чем хотите. Открытый коллектор есть? На выводах порта?

sadman41
Offline
Зарегистрирован: 19.10.2016

На этот счёт не могу ничего сказать... По ходу дела схемотехника 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.

 

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Но-но-но. У вас есть? На выводах контроллера? Судя по картинке, должно быть. Про верх забудем. Но опендрейн должен быть. Стопудово.

Хотя этот ваш контроллер да. Не ардуино, ни разу)) Очень очень интересная штука.

Schwarz78
Offline
Зарегистрирован: 19.01.2019

В первый раз вижу такую хрень. Он действительно считывает программу с eeprom?

sadman41
Offline
Зарегистрирован: 19.10.2016

Schwarz78 пишет:

Но-но-но. У вас есть? На выводах контроллера? Судя по картинке, должно быть. Про верх забудем. Но опендрейн должен быть. Стопудово.

Не могу ни подтвердить, ни опровергнуть наличе ОК на GPIO - внутрешнюю схему от ESP пока найти не удалось. Однако, меня смущает тот факт, что та же Adafruit не подключает пикселы напрямую к своим 3.3V контроллерам (Feather family) через подтяжку, а упрямо рекомендуют Level Shifter. 

Schwarz78 пишет:

В первый раз вижу такую хрень. Он действительно считывает программу с eeprom?

Насчёт "программы" не знаю, но EEPROM у неё эмулируется. На самом деле по EEPROM.commit() открывается сеанс по SPI с рядом стоящей флешкой и...  Больше, к сожалению, о внутреннем мире ESP мне неизвестно. Вернее - есть только общие догадки.

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Вот тут точно ничего не скажу. Ваш контроллер, я с такими не имел дела. Как он работает? Как у него порты внешние организованы?

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Тут я точно не смогу помочь( Особенно с китайским братом. Есть здесь на форуме люди, которые с этими контроллерами уже имели дела. И походу у меня такие же lgt. Тут надо курить китайский rtfm))_P

ВН
Offline
Зарегистрирован: 25.02.2016

sadman41 пишет:
Можно ли полагать, что если взять какой-нить выделенный LDO типа AMS1117 (3,3V/до 1A), то он поможет качнуть мосфет на заданной частоте или же шансов нет?

это просто посмотреть осцилом по питанию, просаживается оно или нет.

далее. берете  свой  шифтер из первого поста, подключаете штатно+ вешаете дополнительный резистор 470 -1к  с +5в на сигнальный ленты.

смотрите сигнал.  щуп должен быть 1:10, у щупа 1:1 у самого хз какая входная  емкость

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Докладаю. С непонимаемой пока мной принципа работы схемой на диоде-резисторе связываться сразу не стал, решил зайти с простого и более-менее понятного - каскада на транзисторе. 

Точно такого же транзистора не было, нашёлся BC557C. На макетке собрал... Ну, конечно, уровень сигнала он мне немного приподнял, но фронты на выходе остались плохими на сигнальной частоте ленты, пиксели продолжали подмаргивать.

Немного подумав и вспомнив, что основная необходимость подъёма напряжения логических уровней заключена в требовании достичь 0.7VDD (3,5V при 5V питании) страйпа при лог 1, а так же поразмыслив над схемкой с отделением первого пикселя, решил для пробы тупо занизить напряжение на всём страйпе. Покрутил ручку БП и обнаружил, что ситуация вообще не меняется при снижении VCC до 3V. Это меня озадачило, конечно. 

Дальнейшие поиски привели меня в FastLED issues , где один товарищ рекомендовал при фликеринге поступить так:

Try adding the line:
 
`#define FASTLED_ALLOW_INTERRUPTS 0` before the `#include <FastLED.h>` -- what you're describing sounds like an interrupt that's running a bit too long (but that isn't being caught as having run too long by the code that allows interrupts)
 
Что я и проделал. И... промаргивание исчезло. Колечко стало устойчиво работать и с транзистором и с преобразователем уровней (хотя он-то лучше не стал) и вообще без всего это ансамбля. 
 
Итог: дело было не в бобине, в кабине находился сами понимаете кто. Но эксперимент по фрагменту с диодом-резистором я, надеюсь, продолжу, как только доберусь до протеуса. Опасаюсь пальнуть вемос.
 
sadman41
Offline
Зарегистрирован: 19.10.2016

Почитал типсы от микрочипа: http://ww1.microchip.com/downloads/en/DeviceDoc/chapter%208.pdf (TIP #7 3.3V → 5V Using a Diode Offset)

Затем интерес возобладал над разумом и я таки, приняв успокоительного, применил схему с диодом (перевернув его, как и наказано было) 1N5818 и резистором к вемосу. Ничего не задымилось, как не странно. Но сигнального  ~3.65V достиг только при 200 Ом. Хочу поинтересоваться - не маловато ли сопротивление? 

ВН
Offline
Зарегистрирован: 25.02.2016

ток около 23 мА, не знаю какие у этого проца допуски по току на пин, может и многовато ..

Диод тут играет роль смещения уровня сигнала, от нуля вверх на величину падения напряжения на диоде.

т.е. можно пробовать ставить и 1n4148 или аналогичные шустрые кремнивые, если только с уровнем нуля проблем не возникнет.

Можно и ваш эмиттерный повторитель пробовать доработать, ставить ему и в базу и в эмиттер по 200 Ом.

sadman41
Offline
Зарегистрирован: 19.10.2016

Ага, ну с транзистором сегодня я уже не буду пробовать... Насчёт допусков китайцы что-то хвостом вертят: https://bbs.espressif.com/viewtopic.php?t=139 . Кратко - 12mA source, about 20mA - sink. Я так понимаю, что мне нужно ориентироваться на вторую цифру. Т.е., чтобы с минимальным запасом остаться, взять 300-400 Ом?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sadman41 пишет:

П применил схему с диодом (перевернув его, как и наказано было) 1N5818 и резистором к вемосу.

??????   0_0. Поясни выделенное, если можно, картинкой. ;))

sadman41
Offline
Зарегистрирован: 19.10.2016

Это успокоительное так заставило написать. Всё, как в #10, только диод носом к вемосу.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sadman41 пишет:

Это успокоительное так заставило написать. Всё, как в #10, только диод носом к вемосу.

Уфф! А то я испугался! ;)))