управление двумя мотор колёсами
- Войдите на сайт для отправки комментариев
Доброго времени суток форумчане. Писать ,что я новичок и т.д. не буду, потому что из изложенного ниже и так всё будет понятно. Попробую максимально подробно изложить суть проблемы. Имеется два мотор колеса, к ним приобретены два китайских контроллера и к ним же прикручена ардуинка (нано). К ардуино подключено 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);
}
}
}
Можно ссылку на драйвер (вот этот в серебристом корпусе)?
https://a.aliexpress.ru/_eOomtS
Вот этот брал
А скорость точно шимом регулируется? Вроде напряжением.
Насколько я знаю, контроллеры для БК двигателей нормально "кушают" шим и если правильно понял, то и RC цепочка там присутствуе именно для "разглаживания" шима. Как бы там ни было, от ШИМа всё корректно работает, но ТОЛЬКО с ДУ пульта... в чё м вся и засада
Да нет - программно вроде все нормально. Тут какой-то нюанс программы не может создать такой херни - ищите выше...