Уважаемые учащиеся а также родители! Мы открыли новый набор в кружки робототехники Президенсткого Физико-математического лицея №239 г. Санкт-Петербурга по следующим направлениям: "BEAM-робототехника" (учимся создавать простых роботов, чтобы постичь азы роботостроения и получить необходимые навыки и знания в робототехнике и электронике); "Программирование микроконтроллеров Arduino" (учимся программировать и собирать своих первых программируемых роботов, делаем проекты и участвуем в соревнованиях); "Творческое проектирование Arduino" (создаем крутые проекты с использованием Arduino для участия в соревнованиях, конференциях выставках и тп). Обучение БЕСПЛАТНОЕ. Преподаватель: Мельников Сергей Алексеевич. Подробнее о кружках и о том, как в них попасть
Config Servos = 1 , Servo1 = Portd.2 , Reload = 10 'один сервопривод подкл в PortD.2 и ещё что-то... Config Portd.2 = Output 'PortD.2 - выход Config Portc.5 = Output 'PortC.5 - выход Enable Interrupts 'разрешаем прерывания Dim I As Byte 'объявляем переменную
Do 'начало бесконечного цикла Set Portc.5 'зажгём светодиод - обозначим поворот вправо For I = 0 To 150 'цикл в 150 шагов Servo(1) = I 'дадим серве значение шага цикла Waitms 10 'немного подождём Next 'след шаг
Reset Portc.5 'потушим светодиод - обозначим поворот влево For I = 150 To 0 Step -1 'тут точно такой же цикл, только в обратном порядке Servo(1) = I Waitms 10 Next Loop 'замыкаем бесконечный цикл
Видео работы программы:
рекомендуется к просмотру в полноэкранном режиме
Как видно сервопривод движется только когда длина импульса больше 1мсек, но меньше 2мсек.
Коментарии к видео: МК - ATmega8, сервопривод с углом поворота +\-90°, светодиод, осцилограф подкл к тому же выводу что и сервопривод. Одна клеточка в сетке осцилографа по горизонтали равна 1мсек, по вертикали 1В.
Вопросы:
Сервопривод управляется частотой сигнала?
Как обращатся с параметром "Reload"?
В чем измеряется параметр "Servo"?
Как узнать крайнее левое и крайнее правое положение?
S-T-A-L-K-E-R(А), согласись, если я поставлю Servo(1) значения 700 и 2500 то это и рядом не стоит с крайним левым и правым положением. Потому что при 150 у меня уже заваливает за 90°. Пытаюсь перевести и понять следующее: Syntax CONFIG SERVOS = X , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = rl , INTERVAL=t X - The number of servo’s you want to control. Each used servo will use one byte of SRAM. servox - The port pin the servo is attached too. reload - The reload value for the ISR in uS. Interval - The update interval. Using the interval option will result in using alternative servo code optimized for servos.
Добавлено (18.09.2011, 21:23) --------------------------------------------- Вот как мы с Промтом перевели выше сказанное: X - Число сервомоторов которыми хотите управлять. Каждый используемый сервомотор будет использовать один байт SRAM. servox - Вывод порта к которому подключён сервомотор. reload - Перевести значение ISR в микросекунды. interval - Интервал обновления. Использование опции "интервал" приведет к использованию альтернативного "сервокода", оптимизированного для сервомоторов.
Как понимаю речь идёт о правильном понимании строк инициализации и управления сервоприводом. Попробуем разобраться, строка Config Servos = 1 , Servo1 = Portd.2 , Reload = 10 означает следующее.... Config Servos = 1 -это указать кол-во используемых сервоприводов, в данном случае один сервопривод; Servo1 = Portd.2 -это порт к которому будет подключен данный сервопривод; Reload = 10 -это выращенная в микросекундах перезагрузка выходного логического уровня /ширина импульса/ -------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------- ПРИМЕР ПРОГРАММЫ ДЛЯ УПРАВЛЕНИЯ СЕРВОПРИВОДОМ:
Config Servos = 1 , Servo1 = Portc.2 , Reload = 10 Dim Tik As byte , M As byte 'объявляем переменные Tik и M M = 10 'задержка определяющая скорость вращения сервопривода Enable Interrupts 'разрешаем глобальные прерывания Servo(1) = 110 'центрировка сервопривода, среднее положение, значение при котором вал сервопривода не двигается может быть у разных моделей различным
Do
Servo(1) = 110 'стоп waitms 250 Servo(1) = 50 'вращаем в одну сторону waitms 250 Servo(1) = 150 'вращаем в другую сторону waitms 250
For Tik= 110 To 200 'ускоряем вращение Servo(1) = Tik: Waitms M
For Tik = 200 To 110 Step -1 'замедляем вращение Servo(1) = Tik Waitms M Next