Управление машинкой на радиоуправлении с помощью Arduino

Я пытаюсь воспроизвести это: https://zhengludwig.wordpress.com/projects/ self-driving-rc-car/ с использованием практически того же контроллера и автомобиля.

Я припаял к контроллеру 4 провода, по 1 на каждое направление. Если я позволяю проводам касаться земли на контроллере, все работает идеально. Однако, когда я подключаю провода к Arduino, ничего не работает. Иногда влево/вправо работает примерно 0,5 секунды, а затем снова ничего не делает. Есть идеи, в чем может быть проблема? Нужно ли подключать землю контроллера к земле Arduino?

Я пробовал вынуть батареи из контроллера и подключить 3,3 В и землю от Arduino, что вроде работает, но мне кажется, что в этом нет необходимости.

Если я использую кнопки на контроллере, когда он подключен к Arduino, он перемещается вперед, вправо или вперед+вправо.

Код, который я использую для проверки всего, выглядит следующим образом:

void setup() {
  // Инициализируем контакты и порт
  pinMode(reversePin, OUTPUT);  
  pinMode(forwardPin, OUTPUT);
  pinMode(leftPin, OUTPUT);
  pinMode(rightPin, OUTPUT);
}

void reset() {
  digitalWrite(forwardPin, HIGH);
  digitalWrite(reversePin, HIGH);
  digitalWrite(leftPin, HIGH);
  digitalWrite(rightPin, HIGH);
}

void loop() {
  // поместите сюда ваш основной код для многократного запуска:
  reset();

  digitalWrite(forwardPin, LOW);
  delay(4000);
  reset();
  digitalWrite(reversePin, LOW);
  delay(4000);
  reset();
  digitalWrite(leftPin, LOW);
  delay(4000);
  reset();
  digitalWrite(rightPin, LOW);
  delay(4000);
}

Изображения: http://imgur.com/a/rgpOY

, 👍1


2 ответа


Лучший ответ:

0

Можете ли вы измерить, какой ток проходит через заземленный провод (A: 2 мА по измерениям в комментариях)? А напряжение холостого хода между землей контроллера и управляющим проводом? (A: 3,1 В, от 2xAA)

Если ток не превышает 40 мА на контакт/100 мА на порт, всего 200 мА, а напряжение холостого хода на контактах контроллера меньше 5 В, то вы сможете подключить выходные контакты Arduino и землю. к проводам и земле вашего контроллера.

Если напряжения и токи выше, вам потребуется защита, чтобы предотвратить повреждение вашего Arduino.

Контроллер и Arduino должны иметь общую землю, но без схемы и без напряжения и тока контроллера трудно точно сказать, что не так.

Редактировать: поскольку напряжение холостого хода контроллера и токи короткого замыкания (3,1 В, макс. 2 мА) соответствуют возможностям Arduino, вы можете подключить их напрямую к выводам и убедиться, что контроллер и Arduino имеют общий земля.

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

Возможно, вам также понадобится сдвиг уровня 5V->3V, чтобы изолировать выходные уровни Arduino от входных сигналов контроллера. В верхней части линии будут МОП-транзисторы, но вы можете использовать пару резисторов для деления напряжения. См. подсказки в https://arduino.stackexchange.com/a/419/6628

,

Ток измерить не могу, просто показывает 0. Напряжение холостого хода между массой контроллера и управляющим проводом 3,1В. Контроллер питается от 2 батареек по 1,5В., @Lightvvind

При напряжении 3,1 В резистор на 150 Ом ограничит ток до 20 мА. Если вы можете поставить резистор на 150 Ом между контрольным проводом и контрольной массой, двигатель работает нормально? И можно ли измерить напряжение на резисторе? Если он работает с резистором 150 Ом, вы можете включить резистор последовательно между проводом управления и входом Arduino и использовать его в качестве защитного резистора для ограничения тока., @Dave X

Не было резистора на 150 Ом, вместо него использовал резистор на 330 Ом. Напряжение на резисторе 0,54В. Все возможные комбинации направлений теперь работают. Какая разница, 330 или 150 Ом? Спасибо за помощь, это было сложнее, чем я думал., @Lightvvind

Падение 0,54 В на резисторе 330 Ом составляет 0,0016 А тока, что вполне соответствует возможностям ввода-вывода Arduino. Тот же самый ток через падение напряжения 3,1 В - 0,54 В = 2,56 В внутри контроллера означает, что он имеет внутреннее сопротивление около 1600 Ом, поэтому вы можете положиться на внутреннюю защиту контроллера, которую вы только что измерили, и вообще обойтись без резистора. Я предполагаю, что вы также соединили точки соприкосновения. Если да, то это главное улучшение. Возня с резистором проверяла, не перегружает ли контроллер Arduino., @Dave X

Пробовал подключить землю контроллера к земле Arduino, ничего не изменилось. Это работает только тогда, когда я использую резисторы., @Lightvvind

Хм. Если заземление контроллера не подключено, и единственное соединение между ними — это четыре сигнальные линии контроллера, я запутался. Пожалуйста, опубликуйте схему и, возможно, изображение вашего контроллера и соединений в вашем вопросе. Если между ними соединены только 4 сигнальных провода контроллера, лучшее, что я могу предположить, это то, что он каким-то образом хранит заряд относительно других контактов/устройства, что кажется каким-то волшебным и ненадежным., @Dave X

В вопрос добавлено изображение контроллера и ардуино. К сожалению, схему контроллера предоставить не могу., @Lightvvind

Ах. Выход Arduino 5 В, вероятно, подает на контроллер слишком большое напряжение, что сбивает его с толку, когда у вас есть заземление. Вам, вероятно, понадобится что-то вроде смены уровня в http://arduinoprosto.ru/q/419/6628., @Dave X


-1

Мы должны добавить резисторы 1k и резисторы 2k вместо 330 Ом и перейти по ссылке ниже..!

,