This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:claudia.soare [2026/05/24 21:32] claudia.soare [Surse si functii implementate] |
pm:prj2026:vlad.radulescu2901:claudia.soare [2026/05/24 22:37] (current) claudia.soare [Hardware Design] |
||
|---|---|---|---|
| Line 22: | Line 22: | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | {{:pm:prj2026:vlad.radulescu2901:schema_electrica_modul_solar.png?750|}} | + | |
| + | {{:pm:prj2026:vlad.radulescu2901:modulsolar_claudia.png?750}} | ||
| **Explicatia schemei electrice:** | **Explicatia schemei electrice:** | ||
| Line 96: | Line 97: | ||
| **1. Modulul Principal (main.c)** | **1. Modulul Principal (main.c)** | ||
| - | Reprezinta inima sistemului. Aici se face preluarea datelor, afisarea pe ecran si rularea masinii de stari pentru tranzitiile audio. | + | Aici se face preluarea datelor, afisarea pe ecran si rularea masinii de stari pentru tranzitiile audio. |
| Pentru a stabiliza valorile citite de senzorii optici, a fost implementata functia de ''Oversampling'', care aduna 8 esantioane consecutive si returneaza media lor, ignorand astfel zgomotul electric: | Pentru a stabiliza valorile citite de senzorii optici, a fost implementata functia de ''Oversampling'', care aduna 8 esantioane consecutive si returneaza media lor, ignorand astfel zgomotul electric: | ||
| <code c> | <code c> | ||
| Line 147: | Line 148: | ||
| </code> | </code> | ||
| - | ===== Rezultate Obţinute ===== | + | ===== Rezultat ===== |
| - | + | ||
| - | <note tip> | + | |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| + | https://drive.google.com/file/d/1DGZJ26SoPe8rLa0h7vX-gNK8Hjuyt_yA/view?usp=sharing | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| - | ===== Download ===== | + | Acest proiect a reprezentat o provocare complexa si o sinteza excelenta a conceptelor de programare low-level si hardware design. Dezvoltarea unui Solar Tracker hibrid, folosind o abordare strict bare-metal in C, a demonstrat importanta gestionarii eficiente a resurselor limitate ale unui microcontroler (precum memoria RAM de doar 2KB a cipului ATmega328P) in conditiile rularii unor sarcini simultane. |
| - | <note warning> | + | Principalele realizari si lectii invatate includ: |
| - | 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ă ;-). | + | * **Integrarea Hardware-Software:** Am reusit sa sincronizez componente cu cerinte hardware si de timp complet diferite: citirea senzorilor analogici prin oversampling, actionarea fluida a motoarelor pas cu pas, afisarea de date pe I2C si redarea audio in timp real (prin generare de semnal PWM si comunicatie SPI cu un card SD). |
| - | + | * **Optimizarea Resurselor:** Integrarea modulului audio (PetitFS) alaturi de restul perifericelor a provocat initial coliziuni in memorie (Stack Overflow) si caderi de tensiune. Aceasta problema critica a fost depasita prin ajustarea atenta a bufferelor de citire la 256 bytes si optimizarea codului de debugging. | |
| - | 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**. | + | * **Flexibilitate si Control Absolut:** Renuntarea la bibliotecile predefinite abstractizate a oferit un control total asupra registrilor (Timere, ADC, TWI, SPI). Acest lucru a permis implementarea unor solutii personalizate vitale, precum multiplexarea manuala a pinilor pentru motoare pe porturi diferite si scrierea unui driver propriu, eficient, pentru ecranul LCD. |
| - | </note> | + | |
| + | ===== Download ===== | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| - | <note> | + | |
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | Acest proiect a fost realizat consultand urmatoarele surse oficiale si documentatii tehnice, structurate pe componente hardware si software: |
| - | </note> | + | |
| + | ==== Resurse Hardware ==== | ||
| + | * **[[https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf|Datasheet ATmega328P (Microchip)]]:** Sursa esentiala pentru intelegerea si configurarea la nivel de bit a registrilor pentru Timere (generare PWM si intreruperi), ADC (conversie analog-digitala), SPI si TWI (I2C). | ||
| + | * **[[https://www.ti.com/lit/ds/symlink/pcf8574.pdf|Datasheet PCF8574 (Texas Instruments)]]:** Documentatia pentru modulul "Remote 8-bit I/O expander for I2C-bus", necesara pentru implementarea algoritmului bare-metal de comunicatie intre microcontroler si ecranul LCD 1602. | ||
| + | * **[[https://www.makerguides.com/wp-content/uploads/2019/04/ULN2003-Datasheet.pdf|Datasheet Driver ULN2003]]:** Specificatiile tehnice ale array-ului de tranzistori Darlington, folosit impreuna cu motorul stepper 28BYJ-48. A fost esential pentru calculul unghiular al pasilor (reductor intern 1:64) si intelegerea secventei corecte de magnetizare a bobinelor in modul Half-Step si Full-Step. | ||
| + | ==== Resurse Software ==== | ||
| + | * **[[https://ocw.cs.pub.ro/courses/pm|Laboratoarele OCW - Proiectarea Microprocesoarelor]]:** Suportul teoretic si practic principal pentru fundamentarea cunostintelor despre arhitectura AVR, protocoalele de comunicatie seriala (UART, SPI, I2C) si manipularea la nivel de port. | ||
| + | * **[[http://elm-chan.org/fsw/ff/00index_p.html|Petit FAT File System Module (Elm-Chan)]]:** Documentatia oficiala si codul sursa pentru libraria PetitFS, utilizata pentru accesarea sistemului de fisiere de pe cardul SD in conditii de memorie RAM extrem de redusa (specific arhitecturilor pe 8 biti). | ||
| + | * **[[https://www.nongnu.org/avr-libc/user-manual/|AVR Libc Reference Manual]]:** Utilizat pentru detaliile de implementare a bibliotecilor standard C pe mediul AVR (in special headerele ''<avr/io.h>'' si ''<avr/interrupt.h>''). | ||
| + | * **[[http://soundfile.sapp.org/doc/WaveFormat/|Standardul RIFF WAVE Audio Format]]:** Referinta tehnica folosita pentru structurarea functiei custom de parsare a header-ului fisierelor .wav, necesara pentru extragerea automata a frecventei de esantionare (Sample Rate) si a dimensiunii datelor PCM. | ||
| <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> | ||