piccolo aggiornamento. Grazie all'aiuto di AlBi ho potuto terminare lo sviluppo delle routine di gestione dei dati, sia per il salvataggio della configurazione corrente che per la memorizzazione di 10 configurazioni modificabili.
Ora è venuto il momento di passare all'artiglieria pesante: i cicli di saldatura.
Ho giù sviluppato tutte le classi per la lettura dei sensori e la gestione delle varie uscite. Per quanto riguarda il controllo in corrente l'idea era quella di affidarsi ad una libreria PID già preconfezionata,
QUESTA.
AlBi, se potessi dargli un'occhiata e darmi un parere te ne sarei grato.... più che altro ora devo capire se è veloce abbastanza per quello che dobbiamo fare oppure no.
La mia preoccupazione non è per il controllo in DC statico ma per il controllo in AC e in pulsata dove i cambi sono rapidi e non sono in grado di capire se la funzione di trasferimento è veloce abbastanza da starci dietro.
Le condizioni peggiori sono queste:
AC a 500Hz: in questo caso la polarità della torcia cambia 500 volte al secondo e ad ogni cambio devo portare la corrente a pochi ampere per effettuare la transizione in modo che gli IGBT di uscita non debbano commutare a pieno regime.... diciamo che devo scendere a 5/10A, effettuare la commutazione e risalire a regime....il tutto 500 volte al secondo.
DC con pulsazione a 5Khz: qui devo cambiare la corrente da un valore massimo ad uno minimo con frequenza 5Khz (quindi 5000 volte al secondo).
In tutto questo sarebbe meglio che la corrente non scenda e salga con un gradino ma con una rampa la cui pendenza sia veloce abbastanza da garantire il raggiungimento e la tenuta del valore impostato entro il ciclo, che durerà 500Hz ovvero 2millisec oppure 5000Hz ovvero 200microsec.
Questi tempi per il microcontrollore che sto usando sono lentissimi ma non lo so se lo sono altrettanto per la routine di PID che sto valutando di usare.
Ora faccio un po' di prove di latenza ma mi piacerebbe capire meglio come funziona..... ad esempio non capisco che differenza c'è tra la modalità automatica e manuale (PID::setMode e PID::setInterval).. setInterval è di tipo float e rappresenta i secondi tra un calcolo e l'altro, ma i secondi per quello che devo fare io sono un'eternità