Входные PWM-контакты не получают значения от работающего приемника?

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

Скетч

int PwmPin = 9;
unsigned long duration;

void setup() {
  pinMode(PwmPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  duration = pulseIn(PwmPin, HIGH);
  Serial.println(duration);
}

Выход

0
0
0
...

Моя настройка является обычной, которая произошла бы без Arduino, и только батарея подключена через ESC для обеспечения питания приемника. Arduino подключен через USB, потому что я просто пытаюсь считывать значения.

wiring

Я пытался подключить вывод данных приемника к ШИМ-контакту Arduino и считывать импульсы с канала управления рулем. (Я ранее тестировал канал с помощью сервопривода и знаю, что он работает правильно). Однакона последовательный монитор не выводится сигнал (0). Мне трудно понять, почему.

Я проверил документацию для pulseIn(), и она кажется достаточно простой. Я протестировал ШИМ-контакты D3, D5, D10... ни один из них не работает. Я не понимаю, в чем проблема на данный момент. Обновление: Теперь я подключаюсь с отрицательного контакта приемника к одному из GND Arduino.

Это упрощенный сценарий, поэтому я не вижу, что происходит не так (мой опыт программирования хорош, но мой опыт работы с Arduino близок к нулю).

Цель этого эксперимента состоит в том, чтобы запрограммировать изменение освещения в соответствии с входом дроссельной заслонки и асимметричной тягой через два двигателя для лодки. Я знаю, что pulseIn-не лучшая функция для использования, но на данный момент я просто хочу немного поработать, прежде чем углубляться в сорняки.

Обновление: Я пытаюсь следить за этим видео, за исключением того, что подключение Arduino к приемнику не сработало, возможно, потому, что BEC ESC посылает какой-то сигнал питания, который заряжает приемник. (Светодиоды приемника обычно подают визуальный сигнал, но они просто включаются без сигнала при подключении через Arduino).

Согласно руководству на стр. 6 и стр. 8, "приемники имеют диапазон рабочего напряжения от 3,5 до 9 вольт", при идеальном напряжении выше 4,8 В (поскольку сервоприводы, как правило, отключаются раньше). Это должно находиться в пределах диапазона Arduino при 5 В.

, 👍0

Обсуждение

Во-первых: Никогда не показывайте код и последовательный вывод в виде изображения. Скопируйте и вставьте их в виде текста в вопрос и отформатируйте в виде кода. Во-вторых: вам действительно нужно подключить заземление между Arduino и приемником. Это необязательно. Вы уверены, что на выводе приемника действительно есть сигнал?, @chrisl

Нет связи с землей?! https://majenko.co.uk/blog/importance-sharing-grounds, @Majenko

@chrisl Да, я уверен, что есть сигнал; он помечен на приемнике как " - + (сигнал)", и я проверил вывод, и он отлично работает с сервоприводом. Однако даже когда я подключаю землю, она не работает с Arduino., @Denis G. Labrecque

На каком напряжении работает приемник? 5 В как у Arduino?, @chrisl

@Majenko, потому что я немного сбит с толку. Я подключен только к сигнальному контакту, а не к положительному контакту, поэтому как положительный контакт, так и сигнальный контакт приемника заземляются через отрицательный провод?, @Denis G. Labrecque

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

Вы не можете измерить напряжение только с одним подключением. Вы должны соединить основания., @Delta_G

Кстати, нет такой вещи, как "Входной ШИМ-вывод" - ШИМ только выводится. Вы просто используете общие функции GPIO для пинов, и поэтому вы можете использовать *любой* вывод., @Majenko

ваш точный код работает для меня, поэтому я думаю, что проблема в плате., @MatFPV


1 ответ


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

1

Что ввело меня в заблуждение, так это контакты. Я ссылался на эту диаграмму:

NANO pinout

Я думал, что все контакты пронумерованы последовательно, так что pinMode(9, ...) установит D6 (09 на диаграмме). Однако это устанавливает D9. Подключение к правильному контакту работает нормально.

,

Если вы все еще делаете это без подключения к заземлению, то на данный момент может показаться, что все работает нормально. Он может просто перестать работать в любое удобное для него время на основе этого эталонного напряжения., @Delta_G

Я прочитал статью, которую Майенко прокомментировал ранее, и понимаю это. Я спрашиваю, доказывает ли работа на моем отключенном ноутбуке эту концепцию. Поскольку есть только два основания, я уже выбегаю. Я запускаю приемник и ESC от Arduino, но все равно нужно добавить еще один ESC плюс светодиоды... @Delta_G, @Denis G. Labrecque