Taula de continguts:

Seguiment lleuger i evitar el robot basat en Arduino: 5 passos
Seguiment lleuger i evitar el robot basat en Arduino: 5 passos

Vídeo: Seguiment lleuger i evitar el robot basat en Arduino: 5 passos

Vídeo: Seguiment lleuger i evitar el robot basat en Arduino: 5 passos
Vídeo: Leap Motion SDK 2024, Juliol
Anonim
Seguiment lleuger i evitar el robot basat en Arduino
Seguiment lleuger i evitar el robot basat en Arduino

Aquest és un projecte senzill que segueix o evita la llum.

He fet aquesta simulació a Proteus 8.6 pro. Components necessaris: -1) Arduino uno.

2) 3 LDR.

3) 2 motors d'engranatges de corrent continu 4) un servo.5) tres resistències 1k.6) un pont H l290D7) un interruptor d'encesa i apagat [per canviar l'estat del programa]

8) 9v i 5v Battry

Pas 1: Codi Ardunio

El codi Arduino es modifica a poc a poc Data del 23 de febrer de 2016]

Aquest codi és molt comentat i no vull explicar-ho, però si necessiteu ajuda, no dubteu a posar-vos en contacte amb mi a ([email protected])

Nota: -Utilitzo dues condicions en aquest programa 1r per a Light Following. 2n per evitar la llum.

En la mesura que es compleixin aquestes condicions, el robot seguirà o evitarà la llum. [Aquest és el valor mínim de LDR que trio. A la llum normal, el seu rang és de 80 a 95, però a mesura que augmenta la seva intensitat cada vegada hi ha més tensions induïdes, ja que està treballant en el principi del divisor de tensió int a = 400; // Valor de tolarància]

Pas 2: fitxers Proteus

Per a la biblioteca Arduino, descarregueu-la des d'aquest enllaç

Pas 3: Com funciona el vostre pont H

Com funciona el vostre pont H
Com funciona el vostre pont H
Com funciona el vostre pont H
Com funciona el vostre pont H

El L293NE / SN754410 és un pont en H molt bàsic. Té dos ponts, un al costat esquerre del xip i un a la dreta, i pot controlar 2 motors. Pot conduir fins a 1 amp de corrent i funcionar entre 4,5V i 36V. El petit motor de corrent continu que utilitzeu en aquest laboratori pot funcionar amb seguretat a baixa tensió, de manera que aquest pont H funcionarà bé. El pont H té els següents pins i característiques: El pin 1 (1, 2EN) habilita i desactiva el nostre motor, ja sigui HIGH o LOWPin 2 (1A) és un pin lògic per al nostre motor (l’entrada és HIGH o LOW) 3 (1Y) és per a un dels terminals del motor Pin 4-5 és per a terra Pin 6 (2Y) és per a l’altre terminal del motor Pin 7 (2A) és un pin lògic per al nostre motor (l’entrada és ALTA o BAIXA) Pin 8 (VCC2) és la font d'alimentació del nostre motor, s'hauria de donar la tensió nominal del motor El pin 9-11 no està connectat ja que només utilitzeu un motor en aquest laboratori El pin 12-13 és per a terra El pin 14-15 no està connectat El pin 16 (VCC1) és connectat a 5V. A la part superior es mostra un diagrama del pont H i quins pins fan el que es fa al nostre exemple. El diagrama inclou una taula de veritat que indica el funcionament del motor segons l’estat dels pins lògics (que estableix el nostre Arduino).

En aquest projecte, el pin d’activació es connecta a un pin digital del vostre Arduino perquè pugueu enviar-lo ALT o BAIX i engegar o apagar el motor. Els pins lògics del motor també estan connectats a pins digitals designats del vostre Arduino perquè pugueu enviar-lo ALT i BAIX perquè el motor giri en una direcció o BAIX i ALT perquè el giri en l’altra direcció. La tensió d'alimentació del motor es connecta a la font de tensió del motor, que sol ser una font d'alimentació externa. Si el vostre motor pot funcionar amb 5V i menys de 500mA, podeu utilitzar la sortida de 5V d’Arduino. La majoria dels motors requereixen una tensió i un consum de corrent més elevats que aquest, de manera que necessitareu una font d'alimentació externa.

Connecteu el motor al pont H Connecteu el motor al pont H tal com es mostra a la segona imatge.

O bé, si utilitzeu una font d'alimentació externa per a l'Arduino, podeu utilitzar el pin Vin.

Pas 4: Com funciona LDR

Ara, el primer que pot necessitar més explicacions és l’ús dels resistors dependents de la llum. Els resistors dependents de la llum (o LDR’s) són resistències el valor dels quals varia segons la quantitat de llum ambiental, però com podem detectar resistències amb Arduino? Bé, realment no es pot, però es poden detectar nivells de tensió mitjançant els pins analògics, que poden mesurar (en un ús bàsic) entre 0-5V. Ara us podeu preguntar "Bé, com convertim els valors de resistència en canvis de tensió?", És senzill, fem un divisor de tensió. Un divisor de tensió pren una tensió i, a continuació, emet una fracció d’aquest voltatge proporcional a la tensió d’entrada i la relació dels dos valors de les resistències utilitzades. L'equació per a la qual és:

Voltatge de sortida = Voltatge d’entrada * (R2 / (R1 + R2)) On R1 és el valor de la primera resistència i R2 és el valor de la segona.

Ara això encara fa la pregunta "Però, quins valors de resistència té el LDR?", Bona pregunta. Com menys quantitat de llum ambiental major sigui la resistència, més llum ambiental significa una resistència menor. Ara, per a les LDR en concret, he utilitzat que el seu rang de resistència era de 200 a 10 quilos ohms, però això canvia per a d'altres, així que assegureu-vos de buscar d'on les heu comprat i provar de trobar un full de dades o alguna cosa d'aquest tipus. el cas R1 és realment el nostre LDR, així que recuperem aquesta equació i fem una mica de màgia-matemàtica (màgia elèctrica matemàtica). Ara primer hem de convertir aquests valors de quilo ohm en ohms: 200 kilo-ohms = 200, 000 ohms 10 quilo-ohms = 10, 000 ohms Així que, per trobar quina és la tensió de sortida quan estem en negre, connectem els números següents: 5 * (10000 / (200000 + 10000)) L’entrada és de 5V, ja que és el que estem obtenint de l’Arduino. L’anterior dóna 0,24 V (arrodonit). Ara trobem quina tensió de sortida té la màxima brillantor utilitzant els números següents: 5 * (10000 / (10000 + 10000)) I això ens dóna 2,5V exactament. Així doncs, aquests són els valors de tensió que anem a introduir als pins analògics d’Arduino, però no són els valors que es veuran al programa: "Però per què?" podeu demanar-ho. L'Arduino utilitza un xip analògic a digital que converteix el voltatge analògic en dades digitals utilitzables. A diferència dels pins digitals de l’Arduino que només poden llegir un estat ALT o BAIX, que són 0 i 5V, els pins analògics poden llegir de 0-5V i convertir-los en un rang de números de 0-1023.. realment podem calcular quins valors llegirà l'Arduino.

Com que aquesta serà una funció lineal, podem utilitzar la fórmula següent: Y = mX + C On; Y = Digital ValueWhere; m = pendent, (pujada / recorregut), (valor digital / valor analògic) On; Intercepció C = Y La intercepció Y és 0, de manera que ens dóna: Y = mXm = 1023/5 = 204,6 Per tant: Valor digital = 204,6 * Valor analògic Per tant, en negre tonal el valor digital serà: 204,6 * 0,24 El que dóna aproximadament 49. I en brillantor màxima serà: 204,6 * 2,5 El que dóna aproximadament 511. Ara, amb dos d’aquests configurats en dos pins analògics, podem crear dues variables enteres per emmagatzemar els seus valors dos i fer operadors de comparació per veure quina té el valor més baix, girant el robot en aquesta direcció.

Recomanat: