This is an old revision of the document!
Osciloscopul este organizat în jurul a cinci module hardware și trei module software, toate coordonate de ATmega328P.
Module hardware:
Lanțul de condiționare a semnalului se află la calea de intrare. Un semnal analogic intră prin mufa jack de 3.5mm, trece prin două diode 1N4148 care clampează tensiunea la 0–5V, apoi prin op-amp-ul MCP6002 configurat ca voltage follower (buffer unity-gain), și în final printr-un filtru RC trece-jos de 1kΩ/10nF (fc ≈ 16 kHz) care previne aliasing-ul înainte ca semnalul să ajungă la pinul ADC (A0).
Placa ATmega328P Xplained Mini furnizează microcontrollerul ATmega328P care rulează la 16 MHz, cu un debugger/programator integrat mEDBG accesibil direct prin USB — nu este necesar niciun programator extern. Placa operează la 5V și expune toți pinii MCU prin headere compatibile Arduino (J200, J201, J203). Un regulator onboard de 3.3V (disponibil pe J202 pin 4) alimentează display-ul ILI9341.
Display-ul TFT ILI9341 de 3.2” (320×240 pixeli, 65K culori) se conectează la ATmega328P prin busul hardware SPI. Redă forma de undă ca o linie continuă, suprapusă pe o grilă. UI-ul afișează scalele curente de time/div și volt/div, măsurătorile în timp real ale Vpp și frecvenței, și indicatorul HOLD când display-ul este înghețat. Deoarece ILI9341 operează la logică de 3.3V, un level shifter bidirecțional cu 4 canale (Pololu 2595) este plasat pe liniile SCK, MOSI, CS, DC și RST.
DAC-ul MCP4921 de 12 biți partajează busul SPI cu display-ul (CS separat pe D9) și generează semnalul intern de test prin primirea de valori de la ATmega328P la intervale regulate conduse de Timer2 ISR. Valorile sunt calculate dintr-un tabel de căutare (LUT) de 256 de puncte pre-calculat la startup, permițând generarea de semnale sinus, triunghi și dreptunghi. Ieșirea DAC-ului se întoarce în lanțul de intrare analogică, formând o buclă de demo standalone. Ieșirea DAC poate fi de asemenea conectată prin cablul jack la mufa de intrare pentru demonstrații complete.
Modulul EEPROM AT24C256 se conectează pe busul I2C (A4/SDA, A5/SCL) și stochează setările utilizatorului — trigger level, indexul time/div și indexul volt/div — astfel încât acestea persistă între sesiuni.
Module software:
Motorul de sampling rulează într-un ISR Timer1 CTC configurat să declanșeze la un interval programabil (de la 1µs la 1ms per sample). Implementează detecție de front pentru trigger — așteaptă ca semnalul de pe A0 să treacă un prag configurabil în direcția dorită înainte de a umple un buffer circular de 240 de eșantioane. Double-buffering previne glitch-urile pe display.
Renderer-ul de display rulează în main loop. Citește buffer-ul front, mapează fiecare eșantion ADC la o coordonată pixel Y bazată pe setarea curentă volt/div, și desenează segmente de linie între eșantioane consecutive. Grila, etichetele de scală, Vpp, frecvența și indicatorul HOLD sunt suprapuse deasupra.
Motorul de măsurători calculează Vpp = (max − min) × (3.3V / 1023) și estimează frecvența din numărul de zero-crossings în buffer, ambele actualizate la fiecare frame.
Listă componente:
| Componentă | Model complet | Cantitate | Rol | Preț estimat |
|---|---|---|---|---|
| Placă MCU | ATmega328P Xplained Mini | 1 | MCU central | De la PM lab |
| Display TFT | LCD 3.2” ILI9341 240×320 Touch SD 3.3-5V | 1 | Afișare semnal | ~116 RON |
| DAC | MCP4921-E/P — DIP8 12-bit SPI | 1 | Generator semnal | ~12 RON |
| Op-Amp | MCP6002-I/P — DIP8 dual rail-to-rail | 1 | Buffer intrare analogică | ~2 RON |
| EEPROM | Modul AT24C256 I2C | 1 | Salvare setări | ~7 RON |
| Level Shifter | Pololu 2595 — 4ch bidirecțional | 1 | 5V↔3.3V SPI | ~16 RON |
| Diode | 1N4148 DO-35 | 2 | Clamp tensiune 0–5V | ~1 RON |
| Rezistori | 1kΩ, 2kΩ, 3.3kΩ, 10kΩ — 1/4W | ~25 | Pull-up, filtru RC, divizori | ~5 RON |
| Condensatori | 100nF ceramic, 10nF ceramic, 10µF electrolitic | ~15 | Decoupling, filtru RC | ~20 RON |
| Mufă jack | PJ392 3.5mm stereo mamă | 1 | Intrare semnal extern | ~3 RON |
| Potențiometru | WH148 10kΩ liniar | 1 | Trigger level | ~2 RON |
| Butoane | PCB 12×12×7.3mm + capace colorate | 6+4 | Interfață utilizator | ~10 RON |
| Breadboard | 830 puncte | 1-2 | Prototipare | Disponibil |
| Fire | Set jumper 140 fire + dupont M-F 40 fire | 1+1 | Conexiuni | ~20 RON |
| Card microSD | orice card 1–32GB | 1 | Salvare forme de undă | ~15 RON |
Total estimat: ~229 RON
</note>
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.