Table of Contents

Line follower

Introducere

Inspirație

Inspirația a avut un număr de surse cu care am interacționat de-a lungul timpului:

Idee

Proiectul constă în realizarea unui robot de tipul line follower care să urmărească o linie/curbă plană desenată cu negru pe un plan alb, controlul realizându-se la nivel software. De asemenea, robotul dispune și de un senzor de distanță ultrasonic cu ajutorul căruia poate evita obstacolele întâlnite pe traseu.

Descriere generală

Robotul va consta dintr-un microcontroller (Arduino UNO) așezat pe un suport, împreună cu un servomotor SG90 care va dezvolta puterea necesară pentru roți (pentru deplasarea robotului). Pentru a detecta dacă traseul urmat de robot este corect, robotul dispune de 2 senzori (fotorezistori) care au rolul de a indica dacă sub fiecare dintre ei există o linie neagră sau nu. Dacă este o linie neagră, atunci robotul se va deplasa în direcție opusă față de poziția senzorului. Mișcarea va fi îmbunătățită cu ajutorul unui regulator implementat în software (PID). Scopul este ca robotul nostru să parcurgă complet o curbă plană închisă cu diverse grade de curbură (testarea controlului implementat într-o situație reală). Robotul va dispune și de 2 LED-uri (unul roșu și unul verde) pentru a indica dacă robotul urmează traseul dorit sau nu.

Hardware Design

Pentru realizarea proiectului am folosit următoarele componente:

Aici avem design-ul hardware și schema electrică a sistemului nostru, conform cu cele descrise mai sus (am înlocuit driver-ul MX1508 cu un driver standard, L298D pentru care am realizat legăturile pe pinii comuni, și cele 2 benzi de senzori cu 6 senzori de infraroșu generici din Tinkercad):

Schema electrică este următoarea: proiect_pm_line_follower_electric_scheme.pdf

Software Design

Funcționarea din punct de vedere software a proiectului este descrisă în următoarea diagramă:

În partea de setup am realizat inițializarea senzorilor (pe pinii pe care au fost conectați) și calibrarea senzorilor de infraroșu, cu ajutorul bibliotecii QTRSensors. În partea de loop, se determină eroarea amplasării liniei față de cei 6 senzori dispuși 3 câte 3, iar apoi modificarea efectivă în vitezele celor două motoare se determină folosind un regulator PID (proporțional integrativ derivativ), astfel: modificarea va fi reprezentată de o sumă de 3 termeni, dintre care:

Apoi am adaptat viteza celor două motoare în funcție de această modificare determinată (am modificat vitezele în sensul reducerii acestora, în cazul existenței unei modificări majore).

Laboratoarele folosite din materia de PM sunt: timere și PWM (laboratorul 3), UART (strict cu scop de debug - laboratorul 1), convertor analog-digital (pentru senzorii analogici de infraroșu - laboratorul 4), I2C (laboratorul 6 - pentru senzorul ultrasonic).

Rezultate Obţinute

Concluzii

A fost un proiect interesant de început în zona de hardware, însă cu toate acestea am întâmpinat numeroase probleme care și-au adus contribuția la rezultatul final (line follower-ul nu urmărește fidel o linie, ci doar o urmează ca direcție, fără a reuși însă să parcurgă o linie închisă complet/să ia curbe):

Chiar dacă rezultatul nu este unul satisfăcător, totuși am fost inițiat în tot ceea ce înseamnă un proiect de hardware, dovedindu-și complexitatea mai mult decât un proiect de software.

Download

Aici puteți găsi codul pentru line follower: proiect_pm_cod_line_follower.zip

Jurnal

06.05.2023: Schița documentației

18.05.2023: A sosit comanda 1 de piese.

21.05.2023: Constat că am nevoie de un driver mai simplu (shield-ul inițial era prea complicat pentru proiectul propus), decid să iau altul + niște fire + niște mini breadboards.

23.05.2023: A sosit comanda 2 de piese.

27.05.2023: Realizarea design-ului hardware

28.05.2023: Testarea întregului design hardware: senzori și motoare

29.05.2023: Lipirea unor componente în laboratorul de PM

29.05.2023: Implementare software (+ fine tuning parametrii PID)

30.05.2023: Prezentare proiect PM Fair

Bibliografie/Resurse/Altele