Контроллеры Vesc с дисплеем LCD-8 и торксенсором.

Автор Mike 372, 12 Авг. 2023 в 00:04

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

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

7ambrion

Цитата: Mike 372 от 11 Апр. 2024 в 21:48Так. Тогда давай проверим ассист.
//Получение данных с дисплея.
  if (Serial1.available()) {
    buf[A]=Serial1.read();
    A = A + 1;
  }
  if (A > 12) {
    if ((buf[11]==0x32) && (buf[12]==0x0e)){
      A = 0;
      ASSIST_LEVEL = (buf[1] & 7);
      ASSIST_DELAY = ((buf[6] & 0x38) * 12.5 + 100);
      Pulse_pedal =  ((buf[8] & 0x0F) + 1);
      G = ((buf[7] & 0x0F)*100);
      //J = buf[3]*10;
      F = (buf
    • ) * 10;
    [/list]
          E = ((buf[8] & 0xE0)*3.125/2);
          C = (buf[6] & 0x01);
        }
        else {
          A = A - 1;
          memmove(&buf
      • , &buf[1], A);
      [/list]
          }
        }
      if (ASSIST_LEVEL == 3) digitalWrite(LED_PIN, HIGH);
      if (ASSIST_LEVEL == 2) digitalWrite(LED_PIN, LOW);
         
      //Обработка сигнала датчика вращения.


      работает )))

      уже можно говорить ура, да? )))

      7ambrion

      Цитата: Blik86 от 11 Апр. 2024 в 22:01В предпоследнем байте L1 и дополнительная/скрытая настройка параметра C4.
      посыл от меня ускользнул ) похоже нужно более подробное руководство к действию )

      Mike 372

      Цитата: 7ambrion от 11 Апр. 2024 в 22:04уже можно говорить ура, да? )))
      Похоже, что так.  :bravo:
      Цитата: Blik86 от 11 Апр. 2024 в 22:01В предпоследнем байте L1 и дополнительная/скрытая настройка параметра C4.
      Ну где же вы были раньше? Мы тут уже который день  :dash: Выходит в этом файле https://opensourceebikefirmware.bitbucket.io/development/EmbeddedFiles/7-LCD3_to_S12SN-1.txt неправильно указано:
      ЦитироватьB11: 50 dec (0x32)
      B12: 14 dec (0x0E)
      :facepalm:

      Blik86

      Цитата: Mike 372 от 11 Апр. 2024 в 22:13неправильно указано:
      Ага. И crc  там не правильный.

      Mike 372

      Да мы CRC вообще не считаем. Я в этом слабо разбираюсь. Товарищ посмотрел тот файл, увидел два постоянных байта в конце. Зачем, говорит, считать  CRC? Давай просто их проверять. Ну и написал мне по быстрому код. На двух великах по два сезона отработало. Если б я тронул эти настройки, все бы поломалось.  O_O

      7ambrion

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

      Blik86

      Цитата: 7ambrion от 11 Апр. 2024 в 23:26а как мне теперь предпоследний байт узнать правильный чтоб у меня тоже по двум было а не по одному?
      Подключить к компу через усб-уарт переходник и посмотреть в любом терминале.
      Или добавить пару строчек с перебором и какой то индикацией.
      Как более извращенный вариант, посмотреть настройки и посчитать. 

      Mike 372

      Цитата: 7ambrion от 11 Апр. 2024 в 23:26а как мне теперь предпоследний байт узнать правильный чтоб у меня тоже по двум было а не по одному?
      Посмотри, какое значение у тебя стоит в скрытом С4? По идее при L1=0 сколько там, столько должно быть и в В11.

      7ambrion

      Ок попробую.

      А есть какой то список параметров которые видит/пишет контроллер? )

      Просто думаю как организовать газулю через ардуинку и хорошобы выделить ей какойнить параметр в экране через который можно было бы ее ограничивать по скорости и соответственно снимать ограничение тоже )

      Mike 372

      Контроллер видит только сам газ 0 байт и 3 байт 4 бит режим управления 1- токовый, 0- Duty Cycle.

      Mike 372

      Посмотрел у себя в дисплее настройки. На С4 стоит 20 км/ч (значение по умолчанию), L1=0. Но у меня В11 проходит проверку на значение 50. Что-то не вяжется.  :bw:

      7ambrion

      #371
      поставил тоже с4=2/20 и л1=0 и попал, мягко говоря, в просак ))))

          if ((buf[11]<0x40) && (buf[12]==0x0e))
          if ((buf[11]>0x39) && (buf[12]==0x0e))

      оба варика работают, но я не могу ни к одному из них прировнять этот предпоследний байт или сразу фиаско )))

      ---

      у меня мозгов только на след варик хватает и он тоже рабочий ))

          if ((buf[11]>0x39) && (buf[11]<0x40) && (buf[12]==0x0e))

      ---

      похоже все таки я у мамки программист тк сумел победить этот недуг )))

          if ((buf[11]==0x3c) && (buf[12]==0x0e))

      терь вот этот варик торжественно занимает свое место в скетче ))

      Mike 372

      Я по дороге с работы тоже проводил изыскания. У меня buf[11]==0x32. Если L1 изменяю с 0 на 1, Ардуинка перестает принимать данные от дисплея и работает на том уровне помощника, который был до изменения. А вот изменение С4=2/20 на С4=2/25 на работоспособность не повлияло. Все таки что-то китайцы изменили в протоколе.

      7ambrion

      написал вчера ручку газа в среде ардуино ) плавности пока нет но в целом работает норм )

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

      Mike 372

      Датчик скорости реализован в скетче для Т2. В том, что я тебе отправлял от 20 августа, он уже есть.
       Bl = digitalRead(PB11);                       //Сигнал вращения колеса
        if (Bl != Bf) {                               //Если сигнал изменился.
          if (Bl ==true) {                              //Если изменился с 0 в 1.
          Tw = rotMillis - Ts;                          //Вычисляем время оборота.
          Ts = rotMillis;
          }
          Bf = Bl;
        }
      Просто вычисляется не скорость, а время одного оборота колеса (переменная Tw). А в обработке сигнала торксенсора есть условия:
      Если скорость меньше 10 км/ч, на 1 оборот педалей после включения помощника установить повышенный уровень помощи. Помогает легче стартануть, если стоит высокая передача.
      Переключение на шаг вверх, если скорость меньше 35 км/ч. По достижении этой скорости прекращает наращивание уровня помощи. У меня мотор разгоняется максимально до 38 км/ч. Поэтому на скорости выше 35 км/ч наращивание уровня помощи не имеет смысла и даже немного вредит. Он быстро доходит до максимума, при этом легче ехать не становится, а потом на меньших скоростях начинает сильно дергать.
      Если скорость меньше 10 км/ч, или Помощник < 3, уровень помощи не выше 6. Работает, когда лезешь на низкой передаче в длинный крутой подъем. Ограничивает выход на максимальный уровень и предотвращает быстрый перегрев двигателя.
      В комментариях везде указана скорость, а в коде используется пересчитанное для этой скорости время оборота.

      Mike 372

      Заменил сегодня на своем велосипеде торксенсор Т2 на Т15. Купил еще в конце того сезона. И вот только дошли руки. Попутно проверил байт из buf[11], вывел его на дисплей. При L1=0 buf[11]=0x32, L1=1 buf[11]=0x72, L1=2 buf[11]=0xB2, L1=3 buf[11]=0xF2. Скорость из параметра С4/2 на него не влияет. Либо есть еще какое-то условие для активации передачи этого параметра. Еще выявил глюки с датчиков скорости. Тоже вывел для проверки на дисплей. Увидел, что при переключении Холла имеет место какой-то дребезг и показания прыгают. Пришлось внести задержку на повторную проверку изменения уровня. Прокатился, работает хорошо. Теперь все свои последние наработки буду переносить в эту прошивку и в дальнейшем поддерживать только ее.

      7ambrion

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

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

      зы у меня с 36в баткой редукция чуть выше 25кмч тащит но софтовая отсечка все равно на 25 должна отрезать все что выше )

      Mike 372

      Нет. Скорость, которую измеряет контроллер, с Ардуинкой ни как не связана. То, что я пофиксил, на работу спидометра не повлияет. Только на ее собственные нужды.
      Цитата: 7ambrion от 15 Апр. 2024 в 10:18можешь тогда мне новый скетч скинуть )
      Могу. Но он еще сыроватый. Там из трех разных в один слепил. Сейчас буду проверять и подправлять, где что не нравится.