Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Generatore CSV T e ΔT
Genera un CSV con la temperatura T di un sensore IR e la differenza ΔT = T − T_amb, con rumore, quantizzazione e jitter dei tempi simili a un sensore reale. T parte dalla temperatura ambiente, sale con i gradini di riscaldamento e ridiscende fino a T_amb.
Requisiti
uv. Gli script dichiarano le loro dipendenze (Python ≥ 3.11, numpy, matplotlib per il grafico): al primo avvio uv crea da solo l'ambiente virtuale e, se serve, scarica Python. Non serve installare altro.
Installare uv
curl -LsSf https://astral.sh/uv/install.sh | sh # Linux e macOS
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
pip install uv # alternativa, se hai già Python
Apri un nuovo terminale e verifica con uv --version. Altre opzioni (Homebrew, WinGet, ecc.) sono nella guida ufficiale.
Uso
uv run genera.py config.toml # scrive output/gen_<seed>.csv, seed casuale
uv run genera.py config.toml --seed 42 # riproducibile: output/gen_42.csv
uv run genera.py config.toml -o dati/prova.csv # percorso a scelta (cartelle create se mancano)
uv run genera.py config.toml -o - > out.csv # su stdout
| Opzione | Descrizione |
|---|---|
config |
file di configurazione TOML (obbligatorio) |
-o, --output |
file di uscita; default output/gen_<seed>.csv; - = stdout |
--seed |
seme del generatore; se omesso è casuale e viene stampato su stderr |
Stesso seed e stessa configurazione danno sempre lo stesso file. La cartella output/ è ignorata da git.
Grafico
uv run grafico.py # apre il grafico dell'ultimo CSV in output/
uv run grafico.py output/gen_42.csv # un CSV preciso
uv run grafico.py -o grafico.png # salva l'immagine (png, pdf, svg) invece di aprire la finestra
Mostra T e ΔT in funzione del tempo. grafico.py ha le sue dipendenze (numpy, matplotlib), gestite da uv come per genera.py; senza schermo usa -o.
Output
t_ms,T_C,dT_C
151,22.90,0.20
301,22.63,0.03
t_ms è intero; T_C e dT_C hanno due decimali. ΔT è calcolato dopo rumore e quantizzazione di entrambi i canali.
Configurazione
Tutti i valori numerici sono in config.toml (nessuno è scritto nello script). Le unità sono nei suffissi delle chiavi: _s secondi, _ms millisecondi, _c gradi C, _hz 1/s. Una chiave mancante è un errore (exit 1, messaggio in italiano), così come t_impulsi_s e dT_impulsi_c di lunghezza diversa.
Per cambiare il profilo di riscaldamento si modificano t_impulsi_s e dT_impulsi_c (un gradino per elemento; [] = nessun riscaldamento) e k_raffreddamento_hz. durata_s deve essere abbastanza lunga perché T torni a T_amb. Per ricalibrare il rumore si possono usare come riferimento le misure reali in dati.csv.
Documentazione
Modello, passi di calcolo, controlli di accettazione e limiti sono in docs/SPEC.md.