Arduino mega + motor shield
- Войдите на сайт для отправки комментариев
Чт, 14/03/2013 - 11:47
Всем привет!
Простите чайника за такой вопрос, наверно покажется глупым, так как все банально)
У меня есть arduino mega 2650, платформа http://www.dfrobot.com/index.php?route=product/product&path=37_111&product_id=97 и мотор шилд http://ladyada.net/make/mshield/
Я не обладаю особыми познаниями в электронике, и все делаю методом проб и ошибок)
Я установил этот шилд аккурат на Ардуину, сверху, подключил батарейный блок с 6 батареями к контактам шилда, и воткнул в разьем М1 два проводка от мотора, и запустил простейший скетч чтобы проверить работоспособность:
#include <AFMotor.h> AF_DCMotor motor(1, MOTOR12_64KHZ); // create motor #2, 64KHz pwm void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Motor test!"); motor.setSpeed(200); // set the speed to 200/255 } void loop() { Serial.print("tick"); motor.run(FORWARD); // turn it on going forward delay(1000); Serial.print("tock"); motor.run(BACKWARD); // the other way delay(1000); Serial.print("tack"); motor.run(RELEASE); // stopped delay(1000); } Я пробовал разные скетчи из примеров этой библиотеки, и ничего. Потом подключил каждый мотор напрямую к батарейному блоку с 6 аккумуляторами, чтобы проверить их работоспособность - все работает. Обьясните, что я делаю не так? Может ардуина как то не так работает, сгорела, и тд, или у меня просто руки кривые?)
Вот пара фоток конструкции
Сохранение картинок на форуме
Не нашел кнопки редактирования поста, поэтому кину сюда
От таких фото толку ровно ноль. Сфотайте по нормальному, что бы было видно как и куда подключен двигатель и питание. Так же отключите крону от меги и подключите мегу к компу.
Да уж, провода в EXT_PWR стремно подключены. Это не причина, но меня это сразу "закоротило".
а код программы правильный? если один мотор я подключаю к M1 на плате, то должен работать этот код?
Более качественные фото выложу вечером
Сегодня провел еще несколько попыток подключить, в итоге моторчик подает признаки жизни на пол секунды, чуть чуть проворачивается и сразу вырубается, и потом снова... почему так? Может что то не так подключено, либо же ардуина сгорела?
На мотор шилде перемычка убрана, дабы питание шло именно от батарейного отсека. Вот фото подключения:
1. Проверьте напряжение на аккумуляторах - не разряжены ли они.
2. Так попробуите:
3. У двигателей какое номинальное напряжение питания? может 6 вольт ему маловато.
1. аккумуляторы свежие - только поставил из коробки, и если подключить к ним двигатель напрямую, то он крутиться очень бодро и быстро.
2. попробовал этот код - та же фигня, чуть пытается провернуться, и все, и потом назад.
3. 4WD Mobile platform Motors: 3-12V DC. 6 вольт должно хватать слихвой... вот нашел еще данные по этим моторам: The 6V, 180rpm. вот он http://www.dfrobot.com/index.php?route=product/product&path=47_110&product_id=100#.UUIv8ld42ls
что еще это может быть? может проблемы с шилдом? первые разы я подключал внешнее питание, не снимая перемычку, может что то погорело?
Вы на всех выходах М1, М2, М3 и М4 пробовали?
Да, пробовал на всех выходах, везде аналогичная ситуация. Как быть? может вольтметром замерить выходное напряжение на выходах М1 и прочих? Но понятное дело что наверно оно будет невелико, раз моторчик не крутится...
А уберите-ка из 3 строки MOTOR12_64KHZ
Проверяйте все поэтапно.
Сначала проверьте шилд.
Выдерните его из меги и припаяйте провода напрямую к его пинам. Плюс/минус питания, инаблы и инпуты.
Подключите моторы и подавайте 5в на соответствующие инаблы (их там должно быть 8).
Если все моторы вращабтся в различных комбинациях инаблов , значит модуль рабочий (переходим к прозвонке меги).
Сегодня весь вечер ковырялся с ардуино и шилдом. Мне даже удалось один раз заставить моторчик работать нормально. Парадокс в том что я не сделал для этого ничего необычного, все делал так же как и раньше... Разьве что убрал из кода MOTOR12_64KHZ
Но потом все вернулось на круги своя... Я купил вольтметр и проверил. На пинах питания шилда примерно 8 вольт...
На разьеме М1 для подключения мотора 6 вольт, если туда ничего не подключено. Но если к разьему подключить мотор - то ток падает до 0. Иногда ток подскакивает до 0,3-0,4в, и тогда мотор пытаеться прокрутиться - то, о чем я писал... Вот так вот. От чего может падать напряжение при подключении нагрузки?
Я не очень понимаю что такое инаблы и инпуты, и где посмотреть, какие пины шилда - инаблы и инпуты? Сорри за такой вопрос...)
>>Но если к разьему подключить мотор - то ток падает до 0<<
Ток или напряжение ?
Если ток "падает до нуля " , то это значит что сопротивление нагрузки стремится к бесконечности.
Если же падает напряжение , это значит что сопротивление стремитсяк нулю.
Это огромная разница.
>>Я не очень понимаю что такое инаблы и инпуты, и где посмотреть, какие пины шилда - инаблы и инпуты? Сорри за такой вопрос...)<<
На модуле не указаны пины ?
Найдите схему. Или прозвоните их по распиновке микросхемL293D.
Но для начала попробуйте программно порулить моторами напрямую, без этой библиотеки.
падает напряжение...конечно напряжение. без нагрузки на разьемх м1, м2, м3, м4 6 вольт. стоит подключить мотор - 0 вольт, с редкими скачками до 0,3в. а как програмно порулить ими? можно привести простенький пример кода? насколько я понял из фака по шилду, это невозможно. надо подключать библиотеку...
Нет ли других идей, кроме прозвонки микросхемы?
Конечно же есть. Данная библиотека не работает с ATmega2560.
Поэтому открываете файл: \arduino-0022\libraries\AFMotor\AFMotor.cpp и ко ВСЕМ строкам: defined(__AVR_ATmega1280__) добавляете || defined(__AVR_ATmega2560__) что бы получилась вот такая строка:
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
после чего сохраняете файл, запускаете IDE и радуетесь.
Можете копировать содержимое файла AFMotor.cpp:
Я проверил библиотеку, там есть такие строки:
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
но тем не менее я переписал ее содержание, все разобрал и заново подключил, все 4 мотора, загрузил вот этот скетч
И результат вообще сбил меня с толку.
Я подключил все 4 мотора, и вся схема вела себя странно... М1 и М2 крутились, правда не 10 секунд а 1 секунд, и при этом только в одну сторону, то есть не было реверса... М3 вообще не крутился, М4 крутился 10секунд, и тоже без реверса.
Я снял микросхемы L293D с шилда, и напрямую проверил их, согластно распиновке. Если на инейбл и инпут подавать сигнал через Ардуиновские контакты 3,4,9 - то реакции никакой. Если просто подключить инейбл и инпут 1 к 5V а к инпут 2 землю с ардуины - то мотор крутится. Проверил так 2 микросхемы, в каждой оба канала, все ок.
Вобщем запутался я( Не понимаю, что это. Может ардуина как то не так работает, или контакты выгорели какие то? Как бы проверить их?
При прозвонке через пины ардуины пользовался вот этим кодом:
>>Если на инейбл и инпут подавать сигнал через Ардуиновские контакты 3,4,9 - то реакции никакой.<<
Питание МС тоже нужно подключить. При том там два питания - питание моторов и логики.
>>Если просто подключить инейбл и инпут 1 к 5V а к инпут 2 землю с ардуины - то мотор крутится.<<
Скорее всего это l293dne. Надежней будет поджимать инпуты к земле резистором 10К.
Вобщем я постарался снова прозвонить микросхему.
1. подключал инейбл и инпут через пины ардуины, подавал High и Low соответственно. Результат: моторы крутятся, но медленно, очень. вот фото
2. Подключал напрямую инейбл и инпут к +5В ардуины и земле. Результат: моторы крутятся шустро.
Что это может быть?
На микросхеме написано именно L293D
Вы питание на моторы и логику даете ?
>>Подключал напрямую инейбл и инпут к +5В ардуины и земле<<
Не понял. То что вы описали называтся КЗ.
Что вы подключаете к земле ?
Для начала прицепите инабл к +5в , инпуты к пинам МК. Инпут1 - HIGH, инпут2 -LOW или наоборот. Подключите питание логики
к +5в, питание моторов к +Vаккум.
>> Вы питание на моторы и логику даете ?
Конечно. Схема питания:
Arduino Mega 2560 - крона
Логика L293D - 5В, они идут от Ардуины на 16 пин микросхемы(Vss)
Моторы - батарейный блок на 5хАА батареек, подключается красным проводом к Vs микросхемы(8 пин), а черным к GND.
>> Не понял. То что вы описали называтся КЗ.
>> Что вы подключаете к земле ?
Не очень подробно описал. Я подключаю один Инейбл и Инпут 1 к 5В, а Инпут 2 к земле. Собственно так как и должно быть, чтобы мотор работал.
И он крутится, быстро и хорошо.
А если я подключаю так:
Инейбл - 9 пин - ставлю HIGH
Инпут 1 - пин 4 - Ставлю HIGH
Инпут 2 - пин 3 - ставлю LOW
мотор крутиться, но оооооочень медленно, будто не хватает ему напряжения. Но почему так, непонятно. Ведь питание подключено правильно - питание моторов отдельно, 5 батареек АА, а питание логики от Ардуино, 5В
Завтра попробую так как вы сказали- Инейбл к 5В, а инпуты к пинам МК и отпишу о результате
Вообще просто интерестно, как влияет подключение МК на питание моторов? Оно же должно идти от отельного источника питания через L293D, и с МК по идее не связано.
>>Завтра попробую так как вы сказали- Инейбл к 5В, а инпуты к пинам МК и отпишу о результате<<
Разницы нет. +5в будет и там и там.
>>Оно же должно идти от отельного источника питания через L293D, и с МК по идее не связано.<<
А может собака зарыта именно здесь ?
Может вы земли питаний , МК и драйвера не соеденили ?
Вы будете смеяться...
Сегодня приобрел Arduino Uno, поставил шилд, подключил мотор, и все заработало как надо...
Видимо шилд не совместим с мегой ? но почему? вроде они должны быть совместимы по пинам... или дело всетки в библиотеке?
Я понимаю что может со своей проблеммой всем тут уже надоел, но снова такая же проблема повторяется, но на новой arduino uno... значит косяк не в ней. Я заметил, что порт м1 работает. На нем все как надо. На осальных портах для подключения мотора те же симптомы: пытается покрутиться, звук издает... что это всетки за проблема?
Купите лучше нормальный драйвер. Пусть и не подходящий по пинам дуины (распаяете проводами или вытравите переходник).
Я пользуюсь вот такими http://robototehnika.ru/e-store/catalog/203/880/
Купите лучше нормальный драйвер. Пусть и не подходящий по пинам дуины (распаяете проводами или вытравите переходник).
Я пользуюсь вот такими http://robototehnika.ru/e-store/catalog/203/880/
Спасибо! Заказал себе такой
Но пока он едет, всетки хотелось бы попробовать понять, что не так с этим шилдом. Что мы имеем:
1. Ардуино - рабочая, потому что у меня их две, одна новая, и на обоих одинаковые симптомы
2. Микросхемы L293D рабочие, я проверил каждую, каждый канал, все ок.
Работает только на порту М2, и все(в прошлом посте написал что работает на порте М1, опечатка это).
На всех остальных портах М1, М3, М4 не работает, хотя в коде я менял значения, подставляя 1,3,4, все равно.
В чем может быть проблема? Может что-то, связанное с PWM? Что еще я могу проверить, чтобы понять где косяк? Хочеться очень разобраться в проблеме.
TB6612FNG Dual Motor Driver Carrier а можно к такому драйверу подключить 4 мотора, паралельно?
Параллельно ? Хоть десять, если ток не превышают. А зачем ?
Или вы опять не правильно выразились ?
Если вам интересно может ли этот драйвер полноценно рулить четырьмя моторами одновременно , то нет. Не может.
Это классический двухканальный драйвер.
посмотри
Здравствуйте! Вопрос по питанию. На Motor Shield приходит 7 В, а на разъемах M1-M4 такое ощущение, что нет напряжения - на тестере (самодельный, 2 провода и 3-х позиционный дисплей) еле-еле мерцают нули. Двигатели постоянного тока, соответственно, не работают - только какое-то щелканье на тестовом примере из библиотеки AFMotor. Куда копать? У Arduino Mega и Motor Shield питание раздельное, джампер снят, конечно же.
Ну, для начала - измерить напряжение на моторах.
Ничего нет:(
Если просто подаю питание с батареек - двигатели крутятся! Серво так же - только небольшие постукивания, и больше ничего. А напрямую от Arduino серво Tiwer Pro MG 966 крутится.
Серво питаются от ардуино 5в. Они и так напрямую работают, нет соединения с pwr.