Jump to content
PLC Forum


PWM pilota ventola, tensione non lineare


fulvioromano
 Share

Recommended Posts

Livio Orsini
4 minuti fa, fulvioromano scrisse:

Se resto sopra i 100Hz ai fini della ventola non ci dovrebbero essere problemi, giusto?

 

Teoricamente andrebbe alzata sopra il kHz, più la freqeunza è elevata migliore è l'effetto di spianamento dell'induttanza del motore.

Inoltre con arduino non si può scendere sotto la freqeunza di circa 670 Hz.

Perchè non scrivi a  quali pin di PWM hai collegato il circuito? Ogni coppia di pind è collegata ad uno specifico timer di arduino.

8 minuti fa, fulvioromano scrisse:

La ventola ha il pin della tachimetrica

 

Usala per misurare la velocità. quella è una cosa sensata. Anche se non conosci la costante tensione/velocità della tachimentrica almeno riesci a misurare la vera proporzionalità tra tensione di alimentazione e velocità del motore.

Non hai le caratterisstiche della ventola? almeno marca e modello.

 

15 minuti fa, fulvioromano scrisse:

magari faccio un loop di velocità e vedo cosa succede.

 

Per curiosità come intendi realizzarrlo?

 

11 minuti fa, fulvioromano scrisse:

Infine, mi spieghi la frase: "Misurare la tensione ai capi del motore con un voltmetro ha poco senso"? Ho sempre pensato che più scarso è il voltmetro meglio restituisce il valor medio, no?

 

No,non è per niente vero!. Dovresti vedere all'oscilloscopio la tensione ai capi del motore: è un bel guazzabuglio di spikes.

 

Comunque io ti consiglerei di pilotare il motore tramite un drive adatto. In rete trovi per pochi euro schedine basate sullo L298 che possono pilotare 2 motori da 1A cadauno o un motore da 2A. Sono già previste per interfacciarsi con arduino.

Link to comment
Share on other sites


5 ore fa, Livio Orsini scrisse:

Devi mettere un restistore tra base ed emitter

penso che questo valga se la porta di uscita del micro sia flottante quando non c'è segnale, ma le uscite delle porte, per quello che ne so, vengono portate a gnd per segnale basso di uscita e a vcc per segnale alto.

Quindi l'impedenza vista dalla base, verso la porta, in questo caso sarà sempre 1K.

Per fare un analisi, e non andare a spanne, ci vuole un oscilloscopio

Link to comment
Share on other sites

del_user_293569

ma la ventola di che tipo e' ? se tipo PC, queste hanno un circuito interno che trasforma la DC in 3 segnali impulsivi e sfasati per creare il campo magnetico rotante e mal gradiscono un segnale PWM in ingresso.

Edited by Francesco_54
Link to comment
Share on other sites

Livio Orsini
2 ore fa, DavidOne71 scrisse:

penso che questo valga se la porta di uscita del micro sia flottante quando non c'è segnale

 

No!

Se sei in commutazione è necessaria una resistenza per svuotare più rapidamente le cariche della base.

Spiegato in modo semplificato.

Se si lavora bene, per portare il più rapidamente possibile il transistor in saturazione, si deve sovra pilotare la base in modo che nella giunzione venga a crearsi una base virtuale che mette in comunicazione diretta l'emettitore con il collettore. A questo da un contributo fondamentale il condensatore di speed up che accela il processo di creazione della base virtuale.

Quando bisogna interdire il transistore, bisogna svuotare il più rapidamente possibile la base virtuale della cariche che l'hanno creata; il condensatore di speed up fa la sua parte, ma la resistenza base emitter da un contributo essenziale.

 

Nel caso di un circuitino con poca corrente come questo difficilmente si fanno danni gravi al transistor, ma se lavori con correnti non banali allora esci dal SOAR ed i cadaveri si ammucchiano.

 

Poi non capisco la mania di risparmiare un resitore. Posso ancora capire se si producono migliaia di esemplari: un resitore risparmiato alla fine è qulache euro. Ma per uno che si fa il circuitino in casa che senso può avere risparmiare un resistore e nion far commutare bene il transistor?

 

2 ore fa, DavidOne71 scrisse:

Per fare un analisi, e non andare a spanne, ci vuole un oscilloscopio

 

NO!! per fare un'anailsi bisogna analizzare il circuito facendo i conti e sapendo bene come funziona un transistor in commutazione!

Queste son le modalità di quelli che per determinare l'assorbimento di un circuito guardano l'amperometro dell'alimentatore, perchè non hanno nemmeno fatto il calcolo di massima degli assorbimenti.

 

2 ore fa, DavidOne71 scrisse:

Quindi l'impedenza vista dalla base, verso la porta, in questo caso sarà sempre 1K.

 

Non è vero nemmeno quando la porta è pilotata, figuriamoci quando la porta è flottante.

Link to comment
Share on other sites

Livio Orsini
48 minuti fa, Francesco_54 scrisse:

se tipo PC, queste hanno un circuito interno

 

Per questo ho chiesto.

3 ore fa, Livio Orsini scrisse:

Non hai le caratterisstiche della ventola? almeno marca e modello.

 

 

Link to comment
Share on other sites

fulvioromano
5 ore fa, Livio Orsini scrisse:

Perchè non scrivi a  quali pin di PWM hai collegato il circuito? Ogni coppia di pind è collegata ad uno specifico timer di arduino.

Perché mi sono dimenticato, scusa. E' la D6.

 

Quote

Usala per misurare la velocità. quella è una cosa sensata. Anche se non conosci la costante tensione/velocità della tachimentrica almeno riesci a misurare la vera proporzionalità tra tensione di alimentazione e velocità del motore.

Non hai le caratterisstiche della ventola? almeno marca e modello.

 

Certo, l'avevo scritto al primo post, nello schema. E' una Artic P12 <https://www.arctic.de/en/P12/ACFAN00118A>

 

Quote

Per curiosità come intendi realizzarrlo?

Non vorrei semplificare troppo le cose, ripeto che non sono un elettronico ed è la prima volta che metto le mani su arduino.

Però pensavo di fare via software un PI a tempo discreto t=10ms con Kp trovato con Ziegler–Nichols e Ki piccolissimo, giusto per garantire l'azzeramento dell'errore a regime.

 

Quote

Comunque io ti consiglerei di pilotare il motore tramite un drive adatto. In rete trovi per pochi euro schedine basate sullo L298 che possono pilotare 2 motori da 1A cadauno o un motore da 2A. Sono già previste per interfacciarsi con arduino.

 

Io avrei un L293D sotto mano, ma data la mia ignoranza in elettronica odio infilare elettroni in dei rettangolini neri che non so bene cosa poi ne facciano.

Ripeto, io voglio evitare di stressare i componenti con banali errori da neofita, ma poi riportare il sistema in controllo in qualche modo faccio.

Link to comment
Share on other sites

2 ore fa, Livio Orsini scrisse:

 

No!

Se sei in commutazione è necessaria una resistenza per svuotare più rapidamente le cariche della base.

Spiegato in modo semplificato.

Se si lavora bene, per portare il più rapidamente possibile il transistor in saturazione, si deve sovra pilotare la base in modo che nella giunzione venga a crearsi una base virtuale che mette in comunicazione diretta l'emettitore con il collettore. A questo da un contributo fondamentale il condensatore di speed up che accela il processo di creazione della base virtuale.

Quando bisogna interdire il transistore, bisogna svuotare il più rapidamente possibile la base virtuale della cariche che l'hanno creata; il condensatore di speed up fa la sua parte, ma la resistenza base emitter da un contributo essenziale.

 

Nel caso di un circuitino con poca corrente come questo difficilmente si fanno danni gravi al transistor, ma se lavori con correnti non banali allora esci dal SOAR ed i cadaveri si ammucchiano.

 

Poi non capisco la mania di risparmiare un resitore. Posso ancora capire se si producono migliaia di esemplari: un resitore risparmiato alla fine è qulache euro. Ma per uno che si fa il circuitino in casa che senso può avere risparmiare un resistore e nion far commutare bene il transistor?

 

 

NO!! per fare un'anailsi bisogna analizzare il circuito facendo i conti e sapendo bene come funziona un transistor in commutazione!

Queste son le modalità di quelli che per determinare l'assorbimento di un circuito guardano l'amperometro dell'alimentatore, perchè non hanno nemmeno fatto il calcolo di massima degli assorbimenti.

 

 

Non è vero nemmeno quando la porta è pilotata, figuriamoci quando la porta è flottante.

ho capito quello che dici, ma rimango sempre della mia opinione

Link to comment
Share on other sites

Livio Orsini
13 ore fa, DavidOne71 scrisse:

ho capito quello che dici, ma rimango sempre della mia opinione

 

Forse perchè non conosci bene la teoria.

 

Link to comment
Share on other sites

Livio Orsini

Dunque D6 corrisponde al T0 ed è settato a 976Hz. Meglio non variare la frequenza per no scompussolare tutte le funzioni di libreria dia rduino che si basano su questo timer.

Io userei quelli legati al timer 2.

 

A mia esperienza 10ms sono un po' troppo veloci, come periodo per questa regolazione, io salirei di un ordine. Mi creerei una routine di interrupt su T1 con periodo a 100ms.

Darei anche una componente derivativa,non sull'errore, ma sulla reazione di tachimetrica.

 

Prima però verificherei la risposta del motore alimentandolo con una tensione variabile.

Le specifiche danno la tensione di lavoro compresa tra 2.8 v e 12V. Usi il transitor che ora fa da commutatore come regolatore serie. Ti basta un potenziometro connesso a 12V e  un resistore verso lo zero per limitare la variazione in basso. Connetti il cursore alla base e sull'emettitore hai la tua tensione varibile. tanto la ventola assorbe 20mA massimi. Misuri la tensione sul motore e quella sulla tachimetrica, così verifichi la linearità di comportamento del motore.

 

Guarda un po' questa applicazione di arduino con L293D magari ne trai qualche utile spunto.

Link to comment
Share on other sites

del_user_293569

Scusate ma ripeto la domanda: e' una ventola per PC?
Chiedo perchè se sì con questo sistema non otterrete mai una risposta lineare, ma se invece usate una ventola, sempre per PC, di "3' generazione" (definizione mia 😀), ovvero quelle ventole a 4 fili, di cui 2 x l'alimentazione, 3' filo x il segnale tachimetrico, 4' filo x il controllo PWM, con Arduino potete veramente divertirvi.

Edited by Francesco_54
Link to comment
Share on other sites

del_user_293569

Visto la ventola; di 2' generazione ovvero 2 fili per l'alimentazione piu' 3' filo per tachimetrica. Come dicevo prima, queste ventole hanno un chip interno che genera i segnali necessari alla rotazione dell'elica + dei sensori Hall. Tutti i chip hanno una tensione minima di funzionamento, questo spiega quel gradino poco prima di 2V. Inoltre non e' opportuno alimentare queste ventole in PWM perchè l'alimentazione discontinua può interferire con il clock interno del chip. Dovresti inserire un "integratore" tra transistor pilota e ventola, ma a 670 HZ (se ho capito bene) l'induttore e il condensatore che compongono l'integratore avrebbero dimensioni "improponibili". Ti conviene usare una ventola di 3' generazione che ha  il 4' filo specifico per il controllo PWM.

 

Edited by Francesco_54
Link to comment
Share on other sites

17 minuti fa, Francesco_54 scrisse:

Visto la ventola; di 2' generazione ovvero 2 fili per l'alimentazione piu' 3' filo per tachimetrica. Come dicevo prima, queste ventole hanno un chip interno che genera i segnali necessari alla rotazione dell'elica + dei sensori Hall. Tutti i chip hanno una tensione minima per il funzionamento, questo spiega quel gradino poco prima di 2V. Inoltre non e' opportuno alimentare queste ventole in PWM perchè l'alimentazione discontinua può interferire con il clock interno del chip

questa mi convince molto di più

Forse, per sperimentare un po il pwm e sperimentare in generale, sarebbe meglio una ventola a 2 fili

Link to comment
Share on other sites

fulvioromano

Allora, con ordine:

1. ho messo la resistenza tra base ed emettitore. Non ci sono variazioni apprezzabili di comportamento, ma se così dev'essere lascio così.

2. Devo controllare un processo molto lento quindi ok t=100ms per il PID.

3. La tachimetrica mi dà un'onda quadra. Ho una lettura pessima, a velocità massima (alimentando direttamente) oscilla tra 1800 e 1500 rpm (1800 è il dato di targa della ventola), è probabile che stia commettendo qualche errore.

4. Ottima l'idea della ventola a 4 fili. Adesso ho questa, non so nemmeno se il flusso d'aria è sufficiente. Continuo le mie prove, quando comprerò la ventola definitiva sarà a 4 fili.

5. Per il derivativo non ho capito. Stai dicendo di usare un controllo PI con feed forward D, o usare un controllo PID? Comunque il processo è molto lento, devo necessariamente mettere un anti windup sull'integrale, spero non mi faccia casini.

 

Per il punto 3 non capisco dove sbaglio. Interrogo la ventola per un certo tempo, attivo e conto gli interrupt della tachimetrica, ed ottengo un risultato molto sporco. Tra l'altro ottengo velocità significativamente diverse se interrogo per 100ms o per 1000ms. Incredibilmente interrogando per 100ms il numero di avvicina si più a 1800rpm che mi aspetto.

Ma sto usando male gli interrupt, ne sono certo. All'inizio del codice faccio fare un rapido beep ad un buzzer. Se prima di questo beep do il comando noInterrupts() il beep cambia frequenza. Ora cerco di capire meglio, eh.

Edited by fulvioromano
Link to comment
Share on other sites

del_user_293569

Il problema non e' nel controllore, e' nel funzionamento della ventola.

Cerco di spiegarmi:

Il chip interno alla ventola genera tre impulsi in sequenza 1,2,3,1,2,3,1,2,3............. etc.

se dopo mettiamo dopo due cicli e 1/2 viene meno l'alimentazione perchè il PWM va in OFF

la sequenza degli impulsi sarebbe 1,2,3,1,2,3,1,2 0,0,0,0,0,0,0,1,2,3,1,2,3......

Questa sequenza genera una rotazione incostante e una lettura del segnale tachimetrico errato perchè pur se la ventola continua a girare(per inerzia) i sensori Hall danno Velocita' = 0 perchè non alimentati.

Edited by Francesco_54
Link to comment
Share on other sites

Livio Orsini
46 minuti fa, fulvioromano scrisse:

5. Per il derivativo non ho capito. Stai dicendo di usare un controllo PI con feed forward D, o usare un controllo PID? Comunque il processo è molto lento, devo necessariamente mettere un anti windup sull'integrale, spero non mi faccia casini.

 

Separiamo la regolazione in feed back dal feed forward.

La parte di regolazione feedback prevede una parte proporzionale, una parte integrale ed una parte derivativa. La parte derivativa la puoi effettura o sulla derivata dell'errore, o sulla derivata della reazione. Effettuando la derivata sulla reazione si hanno alcuni vantaggi, rispetto alla derivata sull'errore. Il perchè di questo è un po' lungo da spiegare in un messaggio. Al limite puoi leggere il mio breve tutorial sulle regolazioni, dove è accennato qualche cosa in merito.

Mettere un limite sull'integrale può dare benefici come prontezza di regolazione ma può anche non riuscire ad azzerare l'errore.

La soluzione migliore, quella che adotto spesso, è dare un feedforward ed uasare il regolatore PID solo per correggere gli errori immediati. Se il feed foward fosse perfetto l'integrale sarebbe zero. Ci sono tecniche che permettono anche questo risultato ma richiederebbero alcune pagine di spiegazione.

 

46 minuti fa, fulvioromano scrisse:

La tachimetrica mi dà un'onda quadra.

 

Perchè non è una tachimetrica ma un generatore di impulsi, probabilmente costituito da un sensore di Hall. Purtroppo dici di non disporre di un oscillosopio, quindi è un po' difficile fare delle misuire attendibili, puoi provare ad usare un arduino come contatore-frequenzimetro.

Tra l'altro questo fatto ti complica la regolazione perchè hai anche il problema della misura di frequenza.

46 minuti fa, fulvioromano scrisse:

Tra l'altro ottengo velocità significativamente diverse se interrogo per 100ms o per 1000ms. Incredibilmente interrogando per 100ms il numero di avvicina si più a 1800rpm che mi aspetto.

 

Forse sarebbe da rivedere come fai il conteggio. Soprattutto bisognerebbe sapere come sono gli impulsi.

Comunque puoi usare uno dei 3 contatori di arduino per fare il conteggio.

In rete c'è parecchio materiale su queste tecniche.

 

Edited by Livio Orsini
Link to comment
Share on other sites

Livio Orsini
28 minuti fa, Francesco_54 scrisse:

Il problema non e' nel controllore, e' nel funzionamento della ventola.

Cerco di spiegarmi:

 

Il foglio tecnico della ventola non da notizie sul tipo di motore impiegato però, leggendo le caratteristiche dichiarate si ha che la tensione di funzionamento è compresa 2..8 V - 12V.

Quindi significa che è possibile variare l'alimentazione ottenedo una variazione di velocità  Anche se il documento riporta esplicitamente:Controll Type: Fixed Speed. Solitamente è sempre possibile ottenere una variazione di velocità agendo sull'alimentazione.

Inoltre, come ha specificato Fulvioromano, la misura l'ha effettuata a tensione costante di 12V, quindi la tua ipotesi viene a cadere.

Proprio per capire come funziona questo aggeggio ho consigliato da subito di misura la velocità alimentando con una tensione continua variabile.

 

Essendo a 3 fili significa che c'è un comune tra l'alimentazione del motore ed il generatore di impulsi. Se non è possiible verificare, per mancanza di strumentazione, come sono gli impulsi le varie ipotesi sono mere speculazioni.

 

Edited by Livio Orsini
Link to comment
Share on other sites

del_user_293569
26 minuti fa, Livio Orsini scrisse:

Il foglio tecnico della ventola non da notizie sul tipo di motore impiegato

Le ventole di quel tipo sono tutte Brushless, e questo basta per far intuire cosa ci puo' essere di elettronica all'interno senza andare a sezionarle e per capire perchè non possono funzionare con un'alimentazione in PWM.

26 minuti fa, Livio Orsini scrisse:

tensione di funzionamento è compresa 2..8 V - 12V.

a tensione costante e non PWM

26 minuti fa, Livio Orsini scrisse:

Quindi significa che è possibile variare l'alimentazione ottenedo una variazione di velocità

Vero, ma non in PWM

26 minuti fa, Livio Orsini scrisse:

la misura l'ha effettuata a tensione costante di 12V

Di alimentazione sull'intero circuito, non ai capi della ventola

26 minuti fa, Livio Orsini scrisse:

Se non è possiible verificare, per mancanza, di strumentazione, come sono gli impulsi le varie ipotesi sono mere speculazioni.

Le misure sul funzionamento delle ventole le ho fatte io, anche con il supporto di un oscilloscopio, quindi le mie non sono "mere speculazioni". 

Edited by Francesco_54
Link to comment
Share on other sites

Livio Orsini
4 minuti fa, Francesco_54 scrisse:

Le misure sul funzionamento delle ventole le ho fatte io, anche con il supposto di oscilloscopio, quindi le mie non sono "mere speculazioni".

 

hai misurato quella Ventola? (identico modello).

 

6 minuti fa, Francesco_54 scrisse:

Di alimentazione sull'intero circuito, non ai capi della ventola

 

No ti sbagli ha scritto chiaramente:

 

 

57 minuti fa, fulvioromano scrisse:

a velocità massima (alimentando direttamente)

 

7 minuti fa, Francesco_54 scrisse:

Vero, ma non in PWM

 

Visto che disponi di un oscilloscopio perchè non osservi l'alimentazione sul motore quando lo alimenti in PWM. Se hai fatto le cose per bene non vedi impulsi ma una continua con un poco di ondulazione. Se hai fatto le cose male allora vedi un sacco di porcheria, ma non vedi impulsi.

Proprio perchè l'induttanza del motore funziona da integratore è possibile fare regolozaoni con la tecnica chopper. Quando con i semiconduttori non si riuscivaq a superare 1kHz di frequenza di PWM, si dovevano mettere induttori inserie all'armatura per ottenere un fattore di forma decente.

Link to comment
Share on other sites

del_user_293569
32 minuti fa, Livio Orsini scrisse:

hai misurato quella Ventola? (identico modello).

Ti arrampichi sugli specchi ? sono tutte così,  ne ho smontate  moltissime. Se vuoi contestare quanto affermo, la compri , la smonti e ce la mostri

 

 

32 minuti fa, Livio Orsini scrisse:

Proprio perchè l'induttanza del motore funziona da integratore è possibile fare regolozaoni con la tecnica chopper

Un integratore e' costituito da un induttore e un condensatore, almeno....

e poi il ciopper nel nostro caso non vede un induttanza perchè c'e' un chip di mezzo 

32 minuti fa, Livio Orsini scrisse:

Quando con i semiconduttori non si riuscivaq a superare 1kHz di frequenza di PWM

Aaabbeeeè .... se non riuscivi a far funzionare i semiconduttori oltre 1 KHz sono problemi tuoi, io ho realizzato un circuito PWM apposta per pilotare 5 ventole

in PWM con sensore termico a oltre 20KHz. Adesso ho ospiti a casa, quando se ne vanno ti posto la foto.

Edited by Francesco_54
Link to comment
Share on other sites

fulvioromano

Mi state aiutando tanto e vi ringrazio.

Confermo che se alimento con tensione costante la tachimetrica funziona (anche se mi restituisce 1500rpm invece di 1800...boh). Se rallento la ventola col dito mi restituisce una velocità credibile. Se alimento con PWM dà i numeri. Quindi quanto dice Francesco_54 è corretto, no ne esco.

 

Mi vengono in mentre tre cose:

1. piloto con un'uscita analogica? Come posso fare a dargli i 200mA che vuole senza bruciare l'uscita?

2. piloto in PWM, l'uscita del PWM la genero con un PID che alimento con l'errore di temperatura dell'oggetto su cui sto soffiando? Non ho un anello interno di velocità, ma magari riesco lo stesso?

3. metto una resistenza in serie alla ventola ed uso la caduta di tensione come stima della velocità? Ovviamente se poggio il dito sulla ventola il controllo me la ferma, quindi magari è una stupidaggine 

Link to comment
Share on other sites

del_user_293569

 

 

 

 

 

IMG_0562.thumb.JPG.a5bf4ef0bec150fea5c3c1c080d49b8b.JPG

Questo l'ho realizzato quanto non esistevano ancora ventole con il controllo PWM

 

In basso a SX ingresso alimentazione

in alto a SX integratore

Al centro in basso dissipatore per il MOS che e' sotto e non si vede

in alto centralmente le 5 uscite per le ventole ;connettore nero uscite tachimetriche per il PC

In alto a DX LM324N per generazione segnale PWM e regolazione soglia minima rotazione delle ventole

in basso a DX LM741CN per regolazione pendenza velocita/Temperatura con sensore NTC

Inoltre tra il dissipatore e l'induttore c'e' una presa per prelevare il segnale sul MOS da analizzare con l'oscilloscopio.

 

Il tutto funzionante a oltre 20KHz per ridurre ingombro integratore ed evitare la possibilità di generare sibili nel campo dell'udito.

 

Quindi Fatti, non chiacchiere.

 

 

Edited by Francesco_54
Link to comment
Share on other sites

fulvioromano

Ok, il sistema col PI sembra più o meno funzionare. Ho rinunciato all'anello di velocità, faccio solo quello di temperatura.

Ora devo fare un po' di lavori di meccanica (convogliare l'aria, montare le sonde di temperatura, ecc) e vedere se tutto gira adeguatamente, ma se ne parlerà il prossimo weekend.

 

Per ora vi ringrazio molto.

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...