Протокол KT-LCD

Автор Blik86, 30 Апр. 2019 в 01:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Blik86

Цитата: user020413 от 14 Сен. 2021 в 09:29Ясно, параметр P5 контроллеру не нужен, возможно он передается для копирования в другой лсд. B12 постоянен.
При копировании в другой дисплей другой протокол. Нет гарантий что В12 константа, есть нестандартные дисплеи с реверсом и хз еще чем. 

Blik86

 
Цитата: evgeni1 от 21 Май 2022 в 21:45здравствуйте подскажите пожалуйста что значит данный протокол связи (KT-LCD ) просто выбираю контроллер что бы подходил к дисплею который есть (баф) продавцы пишут что убедитесь что ваш дисплей поддерживает данный протокол
Это значит что с бафангами они несовместимы. Соответственно вы либо меняете дисплей либо выбираете из тех контроллеров что продаются комплектом с дисплеем бафанга и то могут быть проблемы.

puh

Как вы считаете, реально ли сделать аналог KT-LCD3 по типу как EasyDIY OpenSource EBike display https://opensourceebike.github.io/ ?
Интересуюсь, так как у меня треснул экранчик - результат неудачной замены колеса... Я новый заказал конечно, но вот появилась идея самоделки. А может такое уже и реализовано - ткните меня туда если так...

Blik86

#39
Включение/отключение питания контроллера и питание самого дисплея нужно в железе организовать, измерение напряжения если оно нужно. Остальной функционал  програмно. Но заморачиваться с этим не добавляя фенечек экономически не целесообразно.

puh

Я сначала тоже подумал про смартфон, но смущает беспроводная коммуникация... Или  подключаться через USB-OTG, хм, ну это мой телефон не поддерживает...
Вот нашел интересный вариант подмешивания в протокол  между контроллером и LCD3 данных температуры с внешнего сенсора - ожидаемо с использование ардуино: https://endless-sphere.com/forums/viewtopic.php?t=73475
Там автор выложил код - выглядит до ужаса примитивно: читаем в буфер сигналы от контроллера, если прочитанный байт = 65 начинаем считывать последовательности по 12 байт. Далее автор для 9 байта вписывает новые значения температуры двигателя, потом пересчитывает CRC и обновляет 6 байт, после чего пишет все 12 байт обратно в серийный порт:
(Хотел сюда вставить код - но мне пока не разрешено)

Вот я и думаю - прочитать данные с контроллера настолько просто. Сейчас у меня экран LCD3 не читается, а хочется знать на каком сейчас уровне стоит PAS, то есть прочитать байт B1 и вывести его на отдельный какой-то экранчик. А смотреть уровень батарейки можно примастрячить простейший измеритель типа https://www.aliexpress.com/item/1005004058114208.html
В общем буду пробовать наверное просто добавить дополнительную ардуинку с экранчиком и считывать...

Blik86

Цитата: puh от 19 Авг. 2022 в 23:38Там автор выложил код - выглядит до ужаса примитивно
Там все примитивно, вопрос лишь в том чего вы хотите добиться. По сути включать/выключать можно механической кнопкой (но есть шанс забыть выключить и посадить акб), питание можно брать с самого контроллера (но тянуть его наружу опасно, а встраивать не практично), обмен идет по UART 5В(преобразоватили уровня решают большинство вопросов) и в принципе можно дисплей заменить на wifi или синезуб модуль. 
https://opensourceebikefirmware.bitbucket.io/development/Motor_controllers--BMSBattery_S_series--Bluetooh--DIY_Bluetooth_module.html
Цитата: puh от 19 Авг. 2022 в 23:38а хочется знать на каком сейчас уровне стоит PAS
От меня ускользает зачем это вообще нужно, тем более возиться из-за этого при заказанном дисплее.

puh

Точно, вы правы.
Хочу уточнить - у меня валяется стандартный переходник USB-RS485 (вот такой https://www.aliexpress.com/item/32885496936.html - покупал для работы с MOD-BUS когда-то).
Я его могу подсоединить (параллельно, не отключая от контроллера) к зеленому (Tx)  и черному (GND) проводу от LCD3, и тогда на компе в программе Terminal прослушивать - с момента включения LCD3 периодически должны сыпаться пакеты по 13 байт с B0 по B12, получив которые я с помощью вашего Excel файла смогу разобрать все параметры. Все ли я правильно понимаю?

Blik86


edw123

Цитата: puh от 20 Авг. 2022 в 17:47
Ну и еще такой нюанс, что я не смогу точно вспомнить все параметры контроллера, а посмотреть их на треснувшем экране не получится.
Поставить порт на комп и смотреть-настраивать с него.

Добавлено 20 Авг. 2022 в 20:36

Цитата: puh от 20 Авг. 2022 в 19:56
Ладно, поищу USB-RS232, вроде где-то тоже был... В принципе могу и ардуиной считать, чего уж там - https://wiki.iarduino.ru/page/Arduino_as_a_USB_UART_converter/
Ардуино сгодится.

Blik86

Цитата: puh от 20 Авг. 2022 в 19:56поищу USB-RS232
USB-UART нужен. Это то чем шьют ардуины, 3д принтеры и остальные наколенные поделки.

edw123

 ;-D
Цитата: Blik86 от 20 Авг. 2022 в 20:39
USB-UART нужен. Это то чем шьют ардуины, 3д принтеры и остальные наколенные поделки.
Я через Ардуино гонял спокойно.

puh

Все получилось, правда не с первого раза, но все равно хорошо.

Снял характеристики контроллера (зеленый провод):


и LCD3 (желтый):


По файлу EXCEL получил все необходимые параметры:


Хочу еще раз выразить огромную благодарность!

puh

#48
План такой:
1. Открываем коробку с контроллером чтобы получить доступ к коннектору, соединяющему LCD и контроллер




2. Готовим ардуинку для работы в качестве TTL приемника - тут подробности https://www.instructables.com/How-to-Use-Arduino-As-USB-to-TTL-Serial-Converter-/


3. На физически отключенной батарее подключаем ардуинку к коннектору - черный провод коннектора -> GND, желтый -> TX. Я просто проводки подсунул с хвоста подключенного коннектора, каждый в свое гнездо, чтобы контакт был с пинами коннектора.




4. Подключаем ардуинку к компьютеру по USB




5. В качестве программы использовал HTerm http://der-hammer.info/pages/terminal.html - рекомендую, очень все наглядно - на скриншотах видно.


6. В программе надо выбрать COM порт, и подключиться через CONNECT, задав 9600 baudrate

7. Затем включаем батарею и контроллер - на ардуинке начинает моргать светодиод - идет передача параметров. Я даже видео снял - https://youtube.com/shorts/kp5PaM04uzk?f

8. В окне программы бегут байтики - можно нажать дисконнект и разбирать их - находим байт 0E - это последний байт - от него начинаем снимать параметры (т.е. следующий за ним будет B0 в экселе и т.д.)

9. Для этого открываем эксель и аккуратно в желтые поля записываем то, что в программе синим (HEX), пишем все подряд кроме B5 (CRC) - его пропускаем


10. Записав все (снова дошли до 0E) проверяем B5 - в экселе значение должно совпасть с тем, что принято от контроллера (в моем случае значение B5 - "B4" (HEX) или "180" (DEC) или "10110100" (BIN)

11. Справа в экселе смотрим получившиеся параметры P1...P5 и C1...C14

Все выше написанное - для снятия параметров LCD3 (думаю с LCD любой версии так можно).
Если подключиться к зеленому - можно снять показатели, что шлет контроллер обратно в LCD (у меня зеленый - у вас может быть наоборот желтый отвечает за контроллер). Но это не особенно интересно на данном этапе - вот если бы эти показания да на экранчик...

Почему не с первого раза у меня получилось - это смешно (и стыдно) рассказывать - сначала перепутал коннекторы и пытался снять показания с датчиков холла - там тоже провода такого же цвета...

Добавил модифицированный эксель файл - в нем подсказки по параметрам

puh

Цитата: Blik86 от 23 Авг. 2022 в 23:18А они на разные порты подключены?
Экранчик OLED с интерфейсом SPI по идее никак не должен влиять на Serial ? Такой вот https://electropeak.com/learn/interfacing-0-96-inch-spi-oled-display-module-with-arduino/


Цитата: edw123 от 23 Авг. 2022 в 23:21А на компе скорость можете видеть?
Ну как бы да - для этого надо подключится к зеленому проводку (ответ от контроллера к LCD - протокол см. например тут https://endless-sphere.com/forums/viewtopic.php?f=2&t=73471) и выделить B3 и B4, которые по формуле дадут период оборота колеса в миллисекундах period(ms)=B3*256+B4, затем, зная диаметр колеса имеем длину окружности (у меня 26'' x 2.125 = 2070мм - см. тут например https://ridewithgps.com/help/wheel-circumference-setting/)
на которую умножаем период (получаем мм/мс - переводим если нужно в км/ч умножив на 3.6)

Blik86

Цитата: puh от 23 Авг. 2022 в 23:32по идее никак не должен влиять на Serial ?
Легко могут оказаться заведены на одни и те же выводы ардуины , еще может влиять обвес для перезагрузки по ком порту.

puh

Сегодня вроде получилось, но сигнал пока отправляю не с оригинального контроллера (лень снова коробку открывать и подключаться), а с приснопамятного USB-TTL адаптера, подключенного как источник сигнала. Через ту же софтину HTerm шлю пакеты - экранчик показывает скорость. Но пока только 0 т.к. я не знаю какие должны быть B3, B4 в движении. Надо будет все же снова залезть в коробку с контроллером и записать сигнал во время кручения колеса. Думаю все получится. Смогу ездить с разбитым LCD, но скорость и разряд батарейки контролировать... Вопрос откуда брать +5 вольт - в LCD на сколько понимаю полное напряжение батареи +48... Неужели придется еще и понижающий БП ставить вдовесок к ардуине и экранчику (хочу прямо внутри корпуса LCD все разместить, или рядышком примастрячить...)






puh

Цитата: edw123 от 24 Авг. 2022 в 23:38Сильно крутой внешний разъём подключения дисплея, что в него нельзя влезть?
Кстати да, чего-то не додумался, что можно со стороны LCD открыв корпус напрямую зацепиться за зеленый провод и заодно найти на плате 5в для ардуинки. Спасибо за идею.

Blik86

Цитата: puh от 24 Авг. 2022 в 23:46напрямую зацепиться за зеленый провод
Главное его совсем не забирайте, а то дисплей без данных от контроллера по таймеру отрубает питание.