roboforum.ru

Технический форум по робототехнике.


COM порт vs МК

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Сообщение KiCom » 05 дек 2005, 15:02

Я практически разобрался там был какой-то фьюз от отвечал за пределитель таймера я его вырубил и все стало как надо (светодиод наконечто стал мигать как надо) правда серва поворачиваться пока не хочет , я просто генерирую импульсы а она не поворачиваеться посмотреть бы что там за импульсы а осцилографа нет.
KiCom
 
Сообщения: 345
Зарегистрирован: 22 окт 2005, 11:15
Откуда: Красноярск

Сообщение -= Александр =- » 05 дек 2005, 20:51

Смотри так: частота повторения импульса: 50 Гц. Делаешь цикл, где его длина постепенно растет и смотришь в каком диапазоне работает серва.

Или попробуй осциллографом померить длину импульса. Осциллограф брать тут: http://user.rol.ru/%7Ezapisnyh/virt.htm  - провереная прога, с любой звуковушкой работает...
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение KiCom » 06 дек 2005, 16:19

Сделал, работает, всмысле мигает светодиодами отображая код ASCII который приходит с com-port СУПЕР. С осцилографом спасибо, поробую раздобыть реальный, ну а если не получиться то виртуальным воспоьзуюсь.
Для передачи использую RS232Pro там можно самому набирать число в 16-ричном виде или нет. Я пытался найти но не нашел.
KiCom
 
Сообщения: 345
Зарегистрирован: 22 окт 2005, 11:15
Откуда: Красноярск

Сообщение -= Александр =- » 06 дек 2005, 22:59

Реальный советую С1-94 - и по деньгам реально и все что надо умеет. Я брал с рук, за 1500р.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение KiCom » 13 дек 2005, 13:51

Поворачиваеться серва, осцилограф не понадобился она возможно и раньше бы заработала если бы я подключая серву не перепутал провод питания и сигнала сервы. Непонимаю как я это путал, пробовал раз пять, причем перед каждым подключением смотрел распайку сервы в ДШ к ней но всеравно накосячил.
KiCom
 
Сообщения: 345
Зарегистрирован: 22 окт 2005, 11:15
Откуда: Красноярск

Сообщение -= Александр =- » 13 дек 2005, 18:51

Бывает...  :wink:
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение Тимофей » 03 янв 2006, 21:04

Как я понял, подключение сервы к МК сводится к соединению IO ножки МК с сигнальной линией сервы? В таком случае, это будет не параллельное управление?
Тимофей
 
Сообщения: 37
Зарегистрирован: 09 авг 2005, 17:38

Сообщение avr123.nm.ru » 04 янв 2006, 07:45

Тимофей писал(а):подключение сервы к МК сводится к соединению IO ножки МК с сигнальной линией сервы?


лучше через резистор 150 - 270 Ом  - а то вдруг опять что-то перепутается.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение KiCom » 04 янв 2006, 10:38

Да лучше через резистор на всякий случай :)
KiCom
 
Сообщения: 345
Зарегистрирован: 22 окт 2005, 11:15
Откуда: Красноярск

Сообщение avr123.nm.ru » 04 янв 2006, 12:36

отличный портал по SERVO здесь:

http://www.servocity.com/html/how_do_servos_work_.html

там и вся приблуда - шестеренки, цепи, соединителя для тяг...
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Тимофей » 09 янв 2006, 21:51

KiCom
А программу, поворачивающую серву, можешь кинуть? Плз, хоть с какими-нибуть комментариями, а то читал курс  avr123.nm.ru - первые несколько уроков, вроде бы понял все, а коды все равно не читаются :( Щас видимо еще Сергею ПМ пойдет, вопросы по его коду на управление сервой...
Тимофей
 
Сообщения: 37
Зарегистрирован: 09 авг 2005, 17:38

Сообщение Сергей » 09 янв 2006, 22:03

Охотники за source C code for servos вперед! Мне тоже киньте прогу, интересно почитать. Но только если она на Си
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Сообщение Сергей » 09 янв 2006, 22:06

http://cvs.sourceforge.net/viewcvs.py/p ... avr/servo/
тут тоже интересно...
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Сообщение avr123.nm.ru » 10 янв 2006, 00:54

Тимофей писал(а):KiCom
А программу, поворачивающую серву, можешь кинуть?

Плз, хоть с какими-нибуть комментариями...


говорю же:   GOOGLE.COM !!!!!     servo controllers  

тут и схеммы - servo controllers  и архив с исходниками на Си

http://www.microrobotna.com/mrservo8cpu.htm

Тимофей писал(а):читал курс  avr123.nm.ru - первые несколько уроков, вроде бы понял все, а коды все равно не читаются ...


прочитай пожалуйста еще раз 1 страницу и сделай то что там написано.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение KiCom » 10 янв 2006, 08:20

Вот код программы:
//ICC-AVR application builder : 11.12.2005 18:05:21
// Target : 2313
// Crystal: 11.059Mhz

#include <io2313v.h>
#include <macros.h>
#define CENTER 2880
int mks_g=CENTER;
int del_0=CENTER;
int del_1=CENTER;
int del_2=CENTER;
int del_3=CENTER;
int del_4=CENTER;
int del_5=CENTER;


void go_servo (char,char,char,char);

char in,i=0,sum;
char n_servo,vector,alfa,summ,ver;
void delaysa(unsigned int mks)
{
 if (mks<1400)
mks=1400;
if (mks>4450)
mks=4450;
while(mks>0)
{
 mks--;
}
}

void port_init(void)
{
PORTB = 0xFF;
DDRB  = 0xFF;
PORTD = 0x00;
DDRD  = 0x00;
}

void timer0_init(void)
{
TCCR0 = 0x00; //stop timer
TCNT0 = 0x29; //set count
TCCR0 = 0x05; //start timer
}

#pragma interrupt_handler timer0_ovf_isr:7
void timer0_ovf_isr(void)
{

TCNT0 = 0x29; //TIMER0 has overflowed

PORTB |=BIT(0);
delaysa(del_0);
PORTB &=~BIT(0);

PORTB |=BIT(1);
delaysa(del_1);
PORTB &=~BIT(1);

PORTB |=BIT(2);
delaysa(del_2);
PORTB &=~BIT(2);
 
PORTB |=BIT(3);
delaysa(del_3);
PORTB &=~BIT(3);  
 
PORTB |=BIT(4);
delaysa(del_4);
PORTB &=~BIT(4);  

PORTB |=BIT(5);
delaysa(del_5);
PORTB &=~BIT(5);  
 //reload counter value

}

void uart0_init(void)
{
UCR  = 0x00; //disable while setting baud rate
UBRR = 0x47; //set baud rate
UCR  = 0xD8; //enable
}

#pragma interrupt_handler uart0_rx_isr:8
void uart0_rx_isr(void)
{
in=UDR;
PORTB^=BIT(7);
if (i==0)
  n_servo=in;
if (i==1)
  vector=in;
if (i==2)
  alfa=in;
if (i==3)
  ver=in;
i++;
if (i==4)
{
PORTB^=BIT(6);
go_servo(n_servo,vector,alfa,ver);
}
}
#pragma interrupt_handler uart0_tx_isr:10
void uart0_tx_isr(void)
{

}

void go_servo (char n_sevro, char vector, char alfa, char ver)
{
i=0;
sum=alfa-n_servo-vector;
if (sum==ver)
{
if (n_servo==0)
   {
 if (vector==1)
 del_0=2880-alfa*6;
 if (vector==2)
 del_0=2880+alfa*6;
 }

if (n_servo==1)
   {
 if (vector==1)
 del_1=2880-alfa*6;
 if (vector==2)
 del_1=2880+alfa*6;
 }
if (n_servo==2)
   {
 if (vector==1)
 del_2=2880-alfa*6;
 if (vector==2)
 del_2=2880+alfa*6;
 }
if (n_servo==3)
   {
 if (vector==1)
 del_3=2880-alfa*6;
 if (vector==2)
 del_3=2880+alfa*6;
 }
if (n_servo==4)
   {
 if (vector==1)
 del_4=2880-alfa*6;
 if (vector==2)
 del_4=2880+alfa*6;
 }
if (n_servo==5)
   {
 if (vector==1)
 del_5=2880-alfa*6;
 if (vector==2)
 del_5=2880+alfa*6;
 }

}
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();
uart0_init();

MCUCR = 0x00;
GIMSK = 0x00;
TIMSK = 0x02;
SEI(); //re-enable interrupts
//all peripherals are now initialized
}

//
void main(void)
{
init_devices();
while(1)
{

}

}



Как работать с ШИМ я не разобрался поэтому сделал в лоб.
P.s. Пытался использвать кнопку Code но не получилось.
KiCom
 
Сообщения: 345
Зарегистрирован: 22 окт 2005, 11:15
Откуда: Красноярск

Пред.След.

Вернуться в Новичкам или основы основ роботостроения.

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

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