This is an old revision of the document!


Self-Balancing Robot

Introducere

Self-balancing robot capable of moving while avoiding obstacles. This is a small-sized robot based on the Arduino Pro Mini development board and the MPU6050 accelerometer-gyroscope module.

It will help me understand the concept of self-balancing for a future OFF-ROAD robot project. I will use the PID library for this purpose.

Descriere generală

 Block diagram of the system

MPU6050 (Accelerometer + Gyroscope Module)

  • Connected to the Arduino via I²C:
  • SCL → A5 (SCL)
  • SDA → A4 (SDA)
  • Provides motion and tilt data for balance control.

Arduino Pro Mini

  • Central microcontroller managing sensor input and motor control.
  • Receives data from MPU6050 and controls the motor driver.
  • Pins 2, 3, 4, 5, 6, 7, 8, and 9 are used for communication and control.

DRV8833 (Motor Driver Module)

  • Receives control signals from Arduino to drive the left and right motors.
  • Outputs:
  • BOUT1, BOUT2 → Left Motor
  • AOUT1, AOUT2 → Right Motor

US-020 (Ultrasonic Distance Sensor)

  • Connected to Arduino for obstacle detection.
  • Uses TRIG and ECHO pins for distance measurements.
  • Helps in obstacle avoidance while balancing.

5V Regulators (x2)

  • Regulate power from the battery to provide a stable 5V supply.
  • One likely powers the Arduino and sensors; the other may power motors or logic.
  • Connected to battery terminals via red (+) and black (–) lines.

Battery

  • Provides the primary power source for all components via terminals.
  • Positive and negative rails are color-coded: red for +, black for –.

=== Functional Flow === The MPU6050 senses tilt and sends data to the Arduino, which processes it using a PID algorithm.

Based on the tilt angle, Arduino sends commands to the DRV8833 motor driver to adjust the rotation of the left and right motors to balance the robot.

The US-020 sensor detects nearby obstacles and can be used to alter motor behavior to avoid collisions.

Hardware Design

Aici puneţi tot ce ţine de hardware design:

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

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/prj2025/cmoarcas/nichita_adrian.bunu.1746460016.txt.gz · Last modified: 2025/05/05 18:46 by nichita_adrian.bunu
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