Вход

Регистрация
Главная
 

 

Пиротехнические пульты, пиротехническое оборудование
и пиротехника
Pyro Alex RF 48
Open Pyro SFX 8 D
Open Pyro SFX 10/120
Pyro Man 200 M
Spets 150
Приём заказов на изготовление пиротехнических пультов
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Пиропульты - Электроника Форум » Электроника » Микроконтроллеры и ПЛИС » Вопрос по сервоприводу
Вопрос по сервоприводу
HitmannДата: Вторник, 31.01.2012, 03:37 | Сообщение # 1
Сержант
Группа: Проверенные
Сообщений: 34
Награды: 1
Репутация: 0
Статус: Offline
Привет народ.
Ребят есть вопрос:
Есть;
сервопривод MG-995 — цифровая сервомашинка с металлическими шестернями и шарикоподшипниками.

Вес: 55.0гр
Размеры: 40.7 х 19.7 х 42.9мм
Момент (усилие): 4.8В - 10кг*см
6В - 12кг*см
Время поворота на 60°: 4.8В - 0.23сек
6В - 0.20 сек
Напряжение: 4.8-7.2В
Длина кабеля : 31см
Материал шестерней : Латунь
Подшипники выходного вала: 2шт – Сверху и снизу
Электроника: Цифровая

Нужно чтобы он поворачивался на 90 градусов и возвращался на место, без управления компом и.т.д. просто включили тумблер и он себе качает туда сюда, видел несколько вариантов исполнения желаемого, Ардуино, Сервотестер и моторшилд какой-то.
Подскажите как лучше это сделать, бо я я не шарю в этих ардуинах и прочих, тем более их много. Просто объясните что нужно ткните пальцем, остальное я сам дочитаю, докумекаю.
Спс!
 
alexval2007Дата: Вторник, 31.01.2012, 21:52 | Сообщение # 2
Электро воспламенитель
Группа: Администраторы
Сообщений: 662
Награды: 7
Репутация: 7
Статус: Offline
нужна Ардуино и сервопривод из железа если привод мощный внешний источник питания потому что источник питания ардуино может не потянуть. Из программного нужна библиотека Servo - для работы с сервоприводами на данный момент она входит в состав установочного программного обеспечения ардуино

Библиотека позволяет платформе управлять сервомоторами от радиоуправляемых моделей (RC). Сервомоторы имеют встроенный редуктор и контролируемый вал. Стандартные сервомоторы позволяют поворачивать вал на определенный угол, обычно в пределах от 0 до 180 градусов. Сервомоторы непрерывного вращения позволяют изменять скорость вращения вала.

В Arduino 0017 библиотеа Сервомотора поддерживает до 12 машинок для большинства платформ, и до 48 машинок на платформе Arduino Mega. На платформах (кроме Mega) использование библиотеки не позволяет использовать функциональные возможности команды analogWrite() (ШИМ) на выводах 9 и 10 независимо от того, подключен к ним сервомотор или нет. На платформе Mega могут быть использованы до 12 машинок без вмешательства в функционирования ШИМ; при использовании от 12 до 23 моторов функция ШИМ на выводах 11 и 12 будет недоступна

В Arduino 0016 и более ранных библиотека использует встроенную аппаратную функциональность и может работать только на выводах 9 и 10 ( не работает совсем на Arduino Mega). В этом случае, если используется одно серво, другой вывод не ножет быть использован как нормальный ШИМ вывод для analogWrite().
Схема.

Сервомотор имеет три провода: питание, земля и управляющий вывод. Провод питания обычно красного цвета, подключается к выводу +5В на платформе Arduino. Провод Земля, обычно черного или коричневого цвета, подключется подключается к Земле платформы Arduino. Управляющий провод обычно желтого, оранжевого или белого цвет подключается к цифровому выводу платформы. Следует иметь ввиду, что сервомоторы достаточно мощные устройства, и при использовании более чем одного или двух следует подключить их к отдельному внешнему источнику питания (а не к выводу +5В на платформе). При этом нужно соединить Землю платформы с Землей внешнего источника питания.

Attach()
Описание:
Связывает переменную и вывод. Заметьте, что в Arduino 0016 и более ранних версиях библиотека Сервомотора поддерживает подключение сервомоторов только к выводам 9 и 10.
Синтаксис:
servo.attach(pin)
servo.attach(pin, min, max)
Параметры:
servo: переменная типа Серво
pin: номер вывода, к которому подключен сервомотор
min (дополнительно): ширина импульса, в микросекундах, соответствущего минимальному углу (0 градусов) на сервомоторе (стандартное значение 544)
max (дополнительно): ширина импульса, в микросекундах, соответствующего максимальному углу (180 градусов) на сервомоторе (стандартное значение 2400)
Пример:
#include
Servo myservo;
void setup()
{
myservo.attach(9);
}

void loop() {}

Write()
Описание
Передает значение сервомотору, управляет валом сервомотора. В стандартных сервомоторах устанавливает вал на определенный угол (в градусах), перемещая его на определенную позицию. На сервомоторах непрерывного вращения устанавливает скорость вращения вала (значение 0 соответствует максимальной скорости при вращении в прямом направлении, 180 - максимальной скорости при вращении в обратном направлении, 90 - вал неподвижен)
Синтаксис
servo.write(angle)
Параметры
servo: переменная типа Серво
angle: величина управляющего воздействия.
Пример
#include
Servo myservo;
void setup()
{
myservo.attach(9);
myservo.write(90); // set servo to mid-point
}

void loop() {}

writeMicroseconds ()
Описание
Передает значение сервомотору (в микросекундах), управляет валом сервомотора
На стандартных сервомоторах значение 1000 соответствует полному повороту против часовой стрелке, 2000 - полному повороту по часовой стрелке и 1500 - среднее положение.
Некоторые производители не соблюдают этот стандарт в точности, поэтому сервомоторы часто реагируют на величину от 700 до 2300. Можно увеличивать конечные точки до тех пор, пока сервомотор не перестанет изменять положение вала. Отметьте, что попытка управлять сервомотором за пределами конечных точек (часто сопровождается гудением) приводит к большому потреблению тока сервомотором, что следует избегать.
Сервомоторы непрерывного вращения реагируют на команду writeMicrosecond аналогично команде write.
Синтаксис:
servo: переменная типа Серво
uS: значение параметра (в микросекундах) (int)
Пример:
#include
Servo myservo;
void setup()
{
myservo.attach(9);
myservo.writeMicroseconds(1500); // set servo to mid-point
}

void loop() {}

read()
Описаие
Считывает положение вала сервомотора (величина соответствует последнему обращению к команде write())
Синтаксис:
servo.read()
Параметры:
servo: переменная типа Серво
Значения
Угол поворота Серво (от 0 до 180 градусов)

attached()
Проверяет, привязан ли серво к выводу или нет.
Синтаксис:
servo.attached()
Параметры:
servo: переменная типа серво
Возвращает:
true если серво привязана к выводу и false в другом случае

detach()
Описание
Отвязывает переменную Серво от вывода. Если все переменные Серво отвязаны, то выводы 9 и 10 могут быть использованы для ШИМ с функцией analogWrite().
Синтаксис:
servo.detach ()
Параметры
servo: переменная типа Серво

http://rln.nnov.ru/index.php?pid=58
по командам и синтаксису ардуино http://rln.nnov.ru/index.php?pid=14
русскоязычный форум по ардуино http://rln.nnov.ru/forum/viewforum.php?f=23

еще один пример
Сервопривод является очень важным элементом при конструировании роботов и радиуправляемых моделей.
Во втором уроке мы рассмотрим как при помощи Arduino UNO управлять сервоприводом.
Программа очень проста и наглядна. Начинается она с подключения файла <Servo.h> Данный файл содержит все необходимые команды для управления серво, чтобы облегчить нам жизнь и не изобретать велосипед. Далее, мы должны создать обьект servo. Пусть это будет servoMain. Следующая функция будет setup(), в которой мы указываем, что сервопривод подключен к выводу 10 контроллера.
Теперь все готово и мы можем посылать команды для управления серво. В главной функции loop(), мы даем различные команды для серводвигателя, выдерживая паузы между командами.
Испольуемый в проекте сервопривод содержит 3 провода: черный, красный и оранжевый или белый.
Схема подсоединения к Arduino следующая: черный провод присоединяем к выводу Arduino 0V, красный к Arduino 5V и оранжевый/белый к 10 выводу Arduino UNO.

Code
  
/*
Arduino Servo
*/
#include <servo.h>
Servo servoMain; // Обьект Servo
   
void setup()
{
    servoMain.attach(10); // Servo присоединен к 10 выводу
}
   
void loop()
{
    servoMain.write(45);  // Повернуть серво влево на 45 градусов
    delay(2000);          // Пауза 2 сек.
    servoMain.write(0);   // Повернуть серво влево на 0 градусов
    delay(1000);          // Пауза 2 сек.
    servoMain.write(90);  // Повернуть серво на 90 градусов. Центральная позиция
    delay(1500);          // Пауза 1.5 сек.
    servoMain.write(135); // Повернуть серво вправо на 135 градусов
    delay(3000);          // Пауза 3 сек.
    servoMain.write(180); // Повернуть серво вправо на 180 градусов
    delay(1000);          // Пауза 1 сек.
    servoMain.write(90);  // Повернуть серво на 90 градусов. Центральная позиция
    delay(5000);          // Пауза 5 сек.
}
</servo.h>
 
HitmannДата: Вторник, 31.01.2012, 23:13 | Сообщение # 3
Сержант
Группа: Проверенные
Сообщений: 34
Награды: 1
Репутация: 0
Статус: Offline
Алекс, спс за теорию.
Мне бы узнать именно для моих целей подойдет-ли Arduino Uno нужен-ли мне еще и Моторшилд? Имея определенную железку что мне нужна про нее я прочитаю все. Инфы тонна в инете, не хотелось бы все перечитывать не зная нужна ли она мне, тем более я не собираюсь заниматься этим всю оставшуюся жизнь )
 
alexval2007Дата: Среда, 01.02.2012, 01:06 | Сообщение # 4
Электро воспламенитель
Группа: Администраторы
Сообщений: 662
Награды: 7
Репутация: 7
Статус: Offline
Arduino Uno подойдёт как и любой другой ардуино контролер, мотор шилд в топку для ваших целей он 300лет ненужен http://robocraft.ru/files/shields/LMotor/photo/16_big.jpg он нужен для управления обычными двигателями постоянного тока и шаговыми движками для серв там примечателен только стабилизатор напряжения с регулировкой но его и так собрать можно стабилизатору цена 100р с обвязкой а шилд 800р так что смотрите сами.
 
HitmannДата: Среда, 01.02.2012, 01:49 | Сообщение # 5
Сержант
Группа: Проверенные
Сообщений: 34
Награды: 1
Репутация: 0
Статус: Offline
Алекс спс еще раз, именно это меня и интересовало.
 
Пиропульты - Электроника Форум » Электроника » Микроконтроллеры и ПЛИС » Вопрос по сервоприводу
Страница 1 из 11
Поиск:


Rambler's Top100 Пиротехника, салюты, фейерверки. Яндекс цитирования
www.alexval2007.ucoz.ru © 2008