Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин


[ Раскрыть online-чат / Закрыть ] · [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 5 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Модератор форума: nightmare, Huntswarrior, Aleks_Crow, {{TNT}}  
Форум » Проекты по робототехнике » Частные проекты » Робот на ардуино (*icon-0*)
Робот на ардуино
Отправлено 03.06.2012 - 20:2961
Участник
79 сообщений
Мужчина
Quote (izobretatel-1)
у l293d два вывода питания: один на питание самой микрухи (5в) другое питание для моторов (их я питаю от 4 аккум. батареек), совмещать их нельзя.Добавлено (03.06.2012, 19:56)

L293D питание логической части щт Vss 4,5 - 7 В., силовой Vs - 4,5 - 36 вольт. В вашем случае при питании от 4 эллементов можно применить схему общево питания силовой и логической части. Я так делал на роботе с ИК бампером. Ездит нормально.
А в своем ответе я имел ввиду, что дальномер я посадил бы на вывод ардуины 5 В, а питание сервы и логической части микрухи запитал отдельно через кренку от этого же источника :kind:[p.s.] Не знаю как правильно выразиться отдельно отвел провод + от аккума и через кренку подал питание на L293D


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 03.06.2012 - 20:4362
Участник
17 сообщений
Мужчина
Евгений74, ты какое питание се ставил


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 03.06.2012 - 20:5063
Участник
79 сообщений
Мужчина
Maxymilian, 6 штук ААА, вроде в статье писал про это


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 03.06.2012 - 20:5764
БЛОГГЕР
101 сообщений
Мужчина
Quote (izobretatel-1)
Elektro, Дуина сервы не потянет(у меня не получилось). Для работы нескольких серв нужно питание подавать на них отдельно.
согласен с этим мнением. Но у меня было два вида серв, одна мини - она работала от встроенного стаба ардуины +5в, и две ХОРОШЕНЬКИЕ сервы (уже по крупнее) от встроенного стаба завести не получилось, потом я эти две ХОРОШЕНЬКИЕ сервы запитал от сетевого стобилизатора на 6в,

вы поймите ардуине и не нужно тянуть сервы, она лишь подает на них управляющий сигнал! если у вас мощный источник питания, то от него можно за питать ардуину и 100 сервоприводов, лиж бы источник потянул, а ардуина тут не причем. но если вы всю нагрузку вешете через пин +5 в на ардуине тогда это не справляется встроенный стабилизатор. а не дуина!


Профиль Личное сообщение Дом. страница icq Skype
9
Отправлено 03.06.2012 - 21:0765
Участник
79 сообщений
Мужчина
Elektro, Смотри что получается 7 серв - это манипулятор, 3 дальномера это 3 аналоговых входа, драйвер это 4 pin (у меня 6, дополнительно два я как понял используются для моторстоп, моторрун), 2 pin это блютуз, и еще 1 серва для вращения дальномера. Да если пожертвовать аналоговыми входами, то вроде все умещается. Про то, что ШИМ можно сгенерировать не знал, спасибо за совет. kind [p.s.] Ответил на почту


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 03.06.2012 - 21:2166
БЛОГГЕР
101 сообщений
Мужчина
Quote (Евгений74)
моторстоп, моторрун

это типа электро тормоз? в принципе он и не нужен в простом рботе))
Quote (Евгений74)
Да если пожертвовать аналоговыми входами, то вроде все умещается.

еще есть такой вариант как расширение выходов с помощью сдиговых регистров например. http://robocraft.ru/blog/arduino/541.html

Добавлено (03.06.2012, 21:21)
---------------------------------------------
ну и если не хватает ардуины уно то есть и ардуино мега tongue



Профиль Личное сообщение Дом. страница icq Skype
9
Отправлено 19.06.2012 - 21:5167
Участник
79 сообщений
Мужчина
Изменения: переписал программу для поиска предметов. Впереди установил две оптопары, в качестве датчиков поверхности. Теперь робот сам может убирать со стола. kind


Вот видео, код выложу попозже, откомментировать надо. Может кому пригодится.



3279344.jpg (94.2 Kb)
Профиль Личное сообщение Дом. страница icq Skype
14
Администраторы
3417 сообщений
Мужчина
biggrin


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 19.06.2012 - 22:4669
БЛОГГЕР
101 сообщений
Мужчина
молодец! biggrin


Профиль Личное сообщение Дом. страница icq Skype
9
Отправлено 20.06.2012 - 08:3570
БЛОГГЕР
90 сообщений
Мужчина
я не понимаю что он говорит wacko переведите пожалуйста) было бы здорово если бы он мусор собирал "на себя" ,в богажник, а потом выкидывал в урну smile но все равно здорово!


моя группа Вконтакте посвещённая робототехнике http://vkontakte.ru/BeamRobots
Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 23.06.2012 - 09:3871
Участник
79 сообщений
Мужчина
izobretatel-1, Озвучку вырезал из мультфильма робот Wall-e (робот уборщик). Он просто произносит Waall-e. laugh . Урна да было бы здорово. Это следующий шаг. Понадобятся энкодеры, возможно компас. Робот сваливает мусор в определенных координатах, где находится ведро под мусор.

Добавлено (21.06.2012, 16:17)
---------------------------------------------
Вот код к работе робота, к видео выложенному выше. При написании программы кроме освоенных операторов if - else, циклов for, был применен цикл while. Что по мне, так очень удобный цикл. Код откомментирован, но возможно не идеальный. wink . Так как опыт программирования не большой.

Code
#include <Servo.h>
#include <LMotorShield.h>

LMotorShield lms;
int ledPin = 13;                // Кнопка включения мп3
int ledPin1 = 12;                // кнопка перемотки мп3
int i;
int j;
int p[18]; // массив, здесь будем записывать данные с ИК дальномера в разных его положениях   
int gp,gp1,gp2,g;
int b;
void setup() {
{    
     Serial.begin(9600);
    lms.begin(LMS_SERVOS);
}
pinMode(ledPin,OUTPUT);        
pinMode(ledPin1,OUTPUT);      
pinMode(3,OUTPUT); // Motor A скорость
pinMode(7,OUTPUT); // Motor A направление
pinMode(11,OUTPUT); // Motor B скорость
pinMode(8,OUTPUT); // Motor B направление
pinMode(2,OUTPUT); // Motor A стоп, пуск
pinMode(4,OUTPUT); // Motor B стоп, пуск
}
void Forward() { // Подпрограмма движения робота вперед
digitalWrite(3,HIGH);
digitalWrite(7,LOW);
analogWrite(11,240);// здесь скоростью вращения колеса регулируем прямолинейность движения
digitalWrite(8,LOW);
}
void Backward(){ // Подпрограмма движения робота назад
digitalWrite(3,HIGH);
digitalWrite(7,HIGH);
digitalWrite(11,HIGH);
digitalWrite(8,HIGH);
}
void motorStop(){ // Подпрограмма остановки мотора

digitalWrite(4,HIGH);
digitalWrite(2,HIGH);
}
void motorRun(){ // Подпрограмма запуска мотора

digitalWrite(2,LOW);
digitalWrite(4,LOW);
}
void Spin_Left(){ // Вращение в лево
digitalWrite(11,HIGH);
digitalWrite(8,LOW);
digitalWrite(3,HIGH);
digitalWrite(7,HIGH);
}
void Spin_Right(){ // Вращение в право
digitalWrite(3,HIGH);
digitalWrite(7,LOW);
digitalWrite(11,HIGH);
digitalWrite(8,HIGH);
}
void loop()
{
lms.servoWrite(2,15); // раскрываем лапки
   delay(100);   
   lms.servoWrite(4,160); // раскрываем лапки
   delay(100);     
lms.servoWrite(1,0);
delay(200);
j=0;    
for (j=0;j<18;j++){  // для j от 0 до 18
lms.servoWrite(1,j*10); // вращение сервы по 10 градусов

gp=analogRead(0); // считываем данные с ИК радара
delay(50);
p[j]=gp; // записываем это значение в массив
Serial.println(p[j]); // выводим на экран

gp2=(analogRead(2)); // считываем значение датчиков плоскости
gp1=(analogRead(1));
g=min(gp1,gp2);      // выбираем минимальное значение из двух
   if (g<4){           // Если значение близко к 0, то отходим назад и разворачиваемся
     motorRun();
     Backward();
     delay(500);
     Spin_Left();
     delay(600);
     motorStop();
   }

   if (p[j]<160){     // если значение с дальномера меньше 150, (примерно 25 см.), то шаг вперед   
     motorRun();
     Forward();
     delay (50);
     motorStop();}
else {              // Иначе
     digitalWrite(ledPin1, HIGH); // нажимаем кнопку перемотка
     delay(100);
     digitalWrite(ledPin1, LOW); // отпускаем кнопку перемотка
     delay(100);
     
     lms.servoWrite(1,90); // поворачиваем голову вперед
     delay(200);
            
     gp=analogRead(0);    // считываем данные с ИК радара
     Serial.println(gp);
     while(gp<160){       // поворачиваемся, пока не заметим предмет    
     motorRun();
     if (j>9){            // если предмет с лева, то
     Spin_Left();// поворот в сторону объекта
     }
     else {              // иначе поворот вправо
     Spin_Right();
     }
     delay (10);
     motorStop();
     gp=analogRead(0); // считываем данные с ИК радара   
     delay(50);     
     }
       
   gp=analogRead(0); // считываем данные с ИК радара
   delay(50);
   while(gp<400){    //Двигаемся вперед пока предмет не будет на расстоянии 10 см.
   motorRun();    
   Forward();    // движение до объекта
   delay (50); // время движения
   motorStop();
   gp=analogRead(0); // считываем данные с ИК радара
   delay(50);
   }
   lms.servoWrite(1,0); // убираем голову в сторону, чтобы она не мешала захвату предмета и транспортировке
   delay(100);
   motorRun();    
   Forward();    // движение до объекта
   delay (700); // время движения
   motorStop();
     
   lms.servoWrite(2,140); // захват первой лапой
   delay(500);   
   lms.servoWrite(4,15); // захват второй лапой
   delay(100);
       
   gp2=(analogRead(2));
   gp1=(analogRead(1));
   g=min(gp1,gp2);
   while(g>4) // движение после захвата до конца плоскости.
    {
      gp2=(analogRead(2));
      gp1=(analogRead(1));
      Serial.println(gp2);
      g=min(gp1,gp2);
      motorRun();
      Forward();
      delay(5);
      motorStop();}
        
     lms.servoWrite(2,15); // раскрываем лапки
     delay(100);   
     lms.servoWrite(4,160); // раскрываем лапки
     delay(100);       
      
     digitalWrite(ledPin, HIGH); // нажимаем кнопку стоп
     delay(150);
     digitalWrite(ledPin, LOW); // отпускаем кнопку стоп
     delay(100);
      
     motorRun();
     Backward();
     delay(100);
     Spin_Right();
     delay(600);
   }
   }
   }

Добавлено (23.06.2012, 09:38)
---------------------------------------------
Подскажите компас для Ардуины. Бюджетный и доступный в применении вариант. Сам пока нашел вот такой http://www.goodluckbuy.com/3-axis-....le.html . Может кто сталкивался с таким?



Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 25.06.2012 - 09:4272
Участник
97 сообщений
Мужчина
ага, очень круто


Профиль Личное сообщение Дом. страница icq Skype
2
Отправлено 17.12.2013 - 23:3773
Начальная группа
1 сообщений
Мужчина
Доброй ночи все! Если не сложно подскажите новичку какие запчасти надо прикупить что бы собрать такого??? В начале читал список но некоторые моменты не понятно а именно что за оптопара какой еще драйвер можно применит и что использовалось для воспроизведение звука??? Зарание спасибо


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 12.01.2014 - 12:1074
Участник
79 сообщений
Мужчина
Blender, Начинай собирать по порядку, станет все понятно. Драйвер можно и другой, программный код только придется немного подправить.


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 15.06.2014 - 15:2975
Начальная группа
3 сообщений
Мужчина
Подскажите, к каким пинам подключаются три сервы, дальномер, оптопары???


Профиль Личное сообщение Дом. страница icq Skype
0
Форум » Проекты по робототехнике » Частные проекты » Робот на ардуино (*icon-0*)
  • Страница 5 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск: