реклама на сайте
подробности

 
 
> На пути к робототехнике, Подскажите как управлять сервомашинкой
Costia
сообщение Jul 5 2008, 18:43
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507



Будьте добры помогите разобраться с управлением сервомашинки .

Использую сервомашинку ( ACE RC C1016 )
Питаю от USB управляющий сигнал беру прямо с ножки PORTA.0
МК ATmega16 тактовая частота 1 mHz
Информацию брал с http://vtpablos.narod.ru/robots/servotester/

Задача кода ШИМ на PORTA.0 ( скважность 0.9 мс . частота 20 мс )


.include"m16def.inc"
.list

.cseg
.org 0

ldi r16, high(RAMEND)
out SPH, r16
ldi r16, low(RAMEND)
out SPL, r16


ldi r16, 255
out DDRA, r16
out DDRB, r16

rj0: ldi r16, 224
sbi PORTA, 0

rj1: dec r16
breq rj2
rjmp j1

rj2: cbi PORTA, 0

ldi r16, 20
rj3: dec r16
breq rj0
ldi r17, 250
rj4: dec r17
breq rj3
rjmp rj4





Забыл сказать что на выше изложенные действия машинка не реагирует...

Сообщение отредактировал Costia - Jul 5 2008, 18:46
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aesthete Animus
сообщение Jul 6 2008, 10:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



2Costia
Ну для начала могу посоветовать пощупать осцилографом - генерится ли что-нибудь на ножке. Если верить отладчику, то должно (но не надо верить отладчику wink.gif)...

К тому же, попробуйте увеличить ширину импульса - не все сервы воспринимают значение в 0,9мс, поставьте что-нибудь около 1,5мс.

Я думаю, не надо лишний раз напоминать, что не мешает перепроверить подключение сервомашинки wink.gif
Go to the top of the page
 
+Quote Post
Costia
сообщение Jul 6 2008, 12:48
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507



Цитата(Aesthete Animus @ Jul 6 2008, 14:03) *
2Costia
Ну для начала могу посоветовать пощупать осцилографом - генерится ли что-нибудь на ножке. Если верить отладчику, то должно (но не надо верить отладчику wink.gif)...

К тому же, попробуйте увеличить ширину импульса - не все сервы воспринимают значение в 0,9мс, поставьте что-нибудь около 1,5мс.

Я думаю, не надо лишний раз напоминать, что не мешает перепроверить подключение сервомашинки wink.gif


Спасиб да в этом дело попробовал на 1.5 и все заработало как надо ( до упоро против часовой )
вот код если кому понадобится
Код
        ldi        r16,    255
        out        DDRA,    r16
        out     DDRB,    r16
    
j0:        ldi        r16,    15
        sbi        PORTB,    0    //==================

j1:        breq    j3
        dec        r16
        ldi        r17,    19    

j2:        breq    j1
        dec        r17
        ldi        r20,    0
        rjmp    j2
            
j3:        cbi        PORTB,    0 //==================

        ldi        r16,    185

j4:        breq    j0
        dec        r16
        ldi        r17,    19

j5:        breq    j4
        dec        r17
        ldi        r20,    0
        rjmp    j5


А если у меня не стандатные уоманды сервы то как мне узнать остальные . Логично предположит что надо искать даташит но не получается найт ...
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Jul 6 2008, 14:44
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(Costia @ Jul 6 2008, 16:48) *
Спасиб да в этом дело попробовал на 1.5 и все заработало как надо ( до упоро против часовой )

Теперь я бы посоветовал постепенно увеличивать ширину импульса, чтобы узнать второе крайнее положение wink.gif


Цитата(Costia @ Jul 6 2008, 16:48) *
А если у меня не стандатные уоманды сервы то как мне узнать остальные

Что значит, нестандартные? Какие команды?


Цитата(VDG @ Jul 6 2008, 16:00) *
Вам же сказали уже - не хватает loop-а.


Есть там loop: "breq rj0". Другое дело, его стоит сделать явно, а то, он как-то слишком незаметен wink.gif
Go to the top of the page
 
+Quote Post
Costia
сообщение Jul 6 2008, 14:47
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507



Цитата(Aesthete Animus @ Jul 6 2008, 18:44) *
Теперь я бы посоветовал постепенно увеличивать ширину импульса, чтобы узнать второе крайнее положение wink.gif
Что значит, нестандартные? Какие команды?
Есть там loop: "breq rj0". Другое дело, его стоит сделать явно, а то, он как-то слишком незаметен wink.gif


да лана прикапыватся . Код не большой и не сложный все прекрасно видно
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016