Controllare motore in pwm: fischio maledetto...

Sto provando a controllare dei motori brushless (ventola) tramite l'uscita pwm di Arduino, di preciso il pin 5. Ora per funzionare funziona, ma emette un fischio fastidiosissimo.
Ho analizzato tramite logic tool del pickit 2 l'uscita e segna 943Hz...possibile?? Con un quarzo da 16Mhz l'uscita del pwm è così bassa?

Ho provato ad implementare il pwm via software ma non può funzionare: all'aumentare del codice si sfalsano tutti i tempi come è ovvio che sia...
A questo punto chiedo, avendo bisogno di pilotare 4 canali indipendenti:

  1. uso i moduli pwm dell'atmega (se però c'è un modo per alzare la frequenza almeno oltre 20Khz, soglia udibile)

  2. esistono integrati che io gli passo il valore del duty e loro gestiscono il pwm x i fatti loro?

Grazie a tutti quanti! :wink: :wink:

Potresti ridurre il fischio mettendo delle capacità in uscita del ponte H, però occhi a non superare le specifiche nel datasheet.

  1. uso i moduli pwm dell'atmega (se però c'è un modo per alzare la frequenza almeno oltre 20Khz, soglia udibile)

Si, c'è la possibilità di impostare il Fast PWM, leggi il datasheet, mi pare solo per il Timer0.

  1. esistono integrati che io gli passo il valore del duty e loro gestiscono il pwm x i fatti loro?

Penso di si, per certo esistono dei driver con a bordo il PWM, sto facendo una ricerca perchè anche io devo pilotare dei motori dc + encoder in quadratura.
Che pirla esistono e come se esistono SG3525/26/27 c'è ne un milione, cerca alimentazioni switching.
Alcuni però hanno un ristretto range del PWM.

Riprendo la ricerca dopo una pausa, teniamoci in contatto.
Ok ciao.

cerca che ti cerca ho trovato come modificare il prescaler dei timer1 e timer2.
Questi pare non influiscano su delay(), millis(), ecc...e ho portato il pwm a 32KHz...perfetto...nessun fischio...
Ora sono alle prese con un altro problema: incrementare a step di 5% il duty dato che 1% di 255 = 2.55 e 2.55*5 = 12.75 :frowning:

:frowning: Cattivone dove sono i link >:(

Questi pare non influiscano su delay(), millis(), ecc...e ho portato il pwm a 32KHz...perfetto...nessun fischio...

32KHZ perfetto, anche 16 sarebbe bastato per non sentire il fischio a meno di avere orecchie da pipistrello.

Ora sono alle prese con un altro problema: incrementare a step di 5% il duty dato che 1% di 255 = 2.55 e 2.55*5 = 12.75

Dai link che in due si legge meglio.

Ciao.

non ho capito XD ;D

Ciao a tutti:
La frequenza PWM del Arduino é di 490Hz. Questa frequenza é stata scelta proprio per problemi con motori.
Se alzi la frequenza avrai caratteristiche del motore diverse visto che la resistenza data dalle induttanze del motore aumenta con la frequenza; Le perdite nel ferro del motore aumentano. Anche i ponti H hanno un limite di frequenza per pilotarli in PWM.
Secondo me non puoi utilizzare dei integrati pilotaggio per alimentatori switching. Sono concepiti per altre finalitá e devi fare tutta la regolazione in analogico.
Ciao Uwe

sono ventole da pc, non credo che possano essere considerate proprio come motori normali...
Non so poi però...

Dani come sei riuscito a portare il pwm a 32KHz?

dai un'occhiata qui:

é molto chiaro =)

Grazie mille :slight_smile:

Ciao Dani88

non avevo letto benne:

Sto provando a controllare dei motori brushless (ventola)

Allora certo che fischiano.

I motori DC delle ventole sono motori "bifasici" o in pochi casi di ventole piú grandi "trifasici".

Se ne apri una vedrai:
Hanno sul rotore un magnete ad anello normalmente a 4 poli
Hanno sullo statore piú poli con avvolgimenti separati che vengono pilotati elettronicamente per generare un campo magnetico rotante che fa girare il rotore e percui la ventola.
La combinazione del alimentazione PWM e del generare internamente 2 alimentazioni rettangolari genera un interferenza che senti come fischio.

guarda: http://www.elma.it/TESTO/fan/00_fanPC_index.htm

e in particolare:
http://www.elma.it/TESTO/fan/03_fanPC_costruz.htm
http://www.elma.it/TESTO/fan/04_fanPC_mot1.htm particolari della costruzione (meccanica e elettronica)
http://www.elma.it/TESTO/fan/05_fanPC_mot2.htm
http://www.elma.it/TESTO/fan/06_fanPC_mot3.htm
http://www.elma.it/TESTO/fan/07_fanPC_mot4.htm
http://www.elma.it/TESTO/fan/08_fanPC_tacho.htm segnale tachimetrico
http://www.elma.it/TESTO/fan/09_fanPC_termo.htm controllo termico
http://www.elma.it/TESTO/fan/10_fanPC_pwm.htm ventole pilotate in PMW
http://www.elma.it/TESTO/fan/11_fanPC_resum.htm riasunto dei tipi di ventola (normale, con segnale tachimetrico, con regolazione PWM)
Le pagine seguenti parlano dei cuscinetti.

Per risolvere il Tuo problema del fischio:
Comprati una ventola con controllo PWM (quelli a 4 fili) e dai il segnale PWM del Arduino nel entrata PWM della ventole.

Ciao Uwe

no ma ora portandolo a 32KHz non si sente più nulla, essendo fuori dallo spettro udibile :slight_smile:
Mi chiedevo se possa rovinarsi ma non credo...è come accendere/spegnere

Dipende da che ponte h stai usando :un L298 arriva a frequnze max di 40Khz ,per altri modelli va visto il datasheet.
Aumentare troppo la freq puo' portare al corto dei rami del ponte che non riescono a reggere la velocità di commutazione.

non uso ponti H :slight_smile:
Sono ventole da pc...parlando con altra gente su un forum di elettronica mi hanno consigliato di tenere la frequenza bassa, sui 30Hz, dato che anche gli integrati destinati a tale scopo (fan controller) la mantengono all'incirca su quella freq li...
Ho quindi impostato il prescaler a 5, circa 31Hz

non uso ponti H

Hai comunque un buffer, cioè un transistor o mosfet che pilota il carico. Tra l'uscita del transistor ed il motore allora puoi mettere un filtro LC, cioè induttanza serie e capacità parallelo. Però si deve calcolare la frequenza di passa basso. Se con frequenza così bassa non riscontri problemi allora niente filtro al massimo una capacità da 100nF in parallelo al carico (cioè su i fili della ventola) solo per ripulire le armoniche generate dall'onda quadra.

Ok ciao.