управление двумя мотор колёсами

Nooooob
Offline
Зарегистрирован: 21.04.2020

Доброго времени суток форумчане. Писать ,что я новичок и т.д. не буду, потому что из изложенного ниже и так всё будет понятно. Попробую максимально подробно  изложить суть проблемы. Имеется два мотор колеса, к ним приобретены два китайских контроллера и к ним же прикручена ардуинка (нано). К ардуино подключено 3 кнопки, а так же модуль nRF24L01 ( на схеме не стал рисовать, потому что и так рисунок - не шедевр). Целью всего мероприятия было следующее . при нажатии кнопки "газ" колеса крутятся с не большой скоростью,если еще зажать кнопку "nos", скорость увеличится(не отпуская "газ"). При нажатой кнопке "реверс" загорается свет заднего хода, а если ещё нажать "газ",то ТС поедет назад (функция реверса заложена в самом контроллере и срабатывает при замыкании серого провода на "-"). В пульте ДУ за ускорение отвечает потенциометр. Ардуинка питается 5в от LM317. Вроде всё. Проблема вот в чём. Как только всю эту систему запускаю, колеса от "газа" работают как задумано, но стоит включить реверс, так "газ" начинает срабатывать со 2ого , 3его раза и как правило только одно колесо не зависимо от направления вращения. На 5ое, 6ое нажатие срабатывают оба. С пульта всегда стабильно все работает. Пробовал игрался с частотой ШИМ, болячка не ушла. RC цепь в контроллере на сигнальном пине есть, резистор на 10Ком и конденсатор smd без обозначений. Вобщем не знаю куда еще капнуть или код кривой или по механики что то делаю не так.. Спасибо заранее за любые подсказки!


#include "nRF24L01.h"
#include "RF24.h"
#define gaz (3) // шим на газ
#define zkpp (A2) // концевик ЗХ
#define zad (5)  //выход задний ход 
#define nitro (6) // концевик нитро, добавляет максималку с педали
#define pedgaz  (A0)  //концевик педали газа
#define sigzx (A3) // выход на зх (стопы)

RF24 radio(9, 10);
byte recieved_data[11];
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; 

void setup() {

  pinMode(zad, OUTPUT);
  pinMode(gaz, OUTPUT);
  pinMode(pedgaz, INPUT_PULLUP);
  pinMode(zkpp, INPUT_PULLUP);
  pinMode(nitro, INPUT_PULLUP);
  pinMode(sigzx, OUTPUT);
  
  radio.begin(); 
  radio.setAutoAck(1);        
  radio.setRetries(0, 15);    
  radio.enableAckPayload();    
  radio.setPayloadSize(32);     

  radio.openReadingPipe(1, address[0]);    
  radio.setChannel(0x60);  
  radio.setPALevel (RF24_PA_MAX); 
  radio.setDataRate (RF24_250KBPS); 
  
  radio.powerUp(); 
  radio.startListening(); 
}

void loop() {

  int zakis = digitalRead(nitro);
  int PG = digitalRead(pedgaz);
  int ZX = digitalRead(zkpp);
  int PV = 35 ;
if (PG ==0  & ZX == 0) {
 analogWrite (gaz,PV+=12);
  }
 else {analogWrite (gaz,recieved_data[1]);
 }
 
 if (PG == 0 & zakis == 0) {
 analogWrite (gaz,PV+=30);
  }
 else {analogWrite (gaz,recieved_data[1]);
 }
if (ZX == 0) {
  digitalWrite(zad, HIGH);
    digitalWrite(sigzx, HIGH);
  }
  else {digitalWrite(zad, recieved_data[9]);
        digitalWrite(sigzx, recieved_data[9]);
  }
 
if (PG == 0) {
  analogWrite (gaz,PV);
 }
 else {analogWrite (gaz,recieved_data[1]);
 }

 byte pipeNo;
  while ( radio.available(&pipeNo)) {  
    radio.read( &recieved_data, sizeof(recieved_data) );         
if (recieved_data[9] == 1) { 
    digitalWrite(zad, HIGH);
    digitalWrite(sigzx, HIGH);
 }
  else {digitalWrite(zad, LOW);
        digitalWrite(sigzx, LOW);
  } 
  }
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Можно ссылку на драйвер (вот этот в серебристом корпусе)?

Nooooob
Offline
Зарегистрирован: 21.04.2020

https://a.aliexpress.ru/_eOomtS
Вот этот брал

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А скорость точно шимом регулируется? Вроде напряжением.

Nooooob
Offline
Зарегистрирован: 21.04.2020

Насколько я знаю, контроллеры для БК двигателей нормально "кушают" шим и если правильно понял, то и RC цепочка там присутствуе именно для "разглаживания" шима. Как бы там ни было, от ШИМа всё корректно работает, но ТОЛЬКО с ДУ пульта... в чё м вся и засада

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Nooooob пишет:
Насколько я знаю, контроллеры для БК двигателей нормально "кушают" шим и если правильно понял, то и RC цепочка там присутствуе именно для "разглаживания" шима. Как бы там ни было, от ШИМа всё корректно работает, но ТОЛЬКО с ДУ пульта... в чё м вся и засада

Да нет - программно вроде все нормально. Тут какой-то нюанс программы не может создать такой херни - ищите выше...