roboforum.ru

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

Мой робот!

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Re: Мой робот!

Сообщение Petr Kiselev » 06 июн 2015, 15:09

Вчера вчерне завершил работу над Амфибией. Сегодня провел водные испытания. Протечка за 5 минут составила несколько капель, придется подконопатить. Ватерлиния проходит чуть ниже половины корпуса.
Изображение
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение Petr Kiselev » 16 июн 2015, 20:22

Несколько дней назад провели небольшие испытания Амфибии. Смастерили эстакаду из того, что под руки попало.
Вот видеоролик.
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение Madf » 17 июн 2015, 10:44

да, с поворотом у неё проблема
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Мой робот!

Сообщение Medtech » 17 июн 2015, 10:57

на мой взгляд стоит сделать другой угол наклона ленты гусеницы от верхнего до нижнего внутреннего катка, при проезде выступающих препятствий например ветки она окажется между гусеницами и робот потеряет связь с поверхностью, при поворатах происходит зацепление гусениц тележек, видимо стоит сделать более протяжённый центральный шарнир, на плоской гладкой поверхности поворачивать легко, на местности будут проблемы, тем более вес тележек увеличится и жёсткости шарнира будет не хватать.
Аватара пользователя
Medtech
 
Сообщения: 565
Зарегистрирован: 20 апр 2015, 22:02
Откуда: Москва
Skype: sergelola
ФИО: Сергей

Re: Мой робот!

Сообщение Petr Kiselev » 17 июн 2015, 18:44

Вы правы, нужно будет уменьшить количество траков у гусениц и "спрятать" их за корпуса, тогда они (гусеницы) не будут цеплять друг друга при поворотах. И не надо будет ставить ограничители как я собирался.
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение sned » 17 июн 2015, 22:32

Прикольно,но мне нравится больше колесный вариант даже ваша предыдущая версия предпочтительней гусеничной,приведенный же здесь многоколесный вариант вообще вне конкуренции.
sned
 
Сообщения: 303
Зарегистрирован: 08 апр 2013, 08:09
Откуда: Екатеринбург
ФИО: Сергей

Re: Мой робот!

Сообщение Petr Kiselev » 18 июн 2015, 23:42

Собираюсь начать колесную Амфибию. Собираю детали. Приобрел мотор-редукторы 77 об/мин. Я их называю элитнными. Почти не оказывают влияния на радиоуправление, стальной корпус. Колеса сниму со старых роботов, 125 мм в диаметре. Проклею силиконовым герметиком, чтобы в шины не набиралась вода. Достал сальники.
Опять применю ЦПУ, мне он нравится. Заменяет все рессоры, и работает нормально. Остается решить вопрос - сколько делать осей. Склоняюсь к трех корпусной конструкции, с двумя ЦПУ. Хочу попробовать сделать предельно легкой переднюю часть, чтобы ее, когда нужно будет, поднимать.
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение slom » 19 июн 2015, 10:55

думаю колесная будет более проходимой чем гусеничный....

поделитесь пожалуйста скетчами для ардуин, они у вас в связке 2 шт?
Аватара пользователя
slom
 
Сообщения: 645
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)

Re: Мой робот!

Сообщение Petr Kiselev » 19 июн 2015, 19:34

Нашел вот скетч для нашего Разведчика (однодвижительного с УЗ сенсором)
Скетч 01 От Михаила Шевченко
#include <AFMotor.h>

#include <Servo.h>



AF_DCMotor motor(1);

Servo servo1;



int inputPin=13; // Echo

int outputPin=7; // Trig



int count = 0;



void setup()

{

Serial.begin(9600);

Serial.println("Motor test!");



pinMode(inputPin, INPUT);

pinMode(outputPin, OUTPUT);



servo1.attach(9);

motor.setSpeed(255);



servo1.write(90);

motor.run(RELEASE);



delay(2000);

}



void loop()

{

digitalWrite(outputPin, LOW);

delayMicroseconds(2);

digitalWrite(outputPin, HIGH);

delayMicroseconds(10);

digitalWrite(outputPin, LOW);

int distance = pulseIn(inputPin, HIGH);

distance = distance / 58;

Serial.println(distance);



if (distance == 0 || distance > 50)

{

int e = servo1.read();

if (e < 90) servo1.write(e+10);

if (e > 90) servo1.write(e-10);

}

else // препятствие

{

if ( count == 2 ) servo1.write(170); // вправо

else servo1.write(10); // влево



count += 1;

if ( count == 3 ) count = 0;

}



motor.run(FORWARD);

delay(100);

}

Добавлено спустя 3 минуты 8 секунд:
Попробую найти скетч для двухплатного на Pro mini.
Писать сейчас просто лень.

Добавлено спустя 3 минуты 31 секунду:
Мои студенты пишут что-то вроде таких:
Скетч движения робота до мины и возвращение на «Старт»

int IN1 = 2;
int IN2 = 3;
int IN3 = 4;
int IN4 = 5;
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(3000); // Это условие выполняется 3 секунд.
}
void loop()

{

digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(2000); // 2 секунд движения вперед.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(1000); // Остановка на 1 секунду.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,HIGH); // Двигатель А назад ДА - HIGH
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(100); // Поворот влево 0,1 секунды.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(200); // Остановка на 0.2 секунду.

digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ – LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,HIGH); // Двигатель Б назад ДА - HIGH
delay(200); // Поворот вправо 0.2 секунда.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(1000); // Остановка на 1 секунду.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,HIGH); // Двигатель А назад ДА - HIGH
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(100); // Поворот влево 0,1 секунды.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(1000); // Остановка на 1 секунду.


digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(2000); // 2 секунд движения вперед.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(1000); // Остановка на 1 секунду.

digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,HIGH); // Двигатель Б назад ДА - HIGH
delay(200); // Поворот влево 0.2 секунду.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(1000); // Остановка на 1 секунду.

digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(2000); // 2 секунд движения вперед.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(2000); // Остановка на 2 секунды.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,HIGH); // Двигатель А назад ДА - HIGH
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(500); // Поворот вправо 0.5 секунды (разворот).

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(1000); // Остановка на 1 секунду.

digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(2000); // 2 секунд движения вперед.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ – LOW
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - HIGH
delay(200); // Поворот вправо 0.2 секунда.

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(1000); // Остановка на 1 секунду, после чего идет следующее условие ниже.

digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(3000); // 3 секунд движения вперед (возвращение на исходную позицию).

digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW
digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW
digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW
digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW
delay(2000); // Остановка на 20 секунд.
}

Добавлено спустя 14 минут 44 секунды:
Нашел что-то похожее. Скетчи для прохождения маршрута "Квадрат" при управлении бортами.
Для левого борта:

#include <Stepper.h>

const int stepsPerRevolution = 300; // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 2 through 5:
Stepper myStepper(stepsPerRevolution, 2,3,4,5);

void setup() {
// set the speed at60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}

void loop() {

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(3500);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(350);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(4000);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(350);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(4000);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(350);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(4000);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(350);
delay(500);

// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(0);
delay(5000);
}

А это для правого:

Добавлено спустя 1 минуту 2 секунды:
#include <Stepper.h>

const int stepsPerRevolution = 300; // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 2 through 5:
Stepper myStepper(stepsPerRevolution, 2,3,4,5);

void setup() {
// set the speed at60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}

void loop() {

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(3500);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(0);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(3000);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(0);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(3000);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(0);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(3000);
delay(500);

// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(-350);
delay(500);

// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(0);
delay(5000);
}
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение Petr Kiselev » 21 июн 2015, 17:18

Начал проект "Колесная Амфибия 02" Сделал эскиз.
Как выставить - не знаю. Попробую по-старинке.

Добавлено спустя 4 минуты 6 секунд:
Изображение
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение Petr Kiselev » 24 июл 2015, 20:09

Сделал платформу Амфибии колесной.
Изображение

Добавлено спустя 3 минуты 1 секунду:
А вот некоторые ее возможности. Осуществление поворота.
Изображение
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение slom » 25 июл 2015, 00:02

это уже гусеница! интересно как оно в деле...
Аватара пользователя
slom
 
Сообщения: 645
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)

Re: Мой робот!

Сообщение Petr Kiselev » 25 июл 2015, 00:45

В ближайшем будущем собираюсь по верхней кромке закрепить штапики ниже верха на 5 мм. Это будут буртики для крышек. Так называемая, верхняя герметизация. Ну а затем, размещение Ардуины UNO, Драйверов 2А и аккумуляторов.
Пока не решил, как делать повороты. Танковая система вряд ли подойдет! Соотношение длина/ширина не в пользу ширины. А сила трения у таких колес - приличная! Наверно придется ставить систему поворота по принципу возжжей. Чувствую, смотреться будет архаично.
Недеюсь, что кто-нибудь какую-либо ценную идею подкинет!
Может быть попробовать применить ШИМ по бортам, тем самым значительно уменьшив силлу трения, тормозящего борта?
Что скажете, творческий народ!?
Petr Kiselev
 
Сообщения: 279
Зарегистрирован: 12 июн 2010, 15:34

Re: Мой робот!

Сообщение elmot » 25 июл 2015, 01:57

думается мне, что танковая пойдет лучше чем в танке, но радиус поворота будет определяться макс углом загиба конструкцими и разворот на месте будет недоступен
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Мой робот!

Сообщение Angel71 » 25 июл 2015, 02:08

под танковым разворотом вы подразумеваете вариант, когда одна гусеница неподвижна, а другая вращается? так у вас же есть возможность вращать в разные стороны. те же бтр на месте вполне нормально поворачивают

остаётся только проверить.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Пред.След.

Вернуться в Наши проекты

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

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

cron