davideandClaude Sonnet 4.6 6579673518 report_completo: evita la rottura delle tabelle tra pagine
Ogni blocco (titolo + tabella) è avvolto in KeepTogether: simboli
del modello, campionamento e parametri per induttore, riepilogo finale.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 11:11:35 +02:00
2026-04-01 09:32:16 +02:00
2026-05-14 08:21:14 +02:00
2026-04-01 09:32:16 +02:00

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)

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

Avvio rapido

Tutto il progetto è accessibile tramite un menu interattivo:

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

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).


Requisiti di data.csv

Formato

Proprietà Valore richiesto
Formato CSV
Separatore , (virgola)
Encoding UTF-8
Prima riga intestazione (header)

Colonne obbligatorie

I nomi delle colonne devono corrispondere esattamente (spazi e maiuscole inclusi):

Colonna Unità Descrizione
time since start [ms] ms Tempo dall'inizio acquisizione — convertito in secondi (/ 1000) da tutti gli script
temp_obj IR [C] °C Temperatura dell'oggetto misurato (target del fit)
temp_amb IR [C] °C Temperatura ambiente (usata per calcolare T∞)

Le colonne aggiuntive presenti nel file vengono ignorate.

Copertura temporale

Il file deve contenere campioni nei range temporali usati da ciascuno script. I parametri T0 e T_END in ogni appX.py devono ricadere all'interno dei valori di time since start [ms] presenti nel CSV (convertiti in secondi).

Modello di fitting

Tutti i fit usano il modello di raffreddamento di Newton:

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).

S
Description
No description provided
Readme
2 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 90.2%
TeX 9.2%
Shell 0.6%