Files
report-temperatura/README.md
T
2026-05-14 10:27:26 +02:00

110 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Analisi Termica Forno — Cevolani
Script Python per l'analisi del profilo termico di una scatola che attraversa un forno industriale, con acquisizione tramite sensori IR.
## Setup (Windows)
```bat
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
```
## Avvio rapido
Tutto il progetto è accessibile tramite un menu interattivo:
```bat
python main.py
```
Il menu si ripete dopo ogni operazione finché non si preme `0` per uscire.
Le voci del menu vengono costruite automaticamente in base alle cartelle presenti nel progetto: aggiungere una nuova cartella `induttoreX/` con un `appX.py` la fa apparire automaticamente.
---
## Struttura del progetto
```text
temperatura/
├── data.csv # dati acquisiti (input)
├── main.py # menu interattivo
├── report_completo.py # generatore report PDF + LaTeX
├── requirements.txt
├── start/
│ ├── calcola_t_amb.py # calcola T∞ media ponderata
│ └── plot_temperatura.py # visualizza i dati raw
└── induttoreX/ # una cartella per ogni induttore
├── appX.py # script di fit (parametri hardcoded)
├── induttoreX.png # grafico generato
└── reportX.md # report generato
```
---
## Voci del menu
### Calcola T ambiente
**Script:** `start/calcola_t_amb.py`
Calcola la temperatura ambiente media ponderata sul tempo (regola dei trapezi) usando la colonna `temp_amb IR [C]` dell'intera acquisizione. Stampa i risultati a console e genera `start/report.md`.
> Il valore ottenuto viene usato come costante `T∞` in tutti i fit.
---
### Plot dati raw
**Script:** `start/plot_temperatura.py`
Visualizza il profilo grezzo di entrambe le serie (`temp_obj IR` e `temp_amb IR`) nell'intervallo definito dalle variabili `T0` e `T_END` in cima al file. Salva il grafico in `start/plot_temperatura.png`.
---
### Induttore X — appX.py
**Script:** `induttoreX/appX.py`
Esegue la regressione non lineare sul tratto di acquisizione definito dalle variabili `T0` e `T_END` in cima allo script (modificabili manualmente). Produce:
- `induttoreX/induttoreX.png` — grafico con dati raw e curva di fit sovrapposti
- `induttoreX/reportX.md` — equazione trovata, parametri stimati con incertezze (1σ) e R²
Per aggiungere un nuovo induttore: copiare uno script esistente, aggiornare `T0`, `T_END` (e `W0_START`/`W0_END` se serve escludere un intervallo), e salvarlo in una nuova cartella `induttoreX/`.
---
### Report completo (PDF + LaTeX)
**Script:** `report_completo.py`
Legge automaticamente tutti i `reportX.md` presenti nelle cartelle `induttore*/` e genera:
- `report_completo.tex` — sorgente LaTeX compilabile con MikTeX o TeX Live
- `report_completo.pdf` — PDF professionale con cover page, scheda documento, header/footer e tabella riepilogativa finale
Il PDF viene generato direttamente da Python tramite `reportlab` (nessuna dipendenza esterna richiesta).
---
## Dati
`data.csv` — colonne utilizzate:
| Colonna | Descrizione |
| --- | --- |
| `time since start [ms]` | tempo dall'inizio (convertito in secondi negli script) |
| `temp_obj IR [C]` | temperatura della scatola (target del fit) |
| `temp_amb IR [C]` | temperatura ambiente (usata per calcolare T∞) |
## Modello di fitting
Tutti i fit usano il modello di raffreddamento di Newton:
```text
T(t) = T∞ + A · exp( -(t - t₀) / τ )
```
con `T∞` fissa (calcolata da `calcola_t_amb.py`) e parametri `A`, `τ` liberi, stimati con regressione non lineare (metodo TRF di `scipy.optimize.curve_fit`).