Table des matières:

TA-ZON-BOT (suiveur de ligne) : 3 étapes (avec photos)
TA-ZON-BOT (suiveur de ligne) : 3 étapes (avec photos)

Vidéo: TA-ZON-BOT (suiveur de ligne) : 3 étapes (avec photos)

Vidéo: TA-ZON-BOT (suiveur de ligne) : 3 étapes (avec photos)
Vidéo: Ne JAMAIS partir SANS SA COPINE 🫢 #humour #blague #drole #couplegoals #internationalcouple #shorts 2024, Juillet
Anonim
TA-ZON-BOT (Suiveur de ligne)
TA-ZON-BOT (Suiveur de ligne)
TA-ZON-BOT (Suiveur de ligne)
TA-ZON-BOT (Suiveur de ligne)

TA-ZON-BOT

El tazon 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/

traducteur Google

TA-ZON-BOT

Le bol suit la ligne

Nous avons réalisé ce robot qui vous suit avec l'aide de nos étudiants, (merci les minimakers).

Participer à l'OSHWDEN de La Corogne a été un projet express.

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

traducteur Google

Étape 1: Étape 1: Composants

Étape 1: Composants
Étape 1: Composants
Étape 1: Composants
Étape 1: Composants
Étape 1: Composants
Étape 1: Composants

Los composants que hemos utilizados

han sido los siguientes.

Une piéza 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 concentrater al robot en la linea).

2 ruedas de un juguete reciclado.

2 motores con las siguientes especificaciones:

Spécificités (Para 6V):

Dimensions: 26 x 10 x 12 mm

Ratio de la réductrice: 30:1

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

Voltaje nominal: 6Vcc (puede funcionar entre 3 a 9Vcc)

Vélocidad de giro sin carga: 1000rpm

Consommation sans chargement: 120 mA (1600 mA avec chargement)

Couple: 0,6 kg/cm (max)

Peso: 10 grammes

Enlace de tienda en ligne:

1 place Arduino UNO (reciclada de un proyecto antiguo)

1 shield para motores 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 plastics para la base del porta pilas.

1 tableau de capteurs QTR-8RC avec les caractéristiques suivantes;

Spécifications du réseau de capteurs de réflectance QTR-8x • Dimensions: 2,95" x 0,5" • Tension de fonctionnement: 3,3-5,0 V • Courant d'alimentation: 100 mA • Format de sortie pour le QTR-8A: 8 tensions analogiques allant de 0 V à la tension fournie • Format de sortie pour le QTR-8RC: 8 signaux numériques compatibles avec les E/S pouvant être lus comme une impulsion haute temporisée • Distance de détection optimale: 0,125" (3 mm) • Distance de détection maximale recommandée pour le QTR-8A: 0,25" (6 mm) • Distance de détection maximale recommandée pour le QTR-8RC: 0,375" (9,5 mm) • Poids sans broches d'en-tête: 0,11 oz (3,1 g) Lo podéis encontrar en:

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

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

Les composants que nous avons utilisés ont été les suivants.

Un morceau rond de méthacrylate. (Vous pouvez utiliser n'importe quel design, notre base mesure juste assez pour placer le bol à l'envers).

1 Bol petit-déjeuner (utilisé pour concentrer le robot sur la ligne).

2 roues d'un jouet recyclé.

2 moteurs avec les spécifications suivantes:

Spécifications (Pour 6V): Dimensions: 26 x 10 x 12 mm Ratio du réducteur: 30:1 Diamètre de l'arbre: 3mm (avec rainure de verrouillage) Tension nominale: 6Vdc (peut fonctionner entre 3 à 9Vdc) Vitesse de rotation sans charge: 1000rpm Consommation sans charge: 120mA (1600mA avec charge) Couple: 0,6kg/cm (max) Poids: 10 grammes

Lien boutique en ligne:

1 carte Arduino UNO (recyclée d'un ancien projet)

1 shield pour moteurs Adafruit v2.3:

1 Un support de 8 piles AAA (nous n'utilisons pas 2 alimentations).

6 vis et écrous pour joindre les éléments comme on le voit sur l'image

brides pour les moteurs, un caoutchouc élastique pour maintenir le support de batterie et un morceau de feuille de plastique pour la base du support de batterie.

1 réseau de capteurs QTR-8RC avec les caractéristiques suivantes;

Spécifications du réseau de capteurs de réflectance QTR-8x • Dimensions: 2,95 "x 0,5" • Tension de fonctionnement: 3,3-5,0 V • Courant d'alimentation: 100 mA • Format de sortie pour le QTR-8A: 8 tensions analogiques allant de 0 V à la tension fournie • Format de sortie pour le QTR-8RC: 8 signaux numériques compatibles E/S pouvant être lus comme une impulsion haute temporisée • Distance de détection optimale: 0,125 "(3 mm) • Distance de détection maximale recommandée pour le QTR-8A: 0,25" (6 mm) • Distance de détection maximale recommandée pour le QTR-8RC: 0,375 "(9,5 mm) • Poids sans broches d'en-tête: 0,11 oz (3,1 g) Vous pouvez le trouver dans:

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

Assemblez le tout… bientôt une vidéo plus détaillée…

Étape 2: Étape 2: Inspirer

Para probar el funcionamiento del los

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

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

Es un résumé 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…

Pour tester les performances des moteurs, nous avons suivi ce blog support www.programarfacil.com

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

C'est un très bon résumé des différents moteurs que contrôle ce bouclier.

Pour calibrer le capteur QTR-8RC vous pouvez suivre le tutoriel de

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

Et un dernier lien qui peut vous aider est ce instructable;

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

Étape 3: Étape 3: Coder

Image
Image

las conexiones entre le tableau de

sensores y las placas las hicimos de la siguiente manera:

El Led ON va al broche numérique 12

Los 8 sensores van desde el

número 1 al broche 8

número 2 al broche 9

número 3 al broche 2

número 4 al broche 3

número 5 al broche 4

número 6 al broche 5

número 7 al broche 6

número 8 al broche 7

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

#comprendre

#comprendre

#comprendre

#comprendre

// Création de l'objet bouclier moteur avec l'adresse I2C par défaut

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Ou, créez-le avec une adresse I2C différente (par exemple pour l'empilement)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Sélectionnez quel 'port' M1, M2, M3 ou M4. Dans ce cas, M1

Adafruit_DCMotor *moteur1 = AFMS.getMotor(1);

// Vous pouvez également faire un autre moteur sur le port M2

Adafruit_DCMotor *moteur2 = AFMS.getMotor(2);

// Modifiez les valeurs ci-dessous en fonction des moteurs, du poids, du type de roue, etc. de votre robot.

#définir KP.2

#définir KD 5

#définir M1_DEFAULT_SPEED 50

#définir M2_DEFAULT_SPEED 50

#définir M1_MAX_SPEED 70

#définir M2_MAX_SPEED 70

#define MIDDLE_SENSOR 4

#define NUM_SENSORS 8 // nombre de capteurs utilisés

#define TIMEOUT 2500 // attend 2500 us pour que les sorties du capteur baissent

#define EMITTER_PIN 12 // l'émetteur est contrôlé par la broche numérique 2

#define DEBUG 0 // défini sur 1 si la sortie de débogage série est nécessaire

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

int sensorValues non signé [NUM_SENSORS];

void setup()

{

retard(1000);

étalonnage_manuel();

set_motors(0, 0);

}

int lastError = 0;

int dernier_proportionnel = 0;

entier entier = 0;

boucle vide()

{

Serial.begin(9600); // configuration de la bibliothèque série à 9600 bps

Serial.println("Adafruit Motorshield v2 - Test du moteur à courant continu !");

AFMS.begin(); // créer avec la fréquence par défaut 1.6KHz

//AFMS.begin(1000); // OU avec une fréquence différente, disons 1KHz

// Définit la vitesse de démarrage, de 0 (off) à 255 (vitesse max)

motor1->setSpeed (70);

moteur1->run(AVANT);

// allume le moteur

motor1->run(RELEASE);

motor2->setSpeed (70);

motor2->run(FORWARD);

// allume le moteur

motor2->run(RELEASE);

capteurs int non signés[5];

position int = qtrrc.readLine(capteurs);

erreur int = position - 2000;

int motorSpeed = KP * error + KD * (error - lastError);

lastError = erreur;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// régler les vitesses du moteur en utilisant les deux variables de vitesse du moteur ci-dessus

set_motors(leftMotorSpeed, rightMotorSpeed);

}

void set_motors(int motor1speed, int motor2speed)

{

si (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // limite la vitesse de pointe

si (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // limite la vitesse de pointe

si (motor1speed < 0) motor1speed = 0; // garde le moteur au dessus de 0

si (motor2speed < 0) motor2speed = 0; // garde la vitesse du moteur au-dessus de 0

motor1->setSpeed(motor1speed); // régler la vitesse du moteur

motor2->setSpeed(motor2speed); // régler la vitesse du moteur

moteur1->run(AVANT);

motor2->run(FORWARD);

}

void manual_calibration() {

int je;

for (i = 0; i < 250; i++) // le calibrage prendra quelques secondes

{

qtrrc.calibrate(QTR_EMITTERS_ON);

retard(20);

}

if (DEBUG) { // si vrai, génère les données du capteur via la sortie série

Serial.begin(9600);

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

{

Serial.print(qtrrc.calibratedMinimumOn);

Serial.print(' ');

}

Serial.println();

pour (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.

Conseillé: