L298N проблема регулировки скорости
- Войдите на сайт для отправки комментариев
Ср, 02/04/2014 - 13:28
Делаю робота на 2х колесах. При движении его траектория отходит в сторону. Хочу это решить снижением скорости одного из моторов, но не получается эту скорость отрегулировать. Моторы либо крутятся одинаково, ели на один подаешь аналог-сигнал, например 128, а на другой 254; либо один мотор не крутится совсем, если подавать аналог-сигнал ниже 128.
Использую вот этот драйвер моторов, занимающий 6 пинов (L298N)
Тестирую вот этим кодом:
// 2 мотора через L298N - шилду #define D1 8 #define M1 7 #define D2 9 #define M2 10 #define ENA 0 #define ENB 1 // уз-дальномер #define Trig1 6 #define Echo1 5 // зона остановки #define dead_zone 40 void setup() {pinMode(Trig1, OUTPUT); pinMode(Echo1, INPUT); pinMode(D1, OUTPUT); pinMode(M1, OUTPUT); pinMode(D2, OUTPUT); pinMode(M2, OUTPUT); delay(1000); } unsigned int impulseTime=0; unsigned int distanceUP_sm=0; void loop() // замер расстояния { digitalWrite(Trig1, HIGH); delayMicroseconds(10); digitalWrite(Trig1, LOW); impulseTime = pulseIn(Echo1, HIGH); distanceUP_sm = impulseTime/58; delay(60); // если дистанция больше 40см - движение if (distanceUP_sm >= dead_zone) {digitalWrite(D1, 1); digitalWrite(M1, 0); analogWrite(ENA, 254); digitalWrite(D2, 1); digitalWrite(M2, 0); analogWrite(ENB, 254); } // иначе - стоп else { analogWrite(ENA, 0); analogWrite(ENB, 0);} }
Так же, все подключено через v5.0 Sensor Shield
L298N я питаю от RX TX порта (там 5 вольт), от него же и управляю скоростью моторов через пины 0 и 1 (видно на схеме распиновку портов шилды). Может, причина гдето тут?
Делаю робота на 2х колесах. При движении его траектория отходит в сторону. Хочу это решить снижением скорости одного из моторов, но не получается эту скорость отрегулировать. Моторы либо крутятся одинаково, ели на один подаешь аналог-сигнал, например 128, а на другой 254; либо один мотор не крутится совсем, если подавать аналог-сигнал ниже 128.
Использую вот этот драйвер моторов, занимающий 6 пинов (L298N)
Тестирую вот этим кодом:
Так же, все подключено через v5.0 Sensor Shield
L298N я питаю от RX TX порта (там 5 вольт), от него же и управляю скоростью моторов через пины 0 и 1 (видно на схеме распиновку портов шилды). Может, причина гдето тут?
Питания нехватает скорее всего. у l298n неспроста отдельно на моторы ввод питания и отдельно на логику.
Питаю все от 2х аккумуляторов 8.4V NiMH 3800mAh. Один кормит ардуину, к которой подключены 2 дальномера и l298n. Второй - моторы и сервы. Неужели мало? Я новичок в этом всем. Но все хорошо работало на одном аккоме, хотя для стабильности работы ардуины пришлось перейти на два.
Подключите драйвер двигателей к Vin ардуины, l298n от этого хуже стать не должно.
Смена пинов и входов питания не помогает. Минимальный сигнал при котором мотор перестает вращаться - 128. От 128 до 254 скорость вращения одинакова. Наверное, это глючит китайский L298N. Никакой реакции на изменение скорости через сигналы от ардуины - она меняется только если сбавлять напряжение от питания моторов.
может не мешать с кодом дальности
взять типовой пример
синхронно на оба мотора подавать
смотреть как механика синхронна или нет
только потом дальше думать
проблема может быть как механическая так и логическая
шестеренка с заусеницей
логика с лишней единицей
искать долго можно вместе
Вот так проверил - одинаковая скорость, одинаковое напряжение на моторах.
если оба мотора только от 128 работают тут 2 варианта, по отдельности или вместе
1. моторы слабые и соответственно сильно нагружены. или разгрузите моторы, или увеличте мощность
2. нехватка питания
моторы на какое напряжение? фото вашего устройства можете привести?
Насчет механики - врядли. Заусеницы и прочее замедляло бы один из моторов, если я все правильно понял. А вот с лишней единицей в логике я не знаю где смотреть.
Вот фото. Пока моторы питаю на 6ти вольтах. Вчера на 4х ковырялся, но все вроде тоже самое было. Сейчас по-новой попробую. Там еще 3 стабилизатора (на ардуину (8 вольт от одного аккома), моторы (сейсас там 6 вольт) и сервы (5 вольт) - моторы+сервы от другого аккома), понижающих напряжение на LM2596.
да мощности этих моторов достаточно. аккумуляторы много весят?
моторы/драйвер питайте от 8. там на этом драйвере много падает (пару вольт приблизительно)
аккумулятора и одного бы хватило (если конечно достаточно мощности)
мне хватало с такими моторами 2 литиевых 18650 китайских самых дешевых. только сервы не ставил
а потом окажется что волочящийся провод заворачивает на кухню раньше чем в ванную
и полеэтилен изгибается от паяльника по разному
как мне кажется это сервомоторы
увидеть бы как заворачивает
"при движении его траектория уходит в сторону"
вспомнился танк игрушка в советское время в котором один мотор постоянного тока всегда крутился быстрее чуть чуть и гусеницы заедали или разваливались
:)
а спедеди просто колесик по центру?
Я тестирую с вытащенными аккумуляторами, так что их вес причиной быть не должен. Я бы с радостью питал драйвер от аккумулятора напрямую вместе с моторами, но вычитал, что у драйвера максимальный входной ток - 3А, тогда как если подкличать не через ардуину, то на логику драйвера попадает под 5 ампер. Правильно сделал? Все прекрасно работало от одного аккумулятора, пока не встал вопрос регулировки скорости от ардуины для правильной траектории движения.
Да, мебельное колесико. Но он и без колесика сворачивает в сторону.
Сейчас попробую показать на видео траеторию.
стоп
кинематическая ошибка
рукой движешся вперед
а ролик влияющий на повороты не управляемый
он всегда будет резко заворачивать
в самолетах целая теория об кинематичском расположении третьего колеса впереди или сзади
руку перевесь так чтобы
неуправляемый ролик был
позади тянущих ведущих колес
в самолетах специально делали сошку(палку) сзади именно чтоб исключить смертельное капотирование
да неудачное место под "руку". лучше руку сзади повесить, или колеса с моторами вперед. а отдельное колесико назад. аккумуляторы для развесовки наверно сзади чтобы рука не перевешивала. подберете
Хм, хорошо, это не сложно руку переставить. Кстати, этот ролик чуть выше ведущих колес, поэтому наклон теперь получится немного в пол, а не в потолок, хотя это не так уж и критично для дальномера. Но вот что скорость никак не регулируется с ардуины - печально. Попробую еще сервы отключить для проверки на нехватку питания моторов. С 8ми вольт на моторы также не старует один при сигнале ниже 128, хотя второй уже быстро так вращается на 254-х. Но мне большая скорость не нужна - у меня два дальномера и подбирание клешней предметов с пола, наоборот, нужна маленькая скорость, а она регулируется только непосредственным понижением напряжения со стабилизатора :\ Как все соберу - на видео поснимаю отклоны в сторону.
подключите просто моторы к 6-8 вольтам по очереди на весу. на звук одинаково или нет. может редукторы разные. их там несколько видов
подавайте не синхронно импульсы на оба мотора
а отделными циклами на каждый мотор
на тормозном моторе на несколько импульсов по больше
вот и исправление механического косяка
но думаю это не нужно
да и как-то не верю я в сервомоторы - глючат они
в игрушку максимум
я на шаговых только правду о точности нахожу но вам это не надо
Вот так проверил - одинаковая скорость, одинаковое напряжение на моторах.
а джампер на модуле L298N убран?
что то я проваронил, а ардуино какая? уно? так там вроде ENB=12 нифига ниразу не ШИМ.
у меня такой же. падение 1 вольт.
2А на канал максимум. потом микросхема L298N умирает с шелчком и отвалившимся кусочком. к сожалению сам видел.
у меня такой же. падение 1 вольт.
при каком токе? должно быть больше по идее
Проблему с ругуляцией скорости решили мне на соседнем форуме. А дело вот в чем было:
1."analogWrite работает на PWM пинах. Для Arduino Uno это 3, 5, 6, 9, 10, 11. Поэтому ENA и ENB должны быть на этих пинах" (а я втыкал для проверки на другие пины в 7 и 8)
2. А предел в 128й сигнал связан был с библиотекой ардуино wiring_analog.c, где
Такие вот дела. Всем спасибо за участие и желание помочь.
24 вольта 4 ампера.
хорошо. буду знать. но как нибудь у себя проверю
а как вы измеряли? да и ток что то большой
хорошо. буду знать. но как нибудь у себя проверю
а как вы измеряли? да и ток что то большой
мультиметром на выходе.
Ток максимальный по даташит. 2 А на канал. у меня два канала объеденены и вращают один движок, но с большей мощностью.
хорошо. а как вы объсните это? кусок из даташита на L298
конечно есть отличие, приводится для 42В, но все равно
Ну как же? пизд"т мультиметр, пизд"т микросхема тока, пизд"т даташит, да много вариантов. выбирайте любой. :-) говорю, что вижу по мультиметру. почему так - объяснить не могу.
а по даташиту я немного не понял. падение почти 5 вольт при токе в 2 А - это каждый канал так? т.е. суммарно 10 вольт упадет при объединении каналов?
падение не ссуммируется при паралельном. вечерком проверю. интересно у меня получится
падение не ссуммируется при паралельном. вечерком проверю. интересно у меня получится
Жду вечернего сообщения о проверке. сегодня не смогу проверить.
к сожалению проверить не смогу. драйвер куда то со старым шасси дел, жаль, уже даже методику придумал
Вопрос как раз по модулю, который в первом сообщении.
Модуль управляет 24 вольтами.
Подаю на него шим на пины EN (0 до 5 вольт - посмотрел мультиметром).
а на выходе с модуля имею от 10 вольт до 24. т.е. откуда-то появилось минимальное значение. нету диапазона от 0 до 10 вольт.
Кто-нибудь сталкивался?
схему код
схему код
ну тут все просто
где написано +12 - я подключил 24 вольта
GND - GND
+ 5 вольт - +5 вольт питания контроллера
Enable A объединил с Enable B - подключил к ШИМ D3
Input ноги объединил IN1+IN3 и IN2+IN4 - это к пинам микросхемы 2И_НЕ, что б одним сигналом подавать на одну пару ноль, на другую 1 или наоборот.
это надо зарисовать?
p.s. проверяю ШИМ сигнал на входе в модуль (на пины ENABLE) мультиметр показывает от 0 до 5 вольт. А выход с модуля мультиметр показывает с 10 до 24
выход интересует. нагрузка какая и как именно подключили и измеряли
выход интересует. нагрузка какая и как именно подключили и измеряли
объединил Output A и Output B в параллель.
Нагрузки никакой. только мультиметр и все.
если шим какой нафиг мультиметр? осциллограф или делай фильтр. например кондер поставь крупный, но лучше фильтр резитор+конденсатор с резистором и с него уже измерять
а то получается твоим измерениям нельзя верить
если шим какой нафиг мультиметр? осциллограф или делай фильтр. например кондер поставь крупный, но лучше фильтр резитор+конденсатор с резистором и с него уже измерять
а то получается твоим измерениям нельзя верить
почему? косвенно же можно. показания на мультиметре на вход модуля (то что ШИМ): 0 0.1 0.2 0.3 0.4 ... 4.7 4.8 4.9 5 - т.е. скажность я конечно же не вижу, но судить о ее "правильности" могу
а показания мультиметра с выхода модуля : 10 10.5 11 11.5 ..... 23.5 24 24.5 25 - тут же непонятный какой-то минимум образовался.
А схема где? Продолжаем лечить по фотографии.
Кричал же дайте кода для робота обьезжающего препятсвия.
И все молчок
Вот я все знаю, все у меня работает, вот сволочью буду, а ничего не скажу.
повесьте нагрузку и через фильтр мерьте. что вам еще сказать
повесьте нагрузку и через фильтр мерьте. что вам еще сказать
схему дай этого чудо щитка
Что-то я уже 4 голых корпуса успешно применил и проблем не знаю.
Что-то я смотрю на этот щиток смотрю и понять не могу зачем столько деталей когда ШИМ-ами играть достаточно
1. 8-ем диодов обвязать микрушку чтоб на лету втыкать вырывать моторы и наплевать на всплески.
2. кандер и индуктивность не обязательно
3. лишние ноги L298 или в землю или в воздух чтобы у 4-ех ШИМ-ов под ногами не путались
4. для управления автомобилем достаточно 2 ШИМ-а всего на 100000 колес
Из носящегося по квартире на 1-ом корпусе L298 Вес подноса 4 кг вес кошки 3кг=7кг для L298 не нагрузка.
Що тут паять плять?
L298 1-ин корпус 2 ШИМ-а всего-то https://yadi.sk/i/tikT5q0NaFQuP
Официальная у меня тоже много много смеха вызывает, но там хоть за универсальнось боролись http://arduino.cc/en/uploads/Main/arduino_MotorShield_Rev3-schematic.pdf
Схему щитка в студию! Тогда я скажу где резать а где соплями порядок наводить в этом шитке для идиотов. Разубедите меня?
О сколько времени прошло. но я все-таки разобрался и выношу на суд общественный.
Итак повторюсь - была проблема с вышеупомянутым драйвером двигателя.
Я оба два канала выходных объединил, что бы получить мощность на выходе 4А. мне так надо. Управляю скоростью вращения двигателем через пин3 ШИМ.
беда заключалась в том, что на выходе у меня образовывался определенный минимум, а именно 10 вольт выдаваемых с драйвера. после минимума - регулировка нормальная, но ниже тупо ноль вольт и все. соответственно двигатель вращается с определенным минимумом оборотов, который хотелось бы понизить.
Вот что я писал выше:
а показания мультиметра с выхода модуля : 10 10.5 11 11.5 ..... 23.5 24 24.5 25 - тут же непонятный какой-то минимум образовался.
Беда оказалась в частоте ШИМа на вход драйвера.
понизив ее до 122 Гц, добавив строчку TCCR2B = TCCR2B & 0b11111000 | 6;
у меня все стало на свои места. теперь выходной сигнал с драйвера соответствует входному на него же.
Неужели ни у кого такой проблемы никогда не возникало? поиск на форуме и в гугле подобного ничего не дал.
Какие последствия ждут при такой низкой частоте ШИМа? может кто подсказать? двигатель вроде не "поет" на низких оборотах. микросхема не греется на холостом ходу.
и все равно не то.
при частоте ШИМ-а 122 Гц нижний предел напряжения с драйвера 5.8 вольт.
Если опустить частоту до 30 Гц ( TCCR2B = TCCR2B & 0b11111000 | 7; ), то выходное напряжение с драйвера полностью соответствует входному сигналу. Только вот рывками работает движок. чувствуются толчки\рывки. при увеличении оборотов это проходити двигатель работает плавномерно. только вот нужна плавность на низких оборотах.
У кого-нибудь есть советы? буду премного признателен.
Уточните пожалуйста, чем Вы измеряете напряжение на выходе драйвера, когда "нижний предел" получается 5.8V ???
Неужели мультиметром (цифровой или стрелочной Ц-шкой) ???
Или всё-же смотрите осциллографом?
Уточните пожалуйста, чем Вы измеряете напряжение на выходе драйвера, когда "нижний предел" получается 5.8V ???
Неужели мультиметром (цифровой или стрелочной Ц-шкой) ???
Или всё-же смотрите осциллографом?
конечно я смотрю мультиметром.
получается вот как: при частоте ШИМ входного сигнала 1 КГц, на выходе драйвера мультиметром показывается от 15 до 24 вольт. при этом минимальная получаемая скорость вращения двигателя визуально "много" а на максимальных оборотах - то что нужно.
причастоте ШИМ входного сигнала 120 Гц, на выходе драйвера мультиметром меряю от 5.8 до 24. при этом минимальная получаемая скорость вращения двигателя визуально НИЖЕ чем в первом варианте, где ШИМ 1 КГц.
Ради интереса посмотрел при частоте 31 КГц входного сигнала - изменений практически нет на выходе. мультиметром от 23.8 до 24 вольт. а на взгляд вообще одна скорость все время.
Вот такая беда. а мне очень нужны именно минимальные обороты.
У Вас есть паспорт от этого мультиметра? Посмотрите его полосу пропускания. Грубо говоря частоты на которых он корректно меряет напряжение. Если паспорта нет, может гугл знает его характеристики.
Есть смутное сомнение, что частоты выше 100Гц просто не воспринимаются вашим мультиметром.
Есть смутное сомнение, что частоты выше 100Гц просто не воспринимаются вашим мультиметром.
Отпадает. если установить частоту 30 Гц, то мультиметр видит напряжение на выходе от 0.5 вольт и выше пропорционально входному сигналу, до 24 вольт. Только вот рывками работает движок. чувствуются толчки\рывки.
Двигатель не будет нормально работать во всём диапазоне.
Нужны низкие обороты - мотор с понижающим редуктором.
Двигатель не будет нормально работать во всём диапазоне.
Нужны низкие обороты - мотор с понижающим редуктором.
к сожалению редуктор недопустим конструктивно.
а почему двигатель не будет нормально работать во всем диапазоне?