Ардуино, моторы и радиоуправление

Тема в разделе "Arduino & Shields", создана пользователем DmitryDmitry, 13 мар 2014.

  1. DmitryDmitry

    DmitryDmitry Нуб

    Добрый день. Пытаюсь сделать радиоуправление моторами при помощи ардуино.
    Сразу скетч (упрощенный вариант для 1 канала):

    int ch2Pin=0; //сигнал со 2-го канала ресивера
    int mean2;
    int vt1=3; //управляющий сигнал для 1-го транзистора
    int vt2=5; //управляющий сигнал для 2-го транзистора
    int vt3=6; //управляющий сигнал для 3-го транзистора
    int vt4=9; //управляющий сигнал для 4-го транзистора

    void setup()
    {
    pinMode(vt1,OUTPUT);
    pinMode(vt2,OUTPUT);
    pinMode(vt3,OUTPUT);
    pinMode(vt4,OUTPUT);
    }

    void loop()
    {
    mean2=analogRead(ch2Pin); //считывание напряжения
    if (mean2>=46 && mean2<=59) //если напряжение равно опорному с разбросом 14 единиц, записать на выход 0
    {
    analogWrite(vt1,0);
    analogWrite(vt2,0);
    analogWrite(vt3,0);
    analogWrite(vt4,0);
    }
    else if (mean2>59) //если напряжение больше опорного, отобразить на выходе изменение напряжения
    {mean2=constrain(mean2,60,68);
    mean2=map(mean2,60,68,210,255);
    analogWrite(vt1,mean2);
    analogWrite(vt2,0);
    analogWrite(vt3,mean2);
    analogWrite(vt4,0);
    }
    else if (mean2<46) //если напряжение меньше опорного, отобразить на выходе изменение напряжения
    {mean2=constrain(mean2,37,45);
    mean2=map(mean2,37,45,210,255);
    analogWrite(vt1,0);
    analogWrite(vt2,mean2);
    analogWrite(vt3,0);
    analogWrite(vt4,mean2);
    }
    }

    Транзисторы работают попарно: 1 и 2 транзисторы в цепи одного мотора, 3 и 4 - в цепи другого. 1-ый, 3-ий -движение вперед, 2-ой, 4-ый - движение назад.

    Столкнулся с двумя проблемами.
    1. Выходы контроллера ведут себя произвольным образом. Правильная работа может сменяться постоянным плюсом на одном выходе, а на другом недостатком напряжения, без нагрузки контроллер бывает дает правильные сигналы, а при подключении нагрузки один выход застревает на высоком уровне. Может что-то не нравится в скетче?
    2. При подключении моторов на ресивере появляются помехи, так что невозможно обрабатывать сигнал с него. Как с этим бороться?
     
    Последнее редактирование: 13 мар 2014
  2. omadonex

    omadonex Нерд

    Попробуй использовать драйвер управления моторами SN754410, L293NE. Просто, удобно и все уже за тебя сделано - посылаешь HIGH, LOW на нужный пин и мотор крутится в нужную сторону