управление двумя мотор колёсами
- Войдите на сайт для отправки комментариев
Доброго времени суток форумчане. Писать ,что я новичок и т.д. не буду, потому что из изложенного ниже и так всё будет понятно. Попробую максимально подробно изложить суть проблемы. Имеется два мотор колеса, к ним приобретены два китайских контроллера и к ним же прикручена ардуинка (нано). К ардуино подключено 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 цепочка там присутствуе именно для "разглаживания" шима. Как бы там ни было, от ШИМа всё корректно работает, но ТОЛЬКО с ДУ пульта... в чё м вся и засада
Да нет - программно вроде все нормально. Тут какой-то нюанс программы не может создать такой херни - ищите выше...