This shows you the differences between two versions of the page.
|
pm:prj2026:andrei.batasev:ioana.priboi [2026/05/16 18:40] ioana.priboi [Hardware Design] |
pm:prj2026:andrei.batasev:ioana.priboi [2026/05/16 20:16] (current) ioana.priboi [Hardware Design] |
||
|---|---|---|---|
| Line 73: | Line 73: | ||
| - | == Interconectare hardware == | + | == Schema electrică == |
| - | Sistemul este construit în jurul plăcii Arduino Nano, bazată pe microcontrollerul ATmega328P. Arduino controlează cubul LED prin două registre de deplasare 74HC595, folosite pentru cele 16 coloane ale cubului, și prin patru tranzistoare NPN 2N2222, folosite pentru comutarea celor 4 straturi. | + | {{:pm:prj2026:andrei.batasev:schema_electrica_priboi_ioana.png?900|Schema electrica}} |
| - | Cubul LED este realizat din 64 de LED-uri albastre, organizate ca matrice 4x4x4. Coloanele verticale sunt anoduri comune, iar straturile orizontale sunt catoduri comune. Astfel, pentru aprinderea unui LED, Arduino setează coloana corespunzătoare prin shift registere și activează stratul dorit prin tranzistorul asociat. | ||
| - | Cele două shift registere 74HC595 sunt conectate în lanț. Arduino trimite datele serial pe pinul D11, semnalul de clock este pe D12, iar latch-ul este pe D10. Primul registru controlează coloanele C1-C8, iar al doilea controlează coloanele C9-C16. Fiecare coloană este conectată printr-un rezistor de 330 ohm pentru limitarea curentului prin LED-uri. | + | Creierul proiectului este plăcuța Arduino Nano V3 CH340 (ATmega328P). Microcontroller-ul controlează cubul LED prin două registre de deplasare 74HC595, folosite pentru cele 16 coloane ale cubului, și prin patru tranzistoare NPN 2N2222, folosite pentru comutarea celor 4 straturi |
| - | Straturile cubului sunt comutate separat cu tranzistoare NPN. Bazele tranzistoarelor sunt conectate la pinii D2-D5 prin rezistoare de 1k ohm, emitorii sunt legați la GND, iar colectorii sunt conectați la catodurile comune ale straturilor. Prin activarea rapidă a straturilor, cubul poate afișa animații 3D folosind multiplexare. | + | Cubul este alcătuit din 64 de LED-uri albastre, organizate ca matrice 4x4x4. Coloanele verticale sunt anoduri comune, iar layerele orizontale sunt catoduri comune. Astfel, pentru aprinderea unui LED, se setează coloana corespunzătoare prin shift registere și se activează stratul corespunzator prin tranzistorul asociat. |
| - | Interfața utilizatorului este formată dintr-un LCD 1602 cu modul I2C, patru butoane, un potentiometru și un buzzer pasiv. LCD-ul folosește magistrala I2C pe pinii A4 și A5, potentiometrul este citit analogic pe A0, iar buzzerul este conectat pe D6 pentru generarea semnalului sonor | + | Cele două shift registere 74HC595 sunt conectate în lanț. Microcontroller-ul trimite datele serial pe pinul D11, semnalul de clock este pe D12, iar latch-ul este pe D10. Primul shift register controlează coloanele C1-C8, iar al doilea coloanele C9-C16. Fiecare coloană este conectată printr-o rezistența de 330 ohm pentru limitarea curentului prin LED-uri. |
| - | == Schema electrică == | + | Straturile cubului sunt comutate separat cu tranzistoare NPN. Bazele tranzistoarelor sunt conectate la pinii D2-D5 prin rezistențe de 1k ohm, emitorii sunt legați la GND, iar colectorii sunt conectați la catodurile comune ale straturilor. Prin activarea rapidă a straturilor, cubul generează animații 3D prin multiplexare. |
| - | {{:pm:prj2026:andrei.batasev:ioana.priboi:schema_electrica_priboi_ioana.png?900|Schema electrica}} | + | Interfața utilizatorului este formată dintr-un LCD 1602 cu modul I2C, 4 butoane, un potentiometru și un buzzer pasiv. LCD-ul folosește magistrala I2C pe pinii A4 și A5, potentiometrul este citit analogic pe A0 (ADC), iar buzzerul este conectat pe D6 pentru generarea semnalului sonor |
| == Pini folosiți == | == Pini folosiți == | ||
| - | ^ Pin Arduino ^ Componentă ^ Rol ^ De ce l-am ales^ | + | ^ Pin Arduino ^ Net Label ^ Componenta ^ Rol ^ De ce l-am ales ^ |
| - | | D0 | - | RX | Rezervat pentru comunicatia USB/Serial | | + | | D0 | - | - | RX | Rezervat pentru comunicatia USB/Serial | |
| - | | D1 | - | TX | Rezervat pentru comunicatia USB/Serial | | + | | D1 | - | - | TX | Rezervat pentru comunicatia USB/Serial | |
| - | | D2 | Tranzistor S0 | Comutare strat 0 (jos) | Pin digital simplu | | + | | D2 | LAYER1_CTRL | Tranzistor TR1 | Control layer L1 (jos) | Pini digitali consecutivi pt controlul layerelor | |
| - | | D3 | Tranzistor S1 | Comutare strat 1 | Pin digital simplu | | + | | D3 | LAYER2_CTRL | Tranzistor TR2 | Control layer L2 | Pini digitali consecutivi pt controlul layerelor | |
| - | | D4 | Tranzistor S2 | Comutare strat 2 | Pin digital simplu | | + | | D4 | LAYER3_CTRL | Tranzistor TR3 | Control layer L3 | Pini digitali consecutivi pt controlul layerelor | |
| - | | D5 | Tranzistor S3 | Comutare strat 3 (sus) | Pin digital simplu | | + | | D5 | LAYER4_CTRL | Tranzistor TR4 | Control layer L4 (sus) | Pini digitali consecutivi pt controlul layerelor | |
| - | | D6 | Buzzer pasiv | Semnal sonor | Pin PWM, potrivit pentru generarea tonului | | + | | D6 | BUZZER | Buzzer pasiv | Semnal sonor | Pin PWM, pentru generarea tonului | |
| - | | D7 | BTN_MODE | Schimbare mod | Pin digital simplu | | + | | D7 | BTN_MODE | Buton MODE | Schimbare mod | Pin digital cu suport PCINT | |
| - | | D8 | BTN_UP | Creștere timer | Pin digital simplu | | + | | D8 | BTN_UP | Buton UP | Crestere timer | Pin digital cu suport PCINT | |
| - | | D9 | BTN_DOWN | Scădere timer | Pin digital simplu | | + | | D9 | BTN_DOWN | Buton DOWN | Scadere timer | Pin digital cu suport PCINT | |
| - | | D10 | 74HC595 - Latch (ST_CP) | Actualizare ieșiri shift register | Pin folosit pentru latch | | + | | D10 | SR_LATCH | 74HC595 - RCLK | Latch | L-am grupat cu D11-D12 pt controlul shift registerelor | |
| - | | D11 | 74HC595 - Data (DS) | Trimitere date serial | Pin folosit pentru data | | + | | D11 | SR_DATA | 74HC595 - SER | Data | L-am grupat cu D10-D12 pt controlul shift registerelor | |
| - | | D12 | 74HC595 - Clock (SH_CP) | Clock pentru shift registere | Pin folosit pentru clock | | + | | D12 | SR_CLOCK | 74HC595 - SRCLK | Clock | L-am grupat cu D10-D11 pt controlul shift registerelor | |
| - | | D13 | - | Liber | L-am evitat, pentru ca este legat la LED-ul built-in | | + | | D13 | - | - | - | L-am evitat, pentru ca este legat la LED-ul built-in | |
| - | | A0 | Potențiometru | Citire valoare analogică | Pin ADC | | + | | A0 | POT | Potentiometru 10k | Citire analogica pt viteza animatii | Pin ADC | |
| - | | A1 | BTN_START/STOP | Pornire/oprire timer | Pin analogic folosit ca digital | | + | | A1 | BTN_START_STOP | Buton START/STOP | Pornire/oprire timer | Pin analogic folosit ca digital, cu suport PCINT | |
| - | | A2 | - | Liber | | | + | | A2 | - | - | - | - | |
| - | | A3 | - | Liber | | | + | | A3 | - | - | - | - | |
| - | | A4 | LCD I2C - SDA | Date I2C | Pinul SDA hardware al Arduino Nano | | + | | A4 | LCD_SDA | LCD I2C - SDA | Date I2C | Pinul SDA hardware al Arduino Nano | |
| - | | A5 | LCD I2C - SCL | Clock I2C | Pinul SCL hardware al Arduino Nano | | + | | A5 | LCD_SCL | LCD I2C - SCL | Clock I2C | Pinul SCL hardware al Arduino Nano | |
| - | + | ||
| - | == Justificarea alegerii pinilor == | + | |
| - | + | ||
| - | Am ales pinii D10, D11 și D12 pentru controlul shift registerelor 74HC595. Îi folosesc pentru latch, data și clock, astfel încât pot controla cele 16 coloane ale cubului folosind doar 3 pini de pe Arduino. | + | |
| - | + | ||
| - | Pentru cele 4 straturi ale cubului am folosit pinii D2-D5. I-am ales pentru ca sunt pini digitali simpli și sunt poziționați consecutiv, ceea ce face schema mai ușor de urmărit. Fiecare pin comandă baza unui tranzistor NPN printr-un rezistor de 1k ohm. | + | |
| - | + | ||
| - | Pentru LCD-ul I2C am rezervat pinii A4 și A5, pentru ca pe Arduino Nano aceștia sunt pinii hardware pentru SDA și SCL. Potențiometrul l-am conectat la A0, pentru ca trebuie citită o valoare analogică. Buzzerul l-am pus pe D6, pentru ca este pin PWM și poate fi folosit pentru generarea tonurilor sunetuluo | + | |
| - | + | ||
| - | Nu am folosit pinii D0 și D1, pentru ca sunt utilizați pentru comunicatia serială USB. Am lăsat liber și pinul D13, pentru ca este conectat la LED-ul built-in al plăcii și poate crea confuzii în timpul testării. | + | |
| + | Am incercat sa pastrez o impartire cat mai logica pentru alegerea pinilor si sa ii aleg consecutivi. Am grupat pinii folositi pentru aceeasi componenta, ca sa fie mai usor de urmarit atat schema, cat si codul. De asemenea, am verificat ca pinii pentru butoane au suport PCINT pe ATmega328P. Astfel pot detecta apasarile fara sa blochez programul principal, iar multiplexarea cubului si timerul pot rula in paralel | ||
| - | == Tabel de conexiuni == | ||
| - | ^ Componentă ^ Conexiune ^ Observații ^ | ||
| - | | **Shift Register 1** ||| | ||
| - | | SR1 VCC, pin 16 | 5V Arduino | Alimentare | | ||
| - | | SR1 GND, pin 8 | GND Arduino | Masă comună | | ||
| - | | SR1 OE, pin 13 | GND Arduino | Ieșiri active permanent | | ||
| - | | SR1 MR, pin 10 | 5V Arduino | Reset dezactivat | | ||
| - | | SR1 DS, pin 14 | D11 Arduino | Linie de date | | ||
| - | | SR1 SH_CP, pin 11 | D12 Arduino | Clock | | ||
| - | | SR1 ST_CP, pin 12 | D10 Arduino | Latch | | ||
| - | | SR1 Q7', pin 9 | SR2 DS, pin 14 | Legătură în lanț către al doilea registru | | ||
| - | | SR1 Q0-Q7 | Rezistor 330 ohm -> Coloane C1-C8 | Câte un rezistor pentru fiecare coloană | | ||
| - | | **Shift Register 2** ||| | ||
| - | | SR2 VCC, pin 16 | 5V Arduino | Alimentare | | ||
| - | | SR2 GND, pin 8 | GND Arduino | Masă comună | | ||
| - | | SR2 OE, pin 13 | GND Arduino | Ieșiri active permanent | | ||
| - | | SR2 MR, pin 10 | 5V Arduino | Reset dezactivat | | ||
| - | | SR2 DS, pin 14 | SR1 Q7', pin 9 | Primește datele de la primul registru | | ||
| - | | SR2 SH_CP, pin 11 | D12 Arduino | Același clock ca SR1 | | ||
| - | | SR2 ST_CP, pin 12 | D10 Arduino | Același latch ca SR1 | | ||
| - | | SR2 Q0-Q7 | Rezistor 330 ohm -> Coloane C9-C16 | Câte un rezistor pentru fiecare coloană | | ||
| - | | **Tranzistoare NPN** ||| | ||
| - | | D2 Arduino | Rezistor 1k ohm -> baza TR1 | Controlează stratul 0 (jos) | | ||
| - | | D3 Arduino | Rezistor 1k ohm -> baza TR2 | Controlează stratul 1 | | ||
| - | | D4 Arduino | Rezistor 1k ohm -> baza TR3 | Controlează stratul 2 | | ||
| - | | D5 Arduino | Rezistor 1k ohm -> baza TR4 | Controlează stratul 3 (sus) | | ||
| - | | Emitor TR1-TR4 | GND | Toți emitorii sunt legați la masă | | ||
| - | | Colector TR1-TR4 | Catod straturi L0-L3 | Câte un tranzistor pentru fiecare strat | | ||
| - | | **LCD 1602 I2C** ||| | ||
| - | | VCC | 5V Arduino | Alimentare | | ||
| - | | GND | GND Arduino | Masă comună | | ||
| - | | SDA | A4 Arduino | Linie date I2C | | ||
| - | | SCL | A5 Arduino | Linie clock I2C | | ||
| - | | **Buzzer pasiv** ||| | ||
| - | | + | D6 Arduino | Semnal PWM pentru ton | | ||
| - | | - | GND Arduino | Masă | | ||
| - | | **Potențiometru** ||| | ||
| - | | Pin 1 | 5V Arduino | Alimentare | | ||
| - | | Pin 2 | A0 Arduino | Valoare analogică citită de Arduino | | ||
| - | | Pin 3 | GND Arduino | Masă | | ||
| - | | **Butoane tactile** ||| | ||
| - | | BTN_MODE | D7 Arduino și GND | Folosește INPUT_PULLUP, fără rezistor extern | | ||
| - | | BTN_UP | D8 Arduino și GND | Folosește INPUT_PULLUP, fără rezistor extern | | ||
| - | | BTN_DOWN | D9 Arduino și GND | Folosește INPUT_PULLUP, fără rezistor extern | | ||
| - | | BTN_START/STOP | A1 Arduino și GND | Folosește INPUT_PULLUP, fără rezistor extern | | ||
| - | | **Condensatoare** ||| | ||
| - | | 100nF nr.1 | VCC și GND SR1 | Montat cât mai aproape de chip | | ||
| - | | 100nF nr.2 | VCC și GND SR2 | Montat cât mai aproape de chip | | ||
| - | | 100uF | Linia 5V și GND breadboard | Stabilizare generală | | ||
| ===== Software Design ===== | ===== Software Design ===== | ||