Sommario:

Robot che segue ed evita la luce basato su Arduino: 5 passaggi
Robot che segue ed evita la luce basato su Arduino: 5 passaggi

Video: Robot che segue ed evita la luce basato su Arduino: 5 passaggi

Video: Robot che segue ed evita la luce basato su Arduino: 5 passaggi
Video: Programmare Arduino, Spiegato Facile per Tutti 2024, Dicembre
Anonim
Robot che segue ed evita la luce basato su Arduino
Robot che segue ed evita la luce basato su Arduino

Questo è un progetto semplice che segue o evita la luce.

Ho realizzato questa simulazione in Proteus 8.6 pro. Componenti richiesti: -1) Arduino uno.

2) 3 LDR.

3) 2 motoriduttori CC.4) Un servo.5) Tre resistori da 1k.6) un H-Bridge l290D7) Un interruttore di accensione e spegnimento [per modificare le condizioni del programma]

8) Batteria 9v e 5v

Passaggio 1: codice Arduino

Il codice Arduino è stato modificato un po' Data 23 febbraio 2016]

Questo codice è altamente commentato, non voglio spiegarlo, ma se hai bisogno di aiuto non esitare a contattarmi a ([email protected])

Nota: in questo programma utilizzo due condizioni: la prima per la luce e la seconda per evitare la luce.

Per quanto queste condizioni siano soddisfatte, il robot seguirà o eviterà la luce. [Questo è il valore minimo di LDR che scelgo. In condizioni di luce normale, la sua gamma è compresa tra 80 e 95, ma poiché la sua intensità aumenta sempre più le tensioni indotte su di essa, poiché lavora sul principio del divisore di tensione int a = 400; // Valore di tolleranza]

Passaggio 2: file Proteus

Per la libreria Arduino scarica da quel link

Passaggio 3: Come funziona il tuo ponte H

Come funziona il tuo ponte H
Come funziona il tuo ponte H
Come funziona il tuo ponte H
Come funziona il tuo ponte H

L293NE/SN754410 è un H-bridge molto semplice. Ha due ponti, uno a sinistra del chip e uno a destra, e può controllare 2 motori. Può pilotare fino a 1 amp di corrente e funzionare tra 4,5 V e 36 V. Il piccolo motore CC che stai utilizzando in questo laboratorio può funzionare in sicurezza a bassa tensione, quindi questo ponte H funzionerà perfettamente. L'H-bridge ha i seguenti pin e caratteristiche: Pin 1 (1, 2EN) abilita e disabilita il nostro motore indipendentemente dal fatto che sia HIGH o LOW Pin 2 (1A) è un pin logico per il nostro motore (l'ingresso è HIGH o LOW) Pin 3 (1Y) è per uno dei terminali del motore I pin 4-5 sono per la massa Il pin 6 (2Y) è per l'altro terminale del motore Il pin 7 (2A) è un pin logico per il nostro motore (l'ingresso è ALTO o BASSO) Pin 8 (VCC2) è l'alimentatore per il nostro motore, a questo dovrebbe essere data la tensione nominale del motore I pin 9-11 non sono collegati poiché si utilizza solo un motore in questo laboratorio I pin 12-13 sono per la messa a terra I pin 14-15 non sono collegati Il pin 16 (VCC1) è collegato a 5V. Sopra c'è uno schema del ponte H e quali pin fanno cosa nel nostro esempio. Incluso con il diagramma è una tabella di verità che indica come funzionerà il motore in base allo stato dei pin logici (che sono impostati dal nostro Arduino).

In questo progetto, il pin di abilitazione si collega a un pin digitale sul tuo Arduino in modo da poterlo inviare ALTO o BASSO e accendere o spegnere il motore. I pin della logica del motore sono anche collegati ai pin digitali designati sul tuo Arduino in modo che tu possa inviarlo HIGH e LOW per far girare il motore in una direzione, o LOW e HIGH per farlo girare nell'altra direzione. La tensione di alimentazione del motore si collega alla sorgente di tensione per il motore, che di solito è un'alimentazione esterna. Se il tuo motore può funzionare a 5 V e meno di 500 mA, puoi utilizzare l'uscita 5 V di Arduino. La maggior parte dei motori richiede una tensione più elevata e un assorbimento di corrente maggiore di questo, quindi sarà necessario un alimentatore esterno.

Collegare il motore all'H-bridge Collegare il motore all'H-bridge come mostrato nella seconda immagine.

Oppure, se stai usando un alimentatore esterno per Arduino, puoi usare il pin Vin.

Passaggio 4: come funziona LDR

Ora la prima cosa che potrebbe aver bisogno di ulteriori spiegazioni è l'uso dei resistori dipendenti dalla luce. I resistori dipendenti dalla luce (o LDR) sono resistori il cui valore cambia a seconda della quantità di luce ambientale, ma come possiamo rilevare la resistenza con Arduino? Beh, non puoi davvero, tuttavia puoi rilevare i livelli di tensione usando i pin analogici, che possono misurare (nell'uso di base) tra 0-5V. Ora potresti chiederti "Bene, come convertiamo i valori di resistenza in variazioni di tensione?", È semplice, creiamo un partitore di tensione. Un partitore di tensione assorbe una tensione e quindi emette una frazione di quella tensione proporzionale alla tensione di ingresso e al rapporto tra i due valori dei resistori utilizzati. L'equazione per cui è:

Tensione di uscita = Tensione di ingresso * (R2 / (R1 + R2)) Dove R1 è il valore del primo resistore e R2 è il valore del secondo.

Ora questo pone ancora la domanda "Ma quali valori di resistenza ha l'LDR?", buona domanda. Minore è la quantità di luce ambientale, maggiore è la resistenza, più luce ambientale significa una resistenza inferiore. Ora per i particolari LDR che ho usato, il loro intervallo di resistenza era compreso tra 200 e 10 kilo ohm, ma questo cambia per quelli diversi, quindi assicurati di cercare da dove li hai acquistati e prova a trovare una scheda tecnica o qualcosa del genere. Ora in questo il caso R1 è in realtà il nostro LDR, quindi riportiamo quell'equazione e facciamo un po' di math-e-magic (magia elettrica matematica). Ora prima dobbiamo convertire quei valori di kilo ohm in ohm: 200 kilo-ohm = 200.000 ohm 10 kilo-ohm = 10.000 ohmQuindi per trovare qual è la tensione di uscita quando siamo nel buio pesto inseriamo i seguenti numeri: 5 * (10000 / (200000 + 10000)) L'ingresso è 5 V poiché è quello che otteniamo dall'Arduino. Quanto sopra dà 0,24 V (arrotondato). Ora troviamo qual è la tensione di uscita nella luminosità di picco utilizzando i seguenti numeri: 5 * (10000 / (10000 + 10000)) E questo ci dà esattamente 2,5 V. Quindi questi sono i valori di tensione che andremo a inserire nei pin analogici di Arduino, ma questi non sono i valori che verranno visualizzati nel programma, "Ma perché?" potresti chiedere. L'Arduino utilizza un chip da analogico a digitale che converte la tensione analogica in dati digitali utilizzabili. A differenza dei pin digitali sull'Arduino che possono leggere solo uno stato ALTO o BASSO essendo 0 e 5 V, i pin analogici possono leggere da 0-5 V e convertirlo in un intervallo numerico di 0-1023. Ora con un po' di magia in più. possiamo effettivamente calcolare quali valori verranno effettivamente letti da Arduino.

Poiché questa sarà una funzione lineare, possiamo usare la seguente formula: Y = mX + C Dove; Y = Valore digitaleDove; m = pendenza, (ascesa/corsa), (valore digitale/valore analogico)Dove; C = Intercetta Y L'intercetta Y è 0, quindi ci dà: Y = mXm = 1023 / 5 = 204,6 Pertanto: Valore digitale = 204,6 * Valore analogico Quindi nel buio pesto il valore digitale sarà: 204,6 * 0,24 Che dà circa 49. E nella luminosità di picco sarà: 204.6 * 2.5 Che dà circa 511. Ora con due di questi impostati su due pin analogici possiamo creare due variabili intere per memorizzare i loro valori due e fare operatori di confronto per vedere quale ha il valore più basso, girando il robot in quella direzione.

Consigliato: