Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:vstoica:alexandru.ciornei [2024/05/27 01:38]
alexandru.ciornei [USART]
pm:prj2024:vstoica:alexandru.ciornei [2024/05/27 12:24] (current)
alexandru.ciornei [Jurnal]
Line 109: Line 109:
 } }
 </​code>​ </​code>​
-===== Rezultate Obţinute ===== 
  
-<note tip> +==== Timere/PWM ====
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</note>+
  
-===== Concluzii =====+Am folosit toate cele 3 Timere ale ATMega328P, fiecare dintre ele având un scop esențial în funcționarea mașinii.
  
-===== Download =====+=== Timer 0 PWM===
  
-<note warning>​ +Primul timer este configurat în modul Phase Correct PWM și mă folosesc de cei 2 pini PWM ai săi (OC0A și OC0Bpentru a controla motorul mașinii ​în ambele direcțiiîn funcție ​de input-ul utilizatorului.
-O arhivă (sau mai multe dacă este cazulcu fişierele obţinute ​în urma realizării proiectului:​ sursescheme, 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**. +<​code>​ 
-</note>+void Timer0_init_phase_correct_pwm() 
 +
 +    ​// set PD6(OC0A) 
 +    // and PD5(OC1A) 
 +    // as output 
 +    DDRD |= _BV(PD6); 
 +    DDRD |= _BV(PD5);
  
-===== Jurnal ​=====+    // set Phase Correct PWM mode 
 +    TCCR0A |_BV(WGM00);​ 
 + 
 +    // set OC0A/OC1A when up-counting 
 +    // TCCR0A |_BV(COM0A0);​ 
 +    TCCR0A |_BV(COM0A1);​ 
 +    // TCCR0A |_BV(COM0B0);​ 
 +    TCCR0A |_BV(COM0B1);​ 
 + 
 +    // set 1024 prescaler 
 +    TCCR0B |= _BV(CS00);​ 
 +    TCCR0B |= _BV(CS02);​ 
 + 
 +    OCR0A = 0; 
 +    OCR0B = 0; 
 +
 +</​code>​ 
 + 
 +=== Timer 1 Input Capture === 
 + 
 +Pentru a putea detecta timpul scurs de la emiterea semnalului ultrasonic de către senzorul de distanță, care este de regulă foarte scurt (poate fi de ordinul microsecundelor),​ am setat contorul timer-ului 1 pe 0 la momentul emiterii semnalului de trigger și am folosit funcția de input capture a timer-ului 1, pentru a putea declanșa o întrerupere la detectarea unui front negativ pe pinul ICP1. 
 + 
 +<​code>​ 
 +void Timer1_init_input_capture() 
 +
 +    cli(); 
 + 
 +    // OC1A/OC0B disconnected,​ normal mode 
 +    TCCR1A = 0; 
 + 
 +    // set input capture noise canceler 
 +    TCCR1B |= _BV(ICNC1);​ 
 +    // set falling edge trigger 
 +    TCCR1B &= ~_BV(ICES1);​ 
 + 
 +    // set 8 prescaler 
 +    TCCR1B |= _BV(CS11);​ 
 + 
 +    // set input capture interrupt 
 +    TIMSK1 |= _BV(ICIE1);​ 
 +     
 +    sei(); 
 +
 + 
 +ISR(TIMER1_CAPT_vect) 
 +
 +    ultrasonic_sensor_micros = ICR1 / 2; 
 +    distance_updated = true; 
 +
 +</​code>​ 
 + 
 +=== Timer 2 1Khz === 
 + 
 +Timer-ului 2 rulează în modul CTC pentru a putea oferi o frecvență de 1ms și deservește o bună parte din activitățile mașinii: pulsară regulată a luminilor de semnalizare,​ ping-urile emise de buzzer în momentul detectării unor obstacole, declanșarea senzorilor pentru a obține valori actualizate de la aceștia de 4 ori pe secundă. 
 + 
 +<​code>​ 
 +void Timer2_init_1Khz() 
 +
 +    cli(); 
 + 
 +    // set CTC mode 
 +    TCCR2A |= _BV(WGM21);​ 
 + 
 +    // set 64 prescaler 
 +    TCCR2B |= _BV(CS22);​ 
 +     
 +    // set compare register for 1000Hz 
 +    OCR2A |= 250; 
 + 
 +    // set interrupt 
 +    TIMSK2 |= _BV(OCIE2A);​ 
 + 
 +    sei(); 
 +
 +</​code>​ 
 +===== Rezultate Obţinute ===== 
 + 
 +{{:​pm:​prj2024:​vstoica:​porsche_lego_leduri.jpg?​nolink&​200|}} 
 +{{ :​pm:​prj2024:​vstoica:​placa_centrala_arduino_bluetooth.jpg?​nolink&​300|}} 
 +{{:​pm:​prj2024:​vstoica:​ansamblu_motor.jpg?​nolink&​300 |}} 
 +{{ :​pm:​prj2024:​vstoica:​senzor_ultrasonic_parcare.jpg?​nolink&​300 |}} 
 + 
 +{{ :​pm:​prj2024:​vstoica:​porsche_lego_full_fara_trapa.jpg?​nolink&​600 |}} 
 +===== Concluzii ===== 
 + 
 +Proiectul a fost mult mai dificil decât mă așteptam, atât pe partea de dezvoltare a codului mașinii și a aplicației,​ dar mai ales pe partea de hardware și de mecanică, pentru că nu aveam multă experiență cu astfel de lucruri, însă am învățat multe pe parcurs și am reușit să aduc proiectul într-o stare de funcționare bună. 
 +===== Download ​=====
  
-<note tip> +  * Arhivă cod mașinuță:​{{:​pm:​prj2024:​vstoica:​rc-lego-car-main.zip|}} 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului+  * Arhiva cod aplicație iOS:​{{:​pm:​prj2024:​vstoica:​rc-lego-car-ios-main.zip|}}
-</​note>​+
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse ​Hardware** 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse ​Software** şi **Resurse Hardware**. +  ​Datasheet ATMega328P {{:​pm:​prj2024:​vstoica:​atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf|}} 
-</​note>​+  ​Datasheet TXS108E {{:​pm:​prj2024:​vstoica:​txs0108e.pdf|}} 
 +  ​Datasheet JDY-18 {{:​pm:​prj2024:​vstoica:​jdy-18.pdf|}} 
 +  * Datasheet L293D {{:​pm:​prj2024:​vstoica:​l293d.pdf|}}
  
 +**Resurse Software**
 +  * [[https://​developer.apple.com/​documentation/​swiftui/​|SwiftUI]]
 +  * [[https://​developer.apple.com/​documentation/​corebluetooth|CoreBluetooth]]
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2024/vstoica/alexandru.ciornei.1716763112.txt.gz · Last modified: 2024/05/27 01:38 by alexandru.ciornei
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