Controllo inverter da pwm

Sezione dedicata all'elettronica di controllo cnc.
Rispondi
Nutshell
Newbie
Newbie
Messaggi: 26
Iscritto il: giovedì 18 gennaio 2018, 10:52

Controllo inverter da pwm

Messaggio da Nutshell » domenica 14 ottobre 2018, 22:36

Buonasera a tutti. La mia cnc procede nella giusta direzione e sto lavorando senza fretta per fare le cose per bene. Il dubbio di questa sera è il seguente: Il mio inverter toshiba VF-nC3 permette di controllare la frequenza da morsettiera esterna, in tensione o in corrente. La mia scheda di controllo ha una uscita pwm che una volta filtrata mi offre una tensione variabile 0-5V.
Ora.. ho letto che si utilizza un convertitore da PWM a tensione per il suddetto inverter ma non ne vedo il motivo se non per eventuale disaccoppiamento fra i dispositivi. Mi fa pensare che il "convertitore" in questione non sia altro che un fotoaccoppiatore..

Qualcuno ha pensato di collegare direttamente l'uscita pwm all'inverter? (Ovviamente opportunamente cablata)

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » martedì 16 ottobre 2018, 13:18

Per problemi legati ai loop di massa che generano segnali spurii si consiglia di usare sempre dei fotoaccoppiatori, dalla tua scheda che genera il segnale pwm colleghi un fotoaccoppiatore e dopo esegui il filtraggio per avere la tensione variabile da 0 a Vmax. In genere gli interver hanno un'uscita a 10 o 12V per collegare un potenziometro per la regolazione della frequenza, è sufficiente prelevare da lì la tensione per eseguire il filtraggio ma occorre fare attenzione, sono disponibili solo pochi mA di corrente.

Ross

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » giovedì 16 aprile 2020, 10:02

buongiorno, mi ricollego alla discussione per capire se e come posso comandare il mio Toshiba vf-nc3 tramite una scheda beaglebone
questo inverter comanda a sua volta un motore trifase che fa ruotare il mandrino della fresatrice e al momento è indipendente dal sistema cnc, quindi prima di far partire una lavorazione devo avviare manualmente il motore del mandrino tramite il pulsante dell'inverter e regolare la velocità

ho visto che in un file gcode di prova ci sono le istruzioni per impostare la velocità e l'avvio del mandrino (S9700 M3), ovviamente queste non fanno partire il motore perché, come detto, non è collegato alla scheda, ma solo all'inverter, che è indipendente

come scheda sto usando una beaglebone black e come cape una panther cnc
il sistema operativo è machinekit

mi interesserebbe capire come posso fare eseguire queste operazioni (che sono già inserite nel file gcode):

- avviare il mandrino in senso orario all'inizio della lavorazione (M3)
- fermarlo alla fine della lavorazione (M5)

la gestione della velocità per il momento non mi interessa, perché posso usare un potenziometro e perché ho paura che aumentando la frequenza oltre i 50Hz il motore si possa danneggiare, quindi per ora mi bastano solo i comandi start stop

La cape che sto usando permette di usare dei pin di output a loro volta collegati ai pin della BBB e nel manuale dice che si possono utilizzare per dei comandi gcode, per esempio M64 (da P0 a P3):
The CNC outputs you can specify for example in the gcode M64 as P0 to P3 are connected to the Panther output channels Out1 to Out4 at the connector P4.
Questi sono collegati a questi pin della BBB

P9-14 EHRPWM1A
P9-16 EHRPWN1B
P9-17 SPIO_CSO
P9-18 SPIO_D1

Ho cercato un po' in questo forum e mi pare di capire che si possono sfruttare questi segnali per inviarli all'inverter, ma non saprei come....

l'inverter permette di usare dei comandi esterni per l'avvio, in pratica basta chiudere il circuito tra i morsetti CC e F e il motore parte
aprendo il circuito il motore si ferma (ho già fatto le varie configurazioni nell'inverter e l'interruttore esterno funziona)
quindi mi servirebbe poter comandare questa chiusura - apertura circuito

Altro dubbio è se posso associare i comandi gcode M3 e M5 alla Cape per comandare l'inverter, preferirei usare questi perché vengono inseriti di default nei file gcode, altrimenti se sono obbligato a usare M64 dovrei inserirli a mano nei file (anche se non sarebbe un problema)

come potrei fare? qualcuno potrebbe speigarmi passo passo le operazioni da fare?

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » domenica 19 aprile 2020, 16:03

ho fatto altri tentativi, sono riuscito a intercettare i comandi M3 e M5, ma ho ancora un problema
ho modificato il file hal caricato da machinekit e ho aggiunto la riga

Codice: Seleziona tutto

net startVFD motion.spindle-on => bb_gpio.p9.out-14
ho sfruttato uno dei pin di output messi a disposizione dalla cape e ho collegato due fili, uno a GND e l'altro al pin corrispondente a P9.14 della BBB.
Poi li ho collegati ad un tester misurando continuità e voltaggio:

quando il mandrino è off, tra i due fili c'è continuità e ci sono 0DCV
quando il programma GCODE inizia e l'istruzione M3 avvia il mandrino, non c'è più continuità (il circuito viene aperto) e i due capi mi danno 6DCV
alla fine del programma, l'istruzione M5 riporta tutto allo stato iniziale (continuità e 0 DCV)

a me basterebbe avere la continuità invertita: il circuito si deve chiudere quando viene eseguito M3 e aprirsi quando viene eseguito M5
adesso l'inverter è comandato da un semplice interruttore collegato ai comandi remoti, e volevo sapere se era possibile sostituirlo tramite i pin della BBB
tra l'altro non ho neanche bisogno dei volt, ma solo di un semplice ON-OFF
Secondo voi è fattibile?

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » domenica 19 aprile 2020, 17:21

Dovresti vedere se è disponibile un pin chiamato "bb_gpio.p9.out-14.invert" che è lo stesso pin ma con livello logico negato, se c'è inserisci quello nel file hal.
I comandi M64 P... si usano per accendere o spegnere qualcosa durante il movimento in lavorazione o in rapido, è diverso da M3/M4/M5 e nel tuo caso, che in genere è sempre così, si usa motion.spindle-on come descritto qui.

Ross

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » domenica 19 aprile 2020, 18:42

no, il pin bb_gpio.p9.out-14.invert non c'è, ma nel file hal ho inserito la riga

Codice: Seleziona tutto

setp bb_gpio.p9.out-14.invert 1
e il comportamento si è invertito come volevo: all'avvio del gcode c'è continuità e 0DCV tra i poli, a fine lavoro invece il circuito si interrompe (0 continuità e 6DCV)

Però restano ancora 2 problemi:

1) l'inversione del pin avviene giustamente solo dopo che si è avviato machinekit. Di default invece il comportamento è quello descritto nel post precedente. In questo modo, all'avvio del sistema il mandrino partirebbe autonomamente, poi all'avvio di machinekit si fermerebbe per ripartire all'avvio dell'esecuzione del file gcode.
Non c'è un modo per memorizzare dentro la BBB i setting di un pin in maniera permanente? Oppure non c'è un pin che semplicemente fa da interruttore, senza portare tensione?

2) tra i 2 pin comunque rimane una tensione di 6DCV, non so se questa può danneggiare i comandi remoti dell'inverter

come si potrebbe fare? Usare un relè/contattore che sfrutta i 6DCV per aprire / chiudere il circuito?

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » domenica 19 aprile 2020, 23:19

C'è da vedere lo schema elettrico della cape per vedere a cosa corrisponde il pin che hai usato.
Esternamente alla BBB si può intervenire sull'inverter, probabilmente c'è il modo di settare il consenso con segnale invertito oppure si può mettere un transistor di segnale tipo BC337 o BC547 e due resistenze in modo da invertire il consenso.
Oppure internamente alla BBB si può inserire il componente chargepump che genera un segnale a onda a 500Hz (se non erro) su un pin e solo quando Machinekit è avviato il segnale è presente in uscita... ma andiamo sul leggermente e apparentemente complicato però è ciò che si fa normalmente, garantisce una sicurezza di funzionamento.
Nel tuo caso la soluzione più rapida credo sia l'inserimento del transistor npn con le due resistenze: senza invertire il segnale di uscita dalla configurazione hal occorre solo mettere una resistenza da 4.7kOhm tra la base del transistor e il pin di uscita della cape (sempre verificando prima lo schema della cape), una resistenza da 4.7kOhm tra la base del transistor e la massa, collegare l'emettitore del transistor a massa e il collettore al pin di comando dell'inverter, la massa è quella che proviene dall'inverter (dai pin di controllo).

Ross

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » lunedì 20 aprile 2020, 9:31

Grazie Ross, il pin che ho usato è utilizzato dalla cape per l'output di un segnale pwm

allego lo schema della cape con le corrispondenze ai pin della BBB, se il file jpg è troppo piccolo, questo è il link dropbox con il pdf

I pin in rosso sono quelli attualmente utilizzati dai 3 motori X Y Z. Ci sono i pin X-HOME, Y-HOME, Z-HOME da utilizzare eventualmente per dei finecorsa, e il pin IN3 per il pulsante stop di emergenza, tutti gli altri sono liberi.

Come detto, la cape mette a disposizione:

4 input analogici (AIN0-3)
4 input digitali (IN4-IN7) evidenziati in verde
4 output per il collegamento di mandrini o sistemi di raffreddamento, (evidenziati in blu) di cui 2 del tipo PWM (OUT-1, OUT-2) e 2 digitali (OUT-3, OUT-4) e sono, rispettivamente, i connettori P4: 5, 7, 9, 11.

Io adesso sto provando con il pin P4-5, che è collegato al pin 9-14 della BBB
Avevo provato anche a sfruttare altri pin non utilizzati, del tipo GPIO_XX, ma all'avvio di machinekit mi dava un errore del tipo Pin non esistente
Più tardi provo con uno digitale, quello collegato a P9-17 della BBB, per vedere cosa tira fuori in output.
E prov anche a vedere se si possono sfruttare i pin degli assi A e B (step/dir/home) che tanto non penso di utilizzare mai

Questo è lo schema
ELENCO-PIN.jpg
purtroppo la documentazione della cape si riduce praticamente ad un pdf molto sintetico

Prima di intraprendere le strade da te suggerite (transistor e chargepump), vorrei capire se c'è la possibilità di sfruttare dei pin già esistenti.
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » lunedì 20 aprile 2020, 16:26

aggiornamento

ho provato anche il pin digitale collegato a P9-17 della BBB ma stesso comportamento del pin P9-14.
Ho provato anche a usare i pin degli assi A e B (step/dir/home), ma sono definiti come pin di input nel file hal e anche se si possono cambiare in pin di output, c'è un file 'panther-00A0.dts' (Panther device tree overlay) dove quei pin sono configurati sempre come input in questo modo

Codice: Seleziona tutto

    fragment@0 {
        target = <&am33xx_pinmux>;
        __overlay__ {
            foo_pins: foo_pins {
                pinctrl-single,pins = <
			// inputs
			 0x070 0x37
			 0x074 0x37
			 0x040 0x37
			 0x02c 0x37
			 0x044 0x37
			 0x1ac 0x37
			 0x1a4 0x37
			 0x180 0x37

			 0x184 0x37
			 0x07c 0x37
			 0x078 0x37
			 0x03c 0x37
			 0x164 0x37
			 0x08c 0x37
			 0x150 0x37
			 0x154 0x37

			// outputs
			 0x09c 0x07
			 0x090 0x07
			 0x094 0x07
			 0x098 0x07
			 0x030 0x07
			 0x034 0x07
			 0x028 0x07
			 0x038 0x07

			 0x024 0x07
			 0x020 0x07
			 0x048 0x07
			 0x04c 0x07
			 0x15c 0x07
			 0x158 0x07

		 >;
            };
        };
    };
non sapendo bene cosa fossero e se andassero in conflitto con le modifiche al file hal, ho preferito non metterci mano...
restano disponibili solo i 4 di output...

Ho scritto anche al tizio che ha creato la Cape per avere qualche info, aspetto risposta

nel frattempo,se ho capito bene il suggerimento del transistor, lo schema dovrebbe essere questo?
transistor.jpg
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » lunedì 20 aprile 2020, 18:50

Ho trovato lo schema elettrico della cape, è il file IOCape.pdf e quindi ho potuto verificare che il segnale di uscita non è fotoaccoppiato ma è bufferizzato con un 74LS244, in poche parole è solo un segnale di controllo 0/5V, quindi l'unica soluzione è quella che scrivo qui sotto, procedi così:
- Procurati un fotoaccoppiatore tipo PC817, se hai un vecchio alimentatore di pc rotto lo puoi facilmente recuperare da li.
- Procurati una resistenza da 820Ohm, va bene anche 1kOhm o 1.2kOhm, dal vecchio alimentatore puoi recuperare tutto.
Salda i componenti come nell'immagine qui sotto.
Fig01.png
Qui sotto c'è il pinout del fotoaccoppiatore.
Fig02.png
Lascia il settaggio nel file hal con l'uscite spindle-on al bb_gpio.p9.out-14 e dovrebbe funzionare tutto, quando accendi la BBB all'uscita di quel pin non c'è tensione ma quando avvi il mandrino, l'uscita va a 5V (6V è una misura un pò strana, in genere è 5V).

Ti consiglio di non toccare il file dts che è la mappatura dei pin del processore della BBB, si rischia di fare danni.
Con la soluzione che ti consiglio di realizzare risolvi il problema e in più hai un isolamento elettrico tra l'inverter del mandrino e la BBB.

Ross
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » lunedì 20 aprile 2020, 19:22

cazzarola il pdf ce l'avevo sotto gli occhi, l'avevo visto mille volte e c'è anche nella mia distribuzione di mackinekit e non me n'ero accorto
ma mi ha tratto in inganno il fatto che fosse la config di una macchina diversa dalla Sherline (Frida Frazer), non mi ero accorto che qualcuno si era preso la briga di mettere a disposizione lo schema elettrico

grazie mille davvero

cercherò di procurarmi i componenti che mi hai indicato, spero a breve di recuperare un vecchio pc, anche perché mi serve il case per sistemare tutti i componenti una volta per tutte

visto che ci troviamo, avresti idea di come si potrebbe fare per gestire anche la velocità del motore?
Mi sembra che basti una tensione variabile 0-5 o 0-10V - o è una cosa complicata?
Perché se è complicato la regolo tramite potenziometro, anche perché posso farlo in tempo reale
l'importante è che si risolve l'avvio del motore del mandrino

grazie ancora per il supporto

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » lunedì 20 aprile 2020, 20:56

Quelle uscite bufferizzate sono configurabili come uscite pwm, quindi è sufficiente consultare il manuale dell'inverter per ragionarci un po', non dovrebbe esser difficile ma considera che occorre saldare alcune resistenze, condensatori e forse qualcos'altro per convertire un segnale pwm in una tensione variabile per pilotare l'inverter.
Qui avevo riportato il link al manuale di Machinekit per poter configurare il mandrino in tutte le possibili configurazioni.

Ross

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » lunedì 20 aprile 2020, 21:36

sì, avevo dato un'occhiata al link, penso che la via obbligata sia sempre via PWM, che è un po' anche la richiesta fatta all'inizio del thread da Nutshell... infatti l'inverter è lo stesso
la velocità si può regolare tramite le uscite CC VI, in 2 modalità: 0-5V e 010-V (quella che si vuole usare si imposta nel setup dell'inverter)
adesso il potenziometro (da 5k ohm) è collegato a CC, VI e P5
Schermata 2020-04-20 alle 21.13.36.png
sto guardando anche questa discussione
viewtopic.php?t=65568#p602144

e questa, dove mi pare viene indicato lo schema a cui accennavi?

viewtopic.php?t=57088&start=15#p544319
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

Avatar utente
ziociccio
Member
Member
Messaggi: 320
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » martedì 21 aprile 2020, 10:56

altro aggiornamento (sembra che ci siamo)

ho fatto una prova per controllare se la velocità mandrino impostata nel file gcode, veniva mappata su uno dei pin.
Ho modificato il file .ini assegnando num_pwmgens=1 e poi il file .hal aggiungendo queste righe (prese dalla documentazione di machinekit):

Codice: Seleziona tutto

# questa è commentata perché genera un errore all'avvio di machinekit
# net startVFD motion.spindle-on => bb_gpio.p9.out-14

loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread

net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value 

# qui ho mappato il segnale dell'abilitazione del mandrino sul pin 5 (P9-14)
# non so se ho fatto bene, ma l'altra istruzione mi dava un errore all'avvio di MK
# probabilmente perché in conflitto - comunque sembra funzionare
net spindle-on motion.spindle-on => pwmgen.0.enable <= bb_gpio.p9.out-14

# qui invece il segnale relativo alla velocità del mandrino sul pin 7 (P9-16)
net spindle-pwm pwmgen.0.pwm => bb_gpio.p9.out-16

setp pwmgen.0.scale 2800
misurando i volt in uscita:

sul pin 5: misuro 5DCV all'avvio del mandrino e 0 quando si ferma
sul pin 7: misuro una tensione variabile in base alla velocità impostata nel file GCODE, per esempio S1400 mi dà 3.3DCV, mentre S2800 mi dà 6.6 (il doppio)

entrambi i comportamenti mi sembrano corretti, quindi adesso si tratterebbe di trasformare il segnale pwm in analogico.
Per l'avvio del mandrino ho già le indicazioni, mentre per la variazione della velocità non saprei, ma mi pare di capire che la maniera sia piuttosto simile, avendo una lista dei componenti e lo schema posso provare a farmeli da solo....
nelle altre discussioni che avevo linkato, viene consigliato lo stesso sistema, ma alla fine l'utente che aveva fatto la richiesta non ha risolto, non ho capito perché....

Allego anche la pagina del manuale dell'inverter che spiega meglio come gestire l'impostazione della frequenza tramite una tensione di ingresso 0-10V (caso 2) o 0-5V (caso 4) sui 2 morsetti CC (-) e VI (+)
impostazione-frequenza-ingresso-vi.jpg
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

Avatar utente
hellfire39
God
God
Messaggi: 3416
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: Controllo inverter da pwm

Messaggio da hellfire39 » martedì 21 aprile 2020, 14:14

Arrivo adesso sul thread ed, essendo pigro, non ho voglia di rileggerlo tutto.
Se non ho capito male, tu hai un'uscita pwm ma l'inverter accetta solo un pilotaggio in tensione. Giusto?

Posso dire che il circuito con il transistor postato sopra è sicuramente sbagliato. Se prendi un transistor pnp e lo vuoi utilizzare come interruttore verso massa (il morsetto CC) dovrai avere l'elemttitore E verso massa. Inoltre, la massa del circuito cape deve essere collegata a CC, altrimenti in poro transistor non ha un riferimento comune.

-------------

Se la frequenza del pwm è abbastanza elevata, si può fare un semplice circuito che lo filtra e ne estrae il valore medio. In modo brutale, con una semplice rete RC, ma anche in un modo un po' più robusto, con giusto due transistor ed una manciata di resistenze. Nel secondo caso hai la possibilità di utilizzare anche un range di tensioni differenti, rispetto allo 0-5V del filtro passa basso passivo.

Rispondi

Torna a “Elettronica CNC”