This is an old revision of the document!


Taietor de iarba

Introducere

Pentru acest proiect am ales sa fac un taietor de iarba automat, care verifica daca pe o distanta de 5 cm in fata exista un obstacol sau nu. Daca exista merge pana aproape de el, timp in care se activeaza un motor care taie iarba cand acesta merge. Dupa ce taie iarba in zona respectiva, acesta isi schimba directia si merge sa taie iarba in acea zona.

Descriere generală

Acest taietor de iarba, are rolul de a merge drept inainte daca in fata obstacolele se afla la o distanta mai mica de 25 de cm, iar daca nu acesta analizeaza zona in stanga si in dreapta, sa vada unde ar fi cel mai apropiat obstacol pe care sa-l poata taia. Dupa ce analizeaza zona acesta decide care distanta este cea mai mica dintre toate 3, si isi seteaza directia pe care sa poata merge

Hardware Design

Pentru realizarea acestui proiect am cumparat deja un robot kit pe 2 roti, care contine 2 DC motor engine, si 2 roti, adaugand pe langa un L298N Dual Motor Driver. Totodata am folosit si Arduino UNO, un senzor ultrasonic pentru dectectarea distantei pana la urmatorul obstacol si un ULN2003 Stepper Driver + Stepper Motor.

Conectarea firelor a fost efectuata pe baza schemei de mai jos:

Software Design

Pentru realizarea soft-ului am folosit mai multe librarii externe pentru o mai buna functionalitate a hardware-ului, si mai exact pentru senzor si pentru stepper motor. Libraria AccelStepper am folosit-o pentru stepper.

Care este flow-ul robotului? Acesta calculeaza initial distanta din pozitia in care este el situati initial. Daca aceasta este mai mica decat 7.5 cm si totodata este mai mare decat 6mm atunci merge inainte. minimul de 6mm am pus-o deoarece daca in fata se afla un zid, acesta nu poate fi taiat, si automat v-a ramane acolo constant. Daca nu respecta conditia de mai sus, atunci robotul nostru trebuie sa-si schimbe sensul, si pentru asta el face o rotatie in stanga si in dreapta, in urma caruia extrage distanta minima pana la primul obiect intalnit in ambele directii, si apoi isi seteaza directia catre zona respectiva. Directia respectiva trebuie sa fie mai mare totodata decat 1.5 cm. Dupa ce se seteaza directia se repeta tot procesul descris mai sus.

Functiile implementate de mine sunt urmatoarele: run_step_motor() - seteaza cat sa se roteasca elicea(motorasul) in acea secunda move_back, move_forward, rotate_left, rotate_right - deplaseaza masinuta in fata/spate sau o rotesc in stanga/dreapta step_left, step_right - implementeaza logica pentru scanarea zonei din stanga/dreapta, si acestea returneaza totodata distanta catre cel mai apropiat obiect.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/alucaci/line_follower.1685283188.txt.gz · Last modified: 2023/05/28 17:13 by robert_mihai.adam
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0