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

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

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

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

7ambrion

Да, с терком все так же как на схеме )

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

7ambrion

в общем такая беда вылезла )

ардуинка распаянная по твоей схеме не хочет диодом мигать, а пустая мигает )) и у меня на высоком уровне мигает а не на низком ))

Mike 372

Вот же ты нашел Ардуинку не как у людей.  :facepalm:  Попробуй разобраться, какой провод мешает светодиоду. Не все же сразу. Это с отдельной прошивкой, которая только под светодиод такой эффект?

7ambrion

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

учитывая что в "on" он должен зажигаться, и тухнуть в "off", на практике получается так что он загорается исключительно при вращении педалей назад ))

попробовал подменить пины вот так местами и начало гореть при вращении вперед  )
  P1 = digitalRead(PB11);                                         //Зеленый, вперед первый.
  P2 = digitalRead(PB10);                                         //Желтый, назад первый.

но ассистент так и не заработал )))

Mike 372

#256
Уже прогресс. Теперь проверяй сигнал торка. Только вот это вот:
Цитата: 7ambrion от 07 Апр. 2024 в 22:46#define MIN_VOLTAGE 1000 1600      //Минимальное напряжение торксенсора.
ты зря трогал. Верни обратно. Это проверка нулевого уровня торка. Если оно будет меньше заданного значения, это считается неисправностью, и обработка сигнала прекращается. Надо добавить условие на включение/выключение светодиода по уровню.
//Обработка сигнала торксенсора.
  Ut_adc=analogRead(PB1); 
  U=Ut_adc*1,07;
 
  if U>1600 LED_PIN, HIGH;
  if U<1550 LED_PIN, LOW;

 
  if ((U>MIN_VOLTAGE) && (U<MAX_VOLTAGE)){    //Проверка на соответствие рабочему диапазону   

А на второй Ардуинке светодиод тоже включается высоким уровнем?

7ambrion

Должен да, на blue pill plus он официально включается высоким уровнем ) но тк она уже распаина в схему со всеми резисторами, кондерами и разьемами и поверх залита эпоксидкой - просто идет в помойку без каких либо выяснений обстоятельств ))

7ambrion

Цитата: Mike 372 от 09 Апр. 2024 в 06:35U=Ut_adc*1,07;
с этим множителем диод горит все время, но со стоковым 0.8056640625 загорается при продавливании ))

зы скетч весь в стоке за исключением:
  if (U > 1600) {digitalWrite(LED_PIN, HIGH);}
   else {digitalWrite(LED_PIN, LOW);}
ассистент не работает )




Mike 372

Я там в условии выключения светодиода накосячил.  :ah:  Сейчас исправил. Через else тоже можно, но на границе будет мерцать.
Цитата: 7ambrion от 09 Апр. 2024 в 16:12с этим множителем диод горит все время, но со стоковым 0.8056640625 загорается при продавливании ))
Все верно. Это я тебе неправильный множитель дал. Посмотрел в другой скетч. Ну при продавливании включается, уже хорошо. Вращение в правильную сторону, я так понял, тоже определяет. У меня сейчас на работе под руками нет твоего скетча. Доберусь до дома, посмотрю, куда дальше можно копать.

Mike 372

Цитироватьon: 
    pulse_f = true;                              //Выставляем флаг на 1 цикл (импульс вращения).
    t_time = millis();       
    if (ST1 < 21) ST1=ST1+1;
    if ((ST1 > Pulse_pedal) && (Ut_abs > (asson[H]+E-100))) {
      if (* == false) ST1 = 0;               
      * = true;                                  //Включаем помощника.
Попробуй убрать вот это условие.
Цитироватьif ((Ut_abs > (assup[ASSIST_LEVEL]+F-500)) && (I == false) && (ST1 > 18) && (B < 8)) {  //Переключение на шаг вверх 1100 
        B=B+1;
        I=true;
      }
      if ((Ut < (475-150)) && (ST2 == 18) && (B == 0)) {
        ST1=0;
        * = false;                                  //Выключаем помощника.
        Ut = 0;
        Ut_max = 0;
        ST2 = 0;
        for (M=0; M<21; M=M+1) {               
          Data[M] = 0;                              //Обнуление данных в массиве.
        }
И здесь вместо этого выражения поставь 20. Должен будет включаться просто от вращения педалей даже без нагрузки. В настройках дисплея С4 поставил 2?

7ambrion

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

Mike 372

Что-то текст кода при копировании искажается. Ты только зачеркнутое изменил? Все остальное, это движок форума ломает.

7ambrion

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

Mike 372

#264
Странности какие-то у тебя происходят. Если осталось условие U > 1600, то уровень нажатия до включения светодиода не должен был измениться. Давай идти пошагово. Нынешние условия включения, выключения светодиода по уровню убирай или комментируй. Проверь еще раз во это:
Цитата: Mike 372 от 07 Апр. 2024 в 20:41Если добавить безусловное включение светодиода после строчки on:, а выключение после строчки off:, то светодиод должен включаться при вращении педалей вперед и выключаться при вращении назад сразу, а при остановке через заданный таймаут.
Если работает, то переноси включение дальше.
on: 
    pulse_f = true;                              //Выставляем флаг на 1 цикл (импульс вращения).
    t_time = millis();       
    if (ST1 < 21) ST1=ST1+1;
    if ((ST1 > Pulse_pedal) && (Ut_abs > (asson[H]+E-100))) {
      if (A S S == false) ST1 = 0;               
      A S S = true;                                  //Включаем помощника.
      digitalWrite(LED_PIN, HIGH);
    }
Что-то и в виде кода херня. "A S S" ему не нравится, меняет на звездочку. Еще и выделение не работает.

7ambrion

так при вращении назад загорается )) ну и чтоб тух нужно еще в "off" led_pin low добавить )

Цитата: Mike 372 от 09 Апр. 2024 в 18:46"A S S" ему не нравится, меняет на звездочку
ну просто форум к задницам не толерантен )))

7ambrion

В принципе если просто в off/on low/high добавить то и без прочих изменений именно при вращении педалий назад диод загорается 

Mike 372

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

7ambrion

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

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

Mike 372

Ты перенес включение светодиода после A S S = true;? Он там включается?