Главная » Статьи » Программирование » Программирование в BascomAVR

Подключаем сервопривод
   Для управления сервой воспользуемся циклом For. Сервопривод возьмём HXT12K. Подключаем на PD0. Лучше всего использовать отдельное питание для сервопривод. чтоб избежать помех. Подключаем питание на Jmp1, и переставляем перемычку рядом.

   Характеристика к сервоприводу:
  • Размер : 40.7x19.7x42.9 мм
  • Напряжение : 5~7в
  • Вес: 55г (паспорт), 63г по факту
  • Скорость вращения : 0.16 сек/60° (4.8в)
  • Усилие : 10 кгс*см
  • Рабочий ход: ~ +\- 60-65°
  • Тип : Цифровой
  • Модификация под постоянное вращение: Возможна!


   Основой управления конструкцией FOR...NEXT служит изменение указанной переменной от начального до конечного значения.
Синтаксис конструкции:


Code
For var = start To end [Step value]
'Повторяемый блок
Next


Ссылка на предыдущую статью.

Ссылка на следующую статью.
    var - переменная, start - начальное значение переменной, end - конечное значение переменной, value - значения шага изменения переменной. Изначально шаг идёт уже как 1, поэтому step 1 ставить не обязательно. Переменная может уменьшаться в зависимости от шага. Если число в шаге положительно, значит переменная увеличивается, отрицательное переменная уменьшается. Что касается настройки программы под работу сервопривода. Нам потребуется указать кол-во подключённых серв, присвоить имя servo1 к одному из портов и указать длину импульса.

Code
Config Servos = 1 , Servo1 = Portd.0 , Reload = 11

Code
$regfile = "m16def.dat"                                     'используем мк ATmega16

$crystal = 16000000                                         'частота кварцевого резонатора 16mHz

Config Portd.0 = Output                                     'Порт назначаем на выход

Config Servos = 1 , Servo1 = Portd.0 , Reload = 11

Dim I As Integer , P As Integer

P = 12                                                      'чем меньше значение переменной, тем быстрее будет вращаться серва и наоборот

Enable Interrupts

Servo(1) = 101                                              'центрируем серво (для разных моделей серво этот параметр может отличаться)

Wait 1

Do

For I = 101 To 150
Servo(1) = I : Waitms P
Next

 For I = 150 To 200
 Servo(1) = I : Waitms P
 Next

For I = 200 To 150 Step -1
Servo(1) = I : Waitms P
Next

 For I = 150 To 0 Step -1
 Servo(1) = I : Waitms P
 Next

For I = 0 To 101
Servo(1) = I : Waitms P
Next

Loop

End

Скачать исходник и программу по ссылке.



Ссылка на предыдущую статью.

Ссылка на следующую статью.



Источник: www.enore.ru
Категория: Программирование в BascomAVR | Добавил: Space (31.01.2011) | Автор: Кирилл E W
Просмотров: 2218 | Комментарии: 4 | Теги: баском+сервопривод, Servo, подключение сервопривода, серва. сервопривод
Всего комментариев: 4
1 kilgur   (16.10.2011 13:53) [Материал]
Здравствуйте Кирилл.Подскажите пож.как или где найти параметр центрации сервы?

2 Space   (16.10.2011 16:30) [Материал]
либо характеристики сервы смотреть
либо подбирать экперементальным путём

3 timoff   (27.10.2011 19:22) [Материал]
а как подрубить 10 серв одновременно?

4 Space   (28.10.2011 00:35) [Материал]
вот так три сервы. 10-ок серв аналогично

Config Servos = 3 , Servo1 = Portd.0 , Servo2 = Portd.1, Servo3 = Portd.2, Reload = 11

Servo(1) = 101
Servo(2) = 101
Servo(3) = 101 'центрируем серво (для разных моделей серво этот параметр может отличаться)

Wait 1

Do

For I = 101 To 150
Servo(1) = I : Waitms P
Servo(2) = I : Waitms P
Servo(3) = I : Waitms P
Next

For I = 150 To 200
Servo(1) = I : Waitms P
Servo(2) = I : Waitms P
Servo(3) = I : Waitms P
Next

For I = 200 To 150 Step -1
Servo(1) = I : Waitms P
Next

For I = 150 To 0 Step -1
Servo(1) = I : Waitms P
Servo(2) = I : Waitms P
Servo(3) = I : Waitms P
Next

For I = 0 To 101
Servo(1) = I : Waitms P
Servo(2) = I : Waitms P
Servo(3) = I : Waitms P
Next

Loop

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]