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

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

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

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

7ambrion

толи лыжи не едут толи я е... на дворе май месяц )

(buf[4] & 0b00100000) | (buf[2] & 0b11111000>>3)
работает хуже чем один только b2 парсить )

похоже пока, до выяснения обстоятельств, придется b9 взять и с ним работать )) это скрытый параметр от с4 и в нем все то же самое только в одном байте ))

Mike 372

Цитата: 7ambrion от 17 Апр. 2024 в 00:40толи лыжи не едут толи я е... на дворе май месяц )
У нас в марте уже вот так было.  ;-D
P_20240316_135643.jpg
F = ((buf[2] & 0xF8)>>3);
E = (buf[4] & 0x20);
J = F | E;
В J получишь итоговый результат. Можно и проще J = (buf[2] >>3) | (buf[4] & 0x20). Это мне уже специалист подсказал. Но мне первый вариант кажется нагляднее.

7ambrion

благодарю, так получилось ) выходит просто вот этот момент у меня был лишним )
(buf[4] & 0b00100000) | (buf[2] & 0b11111000>>3)

7ambrion

Надоел это велик перевернутый в комнате ) отключил от компа, впихнул все потроха во внутрь обратно, перевернул и поехал на работу ))

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

В целом понравилось но пока еще мало что понять успел ))

Зы при высокой нагрузки на мотор спидометр так и прыгает ) может это быть изза того что магнитов многовато и он не успевает обробатывать?! ) щас их 9 и по идеи могу сократить их до 3 или до 1 )

Mike 372

#400
Похоже, у тебя адаптация не активна. Я вчера причесал свою прошивку, отправил тебе. С ней будет легче разбираться.  В дисплее С2 должен быть в 1. На старой прошивке ездила дочь. Она не жаловалась, и я в ту прошивку не лазил. Все опыты и доработки делал в своей. Хотя пару раз она говорила мне, что в гору плохо прибавляет.
По спидометру вслепую трудно что-то сказать. Количество магнитов вряд ли. В идеале осциллографом надо смотреть, что там происходит. Или поиграться конденсатором.

Mike 372

#401
Краткие пояснения по последней прошивке. Основные настройки каждого уровня:
//  уровни помощи 0      1             2            3          4           5
int assumin[6] =    {500,   800,         700,       600,      500,      400};  //U_min, соответствующие уровням помощи.
int assup[6]     =    {900, 1200,       1050,       900,      750,      600};  //U_max, уровень переключения вверх.
0-ые параметры просто для красоты. Остальные, это действующие напряжения с торксенсора за вычетом нулевого уровня (1480 мВ). Специально взял на 20 мВ меньше, чтобы в случае чего не уходило в минус. Именно в этих границах он будет стремится поддерживать уровень. Определил для себя оптимальный диапазон 1,5. При увеличении сигнала выше U_max сделает шаг вверх, пока не упрется в край, при снижении ниже U_min, сделает шаг вниз. При скорости меньше 10 км/ч начинает с 3 шага, больше 10 км/ч с первого, да еще придерживает на 1/4-1/2 оборота педалей минимальную мощность. Чтобы не чувствовалось рывка. Если помощник выключается от прекращения педалирования, то при следующем включении скидывает уровень на 1-2 шага. На 1 и 2 уровнях ассиста поднимается не выше 7 шага (всего их 9). На скорости до 10 км/ч на любом уровне ассиста не выше 7 шага. При сильном нажатии на педали добавляет сразу по 2-3 шага. Сейчас стоит превышение от U_min*1,75 +1 шаг,  U_min*2 +2 шага. Еще есть поправка от каденса. Если каденс <40, то U_min, U_max берутся с уровня, ниже текущего, если каденс >70, то со уровня, выше текущего. Все это прописано в комментариях, можно найти, при желании подстроить или закомментировать, если не понравится.

7ambrion

код поинтереснее стал )

пытаюсь щас в "//Обработка сигнала датчика скррости" спидометр интегрировать подкинув туда "spd = (WDIM / Tw) * 3.6;" и чет снова лыжи не едут ))

сколько у тебя магнитов на датчике скорости? ) оно по идеи на прямую на "Tw" влияет и нужно все это дело как то компенсировать чтоб терк по твоей логике мог работать )

7ambrion

пока пришлось сделать так чтоб скорость в ардуинке сравнялась со скоростью на дисплее )

int float Tw;
#define WDIM 550          //диаметр колеса
float spd=0;              //скорость кмч


***

  Be = digitalRead(SPD_PIN);                          //Сигнал вращения колеса
  if (Be != Bf) {                                     //Если сигнал изменился
    if ((Be == false) && ((rotMillis - Ts) > 100 20)) {   //Если изменился с 1 в 0
      Tw = (rotMillis - Ts) * 2.88;                   //Вычисляем время оборота колеса
      Ts = rotMillis;
    }
    Bf = Be;
    spd = (WDIM / Tw) * 3.6;
  }

7ambrion

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

Mike 372

Цитата: 7ambrion от 18 Апр. 2024 в 11:29сколько у тебя магнитов на датчике скорости?
Один. Тебе надо Tw умножить на количество магнитов.

7ambrion

Тестанул щас и ваще огонь с новым скетчем ) всю дорогу ехал сейчас на 3 ассистенте и переключать самому уже не приходилось ) иногда видимо дождаться не мог и вдавливал педальку, но это даже прикольно ))

Цитата: Mike 372 от 18 Апр. 2024 в 14:27Один. Тебе надо Tw умножить на количество магнитов.
сначала так и делал но в итоге все почему то сошлось именно на 2.88 хоть магнитов и 9 ))

---

Один момент теперь только не ясным остался ) ограничил в контроллере макс обороты до скорости в 25кмч, и на вывешаную он так и крутил ) а как поехал он 30+ вжаривает какое то время, а какое то время 25 держит ) странновато это как то )

Mike 372

#407
Я что-то вообще пока не пойму, как ты скорость вычисляешь. Тебе надо оперировать не диаметром колеса, а длиной окружности. 3,6/Tw*WDIM*3.14
Хотя по твоей формуле получается тоже самое. Только ты на Пи забыл умножить. 9/Пи=2,8647889756541160438399077407053  ;-)

7ambrion

))))
Ты щас 3.14 написал и я понял что в душе не чаю что за 3.6 у меня такие )))

несколько дней подряд голову ломал как скорость вычислять )) а когда гуглил - все скетчи спидометров настолько грамоздкие были что сразу вызывали отторжение ) вчера на эту формулу наткнулся и она меня удовлетворила своей простотой ))) но терь когда я вижу что 3.6 это не Пи то впадаю в ступор )) у тебя есть идеи что это? ))

Mike 372

Это 3600 сек в часе. Но в скетче у нас миллисекунды и миллиметры. После всех сокращений остается 3,6.
(1ч=3600000(мс))/Tw(мс)*0,000550(км)*3,14

Mike 372

Цитата: 7ambrion от 18 Апр. 2024 в 14:54Один момент теперь только не ясным остался ) ограничил в контроллере макс обороты до скорости в 25кмч, и на вывешаную он так и крутил ) а как поехал он 30+ вжаривает какое то время, а какое то время 25 держит ) странновато это как то )
Я не сталкивался с таким. Наоборот было, на вывешенном колесе разгонялся. Уменьшил минимальный ток, вылечилось. На ходу всегда четко держит. Посмотри, сколько у тебя  ERPM Limit Start?

7ambrion

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

А пока могу через экран газ и ассистента независимо друг от друга ограничивать ) тут ограничу и пока думаю покатит )) зы первое ограничение сделал для ассистента, а кторое скрытое на с4 для газа )

7ambrion

И чтоб уже код спидометра в скетче до конца добить у меня вопросик есть )

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

Mike 372

Посмотрел, действительно не сбрасывает. Как и каденс кстати. Мне это особо ни на что не влияло. Если только заблокировать колесо на скорости выше 10 км/ч, то потом стартует не с 3-го шага, а с 1-го. Но вероятность такого события очень небольшая. Ну это легко поправить. Попутно еще пару мелких ошибок исправил. Не то чтобы они серьезно на что-то влияли. Но уж раз заметил, поправил. И по результатам сегодняшнего заезда кое где по мелочи подправил настройки. Описывать здесь все это с копированием кусков кода неохота. Мне проще тебе новый скетч целиком скинуть. Сейчас, проверю только.