Электронная педаль газа на arduino

dfyziz
Offline
Зарегистрирован: 05.10.2020

Всем привет, собрал проект электронная педаль газа на трактор на arduino. Суть в том, что на педали газа потенциометр задающий сопротивление, и к тяге ТНВД двигателя прикреплен так скажем сервопривод (мотор на 24 вольт и потенциометр). Встал вопрос о защите от обрыва потенциометров, как реализовать защиту программно? А то допустим выйдет из строя или отпадет провод потенциометра у сервопривода и программа будет крутить мотор редуктора бесконечно. Для примера собрал макет: вывода на экран LCD 1602 значения потенциометра. Потенциометр подключен как обычно к минусу, к +5V и к аналоговому входу. Диапазон измерения потенциометра получился от 0 до 1018. При обрыве среднего вывода значения очень быстро скачут от 112 где-то до 272 примерно. При обрыве плюса показывает 0, при обрыве минуса показывает 1022.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Если собрал, значит и код есть? Если программно хочешь вопрос решать - код выложи. А вообще в таких делах нужно заботиться о многоступенчатой защите. К примеру, Серва накрылась и давит полный газ - как эту ситуацию программно решишь? Или наоборот глушит двигатель, из-за плохого контакта на резисторах. Да и зачем тебе это, расскажи. 

rkit
Онлайн
Зарегистрирован: 23.11.2016

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

dfyziz
Offline
Зарегистрирован: 05.10.2020

На тракторе накрылся блок управления электронной педалью газа, он стоит дорого. Вот сделал проект работает хорошо, встал вопрос об защите от обрыва потенциометров, если допустим отвалится плюс на резисторе редуктора он будет показывать 0, а при нажатии на педаль газа сопротивление поменяется педали газа и программа будет бесконечно крутить мотор, думая, что на редукторе все еще ноль. Тем самым обороты двигателя дойдут до максимума и до аварии недалеко. Припаял капитально, без вопросов. Просто хочу перестраховаться. Потенциомметр всеравно не вечен.

MaksVV
Offline
Зарегистрирован: 06.08.2015

В автомобилях всегда датчик педали состоит из двух дублирующих друг друга потенциометров. Если один накрылся, аварийный режим. Ну и чаще всего они не одинаково работают. Например один от 0 до 5В. А другой наоборот от 5 до 0В. Постоянно контролируется корреляция.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Проще было реально сделать из готовой педали, там все надежно

-NMi-
Offline
Зарегистрирован: 20.08.2018

dfyziz пишет:

На тракторе накрылся блок управления электронной педалью газа, он стоит дорого. Вот сделал проект работает хорошо...

Слушай, с таким ТАЛАНТИЩЕМ могу сразу предложить работу 100+т.р. в месяц.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Решать нужно подобное аппаратно, а не программно. Как вариант - два резистора и смотреть их сопротивление (или напряжение на аналоговых входах). Если разница не более 5-10% принимать значения из таблицы калибровки от более подходящего. Если разница большая - аварийный режим. Но я в этом не специалист, просто мои рассуждения. 

dfyziz
Offline
Зарегистрирован: 05.10.2020

В данном случае трактор Харвестер John Deere 1270 и я привязался к заводской педали газа и к заводскому редуктору. В педали газа и в редукторе по одному переменному резистору.

-NMi-
Offline
Зарегистрирован: 20.08.2018

dfyziz пишет:
В данном случае трактор Харвестер John Deere 1270

От него есть электро-гидро-схемы? Закинь куданить для посмотреть.

dfyziz
Offline
Зарегистрирован: 05.10.2020

Как можно сюда или куда закинуть электросхему? И если прикреплять видео то только через ютуб? Схема простая на редукторе тяга к ТНВД двигателя, редуктор крутит вал на 170 градусов. f015497 вбейте в гугле и на второй картинке схема редуктора.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Мне нужна схема с Advisor-а, (это оригинальный сервис мануал)  а не схема на дурдуине. Есть такое? Или мне по S/N самому найти???

Komandir
Offline
Зарегистрирован: 18.08.2018

Я у себя в круиз-контроле сделал аппаратный сброс автоматического режима при прикосновении к любой педали или переводе "мешалки" в нейтраль.

-NMi- за что нынче по 100+ доплачивают ?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Komandir пишет:

-NMi- за что нынче по 100+ доплачивают ?

Глянь в тырнете стоимость контроллера от дира - поймёшь.

Komandir
Offline
Зарегистрирован: 18.08.2018

понаделают из говна и палок, обмотают черной изолентой ...

синяя нужна !

MaksVV
Offline
Зарегистрирован: 06.08.2015

при таких ценах эти жени-олени ещё и потенциометры в педалях жопят

-NMi-
Offline
Зарегистрирован: 20.08.2018

Komandir пишет:

понаделают из говна и палок, обмотают черной изолентой ...

Глупенький ты ещё, книшкаф пачитай штоле... для началу...

-NMi-
Offline
Зарегистрирован: 20.08.2018

MaksVV пишет:

при таких ценах эти жени-олени ещё и потенциометры в педалях жопят

Они там "безпонциометрные" , ну типа, "зажопили". Фсё верно, олени-жопашники, да только кто? Они? ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

dfyziz
Offline
Зарегистрирован: 05.10.2020

Монтаж вот такой.

Схему по мануалу нашел только такую

-NMi-
Offline
Зарегистрирован: 20.08.2018

Интересно, а как ты без схемы нашёл что куда подключать?

И, самое важное, контроллер только "газулькой" управляет, или есть режимы P, L, E и заяц-черепаха ???

dfyziz
Offline
Зарегистрирован: 05.10.2020

Разобрал педаль увидел переменник, к нему и подключился. Также и с редуктором. От резисторов переменных шли штатные провода. Далее по логике работы.

-NMi-
Offline
Зарегистрирован: 20.08.2018

dfyziz пишет:

Далее по логике работы.

Там же-ж есть гидравлика? Неужели блок только "газулькой" движим, неужели нет завязки с гидравликой и прочим???

dfyziz
Offline
Зарегистрирован: 05.10.2020

Я ведь написал, то что тяга от редуктора идет просто к ТНВД двигателя.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Интересно, а энкодер в этом девайсе применим? Вместо резистора

-NMi-
Offline
Зарегистрирован: 20.08.2018

ua6em пишет:

Интересно, а энкодер в этом девайсе применим? Вместо резистора

Канэчно! Найди где_нить Bomag, там вместо руля энкодер (индуктивный) , вместо газульки и подруливания джойстик, без резисторов, без дурдуин. Тока вибраццию нифключай (кнопки на джойстике), очковасто, вдрук несдюжишь, штаны прамокнут.  )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

-NMi-
Offline
Зарегистрирован: 20.08.2018

dfyziz пишет:

Я ведь написал, то что тяга от редуктора идет просто к ТНВД двигателя.

Вот по этому я и спросил за схему, ну не может блок смотреть только за оборотами, там должна быть ещё и нагрузочная функция, например, от гидравлики или трансмиссии.

MaksVV
Offline
Зарегистрирован: 06.08.2015

-NMi- пишет:
Фсё верно, олени-жопашники, да только кто? Они?

John Deer - Женя олень.  трахтородевелоперы кто же ещё 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

MaksVV пишет:

John Deer - Женя олень.  

А почему Женя? Эквивалент имени Джон (John) в русском языке - это Иван.
А Женя - это Юджин (Eugene).
Поэтому правильно будет Иван Олень :-)

dfyziz
Offline
Зарегистрирован: 05.10.2020

за основу я взял скетч и драйвер коллекторного двигателя, который описал Алекс Гайвер. Вот теперь думаю какие изменения внести в код чтобы допустим если через две секунды потенциометры не согласовались, то остановить все переключения

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

 
#define DEADZONE 20 // "мёртвая зона" потенциометра
// пины драйвера, P1 и P4 должны быть на PWM пинах! (3, 5, 6, 9, 10, 11 для NANO и UNO)
#define P1 3
#define P2 4
#define P3 5
#define P4 6
#define pedPin 0      // сюда подключен потенциометр
#define redPin 1
#define ruchkaPin 2
boolean switch_flag;
int pedpotent, duty, redpotent, ruchka;
int left_min, right_min;
uint32_t now;

void setup() {
  // все пины драйвера как выходы, и сразу выключаем
  pinMode(P1, OUTPUT);
  digitalWrite(P1, 0);
  pinMode(P2, OUTPUT);
  digitalWrite(P2, 0);
  pinMode(P3, OUTPUT);
  digitalWrite(P3, 0);
  pinMode(P4, OUTPUT);
  digitalWrite(P4, 0);
  now = millis();
}

void loop() {
  ruchka = analogRead(ruchkaPin);
  pedpotent = analogRead(pedPin); 
  now = millis(); 
  if (ruchka > pedpotent) {
  redpotent = analogRead(redPin);
  left_min = redpotent - DEADZONE;   // расчёт границ мёртвой зоны
  right_min = redpotent + DEADZONE;  // расчёт границ мёртвой зоны
  if (ruchka > left_min && ruchka < right_min) {  // если мы в "мёртвой" зоне
    
    digitalWrite(P1, 0); // вырубить все ключи
    digitalWrite(P2, 0);
    digitalWrite(P3, 0);
    digitalWrite(P4, 0);
    switch_flag = 1;          // разрешить переключение
  } else 
  if (ruchka > right_min && millis() - now < 2000) {
     // если мы вышли из мёртвой зоны справа
 
    if (switch_flag) {        // если разрешено переключение
      switch_flag = 0;        // запретить переключение
      digitalWrite(P2, 0);    // вырубить Р канальный второго плеча
      digitalWrite(P4, 0);    // вырубить N канальный второго плеча
      delayMicroseconds(5);   // задержечка на переключение на всякий случай
      digitalWrite(P3, 1);    // врубить Р канальный первого плеча
      
    }
    // рассчитать скважность для N канального первого плеча
    duty = map(ruchka, right_min, 1023, 150, 255);
    analogWrite(P1, duty);    // ЖАРИТЬ ШИМ!
  }
    else 
  if (ruchka < left_min && millis() - now < 2000) {                 // если мы вышли из мёртвой зоны слева
    
    if (switch_flag) {        // если разрешено переключение
      
      switch_flag = 0;        // запретить переключение
      digitalWrite(P3, 0);    // вырубить Р канальный первого плеча
      digitalWrite(P1, 0);    // вырубить N канальный первого плеча
      delayMicroseconds(5);   // задержечка на переключение на всякий случай
      digitalWrite(P2, 1);    // врубить Р канальный второго плеча
      
    }
    // рассчитать скважность для N канального второго плеча
    duty = map(ruchka, left_min, 0, 150, 255);
    analogWrite(P4, duty);    // ЖАРИТЬ ШИМ!
  }
  }