TracciaCurve Arduino
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
TracciaCurve Arduino
Vi presento le caratteristiche del Tracciacurve che ho realizzato che vorrei condividere con voi, e magari migliorarlo.
Il sistema realizza un tracciacurve automatico per valvole termoioniche utilizzando un microcontrollore Arduino LGT8F328P e un DAC MCP4725 per il controllo della tensione di griglia.
Il firmware esegue:
• generazione dinamica della tensione di griglia negativa(VG1)
• sincronizzazione con la rete anodica AC
• acquisizione sincronizzata delle grandezze elettriche
• protezione automatica contro sovracorrenti
• invio dati alla GUI Processing per la visualizzazione delle curve caratteristiche Il sistema è progettato per:
• valvole di potenza (EL34, KT88, 6L6, ecc.)
• piccoli segnali (ECC83, ECC82, EF86, ecc.)
tramite doppia modalità di sensibilità.
Il firmware utilizza un:
• LGT8F328P
• clock 32 MHz
• ADC nativo 12 bit
• riferimento interno 4.096V calibrato
La tensione negativa di griglia viene generata tramite:
• MCP4725 (12 bit I2C)
Il DAC controlla la polarizzazione della Griglia 1 (VG1).
La tensione massima negativa viene usata come stato di sicurezza.
La tensione anodica e ricavata da un trasformatore HT raddrizzata con un ponte e non filtrata e viene letta tramite:
• partitore resistivo 400k + 1k e inviata a un buffer MCP6002
Il segnale è acquisito dal canale: A0
La corrente anodica viene convertita tramite:
• shunt 10 Ω collegato sul ritorno del ponte
• doppio amplificatore NE5532
Sono disponibili due modalità:
POWER A1 G=2 Max 200ma
HIGH SENS A2 G=10 Max 40ma
Il firmware acquisisce anche:
Tensione Griglia Schermo Vg2
Corrente Griglia Schermo Ig2
La tensione anodica della valvola è ottenuta tramite:
Trasformatore HT
Ponte raddrizzatore e nessun condensatore di filtro
La valvola opera quindi con una tensione anodica pulsante sincronizzata con la rete.
La forma d’onda risultante è una tensione raddrizzata a:
100 Hz senza livellamento capacitivo.
Il sincronismo del firmware non viene derivato direttamente dalla HT anodica.
Viene invece utilizzato: un secondo secondario isolato da 24 VAC
presente sullo stesso trasformatore di alimentazione.
Il tutto è interfacciato con una GUI scritta in Processing della quale darò dettagli nelle successive puntate.
Il sistema realizza un tracciacurve automatico per valvole termoioniche utilizzando un microcontrollore Arduino LGT8F328P e un DAC MCP4725 per il controllo della tensione di griglia.
Il firmware esegue:
• generazione dinamica della tensione di griglia negativa(VG1)
• sincronizzazione con la rete anodica AC
• acquisizione sincronizzata delle grandezze elettriche
• protezione automatica contro sovracorrenti
• invio dati alla GUI Processing per la visualizzazione delle curve caratteristiche Il sistema è progettato per:
• valvole di potenza (EL34, KT88, 6L6, ecc.)
• piccoli segnali (ECC83, ECC82, EF86, ecc.)
tramite doppia modalità di sensibilità.
Il firmware utilizza un:
• LGT8F328P
• clock 32 MHz
• ADC nativo 12 bit
• riferimento interno 4.096V calibrato
La tensione negativa di griglia viene generata tramite:
• MCP4725 (12 bit I2C)
Il DAC controlla la polarizzazione della Griglia 1 (VG1).
La tensione massima negativa viene usata come stato di sicurezza.
La tensione anodica e ricavata da un trasformatore HT raddrizzata con un ponte e non filtrata e viene letta tramite:
• partitore resistivo 400k + 1k e inviata a un buffer MCP6002
Il segnale è acquisito dal canale: A0
La corrente anodica viene convertita tramite:
• shunt 10 Ω collegato sul ritorno del ponte
• doppio amplificatore NE5532
Sono disponibili due modalità:
POWER A1 G=2 Max 200ma
HIGH SENS A2 G=10 Max 40ma
Il firmware acquisisce anche:
Tensione Griglia Schermo Vg2
Corrente Griglia Schermo Ig2
La tensione anodica della valvola è ottenuta tramite:
Trasformatore HT
Ponte raddrizzatore e nessun condensatore di filtro
La valvola opera quindi con una tensione anodica pulsante sincronizzata con la rete.
La forma d’onda risultante è una tensione raddrizzata a:
100 Hz senza livellamento capacitivo.
Il sincronismo del firmware non viene derivato direttamente dalla HT anodica.
Viene invece utilizzato: un secondo secondario isolato da 24 VAC
presente sullo stesso trasformatore di alimentazione.
Il tutto è interfacciato con una GUI scritta in Processing della quale darò dettagli nelle successive puntate.
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
Continuiamo con la descrizione del firmware.
Vantaggi della sincronizzazione separata
Questa architettura offre:
• isolamento galvanico dal circuito HT
• maggiore sicurezza
• riduzione del rumore
• trigger più stabile
• minore stress sui circuiti di ingresso MCU
Il firmware può così sincronizzare il campionamento con precisione senza collegamenti diretti alla
linea anodica ad alta tensione.
Sincronizzazione del campionamento
Ogni evento di zero-cross:
• avvia una nuova finestra di misura
• aggiorna la tensione di griglia
• sincronizza il campionamento ADC
Il sistema acquisisce quindi i campioni sempre nella stessa posizione della semionda anodica. Questo garantisce:
• ripetibilità
• stabilit àtemporale
• coerenza delle curve ottenute.
Sequenza di misura
Per ogni step della scansione:
1. Arrivo zero-cross
2. Aggiornamento tensione VG1
3. Attesa assestamento hardware (~50 μs)
4. Acquisizione sincronizzata di:
• Va
• Ia
• VG2 • IG2
5. Invio dati seriali
6. Preparazione step successivo
Configurazione ADC
Il firmware utilizza:
• ADC 12 bit
• Vref interna 4.096V
• prescaler ridotto per alta velocità
Le conversioni sono ottimizzate tramite:
analogReadRapido() che evita l’overhead della funzione Arduino standard.
Strategia di acquisizione
Per ogni semionda vengono acquisiti:
50 campioni a intervalli costanti di: 200 μs
coprendo circa: 10 ms
equivalenti a una onda completa a 100 Hz.
Modalità di misura POWER
Utilizzata per valvole di potenza. Caratteristiche:
• basso guadagno
• elevata dinamica
• alta corrente massima
Ingresso:A1
Modalità di misura HIGH SENS
Utilizzata per piccoli segnali. Caratteristiche:
• elevata sensibilità
• maggiore risoluzione sulle basse correnti
Ingresso:A2
Protezioni hardware/software
Il firmware implementa protezioni automatiche contro:
• sovracorrente anodica
• sovracorrente griglia schermo
• runaway termico
• clipping amplificatori
In caso di errore:
1. VG2 viene disattivata
2. VG1 viene portata alla massima interdizione
3. la scansione viene fermata
4. la GUI riceve un messaggio di allarme
Protocollo seriale
Comandi ricevuti
S Avvio scansione
X Stop emergenza
H Modalità HIGH SENS L Modalità POWER
Z Ricalibrazione offset
T Test manuale VG1
Formato dati inviati
Per ogni step viene trasmesso:
VG1 : Va,Ia,VG2,IG2 ; ... contenente tutti i campioni acquisiti.
Calibrazione
All’avvio il firmware esegue:
calibrazione offset corrente tramite acquisizione a vuoto del rumore residuo analogico.
Questo permette:
• azzeramento termico
• compensazione offset NE5532
E per finire
Filosofia progettuale
Il firmware è progettato per:
• sincronizzazione reale con la rete
• massima protezione della valvola
• timing deterministico
• elevata velocità di acquisizione
• semplicità hardware
• compatibilità con GUI esterna
L’intero sistema è ottimizzato per ottenere curve caratteristiche stabili e ripetibili con hardware economico basato su LGT8F328P.
Nei prossimo POST presenterò la GUI
Vantaggi della sincronizzazione separata
Questa architettura offre:
• isolamento galvanico dal circuito HT
• maggiore sicurezza
• riduzione del rumore
• trigger più stabile
• minore stress sui circuiti di ingresso MCU
Il firmware può così sincronizzare il campionamento con precisione senza collegamenti diretti alla
linea anodica ad alta tensione.
Sincronizzazione del campionamento
Ogni evento di zero-cross:
• avvia una nuova finestra di misura
• aggiorna la tensione di griglia
• sincronizza il campionamento ADC
Il sistema acquisisce quindi i campioni sempre nella stessa posizione della semionda anodica. Questo garantisce:
• ripetibilità
• stabilit àtemporale
• coerenza delle curve ottenute.
Sequenza di misura
Per ogni step della scansione:
1. Arrivo zero-cross
2. Aggiornamento tensione VG1
3. Attesa assestamento hardware (~50 μs)
4. Acquisizione sincronizzata di:
• Va
• Ia
• VG2 • IG2
5. Invio dati seriali
6. Preparazione step successivo
Configurazione ADC
Il firmware utilizza:
• ADC 12 bit
• Vref interna 4.096V
• prescaler ridotto per alta velocità
Le conversioni sono ottimizzate tramite:
analogReadRapido() che evita l’overhead della funzione Arduino standard.
Strategia di acquisizione
Per ogni semionda vengono acquisiti:
50 campioni a intervalli costanti di: 200 μs
coprendo circa: 10 ms
equivalenti a una onda completa a 100 Hz.
Modalità di misura POWER
Utilizzata per valvole di potenza. Caratteristiche:
• basso guadagno
• elevata dinamica
• alta corrente massima
Ingresso:A1
Modalità di misura HIGH SENS
Utilizzata per piccoli segnali. Caratteristiche:
• elevata sensibilità
• maggiore risoluzione sulle basse correnti
Ingresso:A2
Protezioni hardware/software
Il firmware implementa protezioni automatiche contro:
• sovracorrente anodica
• sovracorrente griglia schermo
• runaway termico
• clipping amplificatori
In caso di errore:
1. VG2 viene disattivata
2. VG1 viene portata alla massima interdizione
3. la scansione viene fermata
4. la GUI riceve un messaggio di allarme
Protocollo seriale
Comandi ricevuti
S Avvio scansione
X Stop emergenza
H Modalità HIGH SENS L Modalità POWER
Z Ricalibrazione offset
T Test manuale VG1
Formato dati inviati
Per ogni step viene trasmesso:
VG1 : Va,Ia,VG2,IG2 ; ... contenente tutti i campioni acquisiti.
Calibrazione
All’avvio il firmware esegue:
calibrazione offset corrente tramite acquisizione a vuoto del rumore residuo analogico.
Questo permette:
• azzeramento termico
• compensazione offset NE5532
E per finire
Filosofia progettuale
Il firmware è progettato per:
• sincronizzazione reale con la rete
• massima protezione della valvola
• timing deterministico
• elevata velocità di acquisizione
• semplicità hardware
• compatibilità con GUI esterna
L’intero sistema è ottimizzato per ottenere curve caratteristiche stabili e ripetibili con hardware economico basato su LGT8F328P.
Nei prossimo POST presenterò la GUI
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
Ecco come si presenta la schermata del Report.
E' chiaro che il lavoro non è per niente terminato ma è una buona base di partenza.
In attesa di vostri contributi Vi saluto.
Antonio
In attesa di vostri contributi Vi saluto.
Antonio
Re: TracciaCurve Arduino
Ciao Antonio,
grazie della presentazione, molto interessante.
Sarà un progetto open source o in vendita?
grazie della presentazione, molto interessante.
Sarà un progetto open source o in vendita?
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
Ciao e grazie per aver visto il mio post
Il progetto è Open Source.
In seguito, se vedo che ci sono persone interessate, fornisco anche ulteriori dettagli utili per provare a costruirne uno simile al mio, e perchè no, anche migliorarlo.
Il progetto è Open Source.
In seguito, se vedo che ci sono persone interessate, fornisco anche ulteriori dettagli utili per provare a costruirne uno simile al mio, e perchè no, anche migliorarlo.
Re: TracciaCurve Arduino
Grazie Antonio,
mi sembra un progetto molto interessante e mi piace che tu voglia tenerlo open source.
Parteciperò volentieri ad aiutarti a svilupparlo, per quanto mi è possibile.
Che limiti pensavi di dare all'anodica ed a Vg2?
C'è possibilità di impostare Vg3 leggermente superiore a Vg2?
Hai pensato a come gestire le misure sopra la curva di massima dissipazione?
Una funzione che non ho mai visto è la deriva termica in base all'impedenza Rg1-k, e potrebbe essere implementata con un optoisolatore controllato in corrente (o pwm).
mi sembra un progetto molto interessante e mi piace che tu voglia tenerlo open source.
Parteciperò volentieri ad aiutarti a svilupparlo, per quanto mi è possibile.
Che limiti pensavi di dare all'anodica ed a Vg2?
C'è possibilità di impostare Vg3 leggermente superiore a Vg2?
Hai pensato a come gestire le misure sopra la curva di massima dissipazione?
Una funzione che non ho mai visto è la deriva termica in base all'impedenza Rg1-k, e potrebbe essere implementata con un optoisolatore controllato in corrente (o pwm).
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
I limiti della tensione Vg2 ho pensato di limitarli a 350V Max.
Tale tensione si ottiene con un alimentatore lineare controllato da un lr8N+irf820 o similare.
Per quanto riguarda il controllo della massima dissipazione anodica, penso che la si può controllare attraverso un trasformatore HT con tre prese secondarie di 140V rms ciascuna ottenendo così tre tensioni utilizzabili 140V, 280V, 420V corrispondenti a una tensione raddrizzata con ponte ma non filtrata, pulsante 100Hz, di 200Vp,400Vp,600Vp. In teoria la Va, con ADC a 12 bit e partitore 401k potrebbe arrivare anche a1600V circa ma non credo sia il caso.
Per quanto riguarda la funzione che calcola la derivata termica credo che usciremmo fuori dagli obbiettivi che sono e rimangono, un TRACCIACURVE per tubi elettronici l'attuale sviluppo ha già ampiamente superato tale obbiettivo non mettiamo altra carne al fuoco.
Tale tensione si ottiene con un alimentatore lineare controllato da un lr8N+irf820 o similare.
Per quanto riguarda il controllo della massima dissipazione anodica, penso che la si può controllare attraverso un trasformatore HT con tre prese secondarie di 140V rms ciascuna ottenendo così tre tensioni utilizzabili 140V, 280V, 420V corrispondenti a una tensione raddrizzata con ponte ma non filtrata, pulsante 100Hz, di 200Vp,400Vp,600Vp. In teoria la Va, con ADC a 12 bit e partitore 401k potrebbe arrivare anche a1600V circa ma non credo sia il caso.
Per quanto riguarda la funzione che calcola la derivata termica credo che usciremmo fuori dagli obbiettivi che sono e rimangono, un TRACCIACURVE per tubi elettronici l'attuale sviluppo ha già ampiamente superato tale obbiettivo non mettiamo altra carne al fuoco.
Re: TracciaCurve Arduino
Ciao, come preferisci.
Valuteresti un traccia curve che permetta anche di ottenere le curve in UL?
Valuteresti un traccia curve che permetta anche di ottenere le curve in UL?
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
Ciao.
Forse si Una funzione che che tracci le curve in UL potrebbe essere interessante anche se, (se non ricordo male) le si possono ottenere anche via software partendo dalla famiglia di curve anodiche.
Credo che potrebbe essere un argomento di studio.
Forse si Una funzione che che tracci le curve in UL potrebbe essere interessante anche se, (se non ricordo male) le si possono ottenere anche via software partendo dalla famiglia di curve anodiche.
Credo che potrebbe essere un argomento di studio.
Re: TracciaCurve Arduino
Perfetto, con un source follower si può pilotare g2 con una funzione di Va.
Quando ci arriveremo, ne possiamo parlare.
Quando ci arriveremo, ne possiamo parlare.
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
Volevo informarvi, che a seguito del suggerimento di Robi, sto provando a implementare una funzione che, partendo da una famiglia di curve caratteristiche anodiche, si ricavono le curve caratteristiche UL.
In una valvola operante in UL, la griglia schermo non si trova a una tensione fissa, ma è collegata a una presa intermedia del trasformatore di uscita 43% / 20% del primario. Questo significa che la tensione di schermo varia dinamicamente.
Vi terrò aggiornati non appena avrò scritto qualcosa che vale la pena a vedersi.
Intanto vediamo le foto delle curve di una EL84. Anodiche e di griglia schermo 250V
In una valvola operante in UL, la griglia schermo non si trova a una tensione fissa, ma è collegata a una presa intermedia del trasformatore di uscita 43% / 20% del primario. Questo significa che la tensione di schermo varia dinamicamente.
Vi terrò aggiornati non appena avrò scritto qualcosa che vale la pena a vedersi.
Intanto vediamo le foto delle curve di una EL84. Anodiche e di griglia schermo 250V
Re: TracciaCurve Arduino
Davvero un bel lavoro Antonio, complimenti!
Sempre in ambito UL, trattandosi di una formula, considererei di non vincolare la tensione statica Vg2 pari a Va.
Nel dettaglio, lascerei di default un check per dire che in condizioni statiche Vg2 = Va, ma con la possibilità di togliere la spunta e scegliere la Vg2 statica su cui si modulerà la componente UL.
Io per esempio uso a volte percentuali di UL al 20-25% con tensioni statiche di g2 più basse dell'anodica.
Questo torna utile sia per valvole dalla g2 con vincoli in tensione, sia per aumentare la sensibilità della finale senza compromettere la potenza.
Con alcune valvole permette anche di lavorare in una zona più lineare e di sollecitare meno g2 a piena potenza.
Per capirci, nella formula non avremo:
Vg2_istantanea = Va_statica - (Va_statica - Va_istantanea) * percentuale_UL
ma bensì un più generico:
Vg2_istantanea = Vg2_statica - (Va_statica - Va_istantanea) * percentuale_UL
con Vg2_statica che con la spunta su Vg2 = Va è:
Vg2_statica = Va_statica
senza spunta è un valore che deve inserire l'utilizzatore.
Sempre in ambito UL, trattandosi di una formula, considererei di non vincolare la tensione statica Vg2 pari a Va.
Nel dettaglio, lascerei di default un check per dire che in condizioni statiche Vg2 = Va, ma con la possibilità di togliere la spunta e scegliere la Vg2 statica su cui si modulerà la componente UL.
Io per esempio uso a volte percentuali di UL al 20-25% con tensioni statiche di g2 più basse dell'anodica.
Questo torna utile sia per valvole dalla g2 con vincoli in tensione, sia per aumentare la sensibilità della finale senza compromettere la potenza.
Con alcune valvole permette anche di lavorare in una zona più lineare e di sollecitare meno g2 a piena potenza.
Per capirci, nella formula non avremo:
Vg2_istantanea = Va_statica - (Va_statica - Va_istantanea) * percentuale_UL
ma bensì un più generico:
Vg2_istantanea = Vg2_statica - (Va_statica - Va_istantanea) * percentuale_UL
con Vg2_statica che con la spunta su Vg2 = Va è:
Vg2_statica = Va_statica
senza spunta è un valore che deve inserire l'utilizzatore.
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
Ciao Robi, sono contento che stai trovando interessante il mio lavoro e ti dico come sto procedendo.
La formula per calcolare la corretta Vg2 è
Vg2=V.alimentazione-%UL.(V.alimentazione-Va). Con (Ul 43% >> =0.43).
Spero di essere stato chiaro nello scriverla.
Per calcolare quindi abbiamo bisogno della Tensione di alimentazione teorica, impostabile nel campo "B+ V " presente nella GUI, i punti Va, già presenti a seguito della misura o caricati da file csv, uno slide da inserire nella GUI per impostare la percentuale di UL e un toggle per attivare il calcolo e la visura.Non è difficile realizzarlo, ho già fatto qualcosa a breve lo posto.
La formula per calcolare la corretta Vg2 è
Vg2=V.alimentazione-%UL.(V.alimentazione-Va). Con (Ul 43% >> =0.43).
Spero di essere stato chiaro nello scriverla.
Per calcolare quindi abbiamo bisogno della Tensione di alimentazione teorica, impostabile nel campo "B+ V " presente nella GUI, i punti Va, già presenti a seguito della misura o caricati da file csv, uno slide da inserire nella GUI per impostare la percentuale di UL e un toggle per attivare il calcolo e la visura.Non è difficile realizzarlo, ho già fatto qualcosa a breve lo posto.
Re: TracciaCurve Arduino
Perfetto Antonio!
Quel che ti chiedevo é la possibilità, oltre a:
Vg2=V.alimentazione-%UL.(V.alimentazione-Va)
Di avere anche:
Vg2=V.alim.g2-%UL.(V.alimentazione-Va)
Con V.alim.g2 che può essere V.alimentazione oppure un valore diverso deciso dall’utilizzatore.
Quel che ti chiedevo é la possibilità, oltre a:
Vg2=V.alimentazione-%UL.(V.alimentazione-Va)
Di avere anche:
Vg2=V.alim.g2-%UL.(V.alimentazione-Va)
Con V.alim.g2 che può essere V.alimentazione oppure un valore diverso deciso dall’utilizzatore.
-
curingaudio
- Neutrino

- Messaggi: 13
- Iscritto il: 11/05/2026, 12:25
Re: TracciaCurve Arduino
Ecco una prima bozza delle curve UL ricavate dalle curve anodiche.
Ho inserito un toggle per attivare il calcolo e uno slider per la percentuale UL.
in questa immagine si vedono entrambe le curve nella successiva sole le curve UL.
Ciaramente è un primo approccio vanno migliorate.
Ho inserito un toggle per attivare il calcolo e uno slider per la percentuale UL.
in questa immagine si vedono entrambe le curve nella successiva sole le curve UL.
Ciaramente è un primo approccio vanno migliorate.

