Spisu treści:

TA-ZON-BOT (Line Follower): 3 kroki (ze zdjęciami)
TA-ZON-BOT (Line Follower): 3 kroki (ze zdjęciami)

Wideo: TA-ZON-BOT (Line Follower): 3 kroki (ze zdjęciami)

Wideo: TA-ZON-BOT (Line Follower): 3 kroki (ze zdjęciami)
Wideo: dowody, że szkoła jest niepotrzebna 😳 (pokaz to rodzicom) 2024, Listopad
Anonim
TA-ZON-BOT (śledzący linię)
TA-ZON-BOT (śledzący linię)
TA-ZON-BOT (śledzący linię)
TA-ZON-BOT (śledzący linię)

TA-ZON-BOT

El tazon siguelineas

Hemos realizado este robot siguelineas con la ayuda de los nuestros absolwentów (gracias minimakers).

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

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

traduktor google

TA-ZON-BOT

Miska podąża za linią

Z pomocą naszych uczniów stworzyliśmy tego robota, który podąża za tobą (dzięki minimakerom).

Udział w OSHWDEN w A Coruña był ekspresowym projektem.

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

tłumacz Google

Krok 1: Krok 1: Komponenty

Krok 1: Komponenty
Krok 1: Komponenty
Krok 1: Komponenty
Krok 1: Komponenty
Krok 1: Komponenty
Krok 1: Komponenty

Los componentes que hemos utilizados

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 concentrar al robot en la linea).

2 ruedas de un juguete reciclado.

2 motores con las siguientes especificaciones:

Specyficzne (Para 6V):

Wymiary: 26 x 10 x 12 mm

Stosunek reduktora: 30:1

Średnica del eje: 3mm (con ranura de bloqueo)

Napięcie nominalne: 6Vcc (puede funcionar entre 3 a 9Vcc)

Velocidad de giro sin carga: 1000 obr./min

Consumo sin carga: 120mA (1600mA con carga)

Moment obrotowy: 0,6 kg/cm (maks.)

Peso: 10 gram

Enlace de tienda online:

1 placa Arduino UNO (reciclada de un proyecto antiguo)

1 osłona dla silników 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 imagen

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 array de sensores QTR-8RC con las siguientes características;

Specyfikacje matrycy czujnika odbicia QTR-8x • Wymiary: 2,95" x 0,5" • Napięcie robocze: 3,3-5,0 V • Prąd zasilania: 100 mA • Format wyjściowy dla QTR-8A: 8 napięć analogowych od 0 V do napięcia zasilania • Format wyjściowy dla QTR-8RC: 8 cyfrowych sygnałów zgodnych z We/Wy, które mogą być odczytywane jako czasowy wysoki impuls • Optymalna odległość wykrywania: 0,125" (3 mm) • Maksymalna zalecana odległość wykrywania dla QTR-8A: 0,25" (6 mm) • Maksymalna zalecana odległość wykrywania dla QTR-8RC: 0,375" (9,5 mm) • Waga bez kołków głowicy: 0,11 uncji (3,1 g) Lo podéis encontrar en:

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

Ensamblar todo … prróximamente un vídeo más detallado…

Komponenty, których użyliśmy, były następujące.

Okrągły kawałek metakrylanu. (Możesz użyć dowolnego wzoru, nasza podstawa wystarczy, aby umieścić miskę do góry nogami).

1 miska śniadaniowa (używana do skoncentrowania robota na linii).

2 kółka zabawki z recyklingu.

2 silniki o następujących specyfikacjach:

Dane techniczne (dla 6V): Wymiary: 26 x 10 x 12 mm Przełożenie reduktora: 30: 1 Średnica wału: 3mm (z rowkiem blokującym) Napięcie znamionowe: 6Vdc (może pracować w zakresie od 3 do 9Vdc) Prędkość obrotowa bez obciążenia: 1000rpm Zużycie bez obciążenia: 120mA (1600mA z obciążeniem) Moment obrotowy: 0,6kg/cm (max) Waga: 10 gramów

Link do sklepu internetowego:

1 płytka Arduino UNO (recykling ze starego projektu)

1 osłona dla silników Adafruit v2.3:

1 Pojemnik na 8 baterii AAA (nie używamy 2 zasilaczy).

6 śrub i nakrętek do łączenia elementów, jak widać na obrazku

kołnierze do silników, elastyczną gumę do trzymania uchwytu baterii i kawałek arkusza plastiku na podstawę uchwytu baterii.

1 tablica czujników QTR-8RC o następującej charakterystyce;

Dane techniczne matrycy czujnika odbicia QTR-8x • Wymiary: 2,95 "x 0,5" • Napięcie robocze: 3,3-5,0 V • Prąd zasilania: 100 mA • Format wyjściowy dla QTR-8A: 8 napięć analogowych od 0 V do napięcia zasilania • Format wyjściowy dla QTR-8RC: 8 cyfrowych sygnałów zgodnych z We/Wy, które mogą być odczytywane jako czasowy wysoki impuls • Optymalna odległość wykrywania: 0,125 "(3 mm) • Maksymalna zalecana odległość wykrywania dla QTR-8A: 0,25" (6 mm) • Maksymalna zalecana odległość wykrywania dla QTR-8RC: 0,375 "(9,5 mm) • Waga bez kołków głowicy: 0,11 uncji (3,1 g) Można go znaleźć w:

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

Złóż wszystko… wkrótce bardziej szczegółowy film…

Krok 2: Krok 2: Inspiracja

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.

Para calibrar el sensor QTR-8RC podéis seguir el tutorial de

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

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

Aby przetestować wydajność silników, śledziliśmy ten blog wsparcia www.programarfacil.com

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

To bardzo dobre podsumowanie różnych silników, którymi steruje ta tarcza.

Aby skalibrować czujnik QTR-8RC, skorzystaj z samouczka

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

I ostatni link, który może ci pomóc, to ten instruktażowy;

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

Krok 3: Krok 3: Kod

Image
Image

las conexiones entre el array de

sensores y las placas las hicimos de la siguiente manera:

El Led ON va al pin cyfrowy 12

Los 8 sensores van desde el

numer 1 al pin 8

numer 2 al pin 9

numer 3 al pin 2

numer 4 al pin 3

numer 5 al pin 4

numer 6 al pin 5

numer 7 al pin 6

numer 8 al pin 7

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

#włączać

#włączać

#włączać

#włączać

// Utwórz obiekt osłony silnika z domyślnym adresem I2C

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Lub utwórz go z innym adresem I2C (powiedzmy do układania w stos)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Wybierz 'port' M1, M2, M3 lub M4. W tym przypadku M1

Adafruit_DCMotor *silnik1 = AFMS.getMotor(1);

// Możesz również zrobić inny silnik na porcie M2

Adafruit_DCMotor *silnik2 = AFMS.getMotor(2);

// Zmień poniższe wartości, aby dopasować je do silników, wagi, typu kół itp.

#zdefiniuj KP.2

#zdefiniuj KD 5

#zdefiniuj M1_DEFAULT_SPEED 50

#zdefiniuj M2_DEFAULT_SPEED 50

#zdefiniuj M1_MAX_SPEED 70

#zdefiniuj M2_MAX_SPEED 70

#define MIDDLE_SENSOR 4

#define NUM_SENSORS 8 // liczba używanych czujników

#define TIMEOUT 2500 // czeka na 2500 nas, aż wyjścia czujnika spadną

#define EMITTER_PIN 12 // emiter jest kontrolowany przez cyfrowy pin 2

#define DEBUG 0 // ustaw na 1, jeśli potrzebne jest wyjście debugowania szeregowego

QTRSensorsRC qtrrc((unsigned char) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);

unsigned int sensorValues[NUM_SENSORS];

pusta konfiguracja()

{

opóźnienie (1000);

ręczna_kalibracja();

set_motors(0, 0);

}

int ostatni błąd = 0;

int last_proportional = 0;

całka int = 0;

pusta pętla()

{

Serial.początek(9600); // skonfiguruj bibliotekę szeregową na 9600 bps

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

AFMS.początek(); // utwórz z domyślną częstotliwością 1,6KHz

//AFMS.początek(1000); // LUB z inną częstotliwością, powiedzmy 1KHz

// Ustaw prędkość startową, od 0 (wył.) do 255 (maks. prędkość)

silnik1->ustawiona prędkość(70);

motor1->run(DO PRZODU);

// włącz silnik

motor1->run(RELEASE);

silnik2->ustawiona prędkość(70);

silnik2->uruchom(NAPRZÓD);

// włącz silnik

motor2->run(RELEASE);

niepodpisane czujniki int[5];

int pozycja = qtrrc.readLine(czujniki);

błąd int = pozycja - 2000;

int motorSpeed = KP * błąd + KD * (błąd - lastError);

ostatni błąd = błąd;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - prędkość silnika;

// ustaw prędkość silnika za pomocą dwóch powyższych zmiennych prędkości silnika

set_motors(leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

jeśli (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // ogranicz prędkość maksymalną

jeśli (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // ogranicz prędkość maksymalną

jeśli (motor1speed < 0) motor1speed = 0; // utrzymuj silnik powyżej 0

jeśli (motor2speed < 0) motor2speed = 0; // utrzymuj prędkość silnika powyżej 0

motor1-> setSpeed (silnik1speed); // ustaw prędkość silnika

motor2-> setSpeed (silnik2speed); // ustaw prędkość silnika

motor1->run(DO PRZODU);

silnik2->uruchom(NAPRZÓD);

}

nieważna ręczna_kalibracja() {

wew;

dla (i = 0; i < 250; i++) // kalibracja zajmie kilka sekund

{

qtrrc.kalibracja(QTR_EMITTERS_ON);

opóźnienie(20);

}

if (DEBUG) { // jeśli true, generuj dane czujnika przez wyjście szeregowe

Serial.początek(9600);

for (int i = 0; i < NUM_SENSORS; i++)

{

Serial.print(qtrrc.kalibrowaneMinimumOn);

Serial.print(' ');

}

Serial.println();

for (int i = 0; i < NUM_SENSORS; i++)

{

Serial.print(qtrrc.kalibrowaneMaximumOn);

Serial.print(' ');

}

Serial.println();

Serial.println();

}

}

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

Zalecana: