роботы робототехника микроконтроллеры


 Страниц (13): « 1 2 3 4 [5] 6 7 8 9 ... » В конец    

> Описание: Фото, видео, описание.
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



И проект робота
Скачать файл: Робот.rar
Скачан раз: 336
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



В проекте пульта все хорошо.

В программе для робота с ATmega8 была ошибка. Я ее исправил. http://myrobot.ru/forum/topic.ph...89872#1308589872

В проекте для робота неверно указана тактовая частота МК. Исправьте на 2000000 Hz.
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



mihail точно ступил забыл поменять но почему то у меня все светодиоды срабатывают все сразу при любой команде пульта
А как все же заставить код на робота работать на 8мгц а то у меня при двух бутлайдер не хочет видеться АврСтудия наверно частота плавает без кварца мега8 у меня
Объясните что менять что подкрутить в коде чтоб код работал на 8мгц пожалуйста

(Отредактировано автором: 21 Июня, 2011 - 15:22:11)

 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



alex91 пишет:
у меня все светодиоды срабатывают все сразу при любой команде пульта
Так и должно быть. Отличие в длительности управляющих импульсов. Специфика управления сервоприводами Улыбка
http://easyelectronics.ru/servom...inka-hs-311.html
http://easyelectronics.ru/upravl...rvomashinok.html
(Добавление)
Программа для дистанционного управления роботом http://myrobot.ru/stepbystep/r_firstbot1.php Только, TSOP необходимо подключить к PB0.
/*******************************************
Program : receiver
Compiler : WinAVR
Chip type : ATmega8
System Clock : 8 MHz
*******************************************/

#include <avr/io.h>
#include <util/delay.h>

volatile unsigned char flag = 0;

int main(void)
{
// Input/Output Ports initialization

// Port B initialization
DDRB = 0b00000000; // PB0 TSOP
PORTB = 0b00000001;

// Port C initialization
DDRC = 0b00011110;
PORTC = 0b00011110;

// Port D initialization
DDRD = 0b00000000;
PORTD = 0b00000000;

while(1)
{
flag = 0;
while( (PINB & (1<<0)) != 0 );
_delay_us(2000);
if( (PINB & (1<<0)) == 0 ) flag = 1;
_delay_us(2000);
if( (PINB & (1<<0)) == 0 ) flag = 2;
_delay_us(2000);
if( (PINB & (1<<0)) == 0 ) flag = 3;
_delay_us(2000);
if( (PINB & (1<<0)) == 0 ) flag = 4;

if( flag == 1 )
{
// ---------- вращаем моторы вперед --------------------
PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C
// -------------------------------- ---------------------
}

if( flag == 2 )
{
// ---------- поворачиваем -----------------------------
PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
PORTC &= ~_BV(PC3); // установить "0" на линии 3 порта C
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C
// -------------------------------- ---------------------
}

if( flag == 3 )
{
// ---------- поворачиваем -----------------------------
PORTC &= ~_BV(PC1); // установить "0" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C
// -------------------------------- ---------------------
}

if( flag == 4 )
{
// ---------- вращаем моторы назад ---------------------
PORTC &= ~_BV(PC1); // установить "0" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
PORTC &= ~_BV(PC3); // установить "0" на линии 3 порта C
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C
// -------------------------------- ---------------------
}

_delay_ms(50);
while( (PINB & (1<<0)) != 0 );

// ---------- стоим на месте ---------------------------
PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C
// -------------------------------- ---------------------

_delay_ms(50);
}

return 0;
}

(Отредактировано автором: 22 Июня, 2011 - 01:31:34)

 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



mihail спасибо буду пробовать
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



Здравствуйте Улыбка
Снова не получается разобраться с новой задачей пульт с RS232 переделать под мегу8 думал нечего сложного все компилиться но не работает ик-светодиод не горит на отправку команд f,l,s,r и b.
Почему я решил использовать атмегу8 да потому что менять прошивку быстро могу с АврСтудии при помощи бутлайдера про него можно почитать здесь http://easyelectronics.ru/avr-uc...bootloadera.html
Плата работает на 8мгц ик-светодиод весит на PD6
Регистры настройки RS232 проверил вроде б все должно работать таймеры-счетчики поменял на TCCR0 как позапрошлом коде под мегу8 но не работает
Вот мой проект, прошу помогите
Скачать файл: пульт-RS232.rar
Скачан раз: 334
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



alex91, чтото я не заметил в программе управления портами, только задержки.
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



nest в коде я нечего не менял кроме того что я перечислил в посте выше
Я так понял что дерганья ногами быть не должно кроме
PORTD ^= 0b01000000;
пишется команда в терминале одна из этих f,l,s,r и b и передаются по rs232 на МК и взаимозависимости от команды кодируется и передаются на ик-светодиод который уже отправляет шифрованную команду на ТСОП робота

(Отредактировано автором: 22 Июня, 2011 - 01:33:21)

 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Программа для пульта.
/*******************************************
Program : transmitter
Compiler : WinAVR
Chip type : ATmega8
System Clock : 8 MHz
*******************************************/


#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>


volatile unsigned char count = 0;

unsigned char usart_data = 's';


// Timer 0 overflow interrupt service routine
ISR(TIMER0_OVF_vect)
{
TCNT0 = 160;

PORTD ^= 0b01000000;

count += 1;

if( count == 80 )
{
TCCR0 = 0b00000000;
}
}


void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8 data, 1 stop bit */
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}


void USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) );
/* Get and return received data from buffer */
usart_data = UDR;
}


int main(void)
{
// Input/Output Ports initialization

// Port B initialization
DDRB = 0b00000000;
PORTB = 0b11111111;

// Port C initialization
DDRC = 0b00000000;
PORTC = 0b00000000;

// Port D initialization
DDRD = 0b01000000; // PD6 LED
PORTD = 0b00000000;


// Baud Rate 9600 bps
USART_Init(51);


// Timer/Counter 0 initialization

// Timer/Counter 0 Control Register
// Bits: - - - - - CS02 CS01 CS00
TCCR0 = 0b00000000;

// Timer/Counter 0
TCNT0 = 160;


// Timer(s)/Counter(s) Interrupt(s) initialization

// Timer/Counter Interrapt Mask Register
// Bits: OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 – TOIE0
TIMSK = 0b00000001;


// Global enable interrupts
sei();


while(1)
{
_delay_ms(100);

USART_Receive();

count = 0;
TCCR0 = 0b00000001;
while( count != 80 );

if( usart_data == 'f' )
{
_delay_us(500);
}

if( usart_data == 'l' )
{
_delay_us(2500);
}

if( usart_data == 's' )
{
continue;
}

if( usart_data == 'r' )
{
_delay_us(4500);
}

if( usart_data == 'b' )
{
_delay_us(6500);
}

count = 0;
TCCR0 = 0b00000001;
while( count != 80 );
}

return 0;
}
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



mihail спасибо попробую
 
 Top
N_I_K Post Id


Рядовой


Сообщений всего: 1
Дата рег-ции: Июнь 2011  



скажите пожалуйста где можно дастать мик.293d кроме магазинов???
(Добавление)
L293D
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



Интернет-магазины подойдут?
Вот тут например:http://mkpochtoi.narod.ru/price.htm

(Отредактировано автором: 22 Июня, 2011 - 20:56:50)

 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



Цитата:
скажите пожалуйста где можно дастать мик.293d кроме магазинов???


Микросхема довольно специфическая , так что
выпаять ее из , какого нибудь , старого магнитофона не получиться.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



nestandart пишет:
Цитата:
скажите пожалуйста где можно дастать мик.293d кроме магазинов???


Микросхема довольно специфическая , так что
выпаять ее из , какого нибудь , старого магнитофона не получиться.


продаются до сих пор

КР1128КТ3А до 1А (без встроенных диодов)

КР1128КТ4, КР1128КТ4А до 600мА (аналог l293D )

В двое дешевле, и не греются ... могут быть обнаружены в видеомагнитофонах Электроника ВМ-...
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



Еще раз здравствуйте Улыбка
Хотел спросить а возможно передавать команды не ик-путем а радио передачей
Есть у меня несколько приемников и передатчиков от китайских игрушек возможно их использовать для передачи цифровой информации
На RX - платка пульта игрушки передатчик
TX- плата приемника от игрушки
И так с двух сторон (робота и компьютера)
Возможно ли это устроить подскажите пожалуйста
 
 Top
Страниц (13): « 1 2 3 4 [5] 6 7 8 9 ... » В конец
« Делаем роботов »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru