Tanc cu bluetooth

Introducere

  • Proiectul propus este un tanc cu turela, ale caror miscari sunt controlate prin bluetooth de un terminal de pe PC/o aplicatie mobila
  • A pornit de la ideea de a construi un robot care se misca, dar diferit de clasica “masina”, scopul fiind o oportunitate de invatare si a pune bazele pentru posibile dezvoltari ulterioare

Descriere generală

Tancul este controlat folosind un terminal pe PC/o aplicatie mobila care comunica prin Bluetooth cu o periferica specializata. Modulul bluetooth redirecteaza semnalele primite catre o placuta STM32, care proceseaza datele primite si le trimite motoarelor care actioneaza senilele / servomotorului care roteste turela, dupa caz.

Schema bloc tanc

Hardware Design

Componente necesare

  • Board STM32 NUCLEO-F070RB
  • Modul Bluetooth 4.0 CC2541
  • Motor DC cu encoder x2
  • Driver motor DC67A x2
  • Traductor 3,3V → 5V
  • Baterie 9V x2
  • Modul coborare tensiune LM2596 x2
  • Micro Servomotor SG90
  • LEGO.

Schema electrica

Software Design

Mediu de dezvoltare

  • STM32CubeIDE
  • TeraTerm pentru testare

Trimitere comenzi

  • Aplicatia mobila se conecteaza prin bluetooth la modulul hc-05
  • Modulul comunica prin USART cu STM-ul.
  • Se primeste cate un caracter pe rand si se adauga intr-un buffer.
  • La intalnirea unui caracter terminator (\n, % sau m) se parseaza buffer-ul si se reseteaza

Turela

  • STM-ul primeste un procent care reprezinta rotatia servo-ului fata de pozitia 0.
  • Se salveaza valoarea in Compare Register-ul Timer-ului folosit ca PWM.

Senile

  • STM-ul primeste referinta procentuala la care trebuie sa ajunga motoarele, impreuna cu directia de mers
  • Comanda este de forma 60xm, unde x poate fi f = forward (pornesc ambele motoare), l = left sau r = right (unde porneste doar unul dintre motoare)
  • In urma unor masurari repetate am ajuns la urmatorul grafic:

Grafic functionare motor

  • Din acesta, reiese regiunea liniara de functionare, si putem calcula SLOPE si OFFSET pentru aceasta.
  • Viteza de referinta = referinta procentuala * SLOPE + OFFSET.
  • Timer 6 foloseste intreruperi pentru a regla comanda data motoarelor.
  • In urma unei analizei raspunsului la intrare treapta se determina forma functiei de transfer asociata motorului
  • Pe baza acestei forme se construieste regulatorul PI, care in urma discretizarii are urmatoarea formula:

Comanda(t) = Comanda(t-1) + 0.7410 * Eroare(t) - 0.6377 * Eroare(t-1)

  • Se salveaza Comanda(t) in Compare Register-ul Timer-elor folosit ca PWM pentru motoare.

Download

Bibliografie/Resurse

pm/prj2024/aungureanu/adrian.pana.txt · Last modified: 2024/05/27 11:43 by adrian.pana
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