Реверс двигателей через драйвер L293

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Реверс двигателей через драйвер L293

Сообщение Влад56 »

Практикую реверс коллекторных микродвигателей путем их подключения к 2 разным выходам драйвера L293. Соответственно входы управляются ШИМами с 2 ног Ардуинки и нулевая ШИМ подается на тот или иной вход драйвера вызывая соответственно реверс движка, запитанного нужной скважностью ШИМ со второго входа. Плюс вижу в отсутствии необходимости управляемых транзисторных ключей в дополнении к драйверу, то есть можно обойтись одной стандартной в такой ситуации 293.
В одном проекте такой реверс на Меге работает без нареканий, но в другом на Уно при включении питания секунды на 4 зависает, но потом работает. Подозреваю, что при такой схеме, когда один из выводов двигателя не подключен на 0, а висит на другом выводе процессора с которого нет ШИМ волны (или она нулевая), есть какие то подводные камни. Может кто ваял подобную штуку на этом или аналогичном драйвере? Или знает чем может быть чревата подобная затея.
Хотя не исключено, что есть и другие драйвера с возможностью реверсирования, о которых я не знаю.
Реклама
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Реверс двигателей через драйвер L293

Сообщение veso74 »

Фото, схема, прог. код? Подключен ли USB-кабель к PC при запуске?
Реклама
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Реверс двигателей через драйвер L293

Сообщение Влад56 »

[uquote="veso74",url="/forum/viewtopic.php?p=4457699#p4457699"]Фото, схема, прог. код? Подключен ли USB-кабель к PC при запуске?[/uquote]
Кабель к PC не подключен при запуске. Мега питается через VIN. Драйвер запитан от того же БП что и Ардуино через Крены.
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Реверс двигателей через драйвер L293

Сообщение Влад56 »

Предположу самостоятельно, что 4-5 секундная задержка может быть связана с перегрузкой т 8 разрядного таймера МК, который если не ошибаюсь используется для генерации ШИМ и еще для работы ф-ции time(), delay(). В проекте газонокосилки со сбором травы и питанием от намотанного на катушку кабеля, генериться одновременно 4 ШИМ. Два на колеса с 5 и 6 пинов и два 9 и 10 на катушку, реверсируемую по описанной схеме. Плюс сама работа движков колес есть функция от времени. - Итог первые 5 секунд не хочет работать двигатель катушки.
Очевидно необходимо оптимизировать ресурсы МК в составе которых целых 3 или даже 5, в случае с мегой 2560 таймера-счетчика. Вопрос, можно ли это сделать в самой IDE ?
Реклама
Эиком - электронные компоненты и радиодетали
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Реверс двигателей через драйвер L293

Сообщение Martian »

Без схемы и программы нет смысла обсуждать. Информацию необходимо давать полностью.
Реклама
Влад56
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб июн 17, 2023 12:05:56

Re: Реверс двигателей через драйвер L293

Сообщение Влад56 »

Ну вот так, например кусок кода. Ино во вложении запрещено.
По схеме думаю и так понятно к каким пинам что подключено.

void loop() {
digitalWrite(2,HIGH);//раскрутка ножа
if(n%2==0){pin=5;skat2=0;skat1=220;};//else{pin=6;skat2=220;skat1=0;};//переопределение разворотных и размоточных в чет. нечет.
if(n%2!=0){pin=6;skat2=220;skat1=0;};
analogWrite(5,200);analogWrite(6,200);// работа ходовых на 5 и 6
delay(100);
analogWrite(9,skat2);analogWrite(10,skat1);// размотка или смотка кабеля на 9 и 10
Time0 = millis();

// === Блок удержания направления на заданной дистанции а по гироскопу === //

do {dist=VX*(millis()-Time0)/1000; // Текущее время и пройденная дистанция сучетом определенной скорости в метрах
yaw=0;
for(i=0;i<=9;i++){
Wire.beginTransmission(MPU);
Wire.write(0x47); // Адрес первого регистра данных гироскопа 0x43
Wire.endTransmission();
Wire.requestFrom(MPU, 2); // Чтение последних 2 регистров, значение каждой оси сохраняется в 2 регистрах
GyroZ = (Wire.read() << 8 | Wire.read()) / 131.0; // используем только эту ось
delay(90);
yaw = yaw+GyroZ+0.5;
i++;}

if(yaw>1){dp=10;dl=-10;};if(yaw<-1){dp=-10;dl=10;};//условия коррекции шим положительно против чс
analogWrite(5,200+dp);analogWrite(6,200+dl); //5 на левом
delay(600);// корректируем работу ходовых на 5 и 6 выводах в течении 0.6 сек
analogWrite(5,200);analogWrite(6,200);//сбрасываем шим на прежний уровень и 0.5 сек замеряем в след итерации
delay(300);
}
while(dist <= A); // пока на заданной дистанции

analogWrite(5,0);analogWrite(6,0);//останов ходовых по достижению дистанции А
analogWrite(9,0);analogWrite(10,0);// стоп размотки
delay(1000);

n=n+1;}// конец лупп в начало очередной борозды
Реклама
Ответить

Вернуться в «Arduino»