Mașinuță Roomba (fără aspirare)

Introducere

Proiectul constă în creearea/asamblarea unei mașini cu 4 roți care poate merge liber în spatiu și evită obstacolele dacă le întâlnește. Totodată, acesta semnalează cu ajutorul a 1 led direcția ce urmează sa o ia pentru a evita coliziunea cu obiectele.

Descriere generală

Ideea din spatele acestui proiect este de a folosi o placuță Arduino UNO cu un ATMEGA 328P pentru a pune în funcțiune o mașină. Folosind senzorul ultrasonor aceasta va detecta dacă există obstacole în fața ei . De asemeana motoarele rotilor vor fi ghidate de un motor driver. Mașinuța va fi alimentată de baterii și va folosi un modul de coborâre de tensiune în funcție de ce input/output de curent am nevoie. Apropierea de obstacole va fi semnalata de ledul care va pulsa.

Hardware Design

Componente hardware:

  • ARDUINO UNO R3 - programarea interactiunii perifericelor si modul lor de actionare
  • SENZOR ULTRASONIC HC-SR04 - detectarea obstacolelor
  • L298N Punte H dubla (dual H-bridge) motor DC/stepper - controlul motoarelor
  • Switch - pornirea/oprirea masinutei
  • Led RGB - semnalizarea apropierii de obstacol
  • Suport baterii 4x AA - alimentare
  • Modul coborâre tensiune LM2596 - reglarea tensiunii in functie de inputul bateriilor
  • PCB - unirea unor componente
  • Fire - unirea unor componente

Pins:

  • In aceasta schema am reprezentat conectarea pinilor si interactiunea modulelor.
  • La Arduino Uno - pin 5-10 - sunt folosite pentru controlul bridge-ului, cu ajutorul carora voi trimite semnale pentru a efectua miscari stanga/dreapta, inainte, inapoi. Am 4 motoare, sunt conectate la bridge in asa fel incat cele 2 motoare din stanga si dreapta sa se invarta in aceeasi directie. Pinul A2-A3 - le folosesc pentru comunicarea cu senzorul ultrasonic. Pinul de GND si VCC al senzorului sunt conectate la 5V output si GND al Arduino.
  • Modulul de coborare tensiune - inputul de ”+” este conectat printr-un switch la ”+” alimentarii, totodata il conectez la bridge pentru a alimenta motoarele la pinul care suporta mai mult de 5V, inputul de ”-” este conectat la GND al aliemntarii. Outputul este conectat la Vin al Arduino si GND la GND pt Arduino dar si GND bridge.
  • Ledul are catodul conectat la GND general, iar anodul este conectat intr-o rezistenta de 330 ohm la pinul 3 (pentru a putea folosi pwm).
  • Alimentarea (baterii) are un output de 6V. Putem adauga baterii atat cat suporta modulul de coborare tensiune avand in vedere si suportul maxim pentru bridge.

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare - Arduino IDE
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • –> state machine cu stari de genul merge-inainte , merge- inapoi, roteste-dreapta, roteste-stanga
  • verifica daca in stanga sau in dreapta are distanta mai mare pentru a merge inainte si se duce in directia respectiva
  • se bazeaza pe inputul dat la pinii pentru motoare (high/low)
  • led- implementare pwm pentru a pulsa cand efectueaza unele manevre
  • am implementat o intrerupere pentru a face ledul sa pulseze
  • folosesc uart pentru comunicarea cu pinii

https://github.com/basocnicoletanina/PM-masinuta-roomba-fara-aspirare

Rezultate Obţinute

In primul rand am intampinat dificultati la nivel de alimentare - idee initiala a fost sa folosesc 4 baterii alkaline , ceea ce aparent nu a fost o idee buna aka suficient si nu am putut face rost de baterii Li-ion , deci am venit cu rezolutia de a uni inca doua baterii in serie , iar modulul de coborare de tensiune nu regla tensiunea (probabil era stricat sau l-am stricat eu incercand sa o reglez), deci nu l-am mai integrat in circuit. Plus la acest lucru primul senzor era stricat deci a trebuit sa folosesc un altul care nu imi da valori eronate, dar overall l-am facut sa lucreze Respectiv actual schema arata cam asa: Robotelul aratand asa :

Concluzii

Mi-a placut sa lucrez la proiect dat fiind faptul ca m-am invatat sa lipesc si am inteles mai bien cum se integreaza hardware niste componente. Totodata chiar si codul a fost unul ceva mai challenging decat m-am asteptat dar mi-a placut sa ma joc cu el , si cred ca cel mai important lucru e ca mi-a starnit curiozitatea pentru astfel de idei.

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.

Bibliografie/Resurse

pm/prj2024/fstancu/nicoleta_nina.basoc.txt · Last modified: 2024/05/27 09:01 by nicoleta_nina.basoc
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