Jump to content
PLC Forum


Motore BLDC lavatrice LG


marcoc4d
 Share

Recommended Posts

Ho provato a fare andare il motore con i sensori Hall per testare il pi di velocità. 

Purtroppo o per fortuna non saprei, la velocità oscilla anche in questo caso come quando va con "observer+pll".

In entrambi i casi l'ampiezza dell'oscillazione diminuisce col tempo ma molto lentamente, per dare un idea dopo un minuto ancora oscilla.

Penso quindi che l'oscillazione sia intrinseca nel PI di velocità e non saprei come eliminarla.

Forse fissando i limiti superiore e inferiore dell'integrale? Ma con che valori? La libreria li fissa di default al valore della corrente nominale del motore.

 

 

Edited by marcoc4d
Link to comment
Share on other sites


E un'oscillazione smorzata con tempo di decadimento molto luingo.

Il limite all'integrale dovrebbe far molto bene, in questo caso.

Link to comment
Share on other sites

Sandro Calligaro

Puoi postare il codice che implementa il regolatore di velocità?
Immagino che non ci siano problemi di diritti, per un piccolo estratto di codice che viene rilasciato a quasi chiunque...

Link to comment
Share on other sites

Te 

12 minuti fa, Sandro Calligaro ha scritto:

Puoi postare il codice che implementa il regolatore di velocità?

te lo ho mandato con MP.

é lo stesso per la regolazione di corrente, di velocità, il PLL

Link to comment
Share on other sites

Ho provato come suggeritomi da Sandro a mettere a zero il K i del pi di controllo di velocità, e le oscillazioni della velocità sono scomparse.

Link to comment
Share on other sites

Però se azzeri l'integrale non azzeri l'errore di velocità; io ritengo che limitando l'integrale ed agendo opportunamente sul tempo di integrazione elimini l'oscillazione e ed anche l'errore di velocità

Link to comment
Share on other sites

1 ora fa, Livio Orsini ha scritto:

Però se azzeri l'integrale non azzeri l'errore di velocità

é vero Livio, sono stato un pò troppo sintetico,

Ho mandato in MP il codice del PID della libreria a Sandro e poi c'é stato uno scambio di messaggi privati ora ritorno a scrivere qui per aggiornare chi legge.

Penso che Sandro volesse sapere se l'oscillazione scompare mettendo a 0 il K i  per capire se il codice del pid fosse la causa del problema.

 

Sono d'accordo con te che non é una soluzione il ki a 0.

Link to comment
Share on other sites

Sandro Calligaro

Esattamente. Ho dei dubbi sul l'implementazione dell'anti-windup, che nel controllo di velocità può essere fondamentale.

 

In particolare, avendo usato una struttura di regolatore simile proprio per il sensorless, so per certo che c'è il rischio di causare un azzeramento della parte integrale anche solo a causa di un brevissimo disturbo sul feedback (che, nel caso del sensorless, è una stima e quindi soggetto naturalmente a rumore). 

 

Inoltre, mi pare che in questo caso l'implementazione sia sbagliata, e nella situazione che descrivevo sopra (cioè una forte saturazione, dovuta alla parte proporzionale, di durata anche brevissima), la parte integrale può addirittura cambiare segno.

 

Se riesco, domani posto qualche schema, per spiegarmi meglio. 

Edited by Sandro Calligaro
Link to comment
Share on other sites

Ho fatto diverse prove stamattina e forse ho trovato il problema.

Mi ha tratto in inganno il fatto che il workbench avesse settato i valori del PI di velocità sulla base dei parametri del motore e davo per scontato quindi che questi fossero corretti.

I valori che il Workbench da per il PI sono Kp=2316/1024 e K.i=241/16384.

Alla fine con Kp=32767/64 e K.i=2000/16384 direi che il loop di velocità funziona bene ed é quasi istantaneo con oscillazioni quasi inesistenti. Sono stupito della differenza di questi valori rispetto a quelli proposti dal workbench.

A questo punto mi chiedo se c'é da fidarsi dei valori dei pid di corrente e dell'observer.

Link to comment
Share on other sites

Sandro Calligaro

Quando ho iniziato la tesi, nel 2007, non c'erano ancora molti metodi di identificazione in letteratura (mentre l'industria era un po' più avanti). 

Avevamo (nemmeno sempre) a disposizione i valori dei parametri al punto nominale o quelli di progetto della macchina, ma non erano così affidabili. 

La taratura era fatta a mano, e per un esperto era fattibile. 

 

Il primo passo è sempre sui regolatori di corrente. Quello di asse d è facile, perché il motore non parte. Su q è un po' meno semplice, ma l'importante è che la risposta al gradino sia "buona". Va considerata anche la saturazione (sia magnetica, sia quella dei regolatori), per cui bisogna provare anche con gradini grandi. 

Occorre però poter visualizzare l'evoluzione delle variabili di controllo nel tempo. A quello servono i DAC o i buffer di valori, che però vanno gestiti con un trigger.

 

Per l'osservatore la cosa è simile, ma un po' più complicata. Se hai il sensore, usi quello per far girare il controllo, e verifichi che il ritardo nella stima di velocità e posizione, durante le accelerazioni, non sia troppo grande. Il compromesso è tra ritardo in accelerazione e rumore a regime. 

In realtà, l'osservatore è fatto di due parti. La prima stima le back-EMF, che sono proporzionali alla velocità (come ampiezza) e a -sin(theta) e cos(theta). 

Per prima cosa si verifica che le due uscite siano poco rumorose (a velocità non troppo bassa, possibilmente girando col sensore) e che la fase sia giusta. Poi si passa alla PLL... 

 

 

L'approccio opposto è quello dell'auto-tuning, dove ci si basa interamente sui parametri identificati. 

Il tuning automatico si può fare, ma è piuttosto complicato e ci sarà sempre una certa probabilità che non funzioni. La mia idea è che l'auto-tuning debba garantire nella stragrande maggioranza dei casi un funzionamento accettabile e con dinamiche relativamente tranquille (specie per il sensorless), un punto di partenza buono per eventuali affinamenti, in caso si voglia ottenere qualcosa in più. 

 

 

Comunque, con un (bel) po' di pazienza e condividendo i risultati delle prove (ad esempio presi tramite oscilloscopio), potremmo provare a rivedere la taratura dei vari anelli, a distanza 😉

 

 

Edited by Sandro Calligaro
Link to comment
Share on other sites

22 minuti fa, Sandro Calligaro ha scritto:

Comunque, con un (bel) po' di pazienza e condividendo i risultati delle prove (ad esempio presi tramite oscilloscopio), potremmo provare a rivedere la taratura dei vari anelli, a distanza

 

Sarebbe un'ottima cosa anche per chi gli azionamenti li applica solamente.

Leggendo questa discussione si comprende meglio il funzionamento dell'inverter e del motore.

Link to comment
Share on other sites

3 ore fa, Sandro Calligaro ha scritto:

Comunque, con un (bel) po' di pazienza e condividendo i risultati delle prove (ad esempio presi tramite oscilloscopio), potremmo provare a rivedere la taratura dei vari anelli, a distanza 😉

Grazie, però ho un problema, ho un oscilloscopio da 15 euro (quelli cinesi di plastica per intenderci) :). Posso fidarmi a collegarlo al dac del controller sapendo che il controller non é isolato dalla rete? Finora quando ho fatto delle prove e non ero sicuro di quel che facevo alimentavo i circuiti con un inverter di quelli per le auto ma la potenza é ridicola, se va bene arriva a 30 watt, soprattutto perché i'inverter lo collego all'alimentatore stabilizzato e non a una batteria. Insomma ho una strumentazione che é veramente da dilettante allo sbaraglio. 

Era per questo motivo che volevo salvare i dati dentro dei vettori e poi trasferirli dal controller al pc, ma c'é del codice da scrivere.

3 ore fa, Sandro Calligaro ha scritto:

Se hai il sensore, usi quello per far girare il controllo, e verifichi che il ritardo nella stima di velocità e posizione

Si ho i due sensori Hall del motore, ma non so quanto siano affidabili, perché si sovrappone al segnale del sensore i 16 kz della pwm. Infatti quando il motore va usando i sensori é molto rumoroso a volte si sentono dei colpi come se qualcosa sbattesse nel cestello. Incredibilmente quando va con l'observer il motore é molto piu silenzioso di quando la lavatrice funziona coi suoi circuiti.

Magari potrei fare dei video

3 ore fa, Sandro Calligaro ha scritto:

Su q è un po' meno semplice

In qualche modo potrei bloccare il cestello per misurare la corrente sulla q?

 

 

Edited by marcoc4d
Link to comment
Share on other sites

Sandro Calligaro
8 ore fa, marcoc4d ha scritto:

In qualche modo potrei bloccare il cestello per misurare la corrente sulla q?

Volendo sì, in ogni caso poi per il funzionamento reale servono i disaccoppiamenti degli assi, ossia quelle tensioni di feedforward che dipendono ciascuna "dall'altro asse". 

 

Non so cosa vuoi fare con il motore, alla fine, ma se vuoi imparare a fare le cose bene un oscilloscopio è molto utile, altrimenti su alcune cose vai alla cieca. Naturalmente, se il controllo non è isolato, è un bel problema. 

Se i problemi di basso livello sono risolti, il vettore di campioni è ottimo, ma prima di poterlo utilizzare bene occorre un bel po' di lavoro...

 

8 ore fa, marcoc4d ha scritto:

Si ho i due sensori Hall del motore, ma non so quanto siano affidabili, perché si sovrappone al segnale del sensore i 16 kz della pwm.

I segnali encoder vengono quasi sempre portati come coppie differenziali, cioè due fili la cui differenza positiva o negativa è l'informazione sul bit. 

In mancanza di questo, bisogna almeno essere sicuri che i fili siano ben intrecciati, che lato ricevitore ci sia una resistenza non troppo alta e magari un minimo di filtro R-C. Nel tuo caso, il filtro può anche essere piuttosto pesante, visto che la frequenza degli impulsi sarà relativamente bassa. 

Lo schermo ci vorrebbe, ma è un po' critico. Si possono sicuramente aggiungere dei "filtri" di modo comune, cioè degli anelli di ferrite sui quali far passare tutti i fili dell'encoder, possibilmente un paio di volte. 

La stessa cosa, con un altro anello, la si può fare sui cavi di potenza. 

Le ferriti per queste cose si trovano abbastanza facilmente, magari su vecchi cavi video o uscite di alimentatori. 

 

 

 

 

Link to comment
Share on other sites

21 minuti fa, Sandro Calligaro ha scritto:

Non so cosa vuoi fare con il motore

Tutto é nato dal fatto che mi sono reso conto che le lavatrici attuali per questioni di risparmio energetico "fregano" sulle temperature di lavaggio, volevo quindi farmi io un controller custom. Essendo totalmente ignorante in materia ho iniziato a leggere un pò su internet come si pilota un motore bldc, per poi scoprire grazie a te che non é un bldc ma un pmsm. Pensavo fosse molto più facile a dir la verità (il tentativo fatto con arduino dice tutto), ma alla fine mi sono appassionato e trovo tutta la materia interessante.

 

30 minuti fa, Sandro Calligaro ha scritto:

se vuoi imparare a fare le cose bene un oscilloscopio è molto utile

Che budget dovrei investire per un oscilloscopio utile allo scopo?

 

31 minuti fa, Sandro Calligaro ha scritto:

Naturalmente, se il controllo non è isolato, è un bel problema

Potrei prendere un trasformatore di isolamento o un gruppo di continuita per pc, almeno poi lo uso anche per il pc.

 

32 minuti fa, Sandro Calligaro ha scritto:

I segnali encoder vengono quasi sempre portati come coppie differenziali, cioè due fili la cui differenza positiva o negativa è l'informazione sul bit. 

Il solito trucco di fare la differenza per togliere il rumore, potevo pure pensarci prima senza chiedere :)

Link to comment
Share on other sites

Sandro Calligaro
6 ore fa, marcoc4d ha scritto:

Il solito trucco di fare la differenza per togliere il rumore, potevo pure pensarci prima senza chiedere :)

Sì, ma se le uscite non sono differenziali devi creare tu un trasmettitore differenziale... Chiaro che se, nella lavatrice, le cose funzionano senza trasmissione differenziale, vuol dire che si può fare anche senza. 

Link to comment
Share on other sites

Sandro Calligaro
23 ore fa, marcoc4d ha scritto:

Che budget dovrei investire per un oscilloscopio utile allo scopo?

Dai un'occhiata ai Rigol. 

A me pare che il DS1054Z o il DS1074Z plus (con ingressi digitali) siano ottimi compromessi qualità-prezzo. 

Comunque, persino col mio ormai vecchio DS1052 si riesce a fare qualcosa.

Non sono così aggiornato, ma non cercherei altre marche cinesi, a meno di non trovare qualcuno che te le consiglia (senza interesse).

Su quelle americane o europee  (credo che ormai in Europa sia rimasta solo Rohde&Schwarz, che ha acquisito Hameg, in USA ci sono Keysight ex Agilent, Tektronix e Lecroy) paghi in più solo il nome, per i prodotti di fascia bassa. Yokogawa non credo abbia qualcosa di competitivo così in basso. 

 

23 ore fa, marcoc4d ha scritto:

Potrei prendere un trasformatore di isolamento o un gruppo di continuita per pc, almeno poi lo uso anche per il pc.

È una buona idea (il trasformatore), anche per la sicurezza. Ci si deve comunque stare attenti. 

Edited by Sandro Calligaro
Link to comment
Share on other sites

11 ore fa, Sandro Calligaro ha scritto:

Dai un'occhiata ai Rigol.

Leggendo sulla documentazione della ST ho trovato che esiste una funzione di debugging di tracing in tempo reale dei valori di 4 variabili a piacimento durante l'esecuzione, forse l'oscilloscopio non serve in questo caso. Per ora non sono ancora riuscito a tracciare niente in questo modo ma penso che si possa fare.

Provo comunque a guardare i Rigol.

Il 25/11/2019 alle 06:53 , Sandro Calligaro ha scritto:

Chiaro che se, nella lavatrice, le cose funzionano senza trasmissione differenziale

Penso proprio che non sia differenziale, arrivano alla scheda le uscite dei sensori, tra l'altro nello stesso unico fascio di cavi che alimentano motore, resistenza, elettrovalvole etc

Link to comment
Share on other sites

Sandro Calligaro
3 ore fa, marcoc4d ha scritto:

Leggendo sulla documentazione della ST ho trovato che esiste una funzione di debugging di tracing in tempo reale dei valori di 4 variabili a piacimento durante l'esecuzione,

In effetti era prevedibile, visto il lavoro che hanno fatto per facilitare la vita agli sviluppatori...

 

3 ore fa, marcoc4d ha scritto:

Penso proprio che non sia differenziale, arrivano alla scheda le uscite dei sensori, tra l'altro nello stesso unico fascio di cavi che alimentano motore, resistenza, elettrovalvole etc

Basta guardare quanti fili ci sono per le sonde. Per le due sonde ci dovrebbero essere 4 fili più eventualmente le alimentazioni.

Mi viene un dubbio... non è che le sonde hanno uscite open-collector (cioè sono in circuito aperto rispetto a massa per dire 1 e in corto per dire 0)?

Io comunque credo che usino le sonde solo per sapere dov'è il rotore all'inizio.

Edited by Sandro Calligaro
Link to comment
Share on other sites

Sono riuscito a utilizzare il tracing, ho fatto un esempio in allegato con la risposta al gradino del PI di velocità. Il motore va con Observer+PLL e il setpoint é a 500 giri.

La X é in secondi, la Y non so che unità di misura sia.

1097352273_rispostagradino.thumb.jpeg.113c35946b579de098b43b39f524db3b.jpeg

Quali altri grafici sarebbero utili per fare il tuning dei parametri?

 

4 ore fa, Sandro Calligaro ha scritto:

Basta guardare quanti fili ci sono per le sonde. Per le due sonde ci dovrebbero essere 4 fili più eventualmente le alimentazioni.

Sono due fili di alimentazione e uno per ognuno dei due sensori. 

 

5 ore fa, Sandro Calligaro ha scritto:

non è che le sonde hanno uscite open-collector

Avrebbe delle implicazioni per il rumore?

5 ore fa, Sandro Calligaro ha scritto:

Io comunque credo che usino le sonde solo per sapere dov'è il rotore all'inizio.

Può essere, é strano che fino a 100 rpm con la scheda della ST il motore non si sente quasi, e quando va col controller della lavatrice fa molto più rumore.

Link to comment
Share on other sites

Sandro Calligaro
Il 25/11/2019 alle 00:01 , marcoc4d ha scritto:

Quali altri grafici sarebbero utili per fare il tuning dei parametri?

A vedere la risposta, direi che funziona piuttosto bene! 

Potresti mostrare la Iq di riferimento, per vedere com'è fatta. Il test sarebbe benr farlo anche con un gradino più piccolo, o magari una rampa, per evitare la saturazione del regolatore di velocità. 

 

2 ore fa, marcoc4d ha scritto:

fino a 100 rpm con la scheda della ST il motore non si sente quasi, e quando va col controller della lavatrice fa molto più rumore.

Che tipo di rumore fa la lavatrice originale?

Nella mia LG (che non ho mai smontato, lo ammetto), il rumore mi era sembrato sì un po' "sporco", ma non molto strano. 

Sarebbe interessante poter misurare la corrente con l'oscilloscopio... 

 

Tieni conto comunque del fatto che tu parti in "open-loop", cioè facendo girare lentamente un vettore di corrente, senza basarsi sulla stima di posizione e velocità (come nel microstepping dei motori a passo). Il rotore gira "liscio", ma nel tuo caso è senza carico, immagino.

Potrebbe succedere che, specie a causa dei panni che si ribaltano, la coppia di disturbo tenda invece a fargli "perdere il passo", impedendogli di avviarsi. 

Nel funzionamento normale non ci si può permettere che il motore stalli, perciò magari usano le sonde, a bassa velocità. 

Edited by Sandro Calligaro
Link to comment
Share on other sites

18 ore fa, Sandro Calligaro ha scritto:

Potresti mostrare la Iq di riferimento, per vedere com'è fatta. Il test sarebbe benr farlo anche con un gradino più piccolo, o magari una rampa, per evitare la saturazione del regolatore di velocità. 

Ecco qualche grafico in più con la IqRef, mi sa che in saturazione ci va sempre.

rampa 300rpm-5sec+corrente:

866280065_rampa300rpm-5seccorrente.jpeg.79e4c7858f3a03b7ffb8f24568181826.jpeg

rampa 300rpm-10sec+corrente:1820596083_rampa300rpm-10seccorrente.thumb.jpeg.4e9444a5cabb69c10cae518e8c50b0f7.jpeg

gradino 500 rmp+corrente:

1783951299_gradino500rmpcorrente.jpeg.6bb448eaf5879a545de968f8005f3481.jpeg

gradino 300 rmp+corrente:

1162109027_gradino300rmpcorrente.jpeg.7b32ee6addb388244aae4d499c09e7c1.jpeg

gradino 100 rmp+corrente:

533311064_gradino100rmpcorrente.jpeg.98de05cde222034f03781832659d37dc.jpeg

18 ore fa, Sandro Calligaro ha scritto:

Che tipo di rumore fa la lavatrice originale?

Tipo un muggito a bassi giri, piu o meno grave a seconda della velocità, sia a vuoto che con carico. Col controller della ST invece nessun rumore nemmeno se freni il tamburo con le mani.

18 ore fa, Sandro Calligaro ha scritto:

Nel funzionamento normale non ci si può permettere che il motore stalli, perciò magari usano le sonde, a bassa velocità. 

Era un'ipotesi che avevo fatto anche io anche se altre marche con motori simili, tipo haier, non hanno nessun sensore. Io pensavo che per questioni di controller lento utilizzassero una  commutazione sinusoidale coi sensori.

Link to comment
Share on other sites

Sandro Calligaro

Le forme d'onda mostrano che funziona correttamente (per essere in sensorless). Durante l'accelerazione a rampa, la coppia è quasi costante, anche quando non è in limitazione, quindi il controllo sta correttamente generando una coppia quasi costante.

Si potrebbe provare a ridurre qualche guadagno (ad esempio l'integrale) o a filtrare le stime e/o la coppia di riferimento, ma tutto sommato mi sembrano delle prestazioni buone.

  

Il 27/11/2019 alle 16:11 , marcoc4d ha scritto:

altre marche con motori simili, tipo haier, non hanno nessun sensore

La stima della posizione si può fare con altri metodi, a bassa velocità e fa fermo, ma quanto "efficace" è dipende fortemente dal motore e può variare col carico.

Conoscendo il motore, però (anzi, progettandolo per lo scopo) si può magari fare in modo che anche la stima con quel metodo funzioni decentemente.

 

In più, si devono iniettare delle componenti di corrente a frequenza alta (ad es. 1 kHz), che servono solo per la stima. Così si genera del rumore acustico, che può essere o meno accettabile, visto che la lavatrice è di solito dentro un'abitazione e non in un capannone industriale.

 

Potrebbe essere che quelli che non usano il sensore facciano:
- avviamento in open-loop, magari con meno "pretese"

- sola identificazione della posizione iniziale (pochi ms sono sufficienti, e funziona quasi sempre), poi controllo con la stima basata su back-EMF.

 

Una domanda, che avrei dovuto farti già da un po'... ma nella scheda ST si misura anche la tensione di fase?

Edited by Sandro Calligaro
Link to comment
Share on other sites

3 ore fa, Sandro Calligaro ha scritto:

Una domanda, che avrei dovuto farti già da un po'... ma nella scheda ST si misura anche la tensione di fase?

Intendi la tensione di ogni singola fase? No misura solo la tensione del bus, perché?

Link to comment
Share on other sites

Sandro Calligaro
22 ore fa, marcoc4d ha scritto:

No misura solo la tensione del bus, perché?

Perché dalla tensione di bus e dai duty-cycle si riesce ad ottenere solo un valore approssimato delle tensioni di fase, a causa principalmente dei dead-time. Ovviamente si possono compensare, ma sono ulteriori parametri da identificare e calcoli da fare online. 

Negli azionamenti in cui il controllore non è isolato, costa molto poco fare le misure di tensione, quindi qualcuno le misura,come ad esempio TI, nelle sue schede (in particolare per INSTASPIN). 

 

Tra l'altro, è utile conoscere la tensione di fase anche quando l'inverter è disattivato, per poter sapere se il rotore sta girando (ad esempio all'avvio, per una ventola oppure in caso di interruzione corta dell'alimentazione) e poterla "riprendere al volo" con il controllo (lo chiamano "catch on fly"). 

 

Nei drive industriali, comunque, è molto rara la misura di tensione di fase. 

Edited by Sandro Calligaro
Link to comment
Share on other sites

8 ore fa, Sandro Calligaro ha scritto:

lo chiamano "catch on fly"

In quello della ST nei parametri di avvio c'é un opzione "on the fly startup" ma non ho mai approfondito cosa faccia e come funzioni.

Magari é un'opzione che funziona con altre schede di potenza nelle quali é misurata la tensione di fase, proverò a guardare 

Edited by marcoc4d
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...