Teodor-Mihai COTEȚ (67151) - Radar cu ultrasunete

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul este un radar care functioneaza pe distante mici, folosind ultrasunete in loc de unde radio. Afisarea se va face pe un PC, intrucat permite o grafica mai avansata. Miscarea se va face cu un singur servotomor (doar pe orizontala) la 180 de grade. Cred ca acest dispozitiv ar putea fi util pentru robotei autonomi pentru a se orienta in spatiu,

Descriere generală

Procesorul ATmega324 va transmite semnale periodice catre servomotor astfel incat aceasta sa faca cicluri de 180 de grade periodic. Senzorul cu ultrasunete va transmite periodic datele la procesorul ATmega324 care le va transmite mai departe pe interfata seriala catre PC.

Schema bloc:

Schema electrica:

Hardware Design

Lista de piese:

Denumire Cantitate
Placa de baza 1
Micro Servomotor S3003 180º 1
Senzor ultrasonic HC-SR04 1
Convertor Port Serial-USB (PL2303) 1

Lista componente de baza:

  1x Microcontroller ATMEGA324PA-PU
  1x Soclu microcontroller
  2x Diode ZENER
  2x Condensator 100nF
  2x Condensator 15pF
  1x Rezistenta 10K
  1x Rezistenta 1.5K
  2x Rezistente 100K
  3x Rezistente 470K
  2x Push Button
  1x Quartz

Software Design

Codul este destul de complex, folosind elemente cam din toate laboratoarele.

Voi lua pe Rand cele 3 componente in parte: servomotorul, senzorul si transmiterea datelor la PC.

Servomotorul (S3003):

Controlez servomotorul folosind PWM. Servomotarele in general funcioneaza in felul urmator: Au o frecventa bine definita si in functie de duty cycleul primit stau la un anumit unghi. In cazul meu frecventa este de 50HZ. Realizez aceasta frecventa folosind un timer de tipul Fast PWM.

  ICR1 = F_CPU / PRESCALER / F_MOTOR_S3003;

ICR1 fiind topul meu, acesta regleza frecventa, denumirile variabilelor fiind sugestive. Dupa aceasta setarea voi avea frecventa F_MOTOR_S3003. Pentru duty cycle, setez un pim de PWM pe high la overflow, si pe low la comparatia cu OCR1B, astfel prin OCR1B pot controla duty cycle-il si implicit unchiul motorului.

Senzorul(HC-SR04):

Este un senzor clasic de ultrasunete care funcioneaza in felul urmator. Acesta primeste un impuls pe pinul de trigger al sau, consantand intr-o tensiune de 5v timp de 10 microsecunde, iar in urma acesetui impuls se trimit unde (ultrasunete, la frecventa de 40kHZ) si se asteapta reintoarcerea undelor. In functie de cat de repede detecteaza undele de feedback senzorul raspunde cu o tensiune de 5v pe pinul echo, pe o durata direct proportionala cu distanta masurata. (distanta mare→ sta mai mult pinul pe high, in general maxim 35 ms). Asadar partea de cod pentru acest senzor a constat in trimiterea semnalului si apoi cronometrarea pe pinul de echo a duratei semnalului de la senzor. Am folosit pentru asta un timer plus intreruperi externe (schimbarea voltajului pe pinul de echo declanseaza o intrerupere externa). Calculez distanta in centimetri in functie de durata semnalului astfel:

  distance_cm = ((uint32_t)timer_value * 256 + (uint32_t)TCNT0) / 16  / 58; 

Transmiterea datelor la PC:

Am folsoit un conertor UART/TTL la USB, modele PL2303 mai exact. Am facut acest lucru clasic, asemenator cu in laborator. Setez baudrateul, bitii de paritate, de stop si apoi scriu intr-un registru distanta proaspat masurata de senzorul cu ultrasunete.

De asemenea a mai fost si partea de cod de pe PC, cu gui-ul si luarea datelor. Pe aceasta nu o voi mai descriue intru-cat am plecat de la codul colegului meu din an anterior si l-am adaptat pentru proiectul meu.

Rezultate Obţinute

Aceasta este gui-ul radarului:

Concluzii

Download

teodor_mihai.cotet.zip video included :-)

Jurnal

  • Saptamana 8: Nu am avut piese
  • Saptamana 9: Nu am avut piese
  • Saptamana 10: Lipit. Am lipit o dioda gresit. Am mai stat +2h sa o scot. Terminat placuta de baza
  • Saptamana 11: Cumparat motoare si senzor.
  • Saptamana 12: PWM motor, stricat motor SG90, cumparat motor S3003.
  • Saptamana 13: Conectare senzor, testat cu LED. Cumparare convertor UART/TTL→ USB PL2303
  • Saptamana 14: Trimitere date PC, prelucrare date PC, finalizare cod Atmega324.

Bibliografie/Resurse

Senzor HC-SR040: 13959

Servomotor S3003: s3003

Convertor UART/TTL → USB PL2303: usb-to-ttl-adapter-based-on-prolific-pl2303

Cod pentru GUI (modificat): bogdan.folea

GNU plot: www.gnuplot.info

  • Documentația în format PDF
pm/prj2017/cbirsan/teodor_mihai.cotet.txt · Last modified: 2021/04/14 17:07 (external edit)
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