Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин
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
Общайтесь с друзьями в нашем Online-чате по робототехнике
Мы рады, что в России открывается все больше кружков по робототехнике и мы стараемся прикладывать к этому свои усилия начиная с 2008 года :) Мы будем очень рады видеть в чате живое общение, обмен опытом между учащимися в робототехнике и просто увлеченными в этом направлении людей. Мы всегда онлайн, приходите, спрашивайте, помогайте другим - давайте сделаем Мир чуточку лучше!
Чтобы не потерять чат и быть всегда с нами на связи - откройте окно чата в новом окне браузера и добавьте его в заколадки. Открыть в новом окне