Мигающий светодиод при движении сервопривода

Я только недавно поигрался с Arduino, так что я новичок в этом деле. Извините за грамматическую ошибку.

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

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

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

Если это имеет значение, я использую клон nano v.3.

точно так же, я пытался добавить резистор, но безуспешно

#include <Servo.h>
Servo myservo;  // создаем объект сервопривода для управления сервоприводом
// двенадцать сервообъектов можно создать на большинстве плат

int pos = 100;    // переменная для хранения положения сервопривода
int ledpin3 = 3;

void setup() {
  myservo.attach(9);  // прикрепляет сервопривод на контакте 9 к объекту сервопривода
  pinMode(ledpin3, OUTPUT);
}

void loop() {
  digitalWrite(ledpin3, HIGH);
  delay(1000);

  for (pos = 99; pos <= 150; pos += 1) { // переходит от 0 градусов к 180 градусам
                                         // с шагом в 1 градус
    myservo.write(pos);              // сообщить сервоприводу перейти в позицию, указанную в переменной 'pos'
    delay(15);                       // ждет 15 мс, пока сервопривод достигнет положения
  }

  for (pos = 150; pos >= 30; pos -= 1) { // переходит от 180 градусов к 0 градусов
    myservo.write(pos);              // сообщить сервоприводу перейти в позицию, указанную в переменной 'pos'
    delay(15);                       // ждет 15 мс, пока сервопривод достигнет положения
  }

  for (pos = 30; pos <= 99; pos += 1) { // переходит от 0 градусов к 180 градусам
                                        // с шагом в 1 градус
    myservo.write(pos);              // сообщить сервоприводу перейти в позицию, указанную в переменной 'pos'
    delay(15);                       // ждет 15 мс, пока сервопривод достигнет положения
  }
}

, 👍1

Обсуждение

Попробуйте переместить светодиодный digitalWrite в настройку так, как будто вы только что его включили., @Andre Courchesne

Есть ли у вас резистор на светодиоде?, @trapper

Светодиод мерцает при том же эскизе и сервопривод отключается? Если нет, то думаю проблема в питании., @Craig

Если проблема только косметическая, добавьте резистор последовательно со светодиодом и конденсатор параллельно выводам светодиода., @dandavis


1 ответ


2

Если вы питаете arduino через usb, попробуйте этого не делать или подключите его к порту usb 3.0 (и выше). Причина в том, что сервопривод потребляет много энергии, а стандартный usb 2.0 с 0,5 А не может справиться с нагрузкой, и вы получаете падение напряжения. И в этот период времени светодиод гаснет. usb 3.0 (и выше) может выдерживать до 1,5 А, так что это не должно быть ошибкой.

,

Спасибо за ответ, кодер, пытался подключить его к моему 3.0 usb ready powerbank, а также напрямую к стене, но безуспешно, светодиод все равно скачет, нужно ли мне питать сервопривод от другого источника? Я пытался максимально уменьшить количество компонентов, так как у меня почти не осталось места, @user194312

Будет лучше, если вы запитаете сервопривод от его собственного источника питания, например, от батарей, во время разработки/тестирования. Позже, если будет найден более мощный источник питания, вы можете попробовать использовать один и тот же источник питания для Arduino и сервоприводов. Помните, что заземление сервопривода должно быть подключено к заземлению Arduino, а также к заземлению независимого источника питания., @st2000

Это зависит не только от источника питания USB, но и от диода, через который ток течет на Arduino. Если вы попустите через него слишком большой ток, вы сожжете диод. Вам нужно подключить питание сервоприводов помимо Arduino, а не через него., @chrisl