Elettronica e controllo
Schemi: schema_blocchi.svg e schema_elettrico.svg, rigenerabili con python elettronica/schema.py.
Principio
- La tensione di rete si ferma all'alimentatore da tavolo, che resta fuori dalla giostrina (a pavimento dietro la vetrina o nel vano tecnico). È un prodotto finito in classe II, con uscita 24 V SELV e marcatura CE propria.
- Nel basamento entra solo un cavo a 24 V. Tutto ciò che il personale può toccare è a bassissima tensione di sicurezza.
- Il cappello è fisso, quindi il cavo dei LED sale dentro la colonna senza attraversare parti in movimento. Non serve il collettore rotante.
Componenti
| Rif. | Componente | Caratteristiche | Note |
|---|---|---|---|
| PS1 | Alimentatore da tavolo | 24 V, 90 W, classe II, SELV | tipo Mean Well GST90A24 o equivalente con marchio CE |
| S1 | Pulsante d'arresto a fungo | contatto NC, 24 V DC 5 A | in serie sul +24 V, in posizione raggiungibile senza sporgersi sulla giostrina |
| S2 | Interruttore I/O | 24 V DC 5 A | sulla fascia del basamento, lato retro |
| F1 | Fusibile generale | 5 A ritardato | subito dopo l'ingresso |
| F2 | Fusibile motore | 3 A ritardato | |
| F3 | Fusibile LED | 2 A rapido | |
| D1 | Diodo anti-inversione | Schottky 10 A | o MOSFET a canale P |
| U1 | Convertitore DC-DC | 24 V → 5 V, 1 A | modulo buck |
| U2 | ESP32 DevKit | ESP32-WROOM-32 | |
| U3 | Driver passo-passo | TMC2209, modalità silenziosa | con dissipatore; corrente tarata a 1,7 A rms |
| U4 | Orologio | DS3231 con pila CR2032 | mantiene l'ora senza alimentazione |
| Q1 | MOSFET dimmer | IRLZ44N o modulo equivalente a livello logico | resistenza 220 Ω sul gate, 10 kΩ verso massa |
| H1 | Sensore di giro | Hall A3144 + magnete Ø8 | sensore sul piano del basamento, magnete sotto la piattaforma |
| M1 | Motore | NEMA 23, 1,26 Nm, 2,8 A, albero 6,35 mm | con ruota di frizione Ø80 |
| L1 | Strip LED | 24 V, 9,6 W/m, 2700 K, CRI ≥ 90, 2,2 m | in profilo di alluminio con diffusore opale |
| P1 | Potenziometro | 10 kΩ lineare | velocità 60–90 s a giro |
| T1 | Tasto | normalmente aperto | pausa, forzatura, riarmo |
Collegamenti dell'ESP32
| Piedino | Funzione | Collegato a |
|---|---|---|
| GPIO25 | STEP | driver |
| GPIO26 | DIR | driver |
| GPIO27 | EN (attivo basso) | driver |
| GPIO32 | PWM LED | gate di Q1 tramite 220 Ω |
| GPIO34 | sensore di giro | uscita di H1, con pull-up esterno 10 kΩ a 3,3 V e 100 nF verso massa |
| GPIO33 | tasto | T1 verso massa |
| GPIO35 | velocità | cursore di P1 |
| GPIO21 / GPIO22 | I²C | SDA / SCL del DS3231 |
| GPIO2 | spia di stato | LED sulla scheda |
| VIN | 5 V | uscita di U1 |
Sul driver: MS1 e MS2 impostati per 16 micropassi, UART non usata, corrente regolata con il trimmer (Vref).
Protezioni
| Rischio | Protezione |
|---|---|
| Cortocircuito | fusibili F1, F2, F3; alimentatore con protezione propria |
| Blocco meccanico della piattaforma | la ruota di frizione slitta oltre circa 4 Nm (circa 11 N allo stelo); il firmware rileva il giro mancato e ferma il motore |
| Riavvii ripetuti contro un ostacolo | 3 tentativi a 10 s l'uno dall'altro, poi stato di guasto con riarmo manuale |
| Surriscaldamento del driver | protezione termica interna del TMC2209; motore senza corrente quando è fermo |
| Inversione di polarità | diodo D1 |
| Disturbi sul sensore | cavo schermato, filtro RC, antirimbalzo software di 2 s |
| Arresto volontario | pulsante a fungo sul 24 V: toglie alimentazione a motore, LED e logica |
Il pulsante a fungo interrompe la bassissima tensione ed è un comando d'arresto funzionale. Se l'analisi dei rischi di un tecnico abilitato richiedesse un arresto d'emergenza vero e proprio secondo norma, va rivisto con lui.
Comandi
| Azione | Effetto |
|---|---|
| Pressione breve del tasto | ferma la giostra e spegne le luci; una seconda pressione riprende |
| Pressione lunga (oltre 1,5 s) | accende anche fuori orario; una seconda pressione lunga torna al timer |
| Pressione breve in stato di guasto | riarmo |
| Potenziometro | velocità da 90 s a 60 s per giro |
Spia sulla scheda: fissa in marcia, lampeggio lento da ferma, lampeggio veloce in guasto.
Modalità vetrina
Ogni GIRI_TRA_LE_PAUSE giri la piattaforma rallenta e si ferma per DURATA_PAUSA_S secondi con il prodotto di punta rivolto al vetro. La posizione si ricava dal sensore di giro: a ogni passaggio del magnete il conteggio dei passi si azzera, quindi lo slittamento della ruota non si accumula. ANGOLO_PUNTA_GRADI va tarato al montaggio.
Caricare il firmware
- Installare Arduino IDE 2.x.
- In File → Preferenze → URL aggiuntive per il Gestore schede aggiungere
https://espressif.github.io/arduino-esp32/package_esp32_index.json. - In Strumenti → Scheda → Gestore schede installare esp32 by Espressif Systems (versione 2.0.11 o successiva).
- Aprire
elettronica/firmware/giostrina/giostrina.ino. - Modificare i parametri in testa al file: orari, velocità, modalità vetrina, eventuale Wi-Fi per l'ora.
- Selezionare Strumenti → Scheda → ESP32 Dev Module e la porta USB.
- Premere Carica. Se il caricamento non parte, tenere premuto il tasto BOOT sulla scheda.
- Aprire il monitor seriale a 115200 baud: ogni 5 s compare lo stato.
Non servono librerie esterne.
Regolare l'ora: con il Wi-Fi configurato l'ora viene presa da internet a ogni accensione e scritta sul DS3231. Senza Wi-Fi configurare la rete una prima volta, oppure usare uno sketch di esempio per il DS3231 scrivendo l'ora in UTC.
Da verificare
- Il firmware non è stato compilato né provato su scheda: su questo computer non c'è il compilatore per ESP32. La logica è stata riletta, ma al primo caricamento sono possibili errori di compilazione da correggere.
- Temperatura del driver a 1,7 A rms nel basamento chiuso. Se dopo un'ora supera i 70 °C: abbassare la corrente a 1,4 A (il margine sul motore scende da 3,5 a 2,9) oppure passare a un driver da 3 A (TMC5160).
- Taratura della corrente del driver con il trimmer, a motore scollegato dalla ruota.
- Rumorosità a 1 m con piattaforma carica: obiettivo sotto 35 dB(A).
- Taratura della molla della ruota: la piattaforma deve partire sempre e fermarsi trattenendola con una mano.
- Compatibilità elettromagnetica: l'insieme non è stato provato. Vedi
docs/sicurezza.md.