Не работают двигатели

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Добрый день! Сложилась следующая ситуация: работаю сейчас с Arduino UNO, подключена плата питания Ardumoto, которая выдает сигналы на двигатели. Потом я подключил ультразвуковой дальномер HC-SR04, загрузил в Arduino код для управления дальномером (двигатели задействованы не были). Сейчас, когда я загружаю старый код для двигателей, ничего с ними не происходит - они не работают. Пробовал использовать новые двигатели и плату питания -безрезультатно. Драйвера тоже переустановил. Подскажите, кто может, в чем проблема? Спасибо!

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

а пины не одни и теже задействованы?

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Нет, я отключал дальномер и работал только с двигателями 

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

значит пины неверно указал. или двигатели сдохли. или питание не доходит

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Так я же говорю, что использовал и новые двигатели - они тоже не работают. Пины указаны точно верно, потому что раньше все работало безотказно и они выставлялись в соответсвии с datasheet к Ardumoto.  

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

код приложи

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

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

Sanchogus
Offline
Зарегистрирован: 02.01.2015

dennsi_lewis пишет:

Добрый день! Сложилась следующая ситуация: работаю сейчас с Arduino UNO, подключена плата питания Ardumoto, которая выдает сигналы на двигатели. Потом я подключил ультразвуковой дальномер HC-SR04, загрузил в Arduino код для управления дальномером (двигатели задействованы не были). Сейчас, когда я загружаю старый код для двигателей, ничего с ними не происходит - они не работают. Пробовал использовать новые двигатели и плату питания -безрезультатно. Драйвера тоже переустановил. Подскажите, кто может, в чем проблема? Спасибо!

Пин вообще живой? :)

И что за двигатели? Их без ардуины можно проверить?

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

С пинами все в порядке. Двигатели такие, с двумя контактами, к которым через провода подводится питания. Проверить их можно, и они рабочие. Уверен, что вся проблема с Arduino.

У коллеги тоже какие-то проблемы возникали с его Arduino, он взял новую, и на ней все заработало. У меня другой Arduino нет. 

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

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

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Понял, спасибо за помощь! Попробую завтра у кого-нибудь взять Arduino попользоваться. 

Sanchogus
Offline
Зарегистрирован: 02.01.2015

Двигатели не напрямую от пинов питали? Пины на такое не рассчитаны)

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

Ну и сюда код+схемку будет не лишним.

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Нет, конечно не напрямую от пинов. На Arduino сверху цепляется Ardumoto, у которой есть специальные выходы, которые выдают сигналы на двигатели. Светодиод подключал вместе с дальномером - все работало. 

Код и схемку скину завтра. 

Sanchogus
Offline
Зарегистрирован: 02.01.2015

dennsi_lewis пишет:

Нет, конечно не напрямую от пинов. На Arduino сверху цепляется Ardumoto, у которой есть специальные выходы, которые выдают сигналы на двигатели. Светодиод подключал вместе с дальномером - все работало. 

Код и схемку скину завтра. 

Тогда имеет смысл проверить эту ардумоту)

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Попробовал другую Arduino - такой же эффект. Схемку нарисую чуть позже, а вот код:

// Моторы подключаются Рє клеммам M1+,M1-,M2+,M2-  
// Motor shield использует четыре контакта 6,5,7,4 для управления моторами 
 
#define SPEED_LEFT      3
#define SPEED_RIGHT     11 
#define DIR_LEFT        12
#define DIR_RIGHT       13
 
int val;
bool ismoveallowed;
 
 
 
void go(int speed, bool reverseLeft, bool reverseRight, int duration)
{
    // Для регулировки скорости `speed` может принимать значения РѕС‚ 0 РґРѕ 255,
    // чем болше, тем быстрее. 
    if (ismoveallowed==true){
    analogWrite(SPEED_LEFT, speed);
    analogWrite(SPEED_RIGHT, speed);
    digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH); 
    digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH); 
    delay(duration); }
    else
    {}
    
}
 
void setup() 
{
    // Настраивает выводы платы 4,5,6,7 РЅР° вывод сигналов 
    for(int i = 1; i <= 14; i++)     
        pinMode(i, OUTPUT);  
 
void loop() 
    if (val>10) 
   ismoveallowed=true; 
   else
   ismoveallowed=false;
    // Задержка 5 секунд после включения питания 
    delay(5000); 
 
    // Cекуда СЃ небольшим вперёд 
    go(150, false, false, 1100);
 
    // Разворот РЅР° 180 градусов  
    go(125, true, false, 1350);
 
    // Две секуды СЃ небольшим вперёд 
    go(150, false, false, 2200);
 
    // Разворот РЅР° 180 градусов РІ РґСЂСѓРіСѓСЋ сторону 
    go(125, false, true, 1300);
 
    // Cекуда СЃ небольшим вперёд 
    go(150, false, false, 1200);
 
    // РџРѕРІРѕСЂРѕС‚ РЅР° 90 градусов 
    go(125, true, false, 680);
 
    // Медленно назад полторы секунды 
    go(100, true, true, 1500);
 
    // Остановка РґРѕ ресета или выключения питания 
    go(0, false, false, 0);
 
    // Р’СЃС‘, приехали
    while (true)
        ; 
}
 

 

 

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Схемка: http://imgur.com/PlKcuN8

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

dennsi_lewis,  http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

и уберите из кода мусор

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015
#define SPEED_LEFT      3
#define SPEED_RIGHT     11 
#define DIR_LEFT        12
#define DIR_RIGHT       13

int val;
bool ismoveallowed;
 
void go(int speed, bool reverseLeft, bool reverseRight, int duration)
{
    if (ismoveallowed==true){
    analogWrite(SPEED_LEFT, speed);
    analogWrite(SPEED_RIGHT, speed);
    digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH); 
    digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH); 
    delay(duration); }
    else
    {}
    
}
 
void setup() 
{
    for(int i = 1; i <= 14; i++)     
        pinMode(i, OUTPUT);  
} 
 
void loop() 
{ 
    if (val>10) 
   ismoveallowed=true; 
   else
   ismoveallowed=false;
    delay(5000);  
    go(150, false, false, 1100); 
    go(125, true, false, 1350); 
    go(150, false, false, 2200);
    go(125, false, true, 1300);
    go(150, false, false, 1200); 
    go(125, true, false, 680); 
    go(100, true, true, 1500);
    go(0, false, false, 0);
    while (true)
        ; 
}

 

 
Sanchogus
Offline
Зарегистрирован: 02.01.2015

dennsi_lewis пишет:

Попробовал другую Arduino - такой же эффект. Схемку нарисую чуть позже, а вот код:

Чтот у меня сомнения, что дело в ардуине, если вы писали, что диоды работают от неё, т.е. выводы в порядке.

ИМХО если с ардуины тупо через транзисторы включить движки, то всё будет работать. Попробуйте проверить эту ардумоту. и все провода с соединениями к ней и от нее, чтот мне подсказывает, что скорее она сдохла/плохо подключена. :)

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Диоды работают как от Arduino так и от Ardumoto. C Ardumoto буду сейчас мучиться. 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

dennsi_lewis пишет:

Диоды работают как от Arduino так и от Ardumoto. C Ardumoto буду сейчас мучиться. 

Заглянул в хрустальный шар и увидел, что в прошлый раз вы все подключали в другой USB порт... а в тот который вы щас подключили оно не работает..

dennsi_lewis
Offline
Зарегистрирован: 14.05.2015

Это критично? 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

dennsi_lewis пишет:

Это критично? 

а вы попробуйте :) хрустальный шар он вообще не ошибается

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

видимо все заработало :) я ж говорил что хрустальный шар не ошибается