задался давным давно сборкой квадрокоптера, всё почти закуплено давно валяется, но проблема в сигнале серво.
читал ,гуглил все пишут как один сигнал должен быть 1-2мс частота 400гц.
врубил шим,настоил на 1.5мс ну вроде попал близко по периуду,но не по частоте .
далее в сети напоролся на тестер серво ,мега 16
там частота низкая и на весь порт д ,тоесть уже понятно что програмный
может кто подсказать как в cvavr серво сигнал получить?
правильный PPM & SERVO
Re: правильный PPM & SERVO
http://cdxp.zx6.ru/archives/355 - Управление сервомашинкой при помощи аппаратного ШИМ
http://my-avr.at.ua/publ/1-1-0-23 - аппаратный ШИМ
http://my-avr.at.ua/publ/1-1-0-23 - аппаратный ШИМ
- m.ix
- Друг Кота
- Сообщения: 16545
- Зарегистрирован: Вт сен 07, 2010 03:01:06
- Откуда: Moscow-Izmaylovo
- Контактная информация:
Re: правильный PPM & SERVO
Сам сейчас давнособранный тестер юзаю.
http://www.youtube.com/watch?v=et8vpnKXlKc проверка серво машинки
http://www.youtube.com/watch?v=iHGfgSQHZEg проверка оборотов
сейчас управляю им скоростью винта
Там ещё есть функции которые не пробовал кроме вольтметра.
Сигналы идущие с сервомашинок.
http://www.youtube.com/watch?v=et8vpnKXlKc проверка серво машинки
http://www.youtube.com/watch?v=iHGfgSQHZEg проверка оборотов
сейчас управляю им скоростью винта
Там ещё есть функции которые не пробовал кроме вольтметра.
Сигналы идущие с сервомашинок.
Лечу лечить WWWашу покалеченную технику.
Re: правильный PPM & SERVO
первая ссылка супер но почемуто не вкурю,почему юарт не пашет и переменная не меняет периуд
Re: правильный PPM & SERVO
по сути вот это чудовище ,непойму ,почему цыкл стоит?
[*
#include<mega16.h>
#define TOP 10000
#include <stdio.h>
#include <delay.h>
#define servo1(a) OCR1B=a/2
#define servo2(b) OCR1A=b/2
void servo1_position(int pos)
{
OCR1A = pos/2;
}
void servo2_position(int pos)
{
OCR1B = pos/2;
}
char i;
void main(void)
{
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
//настраиваем Timer1
TCCR1A=0xA0;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=TOP>>8;
ICR1L=TOP; //максимальное значение таймера
OCR1B=0x00;
OCR1A=0x00;
DDRD=0x30; //PORTD4 & PORTD5 сконфигурированы на выход
servo1_position(1000+i);
servo2_position(1300); //на PD4 аналогично, но длительность импульса уже 1300 мксек
printf("%u",OCR1B);
while(1); { printf("%u",i);
OCR1B++;}
}
]
[*
#include<mega16.h>
#define TOP 10000
#include <stdio.h>
#include <delay.h>
#define servo1(a) OCR1B=a/2
#define servo2(b) OCR1A=b/2
void servo1_position(int pos)
{
OCR1A = pos/2;
}
void servo2_position(int pos)
{
OCR1B = pos/2;
}
char i;
void main(void)
{
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
//настраиваем Timer1
TCCR1A=0xA0;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=TOP>>8;
ICR1L=TOP; //максимальное значение таймера
OCR1B=0x00;
OCR1A=0x00;
DDRD=0x30; //PORTD4 & PORTD5 сконфигурированы на выход
servo1_position(1000+i);
servo2_position(1300); //на PD4 аналогично, но длительность импульса уже 1300 мксек
printf("%u",OCR1B);
while(1); { printf("%u",i);
OCR1B++;}
}
]
- Вложения
-
- 15_P7WM.rar
- (80.42 КБ) 187 скачиваний
-
olegtur77
- Встал на лапы
- Сообщения: 128
- Зарегистрирован: Сб мар 17, 2007 00:17:45
- Откуда: Kiev
- Контактная информация:
Re: правильный PPM & SERVO
Под коптер есть прошивки 400Гц на регуляторы Turnigy серия PLUSH, или уже готовые ,с прошивками для коптера на RCtimer. Первые делали самодельные с управлением по I2C, но сейчас мало кто занимается, в основном перешли на готовые регули.