Inhaltsverzeichnis:
Video: TA-ZON-BOT (Linienfolger) - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
TA-ZON-BOT
El tazón siguelineas
Hemos realizado este robot siguelineas con la ayuda de los nuestros alumnos, (gracias minimakers).
Haben Sie ein Express-Programm für die Teilnahme an der OSHWDEN de A Coruña.
oshwdem.org/2017/06/oshwdem-2017/
traktor google
TA-ZON-BOT
Die Schüssel folgt der Linie
Wir haben diesen Roboter mit Hilfe unserer Studenten dazu gebracht, Ihnen zu folgen (danke Minimaker).
Es war ein ausdrückliches Projekt, an der OSHWDEN von A Coruña teilzunehmen.
oshwdem.org/2017/06/oshwdem-2017/
Google Übersetzer
Schritt 1: Schritt 1: Komponenten
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:
Besonderheiten (Para 6V):
Abmessungen: 26 x 10 x 12 mm
Reduktorverhältnis: 30:1
Durchmesser des Ejes: 3mm (con ranura de bloqueo)
Voltaje nominal: 6Vcc (puede funcionar entre 3 a 9Vcc)
Velocidad de giro sin carga: 1000 U/min
Verbrauch ohne Fracht: 120mA (1600mA mit Fracht)
Drehmoment: 0,6 kg/cm (max.)
Peso: 10 Gramm
Enlace de tienda online:
1 Platz Arduino UNO (Reciclada de un proyecto antiguo)
1 Schild für Motoren Adafruit v2.3:
1 Un porta pilas de 8 pilas AAA (keine utilizamos 2 Fuentes de alimentación).
6 tornillos y tuercas para unir los elementos como se ve en la imagen
bridas für los motores, una goma elástica para sujetar el porta pilas und ein trozo de una lamina de plásticos para la base del porta pilas.
1 Array von Sensoren QTR-8RC mit den wichtigsten Merkmalen;
Spezifikationen für das QTR-8x Reflexionssensor-Array • Abmessungen: 2,95" x 0,5" • Betriebsspannung: 3,3-5,0 V • Versorgungsstrom: 100 mA • Ausgabeformat für den QTR-8A: 8 analoge Spannungen von 0 V bis zur Versorgungsspannung • Ausgabeformat für den QTR-8RC: 8 digitale I/O-kompatible Signale, die als zeitgesteuerter hoher Impuls gelesen werden können • Optimaler Schaltabstand: 0,125" (3 mm) • Maximal empfohlener Schaltabstand für den QTR-8A: 0,25" (6 mm) • Maximal empfohlener Erfassungsabstand für den QTR-8RC: 0,375" (9,5 mm) • Gewicht ohne Stiftleisten: 0,11 oz (3,1 g)
tienda.bricogeek.com/componentes/257-array-…
Ensamblar todo … próximamente un vídeo más detallado …
Die von uns verwendeten Komponenten waren die folgenden.
Ein rundes Stück Methacrylat. (Sie können jedes Design verwenden, unsere Basis misst gerade genug, um die Schüssel auf den Kopf zu stellen).
1 Frühstücksschüssel (wird verwendet, um den Roboter auf die Linie zu konzentrieren).
2 Räder eines recycelten Spielzeugs.
2 Motoren mit folgenden Spezifikationen:
Spezifikationen (für 6V): Abmessungen: 26 x 10 x 12 mm Übersetzung des Untersetzungsgetriebes: 30: 1 Wellendurchmesser: 3mm (mit Sicherungsnut) Nennspannung: 6Vdc (kann zwischen 3 bis 9Vdc betrieben werden) Drehzahl ohne Last: 1000U/min Verbrauch ohne Last: 120mA (1600mA mit Last) Drehmoment: 0,6kg / cm (max) Gewicht: 10 Gramm
Link zum Online-Shop:
1 Arduino UNO-Board (recycelt aus einem alten Projekt)
1 Schild für Adafruit v2.3-Motoren:
1 Ein Batteriehalter mit 8 AAA-Batterien (wir verwenden keine 2 Netzteile).
6 Schrauben und Muttern zum Verbinden der Elemente wie im Bild zu sehen
Flansche für die Motoren, ein elastisches Gummi zum Halten des Batteriehalters und ein Stück Plastikfolie für den Boden des Batteriehalters.
1 Array von QTR-8RC-Sensoren mit den folgenden Eigenschaften;
Spezifikationen für das QTR-8x Reflexionssensor-Array • Abmessungen: 2,95 "x 0,5" • Betriebsspannung: 3,3-5,0 V • Versorgungsstrom: 100 mA • Ausgabeformat für den QTR-8A: 8 analoge Spannungen von 0 V bis Versorgungsspannung • Ausgabeformat für den QTR-8RC: 8 digitale I/O-kompatible Signale, die als zeitgesteuerter High-Puls gelesen werden können • Optimaler Schaltabstand: 0,125" (3 mm) • Maximal empfohlener Schaltabstand für den QTR-8A: 0,25" (6 mm) • Maximal empfohlener Schaltabstand für den QTR-8RC: 0,375" (9,5 mm) • Gewicht ohne Stiftleisten: 0,11 oz (3,1 g) Sie finden es in:
tienda.bricogeek.com/componentes/257-array-de-sensores-infrarojos-qtr-8rc-digital.html
Alles zusammenbauen … demnächst ein ausführlicheres Video …
Schritt 2: Schritt 2: Inspiration
Para probar el funcionamiento del los
motores hemos seguido esta ayuda del blog www.programarfacil.com
programarfacil.com/blog/arduino-blog/adafr…
Es ist ein Wiederaufnehmen von bueno de los diferentes motores que controla esta Shield.
Parakalibrar el Sensor QTR-8RC Podéis Seguir el Tutorial de
Y un ultimo enlace que os puede ayudar este anweisbar;
www.instructables.com/id/Arduino-based-lin…
Um die Leistung der Motoren zu testen, sind wir diesem Blog-Support gefolgt www.programarfacil.com
programarfacil.com/blog/arduino-blog/adafruit-motor-shield-arduino/
Es ist eine sehr gute Zusammenfassung der verschiedenen Motoren, die dieser Schild steuert.
Um den QTR-8RC-Sensor zu kalibrieren, können Sie dem Tutorial von. folgen
www.youtube.com/watch?v=_ZeybIDd80s&list=PLlNY7ygeCIzCuq0jSjPD8_LfcAsPKUcGL&index=6
Und ein letzter Link, der Ihnen helfen kann, ist dieses instructable;
www.instructables.com/id/Arduino-based-line-follower-using-Pololu-QTR-8RC-l/
Schritt 3: Schritt 3: Code
las conexiones entre el array de
sensores y las placas las hicimos de la siguiente manera:
El Led ON val pin digital 12
Los 8 sensores van desde el
Nummer 1 al Pin 8
Nummer 2 al Pin 9
Nummer 3 al Pin 2
Nummer 4 al Pin 3
Nummer 5 al Pin 4
Nummer 6 al Pin 5
Nummer 7 al Pin 6
Nummer 8 al Pin 7
El código va sin repasarlo (se aceptan sugerencias)
#enthalten
#enthalten
#enthalten
#enthalten
// Erstellen Sie das Motorschildobjekt mit der Standard-I2C-Adresse
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Oder erstellen Sie es mit einer anderen I2C-Adresse (z. B. zum Stapeln)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);
// Wählen Sie aus, welcher 'Port' M1, M2, M3 oder M4 ist. In diesem Fall ist M1
Adafruit_DCMotor *motor1 = AFMS.getMotor(1);
// Sie können auch einen anderen Motor an Port M2 erstellen
Adafruit_DCMotor *motor2 = AFMS.getMotor(2);
// Ändern Sie die Werte unten, um sie an die Motoren, das Gewicht, den Radtyp usw. Ihres Roboters anzupassen.
#define KP.2
#define KD 5
#define M1_DEFAULT_SPEED 50
#define M2_DEFAULT_SPEED 50
#define M1_MAX_SPEED 70
#define M2_MAX_SPEED 70
#define MITTEL_SENSOR 4
#define NUM_SENSORS 8 // Anzahl der verwendeten Sensoren
#define TIMEOUT 2500 // wartet 2500 us, bis die Sensorausgänge auf Low gehen
#define EMITTER_PIN 12 // Emitter wird vom digitalen Pin 2 gesteuert
#define DEBUG 0 // auf 1 setzen, wenn serielle Debug-Ausgabe benötigt wird
QTRSensorsRC qtrrc((unsigned char) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
Void-Setup ()
{
Verzögerung (1000);
manuelle_kalibrierung();
set_motoren (0, 0);
}
int lastError = 0;
int last_proportional = 0;
int-Integral = 0;
Leere Schleife ()
{
Serial.begin (9600); // serielle Bibliothek mit 9600 bps einrichten
Serial.println ("Adafruit Motorshield v2 - DC-Motortest!");
AFMS.begin(); // mit der Standardfrequenz 1.6KHz erstellen
//AFMS.begin(1000); // ODER mit einer anderen Frequenz, sagen wir 1KHz
// Stellen Sie die Geschwindigkeit zum Starten ein, von 0 (aus) bis 255 (maximale Geschwindigkeit)
motor1->setSpeed(70);
motor1->laufen (vorwärts);
// Motor einschalten
motor1->laufen (FREIGABE);
motor2->setSpeed(70);
motor2> laufen (vorwärts);
// Motor einschalten
motor2->laufen (FREIGABE);
unsigned int-Sensoren[5];
int-Position = qtrrc.readLine (Sensoren);
int error = Position - 2000;
int motorSpeed = KP * Fehler + KD * (Fehler - lastError);
lastError = Fehler;
int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;
int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;
// Motordrehzahlen mit den beiden oben genannten Motordrehzahlvariablen einstellen
set_motors (leftMotorSpeed, rightMotorSpeed);
}
void set_motors(int motor1speed, int motor2speed)
{
if (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // Höchstgeschwindigkeit begrenzen
if (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // Höchstgeschwindigkeit begrenzen
if (motor1speed < 0) motor1speed = 0; // Motor über 0 halten
if (motor2speed < 0) motor2speed = 0; // Motordrehzahl über 0 halten
motor1->setSpeed (motor1speed); // Motordrehzahl einstellen
motor2-> setSpeed (motor2speed); // Motordrehzahl einstellen
motor1->laufen (vorwärts);
motor2> laufen (vorwärts);
}
void manual_calibration() {
int ich;
for (i = 0; i < 250; i++) // die Kalibrierung dauert einige Sekunden
{
qtrrc.calibrate(QTR_EMITTERS_ON);
Verzögerung (20);
}
if (DEBUG) {// wenn wahr, Sensordaten über seriellen Ausgang generieren
Serial.begin (9600);
für (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print (qtrrc.calibratedMinimumOn);
Serial.print (' ');
}
Serial.println();
für (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.
Empfohlen:
Einen Linienfolger mit Arduino erstellen – wikiHow
So erstellen Sie einen Linienfolger mit Arduino: Wenn Sie mit der Robotik beginnen, enthält eines der ersten Projekte, die Anfänger machen, einen Linienfolger. Es ist ein spezielles Spielzeugauto mit der Eigenschaft, entlang einer Linie zu fahren, die normalerweise schwarz ist und sich vom Hintergrund abhebt