mercoledì 23 maggio 2018

Pwm to Pwm - Twitch the PWM Signal

Nell'utilizzare la laser cut, spesso, si sbaglia ad impostare la potenza del laser in base al tipo di materiale che si vuole tagliare.

Vediamo come costruirci un regolatore di potenza "manuale" da aggiungere come plugin a qualsiasi laser cut.



Il problema è molto comune e si presenta circa così:
  1. prendo il materiale da tagliare
  2. creo il file per la macchina ( https://goo.gl/87a2xy )
    1. regolo la potenza del laser 
    2. regolo la velocità dei movimenti
  3. mando tutto alla laser cut
Se avete una laser cut, spesso può capitare che la potenza impostata sia troppo bassa, di fatto non riesce a tagliare.... la soluzione è rifare la procedura qui sopra.

Tuttavia se è un nuovo materiale, se è imbarcato ( quindi il fuoco del laser non è corretto ) oppure avete semplicemente sbagliato i parametri, il processo può essere lungo e decisamente snervante.

Fermo restando che nel caso si eccede con la potenza non è quasi mai un problema, resta da colmare il caso più fastidioso: come aumento la potenza manualmente?

Materiale necessario

Come al solito il minimo indispensabile:
  1. Arduino, meglio se micro o mini per questione di dimensioni
  2. Un potenziometro da 10k
  3. Una resistenza da 10k come pull-down
  4. Un display, nel mio caso oled I2C per dimensione e corrente ridotta
  5. Qualche filo per collegare il tutto
L'Oled I2C, ha bisogno solo di SDA e SCL per comunicare. Può capitare che alcuni Oled richiedano ulteriori pin, per esempio il Reset. 
Non disperate, la libreria u8g2 vi salverà in ogni caso!

Come funziona?

Il principio di funzionamento è piuttosto semplice.
L'interprete del laser riceve serialmente i dati dal vostro pc sotto forma di Gcode.
L'interprete comanda il laser tramite un segnale di tipo PWM, quindi un segnale che varia da 0 a 255, di seguito un piccolo esempio:
  • PWM 0 = 0% di potenza al laser
  • PWM 127 = 50 % di potenza al laser
  • PWM 255 = 100% di potenza al laser
Il nostro dispositivo è collegato in serie al cavo che dall'interprete va all'ingresso dell'elettronica del laser.
Di fatto legge una PWM dall'interprete e la converte in un nuovo segnale PWM a seconda delle nostre modifiche "manuali" lette dal potenziometro.

Il metodo più semplice per leggere un segnale di tipo PWM con Arduino è utilizzando la funzione "pulseIn".

Quest'ultima conta per quanti microSecondi resta alto/basso il segnale PWM.


Il segnale PWM di Arduino ha un periodo di 490Hz che sono 0.002040 secondi.

Questo significa che la funzione "pulseIn" avrà:
  • Al minimo 0 = 0Hz = 0 secondi
  • Al massimo 255 = 490Hz = 0.002040 secondi
Ricordo la conversione: 0.002040 secondi sono 2040 micro secondi.

Il programma legge se il potenziometro è stato mosso, e se è maggiore di zero, aggiunge la lettura alla percentuale di potenza in uscita.


Nel caso riportato in foto, vado a leggere un segnale PWM d'ingresso di circa 127 = 49%.
Il potenziometro è ruotato del 24%, quindi la potenza PWM d'uscita è del 61%.

Codice

Come al solito, reperibile su GitHub, cliccaci sopra!




Non linearità

Nel caso di segnali analogici, vedi il segnale in arrivo dal potenziometro, bisogna prestare un minimo d'accortezza nel leggere il suo valore in maniera corretta ( non oscillante ) applicando una media.

--- Coming soon --

Nessun commento:

Posta un commento