Kракозябры на LCD 1602 I2C

haxyn
Offline
Зарегистрирован: 20.08.2016

Добрый день,

Я подключил к Ардуино LCD 1602 через I2C + энкодер с кнопкой.
Для LCD использую LiquidCrystal_I2C

Написал меню, всё работает как надо, но если крутить энкодер слишком быстро то иногда появляются "кракозябры"
Иногда если продолжить крутить энкодер, то всё нормализуется, а иногда окончательно зависает.
Сценарий выполняется нормально и Адруино реагирует на энкодер/клик, т.е. сам Ардуино не зависает, только экран.

По софту.
энкодер/клик читается в loopе каждые 5мс и меняет переменные
потом вызывает reDraw() которая стирает экран и рисует заново по переменным.
т.е. чем быстрей крутить энкодер тем чаще происходит перерисовка.

По железу, не уверен, что это важно, но энкодер/кнопка/экран подключены к Ардуино обычной сетевой витой парой.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Молодец! Принято к сведению.

Как я понял, это просто информация, никаких вопросов к сообществу нет. Правильно?

haxyn
Offline
Зарегистрирован: 20.08.2016

ЕвгенийП, Благодарю за комментарий! Вы мне очень помогли!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не за что, обращайтесь ещё.

Я, правда, не понял в чём я Вам помог, ни о какой помощи Вы не просили :(

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

обычной сетевой витой парой.

какой длины?

haxyn
Offline
Зарегистрирован: 20.08.2016

1.5 m

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

1.5 m

это ответ на твой вопрос.

haxyn
Offline
Зарегистрирован: 20.08.2016

Спасибо!

Погуглил, это и в прямь общая проблема, куча постов на эту тему.

Еще раз спасибо, буду подбирать длину, чтоб дотягивался с приборной панели до Ардуины и не глючил.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

Спасибо!

Погуглил, это и в прямь общая проблема, куча постов на эту тему.

Еще раз спасибо, буду подбирать длину, чтоб дотягивался с приборной панели до Ардуины и не глючил.

у тебя, походу, наводки от энкодера влияют на экран по твоей витой паре.

haxyn
Offline
Зарегистрирован: 20.08.2016

Я тоже так подумал, по этому заменил витую пару на "плоский" провод где все провода идут параллельно, результат тот же.

Я думаю вы правы про длину, гугл говорит в зависимости от чипа длинна может быть 30см до +/-6м

Полно объявлений о продаже "усилителей" на 100м, так что думаю надо искать в эту сторону.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

Я тоже так подумал, по этому заменил витую пару на "плоский" провод где все провода идут параллельно, результат тот же.

Я думаю вы правы про длину, гугл говорит в зависимости от чипа длинна может быть 30см до +/-6м

Полно объявлений о продаже "усилителей" на 100м, так что думаю надо искать в эту сторону.

можно попробовать каждую вторую жилу плоского кабеля заземлить.

haxyn
Offline
Зарегистрирован: 20.08.2016

Это как?

У меня 10 жил, мне надо 8, 2 не использованы.

т.е. надо сделать скажем GND,SDA,GND,SCL,GND?

Еще я где то вычитал, что понижение скорости увеличит дистанцию. Это как?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

Это как?

У меня 10 жил, мне надо 8, 2 не использованы.

т.е. надо сделать скажем GND,SDA,GND,SCL,GND?

Еще я где то вычитал, что понижение скорости увеличит дистанцию. Это как?

как - все сигнальные жилы разделены земляными.

да - нужно в два раза больше жил.

haxyn
Offline
Зарегистрирован: 20.08.2016

Такого кабеля нет, я на 10 то жил еле нашёл.

Я имею в виду если просто оградить 2 жилы по которым идёт сигнал на LCD этого не хватит?

т.е. 10 жил:

GDN|SDA|GDN|SCL|GDN|BTN|+4v|EncClick|EncA|EncB

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

Такого кабеля нет, я на 10 то жил еле нашёл.

Я имею в виду если просто оградить 2 жилы по которым идёт сигнал на LCD этого не хватит?

т.е. 10 жил:

GDN|SDA|GDN|SCL|GDN|BTN|+4v|EncClick|EncA|EncB

ну, да - сигнальные экрана огради между собой земляными и от сигнальных энкодера.

т.е. минимум - три земляных для двух сигнальных экрана

haxyn
Offline
Зарегистрирован: 20.08.2016

Спасибо!

haxyn
Offline
Зарегистрирован: 20.08.2016

Еще вопрос, нашёл ретрансляторы типа PCA9517AD и P82B715  

"device for buffering highly-capacitive I2C bus systems"

"Allows Bus Capacitance of 400 pF on Main I2C Bus (Sx/Sy Side) and 3000 pF on Transmission Side (Lx/Ly Side)"

Это может помочь?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

Еще вопрос, нашёл ретрансляторы типа PCA9517AD и P82B715  

"device for buffering highly-capacitive I2C bus systems"

"Allows Bus Capacitance of 400 pF on Main I2C Bus (Sx/Sy Side) and 3000 pF on Transmission Side (Lx/Ly Side)"

Это может помочь?

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

haxyn
Offline
Зарегистрирован: 20.08.2016

ОК, попробую отдельный кабель для SDA|SCL

Клапауций 232
Offline
Зарегистрирован: 05.04.2016
haxyn
Offline
Зарегистрирован: 20.08.2016

Клапауций 232, Спасибо за помощь!

Как вы и сказали:
"если грамотно организовано кабельное соединение и сигналы не перемешиваются посредством наводок друг на друга."

Только, как выяснилось, мешал не энкодер, а друг другу мешали SDA и SCL

Для пробы вытащил из 2-х метрового сетевого кабеля 2 пары.
Сначала подсоединил пары +4/GDN и на второю SDA/SCL
на экране только подсветка загоралась, сигнал вообще не проходил
потом перепаял пары на +4/SDA и SCL/GDN и 2-х метровый кабель заработал без единого глюка.

В "плоском" кабеле сделал 3 земли SCL и SDA по краям ограждены землёй
но иногда если очень быстро крутить энкодер то всё же экран зависает, но в принципе этого пока достаточно.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

огорчает, что ты вслепую пробуешь.

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

при использовании сетевого кабеля: белый - земля, цветной - сигнальный

1_RJ-45.jpg

потому как твоё описалово "+4/SDA и SCL/GDN" лично мне не понятно.

haxyn
Offline
Зарегистрирован: 20.08.2016

>>>огорчает, что ты вслепую пробуешь.
В электронике я 0, а сделать надо.

>>>потому как твоё описалово "+4/SDA и SCL/GDN" лично мне не понятно.
I2C 4 контакта:
+5 вольт (у меня с 4в работает)
земля
SCL
SDA
Кроме них в кабель надо запихать еще 3 провода для энкодера с кнопкой
и еще один провод для кнопки reset, и того 8

Первый "аппарат" уже на автобусе проходит тестирование, пока всё работает.
Если всё хорошо надо будет еще 30 спаять
Я думал теперь попробовать сетевой CAT6А там каждая пара экранирована

CAT6A

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

+4/SDA и SCL/GDN

 

получается, что SCL экранировал, а SDA - нет.

нужно:

SDA/GDN

SCL/GDN

+4/GDN

 

haxyn
Offline
Зарегистрирован: 20.08.2016

Клапауций 232 пишет:

haxyn пишет:

+4/SDA и SCL/GDN

 

получается, что SCL экранировал, а SDA - нет.

нужно:

SDA/GDN

SCL/GDN

+4/GDN

 

В идеале да, но нет столько проводов.
Как показал метод тыка главное чтобы SDA не мешал SCL
На "плоском" с 10 жилами я сделал:
SDA|GND|+4|энк. клик|reset|энк. A|GND|энк. B|GND|SCL

энк. = энкодер

reset - "пустой" провод

А на CAT6A вся эта "фольга" заземляется?
Я думал в по одной паре пустить SCL и землю по другой SDA и "пустой" провод (провод для кнопки reset)
И поскольку "фольга" заземлена всё должно работать лучше чем с плоским кабелем.. или я не прав?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

А на CAT6A вся эта "фольга" заземляется?
Я думал в по одной паре пустить SCL и землю по другой SDA и "пустой" провод (провод для кнопки reset)
И поскольку "фольга" заземлена всё должно работать лучше чем с плоским кабелем.. или я не прав?

если ты её(фольгу) заземлишь, то будет заземлена.

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

haxyn
Offline
Зарегистрирован: 20.08.2016

>>>если ты её(фольгу) заземлишь, то будет заземлена.

Я имею в веду что толк от такого заземления будет? или надо обязательно чтоб в паре один из проводов был GND?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

haxyn пишет:

>>>если ты её(фольгу) заземлишь, то будет заземлена.

Я имею в веду что толк от такого заземления будет? или надо обязательно чтоб в паре один из проводов был GND?

да не заземление это - а экранизация от помех.

источником помех может быть соседняя жила.

источником помех может быть соседний кабель или оборудование.

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

haxyn
Offline
Зарегистрирован: 20.08.2016

Спасибо, всё понятно, буду пробовать.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Клапауций 232 пишет:

haxyn пишет:

+4/SDA и SCL/GDN

 

получается, что SCL экранировал, а SDA - нет.

Какая разница?

По переменнгому току "питание" - та же "земля". Главное, не забыть конденсаторы с обеих сторон кабеля поставить.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

andriano пишет:

Какая разница?

По переменнгому току "питание" - та же "земля". Главное, не забыть конденсаторы с обеих сторон кабеля поставить.

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

Logik
Offline
Зарегистрирован: 05.08.2014

Экранирование питанием вполне норм. А понизить скорость I2c не пробовали?

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Клапауций 232 пишет:

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

Посмотрите, как разводятся цифро-аналоговые печатные платы: обычно там 4 слоя - по краям земля и питание, а два средние - все остальные соединения.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

andriano пишет:

Посмотрите, как разводятся цифро-аналоговые печатные платы: обычно там 4 слоя - по краям земля и питание, а два средние - все остальные соединения.

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

а, ещё лучше - смешанную схему, где экраны имеют разный потенциал.

я принципиально отличного от этого не наблюдал.

image207.gif