Вопрос по микросхеме L293D (нубский)
- Войдите на сайт для отправки комментариев
Пнд, 16/05/2016 - 19:47
Купил себе L293D драйвер моторов. Он будет питаться сам от 5 вольт. а для моторов будет 24 вольта. но вот пробьлема. у этой микросхемы 4 вывода земля. Я всегда принемал за землю минус источника питания. Но тут вопрос. имею два источника питания. и какого источника минус будет на землю микросхемы? Я подозреваю что землюй должен быть минус 5 вольтового источника, от которого питается микросхема. но решил уточнить.
Вот нашел схемку.
Это что получается минус источника питания мотора можно соеденять с минусом ардуино? Ни каких проблем не будет?
Не надо принимать за массу (а тем более землю) минус источника питания. Есть немало устройств, у которых масса- плюс источника питания и к земле не имеет никакого отношения. Просто надо привыкнуть, что общий провод(масса) всегда внизу принципиальной однополярной схемы. А ещё бывает двуполярное питание..
В вашем случае соединяем массы и вперёд. Проблем не будет( кроме помех).
Мвссы я так понимаю это минуса обоих источников питания?
Да.
Написал скетч
int motor1_1 = 7;//первый мотор выход к микросхеме input 1 int motor1_2 = 4;//первый мотор выход к микросхеме input 2 int motor2_1 = 5;//первый мотор выход к микросхеме input 3 int motor2_2 = 6;//первый мотор выход к микросхеме input 4 int kontrol1 = 10;//даем 1 на управляющий контакт int kontrol2 = 11;//даем 1 на управляющий контакт int button_up = 8;//цепляю кнопку 1 int button_dawn = 9;//кнопка 2 void setup() { pinMode(button_up, INPUT);//кнопку на вход pinMode(button_dawn, INPUT);//кнопку на вход pinMode(motor1_1, OUTPUT); //первый мотор на выход pinMode(motor1_2, OUTPUT);//первый мотор на выход pinMode(motor2_1, OUTPUT);// второй мотор pinMode(motor2_2, OUTPUT);// второй мотор } void loop() { int UP; int DAWN; UP = digitalRead(button_up); DAWN = digitalRead(button_dawn); digitalWrite(kontrol1,1);//подаем 1 на управление микросхемы первыф мотор digitalWrite(kontrol2, 1);//подаем 1 на управление микросхемы второй мотор if(UP == 1) //проверяем нажатали первая кнопка кнопка если да то крутим двигатели в одну сторону. {digitalWrite(motor1_1, HIGH); digitalWrite(motor1_2, LOW); digitalWrite(motor2_1, HIGH); digitalWrite(motor2_2, LOW); } if(DAWN == 1); //если вторая то крутим в обратную сторону {digitalWrite(motor1_1, LOW); digitalWrite(motor1_2, HIGH); digitalWrite(motor2_1, LOW); digitalWrite(motor2_2, HIGH); } }Не работает и все тут. не пойму в чем проблема.
вот такой вот работает
int motor1_1 = 7; int motor1_2 = 4; int motor2_1 = 5; int motor2_2 = 6; int kontrol1 = 10; int kontrol2 = 11; int button_up = 8; int button_dawn = 9; void setup() { pinMode(button_up, INPUT); pinMode(button_dawn, INPUT); pinMode(motor1_1, OUTPUT); pinMode(motor1_2, OUTPUT); pinMode(motor2_1, OUTPUT); pinMode(motor2_2, OUTPUT); } void loop() { digitalWrite(kontrol1,1); digitalWrite(kontrol2, 1); digitalWrite(motor1_1,HIGH); digitalWrite(motor1_2,LOW); digitalWrite(motor2_1,HIGH); digitalWrite(motor2_2,LOW); delay(1000); digitalWrite(motor1_1,LOW); digitalWrite(motor1_2,HIGH); digitalWrite(motor2_1,LOW); digitalWrite(motor2_2,HIGH); delay(1000); }Но по суте тоже самое без оператора if.
проверял if оператор. На мой взгляд все нормально. но почему он не меняет напряжение на контактах я не пойму.
При включении ардуино. Моторы начинают сразу крутится. Будто уже установлено направление. в функции void setup() выставлял все пины на LOW двигатели не крутились. и при нажатиях кнопок тоже. принемается первым значение первого блока if
Вот схема на
https://123d.circuits.io/circuits/2171426-/embed#breadboard
Поставил подтягивающие резисторы на кнопки.
Делаю замеры на микросхеме на контактах input.
Картина такая. при запуске моторы крутятся. не важно жал я кнопки или нет. на контактах input1 и input3 напряжения нет. на контактах input2 и input4 напряжение 5 вольт.
Если нажимаю кнопку которая должна подавать сигнал крутить двигатели в том направвлении в котором они сейчас крутятся. То напряжение не меняется. как и должно быть. А вот если нажать кнопку крутить в обратном направлении то напряжение меняется. на контактах input1 и input3 1.60 вольта а на input2 и input4 падает с 5 до 3.30 вольт. странно. должно было упасть до нуля. ни чего не пойму.
Предлагаю выводит Ваши переменные UP и DAWN в монитор порта. Переменные UP и DAWN объявите не в loop-е, а в начале скетча вместе с остальными переменными.
Добавьте в setup-е Serial.begin(9600);
В loop-е после 20-й строки добавьте Serial.print("UP="); Serial.print(UP); Serial.print("; DAWN="); Serial.println(DAWN);
И тогда проконтролируете изменение своих переменных при нажатии кнопок. Проверьте правильность схемы, похоже, что одна из кнопок подтянута резистором не к минусу, а к плюсу.