Simpler Linienfolger

Ciao Insieme

Oggi vorrei presentarvi un progetto di cui siamo stati a conoscenza attraverso una richiesta del cliente. Costruiamo un semplice robot che segue le linee.

Il progetto è progettato per eseguire il codice sia con i robot a due che con i quattro ruote e rappresenta un compromesso. Per il funzionamento continuo, lo schizzo e l'interconnessione devono essere modificati, in quanto il carico dei quattro motori su un IC è molto elevato.

Con l'aiuto di due sensori, il veicolo distingue tra sfondo bianco e nero e corregge la direzione di viaggio di conseguenza, usiamo i nostri nuovi moduli di sensori senza poti.

Il principio è abbastanza semplice e il codice corrispondente di conseguenza compatto, che ci è piaciuto molto di questo progetto. 

Per questo progetto ho creato un set per voi, questo può essere trovato Qui

Quindi abbiamo bisogno di:

Iniziamo con l'assemblaggio del telaio:

In primo luogo si dovrebbe staccare i fogli protettivi, non abbiamo fatto questo, perché piatti trasparenti possono essere fotografati ancora peggio.

Per un montaggio più facile, è necessario collegare i motori prima dell'installazione.

Per fare questo, cavi di saldatura per le piccole bandiere in ottone dei motori. Dove rosso e nero sono fissati non importa per il momento. Per una breve comprensione: la direzione di marcia dei motori può essere cambiata ruotando il palo. 

Quindi, collegare le staffe per i motori attraverso il telaio.

Quindi fissare i motori cablati con le viti lunghe e chiuse e fissarle con i dadi:

Quindi mettere i bulloni in ottone attraverso la piastra e attaccarli con i dadi chiusi, dove li si collega dipende dal vostro disegno e successivamente l'uso. Le posizioni sono variabili.

Come passo successivo, è già possibile montare la parte superiore e avvitarlo su:

Per una migliore comprensione, ecco una foto dalla pagina:

 

È inoltre possibile determinare dove si collega il controller e in quale direzione segue la linea. Questo completa l'assemblaggio della meccanica. Come passo successivo, si dovrebbe saldare le intestazioni dei pin sullo scudo motore, come mostrato qui nella foto:

Questi sono necessari per poter collegare i sensori in un secondo momento.

I dissioni di calore incollati non sono necessariamente necessari, ma altamente raccomandato. È facilmente possibile distribuire il carico a diversi IC e collegare tutti e quattro i motori separatamente allo scudo (può anche essere cambiato nello Sketch).

Il prossimo è il collegamento dei motori: prima cambiamo insieme i due motori del lato sinistro e del lato destro. Qui si deve provare qualcosa fino a quando i motori di un lato, ei motori dell'altro lato corrono insieme nella stessa direzione. Come già accennato, questo può essere facilmente cambiato scambiando i poli.

Collegare i motori qui:

I connettori sono etichettati sulla scheda con M3 e M4, ciascuno i motori a sinistra su un terminale e quello destro sul secondo terminale.

Ora l'alimentatore: Lo scudo fornisce anche l'alimentazione al microcontrollore.

Le due frecce in basso a destra dell'immagine segnano i connettori per A4 e A5, dove colleghiamo i nostri sensori di seguaci della linea.

Dal momento che abbiamo ristrutturato la nostra robo-car più spesso, abbiamo solo temporaneamente collegato i sensori con nastro adesivo. Il sensore sinistro sul pin A4, il sensore destro sull'A5, come mostrato qui nella foto:

È importante non montare i sensori frontalmente, ma vederli leggermente obliquamente sui fianchi, come si vede nella foto sopra.

Prima di dedicarci al codice che abbiamo preso in prestito da Aarav, abbiamo bisogno di una libreria per lo scudo motore. Abbiamo usato l'Adafruit Libary che si Qui Per trovare.

Ecco il codice:

 

   ////////////////////////////////////////////////////////   LinoBot v1.0 /             
 Di Aarav Garg
////////////////////////////////////////////////////////

Ho aggiunto le possibilità di testare
I valori di analogRead potrebbero essere modificati per la risoluzione dei problemi

comprese le biblioteche
#include <AFMotor.H>

definizione di pin e variabili
# define Sinistre A4 
# define Diritti A5 

definizione dei motori
AF_DCMotor motore1(4, MOTOR12_8KHZ); 
AF_DCMotor motore2(3, MOTOR12_8KHZ);
/*
AF_DCMotor motore3(1 MOTOR12_8KHZ);
AF_DCMotor motore4(2, MOTOR12_8KHZ);
 */

Vuoto Installazione() {   impostazione della velocità dei motori   motore1.setSpeed (setSpeed)(100);   motore2.setSpeed (setSpeed)(100);   dichiarazione di tipi di pin   PinMode (Modalità pin)(Sinistre,Input);   PinMode (Modalità pin)(Diritti,Input);   iniziare la comunicazione seriale   Seriale.Iniziare(9600);    }

Vuoto Ciclo(){   stampa dei valori dei sensori sul monitor seriale   Seriale.println(analogicOLettura(Sinistre));   Seriale.println(analogicOLettura(Diritti));   linea rilevata da entrambi   Se(analogicOLettura(Sinistre)<=400 && analogicOLettura(Diritti)<=400){     Fermare     motore1.Correre(Rilascio);     motore2.Correre(Rilascio);   }   linea rilevata dal sensore sinistro   Altro Se(analogicOLettura(Sinistre)<=400 && !analogicOLettura(Diritti)<=400){     girare a sinistra     motore1.Correre(Indietro);     motore2.Correre(Avanti);     /*
 motor1.run(RELEASE);
 motor2.run (FORWARD);
     */   }   linea rilevata dal sensore destro   Altro Se(!analogicOLettura(Sinistre)<=400 && analogicOLettura(Diritti)<=400){     girare a destra     motore1.Correre(Avanti);     motore2.Correre(Indietro);     /*
 motor1.run (FORWARD);
 motor2.run(RELEASE);
     */   }   linea rilevata da nessuno   Altro Se(!analogicOLettura(Sinistre)<=400 && !analogicOLettura(Diritti)<=400){     Fermare     motore1.Correre(Avanti);     motore2.Correre(Avanti);     /*
 motor1.run(BACKWARD);
 motor2.run(BACKWARD);
     */   }    }


Tra l'altro, i perni analogici sono stati utilizzati perché, a differenza dei perni digitali sullo scudo, sono facilmente accessibili.

Il progetto è progettato per eseguire il codice sia con i robot a due che con i quattro ruote e rappresenta un compromesso. Per il funzionamento continuo, lo schizzo e l'interconnessione devono essere modificati, in quanto il carico dei quattro motori su un IC è molto elevato.

Impostare la direzione di corsa per i motori di trazione può essere un po 'complicato, qui è necessaria un po 'di pazienza.

Divertiti a ricostruire e fino alla prossima volta :) 

 

Für arduinoProjekte für anfängerSensoren

7 Kommentare

Andreas Wolter

Andreas Wolter

@Michael Beylich: das ist eine sehr interessante Idee.
Die Funktionsweise der Linienfolger ist so aufgebaut, dass sich die Spannung an der Fotodiode verändert, wenn sich die Intensität des reflektierten Lichts verändern. Daher ist auch ein hoher Kontrast notwendig (hier schwarz und weiß, also der höchstmögliche Kontrast).
Wenn ich Ihre Idee richtig verstanden habe, möchten Sie einen Leitstrahl installieren.
Dafür sollte man eher andere Sensoren verwenden, da die Linienfolger nur geringe Abstände zulassen.
Ich hatte schonmal ein ähnliches Projekt mit einem robocar, Fotosensor und einer Taschenlampe.
Mit einem IR-Laser könnte man das theoretisch genauso umsetzen. Um die Richtungsänderung des Lasers zu detektieren, bräuchten man mehrere voneinander getrennte Fotodioden, die auf den IR-Laser reagieren können. Ich würde zuerst probieren, vier in einer Matrix anzuordnen und mit Sichtschutz voneinander zu trennen. Ähnlich wie beim Solartracker von Miguel Torres Gordo: https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/solar-tracker-mit-schrittmotoren-und-oled-display

Ansonsten können Sie uns auch gern kontaktieren über die blogs@ Adresse. Vielleicht finden wir eine praktikable Lösung.

Grüße,
Andreas Wolter

Michael Beylich

Michael Beylich

Hallo,
Ich komme aus dem Schiffsmodellbau und frage mich, ob es möglich ist, diesen Aufbau zu adaptieren. Bei Rettungskreuzern gibt es sog. Tochterbote, die nach dem Aussetzen auch mal wieder aufgenommen werden müssen. Das ist bei ruhigem Wasser schwierig, bei bewegtem nahezu unmöglich. Man „trifft“ die Tochterboot-Wanne nicht.
Die Idee wäre, im Mutterschiff z.B. eine IR-Diode zu platzieren und dann dem „Strahl“ automatisch zu folgen. Gesteuert werden müsste nur der Motor für die Schraube und das Lenkservo.
Wäre das realisierbar? Und auch nicht zu gross und schwer?
Danke im voraus.

Andreas Wolter

Andreas Wolter

@Wulv: A sensor detects differences in contrast. A black line on a white background has the highest contrast. If a change is detected, the direction will be corrected. Since a black line has a transition to the white background on both sides, two sensors are used. It would also work with one sensor. Then the code looks different.

Best Regards,
Andreas Wolter
AZ-Delivery Blog
>Ich verstehe nicht, wie man mit dieser Position der Sensoren einer Linie folgen kann. Ist es nicht so, dass es über die Linie schwingt?

Wulv

Wulv

Ik snap niet hoe je met die positie van de sensoren een lijn kan volgen. Zo zwabbert het toch over de lijn?

Stefan

Stefan

Der set link funktioniert nicht.

Lg

Moritz

Moritz

Hallo,
die vier Motoren sind im Beitrag oben am Shield an M3 und M4 angeschlossen. Das funktioniert bei uns wunderbar, allerdings ist die Last auf den IC recht hoch. Die Last lässt sich bei zusätzlicher Nutzung von M1 und M2 auf dem Shield verteilen, sprich je einen Motor pro Anschluss. Den Sketch müssen Sie dann erweitern, indem Sie die beiden zusätzlichen Motoren zuerst definieren und anschließend mit motor3.run und motor4.run erweitern.

Frank Raddau

Frank Raddau

Hallo,
Wie würde der Sketch und die Verschaltung für eine Dauerbelastung aussehen?
Danke im voraus.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert