- Materials necessaris:
- Concepte de robot per evitar obstacles:
- Diagrama del circuit i explicació:
- Programació del microcontrolador PIC:
- Robot per evitar obstacles en acció:
Obstacle Avoider Robot és un altre robot famós que condimenta els projectes incrustats. Per a aquells que siguin nous robots que eviten obstacles, només és un robot de rodes normal que podria navegar sense arribar a cap obstacle. Hi ha moltes maneres de construir un robot que evita els obstacles en el projecte. Utilitzarem un sensor ultrasònic (frontal) i dos sensors IR (esquerra / dreta) perquè el nostre robot tingui ulls en les tres direccions. D’aquesta manera podeu fer-lo molt més intel·ligent i ràpid mitjançant la detecció d’objectes als tres costats i maniobrar en conseqüència. Aquí demandem el microcontrolador PIC PIC16F877A per aquest robot que evita obstacles.
El funcionament d’un robot per evitar obstacles es pot observar a partir d’un producte en temps real anomenat robots de neteja de la llar. Tot i que la tecnologia i els sensors que s’utilitzen són molt complicats, el concepte continua sent el mateix. Vegem quant podem aconseguir amb els nostres sensors normals i microcontroladors PIC.
Consulteu també els nostres altres robots per evitar obstacles:
- Robot per evitar obstacles amb base a Raspberry Pi
- Robot de neteja intel·ligent de bricolatge amb Arduino
Materials necessaris:
- PIC16F877A
- Sensor IR (2Nos)
- Sensor d'ultrasons (1Nos)
- Motor d'engranatges de CC (2Nos)
- Controlador de motor L293D
- Chaises (També podeu crear-ne de vostres amb cartrons)
- Banc d'alimentació (qualsevol font d'alimentació disponible)
Concepte de robot per evitar obstacles:
El concepte de robot per evitar obstacles és molt senzill. Utilitzem sensors per detectar la presència d’objectes al voltant del robot i utilitzem aquestes dades per no col·lisionar el robot sobre aquests objectes. Per detectar un objecte podem utilitzar qualsevol sensor d’ús com el sensor IR i el sensor ultrasònic.


Al nostre robot hem utilitzat el sensor dels EUA com a sensor frontal i dos sensor IR per a l'esquerra i la dreta respectivament. El robot avançarà quan no hi hagi cap objecte present davant seu. Així, el robot avançarà fins que el sensor d’ultrasons (EUA) detecti cap objecte.

Quan el sensor dels EUA detecta un objecte, és hora de canviar la direcció del robot. Podem girar a l'esquerra o a la dreta, per decidir la direcció de gir, utilitzem l'ajuda del sensor IR per comprovar si hi ha algun objecte a prop del costat esquerre o dret del robot.
Si es detecta un objecte detectat a la part frontal i dreta del robot, el robot tornarà i girarà a l'esquerra. Fem que el robot funcioni cap enrere durant una certa distància perquè no xoqui sobre l’objecte mentre es fa el gir.

Si es detecta un objecte detectat a la part frontal i esquerra del robot, el robot tornarà i girarà a la dreta.

Si el robot arriba a un racó de l'habitació, detectarà l'objecte present en els quatre. En aquest cas, hem de conduir el robot cap enrere fins que qualsevol dels costats quedi lliure.

Un altre cas possible és que hi haurà un objecte al davant, però potser no hi haurà cap objecte ni al costat esquerre ni al costat dret, en aquest cas haurem de girar aleatòriament en qualsevol de les direccions.

Espero que això hagués donat una idea aproximada del funcionament d’un evitador d’obstacles, ara procedim amb el diagrama de circuits per construir aquest bot i gaudir-lo en acció.
Diagrama del circuit i explicació:

El diagrama complet del circuit d’aquest robot basat en PIC per evitar obstacles es mostra a la imatge superior. Com podeu veure, hem utilitzat dos sensors IR per detectar objectes a l'esquerra i a la dreta del robot, respectivament, i un sensor d'ultrasons per mesurar la distància de l'objecte que hi ha davant del robot. També hem utilitzat un mòdul de controlador de motor L293D per conduir els dos motors presents en aquest projecte. Aquests són només motors d’engranatges de corrent continu normals per a rodes i, per tant, es poden derivar molt fàcilment. La taula següent us ajudarà en les connexions.
|
S.No |
Connectat des de |
Connectat a |
|
1 |
Sensor IR Pin deixat fora |
RD2 (pin 21) |
|
2 |
Sensor IR Pin fora |
RD3 (pin 22) |
|
4 |
Motor 1 canal A. Pin |
RC4 (pin 23) |
|
5 |
Motor 1 canal B. pin |
RC5 (pin 25) |
|
6 |
Motor 2 canals A |
RC6 (pin 26) |
|
7 |
Motor 2 canals B. pin |
RC7 (pin 27) |
|
8 |
Pin de desencadenament dels EUA |
RB1 (pin 34) |
|
9 |
Echo Pin dels EUA |
RB2 (pin 35) |
Un mòdul de controlador de motor com L293D és obligatori perquè la quantitat de corrent necessària per fer funcionar el motor d'engranatges de CC no pot ser obtinguda pel pin d'E / S del microcontrolador PIC. Els sensors i el mòdul s’alimenten amb l’alimentació de + 5V que està regulant el 7805. El mòdul del controlador del motor es pot alimentar fins i tot amb + 12V, però per a aquest projecte m’acabo d’enganxar al + 5V disponible.
El robot complet funciona amb un banc de potència en el meu cas. També podeu utilitzar qualsevol banc de potència ordinari i passar la secció del regulador o utilitzar el circuit anterior i utilitzar qualsevol bateria de 9V o 12V per al robot, tal com es mostra al diagrama de circuits anterior. Un cop fetes les vostres connexions, semblaria una cosa així a continuació

Programació del microcontrolador PIC:
Programar el vostre PIC per treballar per a un obstaculista és realment fàcil. Només hem de llegir el valor d’aquests tres sensors i conduir els motors en conseqüència. En aquest projecte estem utilitzant un sensor d'ultrasons. Ja hem après a fer interfícies ultrasòniques amb el microcontrolador PIC; si sou nou, us recomanem que torneu a aquest tutorial per entendre com funciona un sensor dels EUA amb un PIC, ja que saltaré els detalls aquí per evitar la repetició.
El programa complet o aquest robot es dóna al final d’aquesta pàgina; a continuació he explicat els trossos importants del programa.
Com sabem, tots els programes comencen amb les declaracions de pin d'entrada i sortida. Aquí els quatre pins del mòdul Motor Driver i els pins Trigger són els pins de sortida, mentre que s’introduiran el pin Echo i dos pins de sortida IR. Hauríem d’inicialitzar el mòdul Temporitzador 1 per utilitzar-lo amb el sensor d’ultrasons.
TRISD = 0x00; // PORTD declarat com a sortida per a la interfície LCD TRISB1 = 0; // El pin gatell del sensor dels EUA s’envia com a pin de sortida TRISB2 = 1; // El pin de ressò del sensor dels EUA s'estableix com a pin d'entrada TRISB3 = 0; // RB3 és un pin de sortida per al LED TRISD2 = 1; TRISD3 = 1; // Els dos pins del sensor IR es declaren com a entrada TRISC4 = 0; TRISC5 = 0; // Motor 1 pins declarat com a sortida TRISC6 = 0; TRISC7 = 0; // Motor 2 pins declarats com a sortida T1CON = 0x20;
En aquest programa hauríem de comprovar la distància entre el sensor i l’objecte amb molta freqüència, de manera que hem creat una funció anomenada calculate_distance () dins la qual mesurarem la distància pel mètode comentat al tutorial d’interfície de sensors dels EUA. El codi es mostra a continuació
void calculate_distance () // funció per calcular la distància dels EUA {TMR1H = 0; TMR1L = 0; // esborreu els bits del temporitzador Trigger = 1; __delay_us (10); Trigger = 0; mentre que (Eco == 0); TMR1ON = 1; mentre que (Eco == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); distància = (0,0272 * temps_executat) / 2; }
El següent pas seria comparar els valors del sensor ultrasònic i del sensor IR i moure el robot en conseqüència. Aquí, en aquest programa he utilitzat un valor de cm com a distància crítica per sota de la qual el robot hauria de començar a fer canvis a la direcció. Podeu utilitzar els vostres valors preferits. Si no hi ha objecte, el robot només avança
si (distància> 5) {RC4 = 0; RC5 = 1; // Motor 1 cap endavant RC6 = 1; RC7 = 0; // Motor 2 cap endavant}
Si es detecta un objecte, la distància baixarà de cm. En aquest cas, considerem els valors del sensor d'ultrasons esquerre i dret. Basat en aquest valor, decidim girar a l'esquerra o girar a la dreta. S'utilitza un retard de ms perquè el canvi de direcció sigui visible.
if (RD2 == 0 && RD3 == 1 && distance <= 5) // El sensor esquerre està bloquejat {back_off (); RC4 = 1; RC5 = 1; // Parada 1 del motor RC6 = 1; RC7 = 0; // Motor 2 cap endavant __delay_ms (500); } calcular_distància (); if (RD2 == 1 && RD3 == 0 && distance <= 5) // El sensor dret està bloquejat {back_off (); RC4 = 0; RC5 = 1; // Motor 1 cap endavant RC6 = 1; RC7 = 1; // Parada del motor 2 __delay_ms (500); }
De vegades, el sensor ultrasònic detectava un objecte, però no hi havia cap objecte detectat pels sensors IR. En aquest cas, el robot gira a l'esquerra per defecte. També podeu fer que giri a la dreta o en una direcció aleatòria segons les vostres preferències. Si hi ha objectes als dos costats, fem que retrocedeixi. A continuació es mostra el codi per fer el mateix.
calcular_distància (); if (RD2 == 0 && RD3 == 0 && distància <= 5) // El sensor està obert {back_off (); RC4 = 0; RC5 = 1; // Motor 1 cap endavant RC6 = 1; RC7 = 1; // Parada del motor 2 __delay_ms (500); } calcular_distància (); if (RD2 == 1 && RD3 == 1 && distància <= 5) // Ambdós sensors estan bloquejats {back_off (); RC4 = 1; RC5 = 0; // Motor 1 invers RC6 = 1; RC7 = 1; // Parada del motor 2 __delay_ms (1000); }
Robot per evitar obstacles en acció:
El funcionament del projecte és molt interessant i divertit de veure. Un cop hàgiu acabat el vostre circuit i codi, només heu d’engegar el bot i deixar-lo a terra. Hauria de ser capaç d’identificar els obstacles i evitar-los amb intel·ligència. Però aquí arriba la part divertida. Podeu modificar el codi i fer que faci més coses, com fer que eviteu una escala, que sigui més intel·ligent emmagatzemant girs preciosos i què no?
Aquest robot us ajudarà a entendre els conceptes bàsics de programació i a conèixer com respondrà un maquinari real al vostre codi. Sempre és divertit programar aquest robot i veure com es comporta pel codi al món real.
Aquí hem utilitzat la mateixa placa de perfeccionament PIC que hem creat per parpellejar LED mitjançant microcontrolador PIC i hem utilitzat aquesta placa en altres projectes de la sèrie de tutorials PIC.

El vostre robot hauria de tenir un aspecte similar al que es mostra a la imatge superior. El funcionament complet d’aquest projecte es mostra al vídeo següent.
Espero que hagueu entès el projecte i us hagi agradat construir-ne un. Si teniu dubtes o us quedeu atrapats, podeu fer servir la secció de comentaris per publicar les vostres preguntes i faré tot el possible per respondre-les.
