Какой драйвер DC мотора подобрать?

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Всем привет,

Нужно управлять мотором с Ардуино. Вот таким
22 Вольта, 1.5 ампера. Ездить будет тут:

Диапазон скоростей от минимальной до максимальной, в обе стороны. Нужно будет реализовать back emf.

Какой драйвер выбрать под эти параметры?

А если кините ссылку на реализацию back emf,  вообще буду признателен.

 

nevkon
Offline
Зарегистрирован: 20.01.2015

А полевик на шим вывод + Н мост не годится? токи вроде не большие

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Режим торможения нужен? Тогда TA7291P - Ваше всё. Напряжение управляется, торможение есть, ток до 3А.

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Не, торможение не нада. Тепловоз червяком тормозит. 

 

И по дата шиту там ток 1А соедний и 2А в пике.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да, и впрямь 1А, что-то память подвела, сорри.

Посмотрите по этой ссылке. Большой выбор и по параметрам подорбрать можно - http://www.ti.com/lsds/ti/motor-drivers/brushed-dc-bdc-drivers-products.page

 

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Спасибо. Вот такой подойдет?

http://www.ti.com/product/drv8871

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да, вроде нормально. Меня только смущает ШИМ-управление. Я всегда брал драйверы, где управление шло через опорное напряжение, а ШИМ-ом не управлял никогда. Там вот, например, написано от 0 до 100kHz. Так "скока в граммах-то"?

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

ЕвгенийП пишет:

Да, вроде нормально. Меня только смущает ШИМ-управление. Я всегда брал драйверы, где управление шло через опорное напряжение, а ШИМ-ом не управлял никогда. Там вот, например, написано от 0 до 100kHz. Так "скока в граммах-то"?

 

Что я вообще в этой теме плаваю. Опорное- это с аналогового пина?

Я шимом то рулить собрался просто: через цмфровой PWM пин. Дам HIGH и максималка. Или не так?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sloper пишет:

Я шимом то рулить собрался просто: через цмфровой PWM пин. Дам HIGH и максималка. Или не так?

В смысле не HIGH, а 255? да? Надеюсь, что так, но я так ни разу не пробовал.

Sloper пишет:

Опорное - это с аналогового пина?

Опорное - там основная идея, что у микросхемы-драйвера есть специальный пин, куда надо подать некое постоянное напряжение (ток там крохотный), а драйвер именно такое напряжение подаст на двигатель, но уже с большим током. Я делал так - выводил ШИМ, фильтровал его фильтром низких частот и превращал в постоянное напряжение. Но ШИМ ведь 5В и моё постоянное было соответственно тоже от 0В до 5В, а нужно было больше (от 3 до 20В), поэтому, после фильтра я ставил ещё операционник, которым увеличивал напряжение в четыре раза. В результате на выходе операционника у меня получалось от 0 до 20В (в зависимости от скважности ШИМа) и вот уже это напряжение я подавал на опорный пин драйвера. Ну, а дравер выдавал такое же, только с большим током на выходы.
nevkon
Offline
Зарегистрирован: 20.01.2015

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

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

В итоге, купил L6203. Сделал все, как нарисовано тут:

При отладке с потенциометром, задающи Шим, все работало, моторчег плавно крутился в обе стороны.

Как подрубил к рабочему скетчу, где управляющий сигнал идет с декодера- сгорели 2 штуки. :(

никто не в курсе, диоды все таки нужно подключать, как на схеме? А то на некоторых схемах есть, на некоторых нет...

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

диоды нужны

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну вот, как раз этот момент обсуждался в проектах драйвера для мотора. В этом устройстве никак нельзя переключать направление при размешенном сигнале EN, который вполне можно использовать для ШИМ скорости вращения. То есть надо программно запретить EN переключить направление на IN1, IN2 и только потом разрешить EN иначе "сквозняки гарантированы". Там, кстати и написано Dead time protection = 100нсек. Ну и "sense resistor" - не случаен. Это ограничитель тока КЗ при сквозняках. Кстати, сопротивление полевиков как-то великовато - половина ома. При заявленном предельном токе в 5А это потеря практически 2.5в на драйвер и высаживаемая на нем моща аж 12вт! Без радиатора - никак... а ещё и ограничительный резистор будет высаживать чегой-то..

Защитные диоды там как раз есть внутрях..

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Очень интересно, спасибо, но многое не понятно:

Arhat109-2 пишет:
 В этом устройстве никак нельзя переключать направление при размешенном сигнале EN, который вполне можно использовать для ШИМ скорости вращения. 

Что такое размешаный сигнал? 

Arhat109-2 пишет:
То есть надо программно запретить EN переключить направление на IN1, IN2 и только потом разрешить EN иначе "сквозняки гарантированы". Там, кстати и написано Dead time protection = 100нсек. 

То есть нужно выключать EN (=LOW) при переключении направления(переброс 1/0 на IN1 и ШТ2)? 
Что такое - "сквозняки"?

Arhat109-2 пишет:

Ну и "sense resistor" - не случаен.


Т.е. Sence нужно уводить на землю через резистор?

Arhat109-2 пишет:
Защитные диоды там как раз есть внутрях..

Т.е. все таки диоды не нужны? 

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

"Разрешенный" сигнал. Очепятка. :)

Сквозняки - токи, текущие по силовым транзисторам в момент переключения. Оба транзистора, а то и все 4шт могут оказаться в открытом состоянии и тогда через них шпарит "сквозной" ток "мимо" вашего двигателя. А поскольку их сопротивление невелико (в среднем 50 миллиом! У этого - 500), то ток может быть очень большим, хоть и "микросекундным", но его запросто хватит чтобы спалить мост.

Соответственно, переключение направления правильно программно делать так, чтобы исключать сквозняки: запрещаете EN = LOW и только после этого меняете состояние IN1, IN2. Выдерживаете оговоренную паузу из даташита в 100нс или более и разрешаете EN=HIGH.

Если у вас через EN идет ШИМ для регулировки скорости из счетчика (аппаратный ШИМ), то запрещение EN делаете 2-я командами: сначала закрываете ногу ШИМ на вывод pwmTurnOFF() или как там она называется у Wiring или прямой командой TCC.. &= !BV(CS..) - соответственно какой счетчик и какая нога юзается И затем выставляете ножку в ноль типа digitalWrite(pin, LOW) или прямой командой PORT.. &= !BV(pin..). После смены направления и выдерживания паузы - включаете ШИМ обратным порядком.

Да, желательно sense уводить на землю через резистор. Какой не подскажу, вкуривайте даташит или примеры. Он будет ограничивать макс. сквозняк допустимым пределом. Но и отжирать лишнюю мощность в работе .. тут нужен баланс. Или аккуратность в программном управлении.

Диоды похоже что не нужны: там каждый мосфет их уже имеет куда надо. А вот кондюки - похоже надо. Можно ещё параллельно мотору вешать керамический конденсатор для сглаживания пульсаций. На 10н - вполне достаточно для большинства применений DC-моторов.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Но, я бы пошукал другой драйвер с защитами от сквозняков и перегрева. Благо их много. Открываете alldatasheet.com и запрашиваете по описанию "DC motor full bridge" есть даже DUAL - два моста в одном флаконе. :)

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Arhat109-2 пишет:
Соответственно, переключение направления правильно программно делать так, чтобы исключать сквозняки: запрещаете EN = LOW и только после этого меняете состояние IN1, IN2. Выдерживаете оговоренную паузу из даташита в 100нс или более и разрешаете EN=HIGH.

Если у вас через EN идет ШИМ для регулировки скорости из счетчика (аппаратный ШИМ), то запрещение EN делаете 2-я командами: сначала закрываете ногу ШИМ на вывод pwmTurnOFF()

У меня пинов не хватает для проекта,  по этому драйвером планирую управлять по 2-м пинам: IN1 и IN2. EN пин запитан на 5 вольт(как на схеме выше). 

А на IN1 и IN2 подаю вот так шим:

//...
if (Direction == 0){
   digitalWrite(IN1_PIN, LOW);
   analogWrite(IN2_PIN, PWMrate);
   }
   else{
       digitalWrite(IN2_PIN, LOW);
       analogWrite(IN1_PIN, PWMrate);
       }

 

Теперь, я так понимаю, нужно отслеживать предыдущее направление, и если оно не равно текущему, то писать в оба пина (IN1_PIN и IN2_PIN) LOW, ждать 100 ns, и потом перекидывать, так?

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Arhat109-2 пишет:
Открываете alldatasheet.com и запрашиваете по описанию "DC motor full bridge"

Там их полно, но мне нужно тут и щаз, и для экспериментов в чипииде нашел именно такой. 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну да. Раз EN не используется, то надо оба IN сначала выставлять в одно значение, а уже потом переключать и гонять ШИМ. А раз у вас один из контактов всегда в LOW, то переключать надо примерно так:

if( Direction == 0 ){
  // was 0, turn to Direction = 1:

  // 1. Выключаем драйвер совсем (IN1_PIN уже в LOW!):
  pwmTurnOFF(IN2_PIN);       // возможно не требуется
  digitalWrite(IN2_PIN, LOW); // , поскольку это выключит само .. смотреть либу Wiring

  // 2. change Direction and wait
  Direction = 1;
  delayMicroseconds(1);

  // 3. switchON driver:
  analogWrite(IN1_PIN, PWMrate); // заводим мотор заново но другой ногой.
}else{
  // was 1, turn to Direction = 0:

  pwmTurnOFF(IN1_PIN);
  digitalWrite(IN1_PIN, LOW);
  Direction = 0;
  delayMicroseconds(1);
  analogWrite(IN2_PIN, PWMrate);

}

Инерция мотора не позволит заметить "на глаз" микросекундную задержку, а делать меньше - нет смысла, ибо потребуется использовать "низкоуровневые" средства. :)

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Твою мать, но что не так... еще один спалил. Даже направления не переключал. 

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Смотрите что и куда соединили .. тут я уже не помошник.

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Проверил еще раз все, и точно повторил обвеску из даташита. Купил еще 2 драйвера. Вольты - нормально, Лампочка - нормально. 

Мотор - чутка крутит и кряк. Еще 2 драйвера в минус. ХЗ!

 

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

jeka_tm пишет:
а подцепить сначала потом попроще и проверить. чего сразу на мощный

Да подцепил не мощный, малюсенький от машинки игрушечной. 

jeka_tm пишет:
какой ток потребления при запуске?

ХЗ, не мерял, там моторчик - одно название. Какой там может быть ток на холостых темболее. 

jeka_tm пишет:
а вообще есть же драйверы

Так это регуляторы скорости. Ну тоже в общем идея - по одному проводу рулить как сервой. Но мне надо все на одной плате шоб было. Но у меня мах напряжение мб 24 вольта. Дешовые регули такое не держат.

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

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

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

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Ну в этих регулях вопервых регулировка не шимом, а сервовой "пилой" в мс. Во-вторых, там две либо три банки липо, а это 12.6 волт мах.

А мне  надо подавать на мотор 24 вольта МАХ. Хотя заманчиво конечно. Все внутри. Рули-нехочу.  

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

irlz44n + реле на 2 группы пеерключающих контактов

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Это вы зря про "моторчик маленький" .. вам в соседней теме не зря описали про КЗ. Вот как раз такой моторчик, что вам был там показан, у меня есть что при запуске жрет токи до 5-7 ампер .. "влегкую". Провод 0.2мм, 70 витков на обмотку сопротивление обмотки около 2 ом. Обмотки по треугольнику, итого на старте имеем 1.5 ома. На 12 вольтах имеем все 8 ампер "как с куста". И пофиг, что он крутит 16500 об/мин и на ХХ жрет всего-ничего 50мА. Зато тормозной момент у него (на 8А) в районе 40гр*см. "фиг остановишь" и греется как утюг в несколько секунд.

Такой у меня пожег драйвер L298N "как только так сразу". На радиаторе про между прочим. Как заклинило его в роботе, так и все, кирдык драйверу. (:

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

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

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

В итоге заработал TLE5206-2. 

На локе стоит 2 таких мотора. Драйвер управляется с обоими. 

https://www.youtube.com/watch?v=p18rLkiqJWs

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

С Победой!

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Спасибо! Приступил к реализации Back EMF. 

Скорее всего пробелма была в том, как я подавал pwm на драйвер. Надо было HIGH и PWM, а я подавал LOW  и  PWM. Мотор тормозил, когда было лоу-лоу и перегружал драйвер. А когда хай-хай, то он в высоко импендансном состоянии и не тормозит. Все работает. Наверное так. 

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

И поиграть частотой PWN. Так как звук моторы издают противный. Я так понял, нужно уходить за 26 kHz, так как там уже не слышно уху. 

Попробую поменять скейлер на втором таймере (пины 9 и 10 ардуино мини про). Надеюсь, на всякие delay() и millis() это не повлияет. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не знаю, как на мини, но на "взрослых" не повлияло бы, т.к. всякие миллисы на первом таймере.

nevkon
Offline
Зарегистрирован: 20.01.2015

Писк исчезает уже примерно при 20кГц. Тоже повышал частоту ШИМ для устранения писка. Только мощность падает при этом иногда.

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

Может от драйвера зависит. Ключи не успевают отрабатывать? 

nevkon
Offline
Зарегистрирован: 20.01.2015

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