Входные 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, потому что я просто пытаюсь считывать значения.
Я пытался подключить вывод данных приемника к ШИМ-контакту Arduino и считывать импульсы с канала управления рулем. (Я ранее тестировал канал с помощью сервопривода и знаю, что он работает правильно). Однакона последовательный монитор не выводится сигнал (0
). Мне трудно понять, почему.
Я проверил документацию для pulseIn()
, и она кажется достаточно простой. Я протестировал ШИМ-контакты D3
, D5
, D10
... ни один из них не работает. Я не понимаю, в чем проблема на данный момент. Обновление: Теперь я подключаюсь с отрицательного контакта приемника к одному из GND Arduino
.
Это упрощенный сценарий, поэтому я не вижу, что происходит не так (мой опыт программирования хорош, но мой опыт работы с Arduino близок к нулю).
Цель этого эксперимента состоит в том, чтобы запрограммировать изменение освещения в соответствии с входом дроссельной заслонки и асимметричной тягой через два двигателя для лодки. Я знаю, что pulseIn-не лучшая функция для использования, но на данный момент я просто хочу немного поработать, прежде чем углубляться в сорняки.
Обновление: Я пытаюсь следить за этим видео, за исключением того, что подключение Arduino к приемнику не сработало, возможно, потому, что BEC ESC посылает какой-то сигнал питания, который заряжает приемник. (Светодиоды приемника обычно подают визуальный сигнал, но они просто включаются без сигнала при подключении через Arduino).
Согласно руководству на стр. 6 и стр. 8, "приемники имеют диапазон рабочего напряжения от 3,5 до 9 вольт", при идеальном напряжении выше 4,8 В (поскольку сервоприводы, как правило, отключаются раньше). Это должно находиться в пределах диапазона Arduino при 5 В.
1 ответ
Лучший ответ:
Что ввело меня в заблуждение, так это контакты. Я ссылался на эту диаграмму:
Я думал, что все контакты пронумерованы последовательно, так что pinMode(9, ...)
установит D6
(09 на диаграмме). Однако это устанавливает D9
. Подключение к правильному контакту работает нормально.
Если вы все еще делаете это без подключения к заземлению, то на данный момент может показаться, что все работает нормально. Он может просто перестать работать в любое удобное для него время на основе этого эталонного напряжения., @Delta_G
Я прочитал статью, которую Майенко прокомментировал ранее, и понимаю это. Я спрашиваю, доказывает ли работа на моем отключенном ноутбуке эту концепцию. Поскольку есть только два основания, я уже выбегаю. Я запускаю приемник и ESC от Arduino, но все равно нужно добавить еще один ESC плюс светодиоды... @Delta_G, @Denis G. Labrecque
- Как прочитать значение PIN PWM-выхода?
- Управление несколькими вентиляторами с помощью Arduino Uno
- Невозможно установить рабочий цикл на 0% с помощью пользовательского PWM
- Плохие показания сигнала тахометра вентилятора 12 В pwm
- Вывод 400 мВ с помощью штыря Arduino Nano PWM
- ШИМ-сигнал с рабочим циклом 50 % и рассчитанной частотой
- Как получить 2 ШИМ-вывода с обратным битовым диапазоном при 25 кГц на Nano?
- Помогите с простым постепенно более ярко светящим светодиодом
Во-первых: Никогда не показывайте код и последовательный вывод в виде изображения. Скопируйте и вставьте их в виде текста в вопрос и отформатируйте в виде кода. Во-вторых: вам действительно нужно подключить заземление между 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