Com es mesura la distància entre dos punts mitjançant Arduino?

En electrònica, la majoria de les vegades s’utilitzen sensors ultrasònics per mesurar la distància d’un punt concret a un altre. És molt fàcil escriure un codi a la placa Arduino i integrar-ne un sensor d'ultrasons per dur a terme aquesta tasca. Però en aquest article adoptarem un enfocament diferent. Utilitzarem dos sensors d’ultrasons independents que s’integraran amb dos Arduino separats. Aquests dos mòduls es col·locaran en dos punts diferents entre els quals s'ha de mesurar la distància. Un sensor es convertirà en receptor i l’altre en convertirà. En fer-ho, podrem mesurar la distància entre ells només localitzant la posició del transmissor mitjançant l'ús de molts receptors d'ultrasons. Es diu la tècnica que estem utilitzant aquí Triangulació.



Mesurament de la distància mitjançant Arduino

La tècnica que s’utilitza aquí és útil només en sistemes a petita escala on es troba una petita distància. Per implementar-lo a gran escala, segur que calen algunes modificacions. A continuació es discuteixen tots els reptes que s’havien afrontat durant la realització d’aquest projecte.



Com es fa servir Arduino i el sensor d'ultrasons per mesurar la distància?

Com sabem el resum del projecte, anem a seguir endavant i recopilem més informació per iniciar el projecte.



Pas 1: Recopilació dels components (maquinari)

Si voleu evitar qualsevol inconvenient enmig de qualsevol projecte, el millor enfocament és fer una llista completa de tots els components que utilitzarem. El segon pas, abans de començar a fer el circuit, és fer un breu estudi de tots aquests components. A continuació es mostra una llista de tots els components que necessitem en aquest projecte.



  • Jumper Wires
  • Adaptador de 5 V CA a CC (x2)

Pas 2: Recopilació dels components (programari)

  • Proteus 8 Professional (es pot descarregar des de Aquí )

Després de descarregar el Proteus 8 Professional, dissenyeu-ne el circuit. He inclòs simulacions de programari aquí per tal que sigui convenient per als principiants dissenyar el circuit i fer les connexions adequades al maquinari.

Pas 3: Funcionament de l'HCR-05

Com ja coneixem el principal resum del nostre projecte, anem a seguir endavant i realitzem un breu estudi del funcionament de HCR-05 . Podeu entendre el funcionament principal d’aquest sensor mitjançant el següent esquema.

Aquest sensor té dos pins, passador de gallet, i pin ecològic que s’utilitzen per mesurar la distància entre dos punts concrets. El procés s’inicia enviant una ona ultrasònica des del sensor. Aquesta tasca es realitza mitjançant l’activació del pin trigonal durant 10us. Un transmissor sonor d'ones ultrasòniques s'envia des del transmissor tan aviat com es realitza aquesta tasca. aquesta ona viatjarà a l'aire i tan aviat com toqui un objecte en el seu camí, tornarà a atacar i serà rebut pel receptor integrat al sensor.



Quan l'ona ultrasònica serà rebuda pel receptor després de reflectir el sensor, posarà la pin ecològic a un estat alt. Aquest pin es mantindrà en estat alt durant el temps que serà exactament igual al temps que triga l’ona ultrasònica en viatjar des del transmissor i tornar al receptor del sensor.

Per fabricar el vostre sensor d'ultrasons transmissor només, només cal que feu el pin de trigó com a pin de sortida i envieu un pols elevat a aquest pin durant 10us. Tan aviat com es faci, s'iniciarà una ràfega d'ultrasons. Per tant, sempre que es vulgui transmetre l’ona, només s’ha de controlar el pin del gatell del sensor d’ultrasons.

No hi ha manera de fer que el sensor d'ultrasons sigui un només receptor perquè l’augment del pin ECO no pot ser controlat pel microcontrolador perquè està relacionat amb el pin trigonal del sensor. Però hi ha una cosa que podem fer: cobrir el transmissor d’aquest sensor d’ultrasons amb cinta adhesiva que no surti cap ona UV. Aleshores, el pin ECO d’aquest transmissor no es veurà afectat pel transmissor.

Pas 4: Funcionament del circuit

Ara, com hem fet que els sensors funcionin per separat com a transmissor i receptor, hi ha un gran problema que s’enfronta aquí. El receptor no sabrà el temps que triga l’ona ultrasònica en viatjar des del transmissor fins al receptor perquè no sap exactament quan es va transmetre aquesta ona.

Per resoldre aquest problema, el que hem de fer és enviar un ALTA senyal a l'ECO del receptor tan bon punt es transmeti l'ona ultrasònica mitjançant el sensor del transmissor. O en paraules simples, podem dir que l’ECO del receptor i el disparador del transmissor s’han d’enviar a HIGH al mateix temps. Per tant, per aconseguir-ho, farem que d’alguna manera el disparador del receptor es posi alt tan bon punt el disparador del transmissor s’apliqui. Aquest activador del receptor es mantindrà elevat fins que es posi el pin ECO BAIX . Quan el pin ECO del receptor rebrà un senyal ultrasònic, baixarà. Això significarà que l’activador del sensor transmissor acaba de rebre un senyal ALT. Ara, tan bon punt l’ECO disminueixi, esperarem el retard conegut i posarem el disparador del receptor ALT. En fer-ho, se sincronitzaran els activadors dels dos sensors i es calcularà la distància coneixent el retard de temps del recorregut de l'ona.

Pas 5: Muntatge dels components

Tot i que només fem servir el transmissor d’un sensor d’ultrasons i el receptor de l’altre, però és obligatori connectar tots els quatre pins del sensor d'ultrasons a l'Arduino. Per connectar el circuit, seguiu els passos següents:

  1. Prengui dos sensors d'ultrasons. Cobriu el receptor del primer sensor i el transmissor del segon sensor. Utilitzeu cinta adhesiva blanca per a aquest propòsit i assegureu-vos que aquestes dues estiguin completament cobertes de manera que no hi hagi cap senyal que surti del transmissor del segon sensor i que cap senyal entra al receptor del primer sensor.
  2. Connecteu dos Arduino en dues taules de suport separades i connecteu-hi els seus respectius sensors. Connecteu el pin del disparador al pin9 d'Arduino i ecoPin al pin10 de l'Arduino. Enceneu el sensor d'ultrasons mitjançant els 5V d'Arduino i feu servir tots els motius.
  3. Pengeu el codi del receptor a l'Arduino del receptor i el codi del transmissor a l'Arduino del transmissor.
  4. Ara obriu el monitor sèrie del costat receptor i observeu la distància que es mesura.

El diagrama de circuits d’aquest projecte té l’aspecte següent:

Esquema de connexions

Pas 6: Introducció a Arduino

Si encara no esteu familiaritzat amb l’IDE ​​Arduino, no us preocupeu, perquè a continuació s’explica un procediment pas a pas per configurar i utilitzar Arduino IDE amb una placa de microcontrolador.

  1. Descarregueu la versió més recent d'Arduino IDE des de Arduino.
  2. Connecteu la placa Arduino Nano al portàtil i obriu el tauler de control. al tauler de control, feu clic a Maquinari i so . Ara feu clic a Dispositius i impressores. Aquí trobareu el port al qual està connectada la vostra placa de microcontrolador. En el meu cas ho és COM14 però és diferent en diferents ordinadors.

    Buscant Port

  3. Feu clic al menú Eina. i fixeu el tauler a Arduino Nano des del menú desplegable.

    Taula de configuració

  4. Al mateix menú d'eines, establiu el port al número de port que heu observat anteriorment al fitxer Dispositius i impressores .

    Configuració del port

  5. Al mateix menú d'eines, configureu el processador a ATmega328P (vell Carregador d'arrencada ).

    Processador

  6. Baixeu-vos el codi adjunt a continuació i enganxeu-lo al vostre IDE Arduino. Feu clic al botó pujar per gravar el codi a la placa del microcontrolador.

    Pujar

Per descarregar el codi, clica aquí.

Pas 7: entendre el codi

El codi utilitzat en aquest projecte és molt senzill i molt ben comentat. Hi ha dos fitxers de codis a la carpeta adjunta. Els dos codis per al transmissor i un codi per al costat del receptor es donen per separat. Penjarem aquests codis a les dues plaques Arduino respectives. Tot i que s’explica per si mateix, es descriu breument a continuació.

Codi per al costat del transmissor

1. Al principi, s’inicialitzen els pins de la placa Arduino que es connectaran al sensor d’ultrasons. A continuació, es declaren les variables que s'utilitzaran per emmagatzemar valors per al càlcul de temps i distància durant el temps d'execució del codi.

// defineix els números de pins const int trigPin = 9; // Connecteu el pin trigonal del sensor d'ultrasons al pin9 d'Arduino const int echoPin = 10; // Connecteu el pin ecològic del sensor d'ultrasons al pin10 d'Arduino // defineix les variables de llarga durada; // variable per emmagatzemar el temps que pren l'ona ultrasònica t recorre la distància int; // variable calculada per emmagatzemar la distància

2. configuració nul·la () és una funció que s'executa només una vegada a l'inici quan la placa s'encén o es prem el botó d'activació. Aquí es declara que els dos pins d'Arduino s'utilitzen com a ENTRADA i SORTIDA . En aquesta funció s’estableix la velocitat de transmissió. La velocitat de transmissió és la velocitat en bits per segon mitjançant la qual el microcontrolador es comunica amb el sensor d’ultrasons.

void setup () {pinMode (trigPin, OUTPUT); // Estableix el trigPin com a pinMode de sortida (echoPin, INPUT); // Estableix echoPin com a entrada de sèrie.begin (9600); // Inicia la comunicació en sèrie}

3. bucle buit () és una funció que s'executa una i altra vegada en bucle. Aquí hem codificat el microcontrolador perquè enviï un senyal ALTA al pin Trigger del sensor ultrasònic, enginyi durant 20 microsegons i li enviï un senyal BAIX.

void loop () {// Estableix el trigPin en estat HIGH durant 10 microsegons digitalWrite (trigPin, HIGH); // enviar un senyal HIGH en el disparador del primer sensor delayMicroseconds (10); // espereu 10 microsegons digitalWrite (trigPin, LOW); // enviar un senyal BAIX al disparador del primer retard del sensor (2); // espera durant 0,2 segons}

Codi per al costat del receptor

1. Al principi, s’inicialitzen els pins de la placa Arduino que es connectaran al sensor d’ultrasons. A continuació, es declaren les variables que s'utilitzaran per emmagatzemar valors per al càlcul de temps i distància durant el temps d'execució del codi.

// defineix els números de pins const int trigPin = 9; // Connecteu el pin trigonal del sensor d'ultrasons al pin9 d'Arduino const int echoPin = 10; // Connecteu el pin ecològic del sensor d'ultrasons al pin10 d'Arduino // defineix les variables de llarga durada; // variable per emmagatzemar el temps que triga l’ona ultrasònica a recórrer la distància int; // variable calculada per emmagatzemar la distància

2. configuració nul·la () és una funció que s'executa només una vegada a l'inici quan la placa s'encén o es prem el botó d'activació. Aquí es declara que els dos pins d'Arduino s'utilitzen com a INPUT i OUTPUT. En aquesta funció s’estableix la velocitat de transmissió. La velocitat de transmissió és la velocitat en bits per segon mitjançant la qual el microcontrolador es comunica amb el sensor d’ultrasons.

void setup () {pinMode (trigPin, OUTPUT); // Estableix el trigPin com a pinMode de sortida (echoPin, INPUT); // Estableix echoPin com a entrada de sèrie.begin (9600); // Inicia la comunicació en sèrie}

3. void Trigger_US () és una funció que es cridarà a Fake Triggering del gatet del segon sensor d'ultrasons. Sincronitzarem el temps d’activació del pin d’activació d’ambdós sensors.

void Trigger_US () {// Activador fals del sensor digitalWrite dels EUA (trigPin, HIGH); // Envieu un senyal HIGH al pin de desencadenament del segon sensor delayMicroseconds (10); // espereu 10 micres segons digitalWrite (trigPin, LOW); // enviar un senyal BAIX al segon remitent del pin de disparador}

4. void Calc () és una funció que s’utilitza per calcular el temps que triga el senyal ultrasònic en viatjar des del primer sensor fins al segon sensor.

void Calc () // funció per calcular el temps que triga l’ona ultrasònica a viatjar {durada = 0; // durada inicialment establerta a zero Trigger_US (); // crida a la funció Trigger_US mentre (digitalRead (echoPin) == HIGH); // mentre l'estat del pin eo en retard elevat (2); // posa un retard de 0,2 segons Trigger_US (); // trucar a la funció Trigger_US duration = pulseIn (echoPin, HIGH); // calcular el temps trigat}

5. Aquí al bucle buit () funció, estem calculant la distància utilitzant el temps que pren el senyal ultrasònic per viatjar des del primer sensor fins al segon sensor.

bucle buit () {Pdistància = distància; Calc (); // crida a la funció Calc () distància = durada * 0,034; // calcular la distància coberta per l'ona ultrasònica si (Pdistància == distància || Pdistància == distància + 1 || Pdistància == distància-1) {Serial.print ('Distància mesurada:'); // imprimir al monitor sèrie Serial.println (distància / 2); // imprimir al monitor de sèrie} //Serial.print('Distància: '); //Serial.println(distància/2); retard (500); // espera 0,5 segons}