Управление серводвигателем с помощью двух Arduino?
У меня две платы Arduino, две кнопки и один серводвигатель.
Я хочу управлять серводвигателем с помощью двух Arduino, когда я нажимаю кнопки. Я подключил контакты Arduino PWM (первый контакт Arduino PWM — 9, а второй — 3) к входу сигнала серводвигателя.
Когда я нажимал кнопку 1, серводвигатель немного двигался или нажимал кнопку 2. но сигнал не был четким, и серводвигатель не двигался правильно, как я задал степень.
Что я могу сделать для решения?
Мой первый код Arduino здесь:
#include<Servo.h>
#define Buton 8
Servo myServo;
void setup() {
pinMode(Buton, INPUT);
myServo.attach(3);
}
void loop()
{
if (digitalRead(Buton) == 1)
{
myServo.write(90);
}
else
{
myServo.write(180);
}
}
и второй код Arduino:
#include<Servo.h>
#define Buton 8
Servo myServo;
void setup() {
pinMode(Buton, INPUT);
myServo.attach(9);
}
void loop()
{
if (digitalRead(Buton) == 1)
{
myServo.write(90);
}
else
{
myServo.write(180);
}
}
@Giray Hakan, 👍0
Обсуждение1 ответ
Вы не можете просто так соединить случайные контакты. Соединение двух выходных контактов вместе — это путь к катастрофе. В лучшем случае: ничего не работает. В худшем случае вы сломаете один или оба Arduino.
Только один Arduino может управлять сервоприводом. Если вы хотите, чтобы второй Arduino заставил что-то произойти с сервоприводом, вы должны заставить его сообщить Arduino, который управляет сервоприводом, что что-то должно произойти.
Это может быть простой выход второго Arduino, подключенный к входу первого Arduino, и в этом случае он действует как кнопка. Или вы можете создать какой-то канал связи между ними — возможно, используя последовательное соединение или проводное (I2C) соединение. Есть много способов, и какой из них лучше, зависит от того, насколько сильно один Arduino должен контролировать другой.
спасибо за ваш ответ @Majenko, но позвольте мне объяснить. мы ракетная команда, и мы должны использовать две системы управления полетом. поэтому мы используем две Arduino для этой ракеты. первый Arduino является основным контроллером, а второй - резервной системой. у нас есть разные датчики, но у нас есть один двигатель для развертывания. мы хотим использовать второй ардуино, если первый ардуино не будет работать. Я не знаю, это описательно?, @Giray Hakan
Затем вам нужно иметь какое-то устройство, которое находится между двумя Arduino и сервоприводом и выбирает, какому Arduino разрешено общаться с сервоприводом. Вы можете иметь один Arduino в «режиме ожидания», контролируя другой Arduino, и, если он выйдет из строя, щелкнуть «переключателем», который позволяет ему управлять сервоприводом и взять его на себя., @Majenko
@Giray Hakan Когда вы говорите о резервном копировании в случае сбоя, вы сначала должны определить случаи сбоя, которые вы хотите здесь смягчить. Может быть много разных способов, в которых система может дать сбой, и которые должны быть обнаружены и смягчены по-разному., @chrisl
@Majenko какой тип устройства? можете привести пример?, @Giray Hakan
Вы можете использовать микросхему MUX. Или реле. Существует множество решений, как механических, так и на основе кремния., @Majenko
хорошо, спасибо, я попробую., @Giray Hakan
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- Контакты ШИМ серводвигателей, Arduino Uno
- Проектирование роботизированной руки с помощью Arduino Uno
- Почему задержка более 64 миллисекунд останавливает вращение серводвигателя? Я не использую «Servo.h», вместо этого я просто управляю длиной импульса.
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Как заставить сервопривод вращаться на угол больше 180°
- Как управлять 6 шаговыми двигателями с помощью Arduino?
У вас есть 2 Ардуино в первую очередь? Вам действительно нужны оба?, @chrisl
мы должны использовать mcu.но это не должно быть arduino. изменится ли это, если мы используем другой микроконтроллер?, @Giray Hakan
это не отвечает на вопрос зачем вам две ардуино, @jsotola