Съдържание:

TA-ZON-BOT (последовател на линия): 3 стъпки (със снимки)
TA-ZON-BOT (последовател на линия): 3 стъпки (със снимки)

Видео: TA-ZON-BOT (последовател на линия): 3 стъпки (със снимки)

Видео: TA-ZON-BOT (последовател на линия): 3 стъпки (със снимки)
Видео: Моята работа е да наблюдавам гората и тук се случва нещо странно. 2024, Юли
Anonim
TA-ZON-BOT (последовател на линия)
TA-ZON-BOT (последовател на линия)
TA-ZON-BOT (последовател на линия)
TA-ZON-BOT (последовател на линия)

ТА-ЗОН-БОТ

El tazón siguelineas

Hemos realizado este robot siguelineas con la ayuda de los nuestros alumnos, (gracias minimakers).

Ha sido un proyecto express para poder participar en la OSHWDEN de A Coruña.

oshwdem.org/2017/06/oshwdem-2017/

traductor google

ТА-ЗОН-БОТ

Купата следва ред

Направихме този робот да ви следва с помощта на нашите ученици (благодарение на минимейкърите).

Това е експресен проект за участие в OSHWDEN на А Коруня.

oshwdem.org/2017/06/oshwdem-2017/

Гугъл преводач

Стъпка 1: Стъпка 1: Компоненти

Стъпка 1: Компоненти
Стъпка 1: Компоненти
Стъпка 1: Компоненти
Стъпка 1: Компоненти
Стъпка 1: Компоненти
Стъпка 1: Компоненти

Лос компоненти, използващи hemos

han sido los siguientes.

Una pieza redonda de metacrilato. (Podéis utilizar cualquier diseño, nuestra base mide lo justo para colocar el tazón bocabajo).

1 Tazón de desayuno (que sirve para koncentrar al robot en la linea).

2 ruedas de un juguete reciclado.

2 motores con las siguientes especificaciones:

Спецификации (Параграф 6V):

Размери: 26 x 10 x 12 мм

Съотношение на редукторите: 30: 1

Diámetro del eje: 3 мм (con ranura de bloqueo)

Номинално напрежение: 6Vcc (puede funcionar entre 3 a 9Vcc)

Скорост на жироскопа: 1000 оборота в минута

Потребителска грешка: 120mA (1600mA con carga)

Въртящ момент: 0,6 кг/см (макс.)

Песо: 10 грама

Enlace de tienda онлайн:

1 плака Arduino UNO (reciclada de un proyecto antiguo)

1 щит за мотор Adafruit v2.3:

1 Un porta pilas de 8 pilas AAA (no utilizamos 2 fuentes de alimentación).

6 tornillos y tuercas para unir los elementos como se ve en la la imageen

bridas para los motores, una goma elástica para sujetar el porta pilas y un trozo de una lamina de plásticos para la base del porta pilas.

1 матрица за сензори QTR-8RC con las siguientes características;

Спецификации за матрицата на сензора за отразяване на QTR-8x • Размери: 2,95 "x 0,5" • Работно напрежение: 3,3-5,0 V • Захранващ ток: 100 mA • Изходен формат за QTR-8A: 8 аналогови напрежения, вариращи от 0 V до подадено напрежение • Изходен формат за QTR-8RC: 8 цифрови I/O-съвместими сигнала, които могат да се четат като синхронизиран висок импулс • Оптимално разстояние на засичане: 0,125 "(3 мм) • Максимално препоръчително разстояние за откриване за QTR-8A: 0,25" (6 мм) • Максимално препоръчително разстояние за измерване за QTR-8RC: 975 мм (0.375 ")

tienda.bricogeek.com/componentes/257-array-…

Ensamblar todo… próximamente un vídeo más detalado…

Компонентите, които използвахме, са следните.

Кръгло парче метакрилат. (Можете да използвате всеки дизайн, нашите основни мерки са достатъчно, за да поставите купата с главата надолу).

1 Купа за закуска (използвана за концентриране на робота върху линията).

2 колела от рециклирана играчка.

2 двигателя със следните спецификации:

Спецификации (за 6V): Размери: 26 x 10 x 12 mm Съотношение на редуктора: 30: 1 Диаметър на вала: 3 мм (със заключващ жлеб) Номинално напрежение: 6Vdc (може да работи между 3 до 9Vdc) Скорост на въртене без товар: 1000 об / мин Консумация без товар: 120mA (1600mA с товар) Въртящ момент: 0.6kg / cm (max) Тегло: 10 грама

Връзка към онлайн магазин:

1 дъска Arduino UNO (рециклирана от стар проект)

1 щит за двигатели Adafruit v2.3:

1 Поставка за батерии с 8 батерии AAA (не използваме 2 захранвания).

6 винта и гайки за свързване на елементите, както се вижда на изображението

фланци за двигателите, еластична гума за държане на държача на батерията и парче пластмасов лист за основата на държача на батерията.

1 масив от QTR-8RC сензори със следните характеристики;

Спецификации за матрица от сензори за отразяване на QTR-8x • Размери: 2,95 "x 0,5" • Работно напрежение: 3,3-5,0 V • Захранващ ток: 100 mA • Изходен формат за QTR-8A: 8 аналогови напрежения, вариращи от 0 V до подадено напрежение • Изходен формат за QTR-8RC: 8 цифрови I / O-съвместими сигнала, които могат да се четат като синхронизиран висок импулс • Оптимално разстояние на засичане: 0,125 "(3 мм) • Максимално препоръчително разстояние за откриване за QTR-8A: 0,25" (6 мм) • Максимално препоръчително разстояние за измерване за QTR-8RC: 975 мм (0,375 инча)

tienda.bricogeek.com/componentes/257-array-de-sensores-infrarojos-qtr-8rc-digital.html

Съберете всичко … скоро по -подробно видео …

Стъпка 2: Стъпка 2: Вдъхновение

Para probar el funcionamiento del los

motores hemos seguido esta ayuda del blog www.programarfacil.com

programarfacil.com/blog/arduino-blog/adafr…

Es un resumen muy bueno de los diferentes motores que controla esta shield.

За калибратор на сензора QTR-8RC можете да намерите инструкции за употреба

Y un ultimo enlace que os puede ayudar es este instructable;

www.instructables.com/id/Arduino-based-lin…

За да тестваме работата на двигателите, последвахме тази поддръжка на блога www.programarfacil.com

programarfacil.com/blog/arduino-blog/adafruit-motor-shield-arduino/

Това е много добро обобщение на различните двигатели, които този щит контролира.

За да калибрирате сензора QTR-8RC, можете да следвате ръководството на

www.youtube.com/watch?v=_ZeybIDd80s&list=PLlNY7ygeCIzCuq0jSjPD8_LfcAsPKUcGL&index=6

И една последна връзка, която може да ви помогне, е тази инструкция;

www.instructables.com/id/Arduino-based-line-follower-using-Pololu-QTR-8RC-l/

Стъпка 3: Стъпка 3: Код

Image
Image

las conexiones entre el array de

sensores y las placas las hicimos de la siguiente manera:

El Led ON цифров 12 вал

Los 8 sensores van desde el

numero 1 al pin 8

numero 2 al pin 9

numero 3 al pin 2

numero 4 al pin 3

numero 5 al pin 4

numero 6 al pin 5

numero 7 al pin 6

numero 8 или щифт 7

El código va sin repasarlo (se aceptan sugerencias)

#включва

#включва

#включва

#включва

// Създайте обект на щита на двигателя с I2C адрес по подразбиране

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// Или го създайте с различен I2C адрес (да речем за подреждане)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Изберете кой „порт“M1, M2, M3 или M4. В този случай M1

Adafruit_DCMotor *motor1 = AFMS.getMotor (1);

// Можете също да направите друг двигател на порт M2

Adafruit_DCMotor *motor2 = AFMS.getMotor (2);

// Променете стойностите по -долу, за да отговарят на двигателите на вашия робот, теглото, типа на колелото и т.н.

#дефинирайте КП.2

#дефинирайте KD 5

#дефинирайте M1_DEFAULT_SPEED 50

#дефинирайте M2_DEFAULT_SPEED 50

#дефинирайте M1_MAX_SPEED 70

#дефинирайте M2_MAX_SPEED 70

#дефинирайте MIDDLE_SENSOR 4

#define NUM_SENSORS 8 // брой използвани сензори

#define TIMEOUT 2500 // изчаква 2500 us за изходите на сензора да се понижат

#define EMITTER_PIN 12 // излъчвателят се управлява от цифров пин 2

#define DEBUG 0 // зададен на 1, ако е необходим сериен изход за отстраняване на грешки

QTRSensorsRC qtrrc ((беззнаков char ) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);

беззначен int sensorValues [NUM_SENSORS];

void setup ()

{

забавяне (1000);

ръчно_калибриране ();

set_motors (0, 0);

}

int lastError = 0;

int last_proportional = 0;

int интеграл = 0;

void loop ()

{

Serial.begin (9600); // настройка на серийна библиотека при 9600 bps

Serial.println ("Adafruit Motorshield v2 - DC Motor test!");

AFMS.begin (); // създаваме с честота по подразбиране 1.6KHz

//AFMS.begin(1000); // ИЛИ с различна честота, да речем 1KHz

// Задайте началната скорост, от 0 (изключено) до 255 (максимална скорост)

motor1-> setSpeed (70);

мотор1-> бягане (НАПРЕД);

// включване на двигателя

мотор1-> бягане (РЕЛИЗАЦИЯ);

motor2-> setSpeed (70);

motor2-> бягане (НАПРЕД);

// включване на двигателя

motor2-> бягане (РЕЛИЗАЦИЯ);

беззнакови int сензори [5];

int position = qtrrc.readLine (сензори);

int грешка = позиция - 2000;

int motorSpeed = KP * грешка + KD * (грешка - lastError);

lastError = грешка;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// задаваме оборотите на двигателя, като използваме двете променливи за скоростта на двигателя по -горе

set_motors (leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

ако (скорост на мотор> M1_MAX_SPEED) скорост на мотор1 = M1_MAX_SPEED; // ограничаване на максималната скорост

ако (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // ограничаване на максималната скорост

ако (motor1speed <0) motor1speed = 0; // задръжте двигателя над 0

if (motor2speed <0) motor2speed = 0; // поддържа скорост на двигателя над 0

motor1-> setSpeed (motor1speed); // задаване на скоростта на двигателя

motor2-> setSpeed (motor2speed); // задаване на скоростта на двигателя

мотор1-> бягане (НАПРЕД);

motor2-> бягане (НАПРЕД);

}

void manual_calibration () {

int i;

for (i = 0; i <250; i ++) // калибрирането ще отнеме няколко секунди

{

qtrrc.calibrate (QTR_EMITTERS_ON);

забавяне (20);

}

if (DEBUG) {// ако е вярно, генерирайте сензорни точки чрез сериен изход

Serial.begin (9600);

за (int i = 0; i <NUM_SENSORS; i ++)

{

Serial.print (qtrrc.calibratedMinimumOn );

Serial.print ('');

}

Serial.println ();

за (int i = 0; i <NUM_SENSORS; i ++)

{

Serial.print (qtrrc.calibratedMaximumOn );

Serial.print ('');

}

Serial.println ();

Serial.println ();

}

}

Bueno a ver que tal se nos da este proyecto „express“en la Competición del OSHWDEM.

Препоръчано: