Пятница, 19.04.2024, 17:09
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Архив - только для чтения
Форум » Мастерская » Наши достижения » Монстр :) R1-B1.
Монстр :) R1-B1.
DoniakДата: Среда, 21.05.2008, 10:08 | Сообщение # 16








Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
ну чо там, получяется? yes3 интересует так как у ниво с поворотами?
 
XsenusДата: Среда, 21.05.2008, 16:35 | Сообщение # 17








Язык программированя: CVAVR язык С
Зарегистрирован 05.05.2008
Группа: Новички
Сообщений: 11
Город: Moscow
Статус: Offline
Вопро: Где оргстёклышко берёшь????? Тож очень надо
 
SpaceДата: Воскресенье, 25.05.2008, 19:45 | Сообщение # 18








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Quote (Doniak)
ну чо там, получяется? yes3 интересует так как у ниво с поворотами?

У меня сейчас экзаменны так что не когда. Но видео будет это я тебе обещаю.
Quote (Xsenus)
Вопро: Где оргстёклышко берёшь????? Тож очень надо

В любом магазине где продают и вырезают на заказ стекло.
 
SpaceДата: Четверг, 29.05.2008, 23:52 | Сообщение # 19








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Ну вот собственно эти повороты. Если честно, то делает он их с трудом. Короче так и шестирёнки полететь могут. Буду делать расстояние между сервами меньше как на фотках.


Прикрепления: 7160010.jpg (354.5 Kb) · 9830826.jpg (432.1 Kb)
 
DoniakДата: Пятница, 30.05.2008, 21:56 | Сообщение # 20








Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
я думал онавообще небудит поворачивать:)
ужасный скрежит, наверно сервы так долго непротянут
боюсь сближение серв сильно непоможет sad зато если гусеницы натянуть думаю будит он шустрее.
 
SpaceДата: Пятница, 30.05.2008, 22:32 | Сообщение # 21








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Вот именно. Долго не протянут. А сближение как раз помогло. Потом покажу. А танк у меня есть, но он зараза маленький довольно таки и шума слишком много

Прикрепления: 9515292.jpg (84.4 Kb) · 4790967.jpg (80.2 Kb) · 6339297.jpg (101.7 Kb)
 
SpaceДата: Воскресенье, 01.06.2008, 22:35 | Сообщение # 22








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Ну наконец-то у меня готова нормальная ходовая часть для робота. Всё нормально разворачивается. Программа работает как надо(движение по таблице вероятностей). Вообщем пока проблем нет.


Прикрепления: 5634226.jpg (139.5 Kb) · 4312299.jpg (122.3 Kb) · 1244704.jpg (111.2 Kb) · 3736725.jpg (97.3 Kb)
 
DoniakДата: Понедельник, 02.06.2008, 00:22 | Сообщение # 23








Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
необичний трёхкалёсний даже с кулером senile неужели 7805 так сильно греитса
 
SpaceДата: Понедельник, 02.06.2008, 11:31 | Сообщение # 24








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Ну 3-ый потому что на одной серве сломана шестерёнка. А кулер для микросхемы, но я уже снял его. Решил поставить радиатор. А стабилизатор на моё удивление тёплый ели-ели.
 
SpaceДата: Вторник, 03.06.2008, 19:58 | Сообщение # 25








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Пока нет 4 сервы решил снять одну. Оставил 2 сервы и поставил калёсико свободно вращающееся. Поставил передний и задний бампер. Видео выложу потом. А пока сама прога и пара фоток.

Добавлено (03.06.2008, 19:58)
---------------------------------------------

Прикрепления: 6920740.jpg (113.4 Kb) · 6388437.jpg (121.3 Kb) · 4867239.rar (26.8 Kb)
 
SpaceДата: Воскресенье, 08.06.2008, 21:40 | Сообщение # 26








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Написал программу для следования по линии. За датчики взял модуль датчика линии на основе компаратора LM311 FireFly
Вот

Code
// Программа следования по линии для Проекта мобильного робота "R1-B1"      
// Автор Space:
//       -мк ATmega16
//       -используется кварц на 8мГц
//       -компилятор WinAVR V2.0.5
// Программа 2008 для робота R1-B1 - www.robptsspace.ucoz.ru
//------------------------------------------------------------------------
#include <avr/io.h>      
#define bit_is_clear(sfr, bit) \
                      (!(sfr & _BV(bit)))
#define bit_is_set(sfr, bit) (sfr & _BV(bit))
// назначение определений для танкового привода
#define OUT PORTA
#define MOTOR_FR  PA0  // вперед-вправо
#define MOTOR_BR  PA1  // назад-вправо
#define MOTOR_BL  PA2  // назад-влево
#define MOTOR_FL  PA3  // вперед-влево

#define IN PIND
#define LIGHT_R  PD0 // правый фотодиод
#define LIGHT_L  PD1 // левый фотодиод
#define LED PD4 // светодиод

// Возможные режимы движения для танкового привода

enum {STOP, F, FR, FL};

//------------------------------------------------------------------------------
// Задержка t х 10ms
//------------------------------------------------------------------------------
//#define F_CPU 8000000
#define K_DELAY_10ms    F_CPU/600
void Delay_10ms(unsigned char t) {
       if (t==0) return;
       unsigned int i;
       while (t--) for(i=0;i<K_DELAY_10ms; i++);
}

//------------------------------------------------------------------------------
// Включение комбинации моторов для движения в заданном направлении
//------------------------------------------------------------------------------
void go(unsigned char direction){

       switch (direction) {
       case STOP:
         cbi(OUT, MOTOR_FR);
         cbi(OUT, MOTOR_BR);
         cbi(OUT, MOTOR_BL);
         cbi(OUT, MOTOR_FL);
         break;

       case F:
         sbi(OUT, MOTOR_FR);
         cbi(OUT, MOTOR_BR);
         cbi(OUT, MOTOR_BL);
         sbi(OUT, MOTOR_FL);
         break;

       case FR:
         cbi(OUT, MOTOR_FR);
         cbi(OUT, MOTOR_BR);
         cbi(OUT, MOTOR_BL);
         sbi(OUT, MOTOR_FL);
         break;

       case FL:
         sbi(OUT, MOTOR_FR);
         cbi(OUT, MOTOR_BR);
         cbi(OUT, MOTOR_BL);
         cbi(OUT, MOTOR_FL);
         break;

            
       }
}

//------------------------------------------------------------------------------
// "STOP", ЕСЛИ НЕТ СИГНАЛА
//------------------------------------------------------------------------------
unsigned char walk(void){
        // этот цикл организует STOP пока
        // нет сигнала ни от одного из датчиков освещенности
        while((bit_is_clear(IN, LIGHT_R)) && (bit_is_clear(IN, LIGHT_L))){
            go(STOP);      

            cbi(PORTD, LED); // зажигаем светодиод на PD4
            Delay_10ms(125);   // движемся в этом направлении 2.5 сек
            sbi(PORTD, LED); // гасим светодиод на PD4
            Delay_10ms(125);   // движемся в этом направлении 2.5 сек
        }
        // этот цикл организует движение на свет, пока
        // есть сигнал хотя бы от одного из датчиков освещенности
        while((bit_is_set(IN, LIGHT_R)) || (bit_is_set(IN, LIGHT_L))){
            if((bit_is_set(IN, LIGHT_R)) && (bit_is_set(IN, LIGHT_L))) go(F);
            else if(bit_is_set(IN, LIGHT_R)) go(FR);
            else if(bit_is_set(IN, LIGHT_L)) go(FL);

        }

        return(0);
}

//------------------------------------------------------------------------------
// Главная программа
//------------------------------------------------------------------------------
int main(void)
{

       DDRA  = 0xff;  // назначаем все линии порта A на выход
       PORTA = 0x00;  // и устанавливаем на них низкий уровень

       DDRD  = 0x10;  // назначаем все линии порта D на вход, кроме PD4
       PORTD = 0xef;  // подключаем внутренние нагрузочные резисторы, кроме PD4              

       // для подсчета числа миганий в цикле
       unsigned char i;

       for (i=0;i<5;i++){   // Подмигиваем пять раз
         cbi(PORTD, LED); // Зажигаем LED
         Delay_10ms(250);  // пауза
         sbi(PORTD, LED); // гасим LED
         Delay_10ms(250);  // пауза
         }

       // запускаем главный цикл
       while(1) walk();

}

Добавлено (08.06.2008, 21:40)
---------------------------------------------
Хочу поставить ещё третий датчик по центру. Чтоб робот видел линию, а не только следовал по краям линии

Прикрепления: 8221413.rar (14.7 Kb)
 
DZHohnДата: Пятница, 13.06.2008, 20:39 | Сообщение # 27








Зарегистрирован 12.06.2008
Группа: Новички
Сообщений: 88
Город: Серноводск
Статус: Offline
Quote (Space)
Через недели 2 пойду и куплю ещё 2 сервы и переделаю их

зачем сервы???? wacko просто моторчики нельзя чтоли? wink


Я верю в пацифизм, добро должно победить
Но как мне жить!? Как мне сейчас жить!?
Так надоело ждать, так надоел страх
Спасайся сам, а это значит
Возьми кирпич и дай им сдачи!
Бери кирпич и дай им!

деньги нужны всем

 
SpaceДата: Понедельник, 16.06.2008, 13:52 | Сообщение # 28








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Потому что с моторчиками просто не потянет всё. Слишком вес для них большой. Нужны либо сервы, либо готовая платформа типо радиуправляемых игрушек, либо самодельные редукторы.

Добавлено (15.06.2008, 10:13)
---------------------------------------------
Написал прогу под три датчика. Пока опробовал с помощью кнопок. Плату использовал новую

Добавлено (16.06.2008, 13:52)
---------------------------------------------
- вот это ане напомнило старые машинки у которых пульт управление на проводе был. smile3 Настольгия senile
едим по прямой. программа написанна для трёх датчиков
- едим по часовой и против
Сама программа под эту плату:

Code
// Программа следования по линии для Проекта мобильного робота "R1-B1"
// Автор Space:
// -мк ATmega16
// -используется кварц на 8мГц
// -компилятор WinAVR V2.0.5
// Программа 2008 для робота R1-B1 - www.robptsspace.ucoz.ru
//------------------------------------------------------------------------
#include <avr/io.h>
#define bit_is_clear(sfr, bit) \
(!(sfr & _BV(bit)))
#define bit_is_set(sfr, bit) (sfr & _BV(bit))
// назначение определений для танкового привода
#define OUT PORTA
#define MOTOR_FR PA0 // вперед-вправо
#define MOTOR_BR PA1 // назад-вправо
#define MOTOR_BL PA2 // назад-влево
#define MOTOR_FL PA3 // вперед-влево

#define IN PIND
#define LIGHT_R PD4 // правый фотодиод
#define LIGHT_Center PD5 // центральный фотодиод
#define LIGHT_L PD6 // левый фотодиод
#define LED PD2 // светодиод

// Возможные режимы движения для танкового привода

enum {STOP, F, FR, FL};

//------------------------------------------------------------------------------
// Задержка t х 10ms
//------------------------------------------------------------------------------
//#define F_CPU 8000000
#define K_DELAY_10ms    F_CPU/600
void Delay_10ms(unsigned char t) {
if (t==0) return;
unsigned int i;
while (t--) for(i=0;i<K_DELAY_10ms; i++);
}

//------------------------------------------------------------------------------
// Включение комбинации моторов для движения в заданном направлении
//------------------------------------------------------------------------------
void go(unsigned char direction){

switch (direction) {
case STOP:
cbi(OUT, MOTOR_FR);
cbi(OUT, MOTOR_BR);
cbi(OUT, MOTOR_BL);
cbi(OUT, MOTOR_FL);
break;

case F:
sbi(OUT, MOTOR_FR);
cbi(OUT, MOTOR_BR);
cbi(OUT, MOTOR_BL);
sbi(OUT, MOTOR_FL);
break;

case FR:
cbi(OUT, MOTOR_FR);
cbi(OUT, MOTOR_BR);
cbi(OUT, MOTOR_BL);
sbi(OUT, MOTOR_FL);
break;

case FL:
sbi(OUT, MOTOR_FR);
cbi(OUT, MOTOR_BR);
cbi(OUT, MOTOR_BL);
cbi(OUT, MOTOR_FL);
break;

}
}

//------------------------------------------------------------------------------
// "STOP", ЕСЛИ НЕТ СИГНАЛА
//------------------------------------------------------------------------------
unsigned char walk(void){
// этот цикл организует остановку
while((bit_is_clear(IN, LIGHT_R)) && (bit_is_clear(IN, LIGHT_Center)) && (bit_is_clear(IN, LIGHT_L))){
go(STOP);

cbi(PORTD, LED); // зажигаем светодиод на PD4
Delay_10ms(125); // движемся в этом направлении 2.5 сек
sbi(PORTD, LED); // гасим светодиод на PD4
Delay_10ms(125); // движемся в этом направлении 2.5 сек
}
// этот цикл организует движение на свет, пока
// есть сигнал хотя бы от одного из датчиков освещенности
while((bit_is_set(IN, LIGHT_L)) || (bit_is_clear(IN, LIGHT_Center)) || (bit_is_set(IN, LIGHT_R))){
if((bit_is_set(IN, LIGHT_L)) && (bit_is_set(IN, LIGHT_Center)) && (bit_is_set(IN, LIGHT_R))) go(STOP); // останавливается
else if((bit_is_clear(IN, LIGHT_R)) && (bit_is_clear(IN, LIGHT_Center)) && (bit_is_clear(IN, LIGHT_L))) go(F);
else if((bit_is_set(IN, LIGHT_L)) && (bit_is_clear(IN, LIGHT_Center)) && (bit_is_set(IN, LIGHT_R))) go(F); // вперёд по чёрной линии
else if((bit_is_set(IN, LIGHT_L)) && (bit_is_set(IN, LIGHT_Center)) && (bit_is_clear(IN, LIGHT_R))) go(FR); // направо по чёрной линии
else if((bit_is_clear(IN, LIGHT_L)) && (bit_is_set(IN, LIGHT_Center)) && (bit_is_set(IN, LIGHT_R))) go(FL); // налево по чёрной линии
else if((bit_is_set(IN, LIGHT_L))) go(FR); // направо по чёрной линии
else if((bit_is_set(IN, LIGHT_R))) go(FL); // налево по чёрной линии
}
return(0);
}

//------------------------------------------------------------------------------
// Главная программа
//------------------------------------------------------------------------------
int main(void)
{

DDRA = 0xff; // назначаем все линии порта A на выход
PORTA = 0x00; // и устанавливаем на них низкий уровень

DDRD = 0x04; // назначаем все линии порта D на вход, кроме PD2
PORTD = 0xfb; // подключаем внутренние нагрузочные резисторы, кроме PD2

// Задержка на старте 5 сек
// чтобы успеть отбежать в сторону :)

// для подсчета числа миганий в цикле
unsigned char i;

for (i=0;i<5;i++){ // Подмигиваем пять раз
cbi(PORTD, LED); // Зажигаем LED
Delay_10ms(250); // пауза
sbi(PORTD, LED); // гасим LED
Delay_10ms(250); // пауза
}

// запускаем главный цикл
while(1) walk();

}
Прикрепления: proga.rar (14.9 Kb)
 
LesДата: Четверг, 19.06.2008, 15:38 | Сообщение # 29








Группа: Удаленные
Quote (Space)
вот это ане напомнило старые машинки у которых пульт управление на проводе был. smile3 Настольгия senile

А что прикольно. Вот вам и игрушка детская. Только надо платформу меньше и провод длиньше senile senile senile
 
DZHohnДата: Воскресенье, 22.06.2008, 19:28 | Сообщение # 30








Зарегистрирован 12.06.2008
Группа: Новички
Сообщений: 88
Город: Серноводск
Статус: Offline
Quote (Space)
Потому что с моторчиками просто не потянет всё. Слишком вес для них большой. Нужны либо сервы, либо готовая платформа типо радиуправляемых игрушек, либо самодельные редукторы.

понял yes3 пробую сделать редуктор, ничего не получается sorry


Я верю в пацифизм, добро должно победить
Но как мне жить!? Как мне сейчас жить!?
Так надоело ждать, так надоел страх
Спасайся сам, а это значит
Возьми кирпич и дай им сдачи!
Бери кирпич и дай им!

деньги нужны всем

 
Форум » Мастерская » Наши достижения » Монстр :) R1-B1.
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: