Как управлять сервомоторами?

Шестерни и колёса, тяги и тросики... Каркасы, скелеты ...

Re: Как управлять сервомоторами?

Сообщение realsystem » 13 мар 2009, 13:29

Обычно в спецификации на серву пишут: 360 Modifiable: Yes - переделать можно, ну а дальше формируйте импульсы :)
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

Re: Как управлять сервомоторами?

Сообщение Denis_Wozniak » 25 мар 2009, 16:04

Можно пожалуйста болвану (мне), который мало чего понял объяснить?
Импульс повторяетсья с частотой 50 гц от длины импульса зависит как повернется серва если длина импкльса 1.5 мк то по центру если 0.9 то в левом крайнем положении, если 2.1 то в правом крайнем положении, нам нужно генерировать этот сигнал.

Это правильно?
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x70;
PORTB.0=1;
delay(время); //Нужно менять от 1.5мс до 2.1мс
PORTB.0=0;
}

И это правильно?

Как я понимаю: в первой цитате сказано нада менять длину импульса, а что меняют во второй?
Можно пример на WinAvr.
Аватара пользователя
Denis_Wozniak
 
Сообщения: 175
Зарегистрирован: 31 дек 2008, 22:47
Откуда: Подмосковье, Ногинск
прог. языки: С, С++, Ну и начинал я в Visual Basic.

Re: Как управлять сервомоторами?

Сообщение RoboTok » 25 мар 2009, 16:29

Я бы посоветовал вам этот код удалить...
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

Re: Как управлять сервомоторами?

Сообщение Denis_Wozniak » 25 мар 2009, 16:34

Ну не этот

Код: Выделить всё
#include <90s2313.h>
#include <delay.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xB2;
PORTB.0=1;
delay_us(1400);       // меняй это число в диапаоне 900-2100
PORTB.0=0;            // серву подключай к PB0   
// Place your code here

}


Вот этот.

Добавлено спустя 28 секунд:
Это всё с этой темы.
Аватара пользователя
Denis_Wozniak
 
Сообщения: 175
Зарегистрирован: 31 дек 2008, 22:47
Откуда: Подмосковье, Ногинск
прог. языки: С, С++, Ну и начинал я в Visual Basic.

Re: Как управлять сервомоторами?

Сообщение RoboTok » 25 мар 2009, 16:36

А это ИМХО полный отстой :bad:
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

Re: Как управлять сервомоторами?

Сообщение Denis_Wozniak » 25 мар 2009, 16:40

Ну скажите пожалуйста хороший. Хотя там на 2 странице сказали что работает.
Аватара пользователя
Denis_Wozniak
 
Сообщения: 175
Зарегистрирован: 31 дек 2008, 22:47
Откуда: Подмосковье, Ногинск
прог. языки: С, С++, Ну и начинал я в Visual Basic.

Re: Как управлять сервомоторами?

Сообщение realsystem » 25 мар 2009, 16:40

А чем не нравится код из курса?
Код: Выделить всё
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
    TCNT1H = 0x00;
    TCNT1L = 0x00;
    PORTB = pb_state[index_st];
    if (index_st == 1)
    {
        OCR1A = ctr_last;
        ctr_last = 20000;
        index_st = 0;
    }
    else
    {
        OCR1A=988+(((unsigned int)servo_poz)<<2);
        ctr_last -= OCR1A ;
        index_st ++ ;
    };
}


Меняешь servo_poz и всё, у меня так.
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

Re: Как управлять сервомоторами?

Сообщение Denis_Wozniak » 25 мар 2009, 16:43

А можно ссылку.
Тут чёт много регистров непонятных, хочу почитать объяснения.
Аватара пользователя
Denis_Wozniak
 
Сообщения: 175
Зарегистрирован: 31 дек 2008, 22:47
Откуда: Подмосковье, Ногинск
прог. языки: С, С++, Ну и начинал я в Visual Basic.

Re: Как управлять сервомоторами?

Сообщение realsystem » 25 мар 2009, 16:46

realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

Пред.

Вернуться в Механика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5