Пропадает сигнал на выходе Arduino при присоединении к драйверу
- Войдите на сайт для отправки комментариев
Добрый день, уважаемые форумчане.
Столкнулся с проблемой, которая уже сломала голову.
Собрал схему для управления шасси, управление через IR датчик. Программа работает, схема собранная на одном шасси работает при питании от двух последовательных элементов 18650. С учетом того, что часть элементов сажалась на пайку разбирать не стал - плат и аккумуляторов у меня большой запас.
Взял второе шасси, поставил на него драйвер. Подавая на него сигналы от источника питания, проверил, что шасси уверенно крутит двигатели от одного элемента 18650. Напряжение поднимал через конвертор МТ3605 до 7 вольт. После чего присоединил плату Arduino. Реакции на пульт ДУ отсутствуют. Т.е. светодиоды на плате Arduino загораются, когда получают сигнал, но на драйвер ничего не приходит. Отцеплял провода между Arduino и драйвером. При получении сигнала от ДУ на пинах появляются честные +5. Зажаю на вход драйвера - получаю ноль. Выглядит как будто бы драйвер просаживает на короткое своими входами. Но, на мой взгляд, такого быть не может - входы у драйвера не имеют мощной нагрузки.
Есть мысли куда смотреть, о чём подумать, что попробовать изменить?
#include "IRremote.h" IRrecv irrecv(2); decode_results results; void setup() { Serial.begin(9600); pinMode(2, INPUT); irrecv.enableIRIn(); // Запускаем прием pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); if (results.value == 0xB564B440) // Вперед { digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, LOW); } if (results.value == 0x8E623846) // Назад { digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(7, HIGH); } if (results.value == 0xD5055BB4) // Вправо { digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, HIGH); } if (results.value == 0x42505F87) // Влево { digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, LOW); } if (results.value == 0x64D4ECEE) // Стоп { digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); } irrecv.resume(); delay(200); }}
Подать 5В на входы драйвера через амперметр и посмотреть потребляемый ток.
Подать 5В на входы драйвера через амперметр и посмотреть потребляемый ток.
Дело в том, что у меня одно шасси на таком драйвере уже есть. Схема отличается лишь наличием двух аккумуляторов вместо одного через "повышайку". Плюс, смотрел у Алекса Гайвера видео - он также подает напрямую на этот же драйвер с выходных пинов Arduino сигналы.
Мысль Вашу учёл. Если иных вариантов не будет, завтра проверю ток.
Вот вариант Гайвера
Да, что за парад планет сегодня? Второй уже за вечер! Ну, если у гайвера на видел работает. почему вопрос здесь а не на форуме гайвера?
просаживается просто ваша повышайка, поставьте ей на выход 1000 -2000 мкф может и заработает
Потому, что я делал не схему Гайвера, а свою. Его привел как пример подключения связки Arduino+драйвер+двигатели+аккумуляторы. Если видете косяки в схеме - укажите, а воду лить здесь все мы умеем.
Была такая мысль. Садился на её выход мультиметром - держит. Колебания на уровне 0,1В.
выведите на 13 пин в сетап мигалку и посмотрите, держит не держит
При присоединенных выводах Arduino к драйверу - несколько раз моргает и гаснет. Отцепляю драйвер - горит четко и ярко.
Подать 5В на входы драйвера через амперметр и посмотреть потребляемый ток.
Подал, посмотрел. Ток на уровне 200-300 мкА. При этом, от +5В Arduino драйвер отлично крутит двигатели без присоединения к пинам управления (4-7). Чутьем понимаю, что проблема по питанию - найти не могу. Земли все собрал, напряжение достаточное, просадок по питанию нет, без драйвера на пинах, при сигналах с пульта управления, "железные" +5В на выводах 4-7.
выведите на 13 пин в сетап мигалку и посмотрите, держит не держит
Наблюдение показывает, что когда схема собрана, при получении любого сигнала кроме "Стоп" светодиод моргает и гаснет, затем пауза в секунду или полторы и вновь моргает и гаснет. Если отцепляем пины от драйвера, четко загорается строго по программе - на команду "Вперед", горит ярко, без пауз. Гаснет опять же по программе - после команды "Стоп".
nt95 - вас просили токи померить. Измерять надо с полностью собраной схемой, с присоединенной ардуиной и запущенной программой. Включайте амперметр в разрыв между пином ардуино (пины 4-7) и соответвующим входом драйвера и подавайте команды с пульта. Ставлю на то, что у вас там токи 100-200 мА
сделайте так, чтобы светодиод включался только на секунду в сетапе и больше ни где, т.е. при заходе в луп он должен быть выключен и больше не включаться. . Может тогда вам станет более ясно, что у вас происходит.
b707, он все одно тестером не поймает бросок тока при включении двигателей. Да двигатели все одно не крутятся, т.к. при попытке включить, ардуина улетает в перезагруз. Но лучше пусть сделает, описанный выше тест, и сам убедится.
при попытке включить, ардуина улетает в перезагруз.
да не похоже. Точнее - похоже, но после первого перезагруза у него все должно снова работать - ведь команда мотора при ресете сбрасывается. А по описанию как будто перезагруз циклический
потому и попросил сделать такой тест, чтобы внести однозначность.
nt95 - вас просили токи померить. Измерять надо с полностью собраной схемой, с присоединенной ардуиной и запущенной программой. Включайте амперметр в разрыв между пином ардуино (пины 4-7) и соответвующим входом драйвера и подавайте команды с пульта. Ставлю на то, что у вас там токи 100-200 мА
В-первую очередь попробовал измерить на пинах в разрыв драйвера. Ноль. Как заметил наш собеседник, поймать ток (если он есть) мультиметром не удается.
Во-вторых, при подключении от +5 ток на порядки(!) меньше 200 мА.
Я подозреваю, что Arduino каким-то образом пытается питать драйвер чере пины управления, но не могу понять как это происходит.
сделайте так, чтобы светодиод включался только на секунду в сетапе и больше ни где, т.е. при заходе в луп он должен быть выключен и больше не включаться. . Может тогда вам станет более ясно, что у вас происходит.
b707, он все одно тестером не поймает бросок тока при включении двигателей. Да двигатели все одно не крутятся, т.к. при попытке включить, ардуина улетает в перезагруз. Но лучше пусть сделает, описанный выше тест, и сам убедится.
Сделал как Вы сказали, уважаемый BH.
Ваша версия подтвердилась и одновременно выяснилось следующее:
1) плата уходит в перезагруз при получении сигнала;
2) это явление является следствием неисправного драйвера. Два драйвера паяли дети - один мгновенно нагревался как только подаешь питание (его не использовал), второй сломал голову сегодня неработоспособностью собранной правильно схемы. После введения в сетап "моргалки", подключил третий драйвер, который паял сам. Схема заработала мгновенно и без проблем. Тут же поменял драйвера - ноль реакции.
Большое спасибо, камрады. Давно таких танцев с бубном не устраивал. Прошу извинить если был резок и непонятлив.:)
Для особо внимательных: я в курсе, что на схеме и в программе пины управления, идущие к драйверам, развернуты и изображены в обратном порядке.:)