44 lines
2.2 KiB
Markdown
44 lines
2.2 KiB
Markdown
# 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](https://docs.astral.sh/uv/). Lo script dichiara le sue dipendenze (Python ≥ 3.11, `numpy`): al primo avvio uv crea da solo l'ambiente virtuale, non serve installare altro.
|
|||
|
|
|
|||
|
|
## Uso
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
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.
|
|||
|
|
|
|||
|
|
## 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](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](dati.csv).
|
|||
|
|
|
|||
|
|
## Documentazione
|
|||
|
|
|
|||
|
|
Modello, passi di calcolo, controlli di accettazione e limiti sono in [docs/SPEC.md](docs/SPEC.md).
|