Как повернуть серводвигатель на определенный угол?
Я пытаюсь повернуть вершину на определенный угол каждые 1 секунду. Например: 1 градус в секунду. У меня два вопроса:
- Можно ли добиться этого с помощью серводвигателей?
- Если нет, то какой двигатель мне следует использовать?
Я знаю, что у этого вопроса очень мало описания. Я в основном программист. Я не очень разбираюсь в ардуино. На самом деле для меня это проект-хобби.
Заранее спасибо.
@O_o, 👍0
2 ответа
Лучший ответ:
Добрые люди, написавшие библиотеки Arduino, включают драйверы для сервоуправления. Эти драйверы отделяют аппаратное обеспечение от программиста программного обеспечения скетча (скетч — это прикладное программное обеспечение, которое вы пишете на C или C++). Подробно разбираться в драйвере не нужно. Однако программное обеспечение сервопривода (вероятно, написанное на C++) можно изучить здесь.
Чтобы переместить обычный сервопривод в определенное положение, вызовите драйвер сервопривода Arduino с помощью функции write(angle) передача значения угла от 0 до 180. Значение представляет собой приблизительное значение в градусах, а тип значения — целое число.
В приведенных выше ссылках вы найдете этот пример перемещения серводвигателя по всему диапазону:
/* Sweep
by BARRAGAN <http://barraganstudio.com>
This example code is in the public domain.
modified 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Sweep
*/
#include <Servo.h>
Servo myservo; // создаем сервообъект для управления сервоприводом
// на большинстве плат можно создать двенадцать сервообъектов
int pos = 0; // переменная для хранения положения сервопривода
void setup() {
myservo.attach(9); // присоединяем сервопривод к контакту 9 к объекту сервопривода
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // переход от 0 градусов к 180 градусам
// с шагом в 1 градус
myservo.write(pos); // сообщаем сервоприводу перейти в позицию в переменной 'pos'
delay(15); // ждем 15 мс, пока сервопривод не достигнет позиции
}
for (pos = 180; pos >= 0; pos -= 1) { // переход от 180 градусов к 0 градусам
myservo.write(pos); // сообщаем сервоприводу перейти в позицию в переменной 'pos'
delay(15); // ждем 15 мс, пока сервопривод не достигнет позиции
}
}
Перейдите на эту страницу для получения более подробной информации, включая схему (схему) подключения сервопривода к плате Arduino Uno.
Вы можете вращать серводвигатель на градус, но у него есть свои ограничения, он может вращаться только от 0 до 180 градусов. Если вам нужно вращаться сверх этого, я бы рекомендовал использовать шаговые двигатели, они могут быть очень точными, но у них нет потенциометра, как у сервопривода, поэтому после сброса системы двигатель не вернется в исходное положение. начальная позиция.
Спасибо чувак. Однако @st2000 привел гораздо более подробный пример., @O_o
- Как заставить сервопривод вращаться на угол больше 180°
- 6 + 1 двигательей подключенных к arduino uno?
- Управление цифровым сервоприводом JX PDI-6221MG с помощью Arduino
- Обратная связь по положению для шагового двигателя
- Почему сервопривод вращается на 360 градусов?
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- Управление серводвигателем с помощью сенсорного датчика
- Контакты ШИМ серводвигателей, Arduino Uno
Еще один вопрос: могу ли я использовать маленькие ардуино, такие как нано, вместо мега/уно?, @O_o
Сделка с использованием разных платформ обычно может быть сведена к двум проблемам. Во-первых, чтобы убедиться, что аппаратное обеспечение работает с приложением. В этом случае библиотеки сервоприводов Arduino используют аппаратное обеспечение ШИМ внутри процессора. И в Uno, и в Nano используется процессор ATmega328P. Так что это должно работать. Во-вторых, библиотека была перенесена на другой процессор и другую плату. В данном случае процессор тот же. Так что вполне вероятно, что вы можете использовать Nano вместо Uno., @st2000
Если не ясно, @PotatoMan верен. Обычные сервоприводы имеют ограниченное вращение (менее одного полного оборота). Как вы сказали, ваша конечная цель не ясна. Так что помочь в подборе альтернативного мотора мы не можем., @st2000
Спасибо чувак. Я буду работать над этим и узнаю больше. У меня есть отправная точка. Спасибо, что прояснили ситуацию. Хорошего дня :), @O_o