avatar_13_chip_13

Замена или модернизация TF-100

Автор 13_chip_13, 18 Март 2020 в 16:33

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

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

13_chip_13

Так тут был просто расширитель хода курка, плавность он в весьма ограниченных случаях даёт. Видимо после переезда форума на новую платформу архивы пробило некоторые. Исходник же есть, по нему схему и востанови. Выйду с отпуска поищу мож где-то завалялось. Я давно совсем другой девайс для плавности сделал https://electrotransport.ru/index.php?topic=64647.0

Из бесплатных есть ещё один проект сделал, но вся инфа только в телеге
https://electrotransport.ru/index.php?topic=66345.0

Diral

//Тупая управляка газом TF-100 на ESP8266
//Подойдет для временный езды если у вас сгорел контроллер TF-100 
//Ручку газа или датчик холла цеплять на A0----3.3V----GND
#include <SoftwareSerial.h>

const int ADC_PIN = A0;
const int UART_TX_PIN = 10;
const int UART_RX_PIN = 11;
const int UART_BAUDRATE = 9600;

SoftwareSerial uart(UART_RX_PIN, UART_TX_PIN);
byte calculateCRC;
void setup() {
  Serial.begin(9600);
  uart.begin(UART_BAUDRATE);

}
void loop() {
  int adcValue = analogRead(A0); // Считывание значения АЦП

  // Преобразование значения АЦП в процентное соотношение от 0% до 100%
  int percent = map(adcValue, 200, 1024, 0,991 );
 


 

  byte buffer[] = {0x01, 0x14, 0x01, 0x02, 0x0F, 0x80, 0x1E, 0x5A, 0x00, 0x01, 0x05, 0x64, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x05, 0x68};
              //      0   1     2     3      4    5      6     7     8    9     10     11   12    13    14    15    16    17    18    19   
  // Установка значения 18-го и 19-го битов в зависимости от процентного соотношения АЦП
  buffer[16] = percent >> 8 & 0xFF; // Значение 16-го бита (старшая часть)
  buffer[17] = percent & 0xFF; // Значение 17-го бита (младшая часть)


int CRC=(0xB4)^((char)buffer[16])^((char)buffer[17]);
 


Serial.print((char)buffer[0]);
Serial.print((char)buffer[1]);
Serial.print((char)buffer[2]);
Serial.print((char)buffer[3]);
Serial.print((char)buffer[4]);
Serial.print((char)buffer[5]);
Serial.print((char)buffer[6]);
Serial.print((char)buffer[7]);
Serial.print((char)buffer[8]);
Serial.print((char)buffer[9]);
Serial.print((char)buffer[10]);
Serial.print((char)buffer[11]);
Serial.print((char)buffer[12]);
Serial.print((char)buffer[13]);
Serial.print((char)buffer[14]);
Serial.print((char)buffer[15]);
Serial.print((char)buffer[16]);
Serial.print((char)buffer[17]);
Serial.print((char)buffer[18]);
Serial.print ((char)CRC); // Добавление CRC8 в последний байт


  delay(100);
 
}

13_chip_13

Цитата: Diral от 11 Окт. 2023 в 11:07//Тупая управляка газом TF-100 на ESP8266
//Подойдет для временный езды если у вас сгорел контроллер TF-100 
//Ручку газа или датчик холла цеплять на A0----3.3V----GND
........................
Рад что кто то смог использовать эту инфу по протоколу, но проблема в том что вот это повторить никто не сможет (конечно возможен вариант с миллионом вопросов, но кто отвечать будет?...), потому что у того кто это будет делать сразу возникнет вопрос: а что за плата нужна, а как/что подключать и т.п. А те кто сможет - этот исходник ну... им он ненужен в принципе.
Текста много, но по сути main ужать раза в три можно:
  int adcValue = analogRead(A0); // Считывание значения АЦП

  // Преобразование значения АЦП в процентное соотношение от 0.0% до 100.0%
  int percent = map(adcValue, 200, 1024, 0,991 ); // тут проблема, потому что где гарантия, что начало нажатия у конкретного курка с 200 начинается (может так случиться что газуля не нажата, а сигнал о том что газ нажат уже идёт).
            //      0      1     2     3    4     5     6     7     8     9     10    11    12    13    14    15    16    17    18    19 
  byte buffer[] = {0x01, 0x14, 0x01, 0x02, 0x0F, 0x80, 0x1E, 0x5A, 0x00, 0x01, 0x05, 0x64, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x05, 0};
               
  // Установка значения 18-го и 19-го битов в зависимости от процентного соотношения АЦП (маски ненужны, всё само "обрежеться" при приведении типов)
  buffer[16] = percent >> 8 ; // Значение 16-го бита (старшая часть)
  buffer[17] = percent ; // Значение 17-го бита (младшая часть)

  for(int i=0;i<(sizeof(buffer)/sizeof(buffer[0]));i++){
     Serial.write(buffer[i]);
     buffer[19] ^= buffer[i]; // CRC считаем сразу тут, потому что вдруг кто то захочет изменить что то в инициализации buffer
  }

  delay(100); /*  в зависимости от ревизии частота посылок у БК разная, также из за этого некоторым контролерам это важно и неправильная установка периода посылки приводит к неработоспособности, хотя вроде обмен идёт.*/
 

edw123

Цитата: 13_chip_13 от 12 Окт. 2023 в 11:20у того кто это будет делать сразу возникнет вопрос: а что за плата нужна,
Ну кто будет делать наверняка сам решит, какую плату можно использовать, ну с учетом возможных других адресаций и названий стандартных подпрограмм - идея ясна, пример даден. :exactly: Вопрос будет у тех, кто едва ли сам будет делать, ну или решит себя попробовать.

Хотя есть вопрос к
Цитата: Diral от 11 Окт. 2023 в 11:07//Тупая управляка газом TF-100 на ESP8266
Это опробовано при езде?

13_chip_13

Хотя есть вопрос к
Цитата: Diral от 11 Окт. 2023 в 11:07//Тупая управляка газом TF-100 на ESP8266
Это опробовано при езде?
Это будет работать 100% с некоторыми НО.

edw123

Цитата: 13_chip_13 от 12 Окт. 2023 в 13:42Хотя есть вопрос к
Цитата: Diral от 11 Окт. 2023 в 11:07//Тупая управляка газом TF-100 на ESP8266
Это опробовано при езде?
Это будет работать 100% с некоторыми НО.
Да, часто бывает много "но" при реализации. Вот я и хочу уточнить у Diral - это макетка на столе или уже ездила.

varius

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

Если есть кто может предложить колаборацию то уэлком.

А теперь сама суть.

ТФ100, равно как и другие пульты по функционалу слишком примитивны. Количество заложенных функций просто ничтожно по сравнению с возможностями, которые дают контроллеры моторов.

ЕСП слишком замороченная плата, у неё свои особенности и недостатки.

Если разобраться с протоколом, то есть хорошая платка стм32, её хватает за глаза, и цепляй к ней любой дисплей и любой каприз будет исполнен, можно реализовать любой функционал, а то куго делает всякие там г1/г2/г3 типа с телевизорами, но по факту это просто тот же м4.

Если у кого есть инфо по данному вопросу, буду весьсма благодарен...

Есть просто тупой контроллер мотора, я спокойно могу с ним заморочиться, но это уже другая тема.

kamikadze09rus

Здравствуйте.Тоже интересна эта тема, но по другим причинам. Работаю в сервисе по ремонту электротранспорта, и Kugoo частые гости. Хотелось бы иметь не скоомпилированную прошивку для  курков, с целью менять их между собой, как душе угодно. Есть вопросы по поводу управления дисплеем, Led драйвера там замечено не было, возможно что дисплеем управляет микроконтроллер напрямую, нужно уточнить этот вопрос

HeadLess

Всех приветствую.
Попал в руки БК от Куги. Выдаёт пакеты как в первом сообщении.
Есть желание использовать как самостоятельный спидометр.
Как я понимаю достаточно засылать пакет, в котором менять 8-й и 9-й байты.
А БК в зависимости от размера колеса сделает пересчет значений в скорость.
Или еще какие то параметры будут влиять?
И какая частота отправки пакетов в БК?

HeadLess

Набросал симулятор пакетов. Сделал пересчет скорости по размеру колеса. Спидометр показывает.
Ошибка Е006 исчезла. А Е002 осталась. Думаю для функционала спидометра не критично.
Спасибо за раскуренный протокол.

HeadLess

И ещё вопрос. Питаю БК от 24 вольт, в настройках поставил 48. Откуда берётся значение для шкалы заряда батареи?
Если используется АЦП N76E003, то было бы подсвечено пол-шкалы. Либо, с учётом допустимого минимального напряжения аккума, показало, что пациент мёртвый.
Если прилетает в пакете, то где искать? Пробовал в небольших пределах менять данные в посылке. При ненулевых значениях спидометр сваливается в "00".

HeadLess

#191
Цитата: HeadLess от 15 Сен. 2024 в 20:21Ошибка Е006 исчезла. А Е002 осталась.
Если к ДХ поднести магнит, типа нажать курок, Е002 исчезает.
При переключении отображения ODO=>TRIP=>U=>A=>непонятные цифры=>время работы=>ошибки,
всё же непонятно, как отображать напряжение и потребление. А также что за непонятные цифры.
В мане ничего нет про это.

HeadLess

Цитата: HeadLess от 16 Сен. 2024 в 04:40Пробовал в небольших пределах менять данные в посылке. При ненулевых значениях спидометр сваливается в "00".
Разобрался. Мой косяк. Всё работает

samogon13

Всем добра
есть Kugoo Max Speed сTF100 6 pin 48V
Хочу подружить и замок зажигания с курком и переключением передач
Спойлер

контролер
Спойлер
Хочу подружить
можете помочь куда подключить чтобы TF-100 дублировался (работали одновременно)курок TF-100 обрежу



Роман49

Отличная тема!
А этот проект уже смотрели?
Разбор протокола

13_chip_13

Цитата: Роман49 от 03 Апр. 2025 в 19:44Отличная тема!
А этот проект уже смотрели?
Разбор протокола
Что за проек? Там просто разбор протокола. Да и всё это давно известно (мне во всяком случае), а за существование моего проекта (с 20 года) никого особо этим занимающегося я так и не встретил, хотя нет, у буржуя какого то видел что то похожее.
Давно делаю многопротокольный плавный газ, тут старое:
https://electrotransport.ru/?topic=64647.0#topmsg
Поддерживаю в телеге только, lite версия (более сложную перестал делать):
https://t.me/faq_MSBK_lite

13_chip_13

Цитата: samogon13 от 24 Фев. 2025 в 13:10Всем добра
есть Kugoo Max Speed сTF100 6 pin 48V
Хочу подружить и замок зажигания с курком и переключением передач
Спойлер

контролер
Спойлер
Хочу подружить
можете помочь куда подключить чтобы TF-100 дублировался (работали одновременно)курок TF-100 обрежу
Никак не подружить переключатель режимов в стиле - "припаять провода и обрезать ненужное". Только или другой контроллер где можно переключателем орудовать или доп. платы. Оба варианта относительно примерно стоят одинаково.

greenrat

Цитата: 13_chip_13 от 04 Апр. 2025 в 11:08Никак не подружить переключатель режимов в стиле - "припаять провода и обрезать ненужное". Только или другой контроллер где можно переключателем орудовать или доп. платы. Оба варианта относительно примерно стоят одинаково.

Добрый день или ночь (в зависимости от времени суток на момент просмотра этого поста).
У меня вопрос по протоколу обмена между компьютером и силовой платой. Купил на замену старому компьютеру TF-100 новый. Старый случайно спалил при прозвонке (коротнул щупом). Не суть. В общем купил новый - подключил к силовому модулю. Жму рычаг - колесо крутится. Но на самом дисплее скорость равна нулю.

Я правильно понимаю что параметры текущей скорости шлет контроллер силовой части в ответ на запрос с компьютера ?

Решил посмотреть протокол обмена между компьютером и силовым модулем. От компьютера идет посылка такой же структуры как обсуждалось в этом топике (типа 01 14 01 02 0F 80 19 00 64 02 05 00 64 0C 01 36 00 00 05 B9 ), а вот назад идет посылка другой структуры с начальным байтом 3 а не 2. (типа 03 10 01 CB 00 00 00 00 08 84 00 00 00 02 16 41 )

Если компьютер не понимает ответ то он же должен вывести ошибку ? Но на дисплее нет ошибок. Я просто хочу понять почему на дисплее скорость равна нулю при крутящемся колесе. Можете что то подсказать куда смотреть?