Проблема с серводвигателем

Тема в разделе "Arduino & Shields", создана пользователем Savin, 11 май 2021.

  1. AlexU

    AlexU Гуру

    В этом случае надо смотреть провода, разъёмы и т.п. Попробуйте провод от рабочей сервы использовать для подключения проблемной и наоборот. Попробуйте проблемную серву подключить только одну с заведомо рабочими проводами.
     
  2. Savin

    Savin Нерд

    Докладываю.
    1. Поключил к шим-пинам (9, 10, 11), ничего не изменилось, так же один двигатель не работает нигде, остальные работают где угодно.
    2. При подключении сервотестера все три мотора крутятся абсолютно синхронно, как в ручном так и в автоматическом режиме. Измерил напряжение и ток в этот момент на всех моторах во всех цепях, всё одинаково.
    3. В раздумьях..
     
  3. Savin

    Savin Нерд

    Собрал ранее работавшую схему с другим скетчем, все три двигателя работают. В общем, я не вижу другого выхода кроме как впердолить в проблемную схему вот такой девайс
    ina226.jpg
    и посмотреть чо куда бежит ;)
     
  4. Savin

    Savin Нерд

    Я уже вечером вспомнил эту тонкость про 9 и 10 пины, а также возможно предельно маленький период, два мотора его хватают, а третий нет. Надо пробовать.
     
  5. akl

    akl Гуру

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

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

    Savin Нерд

    Чоета "бякокод"? Я, можно сказать, всю душу в него вложил :) Грубо говоря, это сильно упрощенный вариант плавного управления от AlexGyver. Меня уже ночью осенило, что таки да, очень короткий импульс. Но опять же, два других двигателя понимают воздействие. Мало того, хворый мотор месяц назад тоже работал из под этого кода.
     
  7. Savin

    Savin Нерд

    Проблема решена, но мне не нравится. Вставил вывод в порт - работает. Увеличил delay со 100 до 200, тоже работает. Два других мотора всё так же работают без проблем на этом пине.

    while(servoposr < 60)
    { servo180r.write(servoposr);
    servoposr = servoposr+5;
    // Serial.print("servoposr ");
    // Serial.println(servoposr);

    delay(200); }
     
  8. akl

    akl Гуру

    а что не нравится то?
    повсюду delay - а говорил не бякокод :D
     
  9. Savin

    Savin Нерд

    Не нравится то, что ранее с делэем 100 все три мотора работали. Вопрос в порядке общей образованности (я то не Бьярн Страуструп) - а что, делэй является признаком бякокода?
     
  10. akl

    akl Гуру

    смотря что за код. если что-то очень простое, то нормально. но если надо например двигать сразу всеми сервами одновременно? и при этом еще реагировать на внешние сигналы, считывать датчики, что-то передавать и т.д.?
     
  11. Savin

    Savin Нерд

    Всё будет! ;) А пока музыкальная пауза (на правую ножку хроменький, потому что там стоял в качестве массо-габаритного макета мотор 360 град).