Неполадки в управлении DC моторами
- Войдите на сайт для отправки комментариев
Доброго времени суток!
Помогите решить проблему.
У меня (под UNO) 4 мотора (http://www.dfrobot.com/index.php?route=product/product&product_id=100#.U...) управляются МоторШилдом (http://www.seeedstudio.com/wiki/Motor_Shield_V2.0) с помощью библиотеки, которая есть по последней ссылке.
Питание от акк. 7,2 В, заряжена. Под нагрузкой 7,2-7,3 В.
Время от времени некоторые двигатели перестают вращаться. То вперед не едут левые колеса, то разворот и задний ход не крутит. Бывает одно колесо не едет.
Код сокращаю до минимума - не помогает. Заливаю однозначно работающий пример (езда змейкой) - то работает, то нет. Когда заработает, залью свою прогу, бывает заработает, а бывает нет.
Иногда в разделе setup поменяю местами строчки кода - может заработать. Дошло до того, что в цикле loop вставлю delay(5) куда-нибудь - заработает.
Какая-то периодическая неисправность. Как-то, сразу после покупки один мотор перестал крутить вообще. Разобрал, пошевелил щетки - заработал.
Сейчас же вперед, например, крутят хорошо, а назад нет. Иногда все проходит. Что это может быть - МоторШилд глючит или сами двигатели?
Какая-то чертовщина. Как можно протеститовать в момент когда не работает?
вы бы хоть код выложили. не у всех есть хрустальный шар
вы бы хоть код выложили. не у всех есть хрустальный шар
у меня есть - не срывай экперимент!
видно придется выложить код)
и заодно щетки мотора
Да полюбому щетки старые и стертые, а вкоде присутвуют переодические отключения моторов которые изза кривизны кода дают недошим на управляющих выходах, отчего мощьность вконец падает и колеса не могут крутиться. ИМХО шаговики рулят.
а, я думаю, что проблема в расслоении континиума пространства-времени - колёса движутся, но не здесь и не сейчас.
колеса движутся, но не здесь и не сейчас)))))
блин столько кода пишут люди. а может все работает с 1 раза, только не здесь и не сейчас)))
Может аккумулятор слабоват для 4 моторов. Какая ёмкость?
Попробуйте поуправлять каждым по отдельности.
Аккамуляторов хватает на несколько дней для возни с кодом. Сначала я тоже подумал, что разряжены, сменил на заряженные, а в снятых было еще половина емкости.
Двигатели кушают 250 мА максимум. Емкость акк. 2600мА (две литиевые батареи по 3,7 В)
Код "Змейки"
а без драйвера, ардуины, просто моторы от аккумуляторов нормально работают?
внутри обычная L298 стоит. там и библиотека то не нужна
надо только схему посмотреть к каким пинам все подключено. но главное проверить сначала моторы+
+ вот схема
6 пинов съедает
Моторы крутят в обе стороны....
А кроме L298 там гореть нечему?
И попутный вопрос - у драйвера только сверху радиатор, на пузе он не припаян к плате?
да фиг знает. вроде припаян пузом
там еще стабилизатор. но он врядли. хотя проверить можно вольтметром
стабилизатор это 78M05? Он-то припаян. А драйвер имеет смысл паять если радиатор сверху?
в смысле паять? там уже все спаяно. должно быть по крайней мере
тут можно тествый скетч написатт. проверить каждый полумост. но уже домой пора
ну я имею ввиду, l298 точно помимо радиатора сверху еще и на плату пузом паяется? Вроде бы не но этого, раз радиатор сверху и так есть?
при чем тут вообще радиатор*?
Как причем? Пузо припаивается к плате, чтобы плата служила радиатором, так же как регулятор напряжения на этой же плате CJ78M05 в корпусе TO-252-3L.
L298P на плате в исполнении (PowerSO20) - выводы сбоку для планарного монтажа.
http://yadi.sk/d/qXuBD4ysHPrEz (сюда почему-то не вставляется картинка...)
В даташите есть рисунок чипа вид с ребра вдоль длинной оси и там видно, что на брюже есть небольшая площадка. Указан размер а1 0.1-0.3мм
(см. самый верхний правый рис.)
Что это - технологический выступ которым чип ложится на плату или место припайки к плате?
Вот меня и берут сомнения - может такое быть одновременно и радиатор и пайка?
А вообще, может эта хрень подгореть так, чтоб то работало, то не работало?
по моему вы не в ту сторону копаете. припаян брюхом или не припаян не суть. от этого зависит насоклько будет греться микруха и все. у вас сверху радиатор. зачем вы паритесь
подгореть с неадекватным поведением может конечно, но скрее всего при этом у вас он без нагрузки много потребял. сильно грелся и нифига толком не работал
проверяйте каждый полумост по отдельности
Про пайку на брюхе - это на случай замены. Микруху уже заказал.
Про потребление на х.х. ... ну не знаю, а как без нагрузки, когда движки не работают? Так они на постоянку подключены, и если не работают, то и тока на выходе нет, значит и потребления.... или я не о том?
А при нагрузке - два движка на полумост, в сумме по 0,5 А на полумост при нормальном токе по 2А.
Я бы сказал - работал с прохладцей :)
без двигателей. без ардуины потребляет много?
хотя если то работает то нет то снова работает больше похоже на контакты
вы как вообще с программированием? светодиодом моргали?
В каком смысле?
На этой тележке с моторчиками установил плату со сдвиговым регистром, которая управляет 4-мя блоками фонарей (передними и задними) с полным набором сигнальных ламп как на автомобиле. Все на светодиодах. Поворачивает - включает поворот, тормозит - стоп сигнал и т.д. Библиотеку по свету специально написал.
ну тогда не используйте библиотеку. сами напишите. для каждого мотора чтобы в одну сторону крутиться на 1 управляющий подать high на второй low. на en подать high и мотор закрутится на полной мощности в одну сторону.
если на en подать шим можно будет регулировать скорость. пробуйте
Правильно я понял?
Драйвер использует пины:
#define MOTORSHIELD_IN1 8
#define MOTORSHIELD_IN2 11
#define SPEEDPIN_A 9
#define MOTORSHIELD_IN3 12
#define MOTORSHIELD_IN4 13
#define SPEEDPIN_B 10
Подаю на 8 пин "1" на 11-й "0", на пин 9 "1". У меня одна сторона должна крутиться.
Инвертирую 8 и 11 пин - крутится в другию сторону таже сторона?
да. должно быть так
аналогично проверять вторую сторону
шимом еще погоняй
Комбинация реверса (левая сторона)
digitalWrite(11, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
НЕ РАБОТАЕТ! Вперед крутит.
С правой все нормально - туда и сюда.
Ваш диагноз, доктор? ))))
ну ты можеш проверь каждый полумост в левой стороне драйвер. но что это даст. похоже микруха частично дохлая. мультиметр есть?
ты определил поломку
сейчас маленько шимом поиграл, начал нормально крутить. Хренота какая-то. Хуже нету искать такие неисправности.
Мультиметр есть.
Сейчас задний ход работает на полную, колеса даже сопротивляются торможению рукой.
Такое ощущение, что где-то контакт не хороший....
да похоже. странно работает. у меня таких проблем с этой микрухой не было
мультиметр уже не нужен если стал работать
jeka_tm, а я правильно понял, что пины 8 - 13 используются драйвером на аппаратном уровне, т.е. если я захочу их переопределить, то мне придется Шилд снимать с Ардуинки и ставить отдельно?
Хочу
74РС595 демультиплексор использовать, жалко мне 6 пинов.
...хотя, там же шим еще ...
на 74hc595 возможно получить шим. но я лично не проверял.
да, но можно переделать. перерезать дорожки и выставить на нужные пины
изза этого не люблю шилды. ничего не поменяешь не паяя
если добавить 2 лог. инвертора то нужно всего 4 пина
Да, это так. Но это пока прототип, поэтому не парюсь. Если решу делать, так драйвер сам сделаю с учетом опыта. Вчера сгоряча выписал МоторШилд с Фридуино, там маломощный. Посмотрим.
Кстати, залил основную прогу - носится только на макс. скорости без косяков. Как скорость снижаешь - начинаются баги.
Получается, дальномер замечает препятствие, а бот не всегда успевает остановиться.
Может быть моторы имеют большое мех. сопротивление, что малый эл.магн. момент не может его победить?
останавливается резко. просто погоняйте взад вперед сами увидите. может ваша программа не успевает быстро реагировать
Ну да. Усредняет 32 измерения дальномера с паузой в 1мс между измерениями. А вот, в коде еще задержку нашел, ставил когда искал полтергейст.
Кстати, на большой дистанции пробега видно, что правая сторона гребет лучше. Бот по дуге влево тянет.
Надо шаговики ставить.
можно шимом выровнять скорость
ну да, можно. Только где гарантия, что он завтра не передумает тормозить левую сторону? :)
Что-то я опять начал грешить на ДПТ. Надо шаговиками разжиться. Кстати, не подскажите, какие не шибко дорогие можно использовать и где купить?
Аккумуляторы у меня 7,2В, моторам 6,5 достается.
В принципе, можно акк. другой поставить, вольт на 12. Тогда сколько придет к моторам - не знаю.
шаговики для колес? ну это лишнее. лучше драйвер поменяйте
тогда может колеса с энкодерами? Ну и ДПТ какие-нибудь покачественнее.
Я один свой движок разбирал, даже плюнуть ему внутрь хотелось, так все хлипко, неустойчиво сделано. Удивительно как они работают.
смотрите сам вас больше устроит.
у меня типа такого. не так уж и хлипко. пластиковые шестеренки на металлических осях. вполне приемлимо
скорее шестерням зубья сломаешь чем там что то развалится. не считая мотора конечно. мотор хреновый
http://www.ebay.com/itm/Smart-Robot-Car-with-Plastic-Tire-Wheel-1-48-1-120-DC-Gear-Motor-Encoder-Disc-/231130151482?pt=Apparel_Merchandise&var=&hash=item35d06e3a3a&vxp=mtr
вот интересный вариант. просто посмотреть
http://www.ebay.com/itm/new-DIY-DC-4-8-6V-360-degree-Servo-W-wheel-DC-geared-motor-robots-chassis-/200998470360?pt=LH_DefaultDomain_0&hash=item2ecc7142d8
+ по первой ссылке. там еще и оптический датчик можно установить
Я снял Мотор-шилд с Ардуинки и поставил отдельно. Подал параллельное внешнее питание с акк. 7.2 В на них.
Джамперами соединил одноименные пины 8, 11, 12, 13.
Шим на пины 9 и 10 шилда (скорость) взял с 3 и 5 Ардуинки, поскольку библиотека Servo (использую ее) конфликтует по 1 Таймеру с шилдом. В библиотеке моторов сделал изменения по замене пинов.
Двигатели не работают, хотя светодиоды на шилде показывают правильное изменение направления врашения колес.
Пробросил с Ардуано +5 и землю - не помогло.
Вопрос - надо ли еще какие-то пины продублировать для работы шилда?