Пропадает сигнал на выходе Arduino при присоединении к драйверу

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

Добрый день, уважаемые форумчане.

Столкнулся с проблемой, которая уже сломала голову. 

Собрал схему для управления шасси, управление через 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); }}

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Подать 5В на входы драйвера через амперметр и посмотреть потребляемый ток.

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

asam пишет:

Подать 5В на входы драйвера через амперметр и посмотреть потребляемый ток.

Дело в том, что у меня одно шасси на таком драйвере уже есть. Схема отличается лишь наличием двух аккумуляторов вместо одного через "повышайку". Плюс, смотрел у Алекса Гайвера видео - он также подает напрямую на этот же драйвер с выходных пинов Arduino сигналы. 

Мысль Вашу учёл. Если иных вариантов не будет, завтра проверю ток.

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

Вот вариант Гайвера

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да, что за парад планет сегодня? Второй уже за вечер! Ну, если у гайвера на видел работает. почему вопрос здесь а не на форуме гайвера?

ВН
Offline
Зарегистрирован: 25.02.2016

просаживается просто  ваша повышайка, поставьте ей на выход 1000 -2000 мкф может и заработает

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

Потому, что я делал не схему Гайвера, а свою. Его привел как пример подключения связки Arduino+драйвер+двигатели+аккумуляторы. Если видете косяки в схеме - укажите, а воду лить здесь все мы умеем.

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

Была такая мысль. Садился на её выход мультиметром - держит. Колебания на уровне 0,1В.

ВН
Offline
Зарегистрирован: 25.02.2016

выведите на 13 пин в сетап мигалку и посмотрите, держит не держит

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

При присоединенных выводах Arduino к драйверу - несколько раз моргает и гаснет. Отцепляю драйвер - горит четко и ярко.

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

asam пишет:

Подать 5В на входы драйвера через амперметр и посмотреть потребляемый ток.

 

Подал, посмотрел. Ток на уровне 200-300 мкА. При этом, от +5В Arduino драйвер отлично крутит двигатели без присоединения к пинам управления (4-7). Чутьем понимаю, что проблема по питанию - найти не могу. Земли все собрал, напряжение достаточное, просадок по питанию нет, без драйвера на пинах, при сигналах с пульта управления, "железные" +5В на выводах 4-7.

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

ВН пишет:

выведите на 13 пин в сетап мигалку и посмотрите, держит не держит

Наблюдение показывает, что когда схема собрана, при получении любого сигнала кроме "Стоп" светодиод моргает и гаснет, затем пауза в секунду или полторы и вновь моргает и гаснет. Если отцепляем пины от драйвера, четко загорается строго по программе - на команду "Вперед", горит ярко, без пауз. Гаснет опять же по программе - после команды "Стоп".

b707
Offline
Зарегистрирован: 26.05.2017

nt95 - вас просили токи померить. Измерять надо с полностью собраной схемой, с присоединенной ардуиной и запущенной программой. Включайте амперметр в разрыв между пином ардуино (пины 4-7) и соответвующим входом драйвера и подавайте команды с пульта. Ставлю на то, что у вас там токи 100-200 мА

ВН
Offline
Зарегистрирован: 25.02.2016

nt95 пишет:
Наблюдение показывает, что когда схема собрана, при получении любого сигнала кроме "Стоп" светодиод моргает и гаснет, затем пауза в секунду или полторы и вновь моргает и гаснет.

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

b707, он все одно тестером не поймает бросок тока при включении двигателей. Да двигатели все одно не крутятся, т.к. при попытке включить, ардуина улетает в перезагруз. Но лучше пусть сделает, описанный выше тест, и сам убедится.

b707
Offline
Зарегистрирован: 26.05.2017

ВН пишет:

при попытке включить, ардуина улетает в перезагруз.

да не похоже. Точнее - похоже, но после первого перезагруза у него все должно снова работать - ведь команда мотора при ресете сбрасывается. А по описанию как будто перезагруз циклический

ВН
Offline
Зарегистрирован: 25.02.2016

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

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

b707 пишет:

nt95 - вас просили токи померить. Измерять надо с полностью собраной схемой, с присоединенной ардуиной и запущенной программой. Включайте амперметр в разрыв между пином ардуино (пины 4-7) и соответвующим входом драйвера и подавайте команды с пульта. Ставлю на то, что у вас там токи 100-200 мА

В-первую очередь попробовал измерить на пинах в разрыв драйвера. Ноль. Как заметил наш собеседник, поймать ток (если он есть) мультиметром не удается.

Во-вторых, при подключении от +5 ток на порядки(!) меньше 200 мА.

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

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

ВН пишет:

nt95 пишет:
Наблюдение показывает, что когда схема собрана, при получении любого сигнала кроме "Стоп" светодиод моргает и гаснет, затем пауза в секунду или полторы и вновь моргает и гаснет.

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

b707, он все одно тестером не поймает бросок тока при включении двигателей. Да двигатели все одно не крутятся, т.к. при попытке включить, ардуина улетает в перезагруз. Но лучше пусть сделает, описанный выше тест, и сам убедится.

Сделал как Вы сказали, уважаемый BH.

Ваша версия подтвердилась и одновременно выяснилось следующее:

1) плата уходит в перезагруз при получении сигнала;

2) это явление является следствием неисправного драйвера. Два драйвера паяли дети - один мгновенно нагревался как только подаешь питание (его не использовал), второй сломал голову сегодня неработоспособностью собранной правильно схемы. После введения в сетап "моргалки", подключил третий драйвер, который паял сам. Схема заработала мгновенно и без проблем. Тут же поменял драйвера - ноль реакции.

Большое спасибо, камрады. Давно таких танцев с бубном не устраивал. Прошу извинить если был резок и непонятлив.:)

nt95
nt95 аватар
Offline
Зарегистрирован: 30.03.2016

Для особо внимательных: я в курсе, что на схеме и в программе пины управления, идущие к драйверам, развернуты и изображены в обратном порядке.:)