Неполадки в управлении DC моторами

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Доброго времени суток!

Помогите решить проблему.

У меня (под 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) куда-нибудь - заработает.

Какая-то периодическая неисправность. Как-то, сразу после покупки один мотор перестал крутить вообще. Разобрал, пошевелил щетки - заработал.

Сейчас же вперед, например, крутят хорошо, а назад нет. Иногда все проходит. Что это может быть - МоторШилд глючит или сами двигатели?

Какая-то чертовщина. Как можно протеститовать в момент когда не работает?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вы бы хоть код выложили. не у всех есть хрустальный шар

Клапауций
Offline
Зарегистрирован: 10.02.2013

jeka_tm пишет:

вы бы хоть код выложили. не у всех есть хрустальный шар

у меня есть - не срывай экперимент!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

видно придется выложить код)

и заодно щетки мотора

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Да полюбому щетки старые и стертые, а вкоде присутвуют переодические отключения моторов которые изза кривизны кода дают недошим на управляющих выходах, отчего мощьность вконец падает и колеса не могут крутиться. ИМХО шаговики рулят.

Клапауций
Offline
Зарегистрирован: 10.02.2013

а, я думаю, что проблема в расслоении континиума пространства-времени - колёса движутся, но не здесь и не сейчас.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

колеса движутся, но не здесь и не сейчас))))) 

блин столько кода пишут люди. а может все работает с 1 раза, только не здесь и не сейчас)))

vvadim
Offline
Зарегистрирован: 23.05.2012

Может аккумулятор слабоват для 4 моторов. Какая ёмкость?

Попробуйте поуправлять каждым по отдельности.

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Аккамуляторов хватает на несколько дней для возни с кодом. Сначала я тоже подумал, что разряжены, сменил на заряженные, а в снятых было еще половина емкости.

Двигатели кушают 250 мА максимум.  Емкость акк. 2600мА (две литиевые батареи по 3,7 В)

Код "Змейки"


#include "MotorDriver.h"

void setup()
{
	/*Configure the motor A to control the wheel at the left side.*/
	/*Configure the motor B to control the wheel at the right side.*/
	motordriver.init();
	motordriver.setSpeed(255,MOTORB);
	motordriver.setSpeed(255,MOTORA);
}
 
void loop()
{
	motordriver.goForward();
	delay(500);
	motordriver.stop();
	delay(100);

	motordriver.goRight();
	delay(300);
	motordriver.stop();
	delay(100);

	motordriver.goForward();
	delay(500);
	motordriver.stop();
	delay(100);

	motordriver.goLeft();
	delay(600);
	motordriver.stop();
	delay(100);

	motordriver.goForward();
	delay(1000);
	motordriver.stop();
	delay(100);

	motordriver.goRight();
	delay(600);
	motordriver.stop();
	delay(100);

	motordriver.goForward();
	delay(500);
	motordriver.stop();
	delay(100);

	motordriver.goLeft();
	delay(300);
	motordriver.stop();
	delay(100);


}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а без драйвера, ардуины,  просто моторы  от аккумуляторов нормально работают?

внутри обычная L298 стоит. там и библиотека то не нужна

надо только схему посмотреть к каким пинам все подключено. но главное проверить сначала моторы+

+ вот схема

6 пинов съедает

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Моторы крутят в обе стороны....
А кроме L298 там гореть нечему?

И попутный вопрос - у драйвера только сверху радиатор, на пузе он не припаян к плате?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да фиг знает. вроде припаян пузом

там еще стабилизатор. но он врядли. хотя проверить можно вольтметром

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

стабилизатор это 78M05? Он-то припаян. А драйвер имеет смысл паять если радиатор сверху?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

в смысле паять? там уже все спаяно. должно быть по крайней мере

тут можно тествый скетч написатт. проверить каждый полумост. но уже домой пора

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

ну я имею ввиду, l298 точно помимо радиатора сверху еще и на плату пузом паяется? Вроде бы не но этого, раз радиатор сверху и так есть?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

при чем тут вообще радиатор*?

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Как причем? Пузо припаивается к плате, чтобы плата служила радиатором, так же как регулятор напряжения на этой же плате  CJ78M05 в корпусе TO-252-3L.

 L298P на плате в исполнении  (PowerSO20) - выводы сбоку для планарного монтажа.

http://yadi.sk/d/qXuBD4ysHPrEz  (сюда почему-то не вставляется картинка...)

В даташите есть рисунок чипа вид с ребра вдоль длинной оси и там видно, что на брюже есть небольшая площадка. Указан размер а1 0.1-0.3мм

(см. самый верхний правый рис.)

Что это - технологический выступ которым чип ложится на плату или место припайки к плате?

Вот меня и берут сомнения - может такое быть одновременно и радиатор и пайка?

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

А вообще, может эта хрень подгореть так, чтоб то работало, то не работало?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

по моему вы не в ту сторону копаете. припаян брюхом или не припаян не суть. от этого зависит насоклько будет греться микруха и все. у вас сверху радиатор. зачем вы паритесь

подгореть с неадекватным поведением может конечно, но скрее всего при этом у вас он без нагрузки много потребял. сильно грелся и нифига толком не работал

проверяйте каждый полумост по отдельности

 

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Про пайку на брюхе - это на случай замены. Микруху уже заказал.

Про потребление на х.х.  ... ну не знаю, а как без нагрузки, когда движки не работают? Так они на постоянку подключены, и если не работают, то и тока на выходе нет, значит и потребления.... или я не о том?

А при нагрузке - два движка на полумост, в сумме по 0,5 А на полумост при нормальном токе по 2А.

Я бы сказал - работал с прохладцей :)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

без двигателей. без ардуины потребляет много?

хотя если то работает то нет то снова работает больше похоже на контакты

вы как вообще с программированием? светодиодом моргали?

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

В каком смысле?

На этой тележке с моторчиками установил плату со сдвиговым регистром, которая управляет 4-мя блоками фонарей (передними и задними) с полным набором сигнальных ламп как на автомобиле. Все на светодиодах. Поворачивает - включает поворот, тормозит - стоп сигнал и т.д. Библиотеку по свету специально написал.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну тогда не используйте библиотеку. сами напишите. для каждого мотора чтобы в одну сторону крутиться на 1 управляющий подать high на второй low. на en подать high и мотор закрутится на полной мощности в одну сторону.

если на en подать шим можно будет регулировать скорость. пробуйте

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Правильно я понял?

Драйвер использует пины:

#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 пин - крутится в другию сторону таже сторона?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да. должно быть так

аналогично проверять вторую сторону

шимом еще погоняй

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Комбинация реверса (левая сторона)

        digitalWrite(11, HIGH);
        digitalWrite(8, LOW);
        digitalWrite(9, HIGH);
НЕ РАБОТАЕТ! Вперед крутит.

С правой все нормально - туда и сюда.

Ваш диагноз, доктор? ))))

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну ты можеш проверь каждый полумост в левой стороне драйвер. но что это даст. похоже микруха частично дохлая. мультиметр есть?

ты определил поломку

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

сейчас маленько шимом поиграл, начал нормально крутить. Хренота какая-то. Хуже нету искать такие неисправности.

Мультиметр есть.

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Сейчас задний ход работает на полную, колеса даже сопротивляются торможению рукой.

Такое ощущение, что где-то контакт не хороший....

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да похоже. странно работает. у меня таких проблем с этой микрухой не было

мультиметр уже не нужен если стал работать

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

jeka_tm,  а я правильно понял, что пины 8 - 13 используются драйвером на аппаратном уровне, т.е. если я захочу их переопределить, то мне придется Шилд снимать с Ардуинки и ставить отдельно?

Хочу
74РС595 демультиплексор использовать, жалко мне 6 пинов.

...хотя, там же шим еще ...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

на 74hc595 возможно получить шим. но я лично не проверял.

да, но можно переделать. перерезать дорожки и выставить на нужные пины

изза этого не люблю шилды. ничего не поменяешь не паяя

если добавить 2 лог. инвертора то нужно всего 4 пина

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Да, это так. Но это пока прототип, поэтому не парюсь. Если решу делать, так драйвер сам сделаю с учетом опыта. Вчера сгоряча выписал МоторШилд с Фридуино, там маломощный. Посмотрим.

Кстати, залил основную прогу - носится только на макс. скорости без косяков. Как скорость снижаешь - начинаются баги.

Получается, дальномер замечает препятствие, а бот не всегда успевает остановиться.

Может быть моторы имеют большое мех. сопротивление, что малый эл.магн. момент не может его победить?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

останавливается резко. просто погоняйте взад вперед сами увидите. может ваша программа не успевает быстро реагировать

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Ну да. Усредняет 32 измерения дальномера с паузой в 1мс между измерениями. А вот, в коде еще задержку нашел, ставил когда искал полтергейст.

Кстати, на большой дистанции пробега видно, что правая сторона гребет лучше. Бот по дуге влево тянет.

Надо шаговики ставить.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

можно шимом выровнять скорость

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

ну да, можно. Только где гарантия, что он завтра не передумает тормозить левую сторону? :)

Что-то я опять начал грешить на ДПТ. Надо шаговиками разжиться. Кстати, не подскажите, какие не шибко дорогие можно использовать и где купить?

Аккумуляторы у меня 7,2В, моторам 6,5 достается.

В принципе, можно акк. другой поставить, вольт на 12. Тогда сколько придет к моторам - не знаю.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

шаговики для колес? ну это лишнее. лучше драйвер поменяйте

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

тогда может колеса с энкодерами? Ну и ДПТ какие-нибудь покачественнее.

Я один свой движок разбирал, даже плюнуть ему внутрь хотелось, так все хлипко, неустойчиво сделано. Удивительно как они работают.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

смотрите сам вас больше устроит.

у меня типа такого. не так уж и хлипко. пластиковые шестеренки на металлических осях. вполне приемлимо

скорее шестерням зубья сломаешь чем  там что то развалится. не считая мотора конечно. мотор хреновый

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

+ по первой ссылке. там еще и оптический датчик можно установить

vadim.tusur
Offline
Зарегистрирован: 04.01.2014

Я снял Мотор-шилд с Ардуинки и поставил отдельно. Подал параллельное внешнее питание с акк. 7.2 В на них.

Джамперами соединил одноименные пины 8, 11, 12, 13.

Шим на пины 9 и 10 шилда (скорость) взял с 3 и 5 Ардуинки, поскольку библиотека Servo (использую ее) конфликтует по 1 Таймеру с шилдом. В библиотеке моторов сделал изменения по замене пинов.

Двигатели не работают, хотя светодиоды на шилде показывают правильное изменение направления врашения колес.

Пробросил с Ардуано +5 и землю - не помогло.

Вопрос - надо ли еще какие-то пины продублировать для работы шилда?