Pwm a frequenza elevata

Devo pilotare una ventola brushless dotata di un proprio controller, un prodotto professionale.
Il controller richiede un segnale PWM ad una frequenza di circa 25 kHz, e infatti col PWM standard di Arduino viene gestito male.
Tra i miei appunti ho trovato delle semplici righe con le quali ottengo 15 kHz sul pin 9 (quello che serve a me, e non posso cambiarlo), ma onestamente non ho idea di come modificarle per arrivare a 25 kHz; ho cercato un po' in rete una guida passo passo, ma trovo solo esempi dai quali non è semplice ricavare la teoria di base. Potete darmi un link fatto bene o magari un suggerimento per modificare questo codice?

#include <avr/interrupt.h>

void setup() {

TCCR1A = B11110010;
TCCR1B = B00011001;
ICR1 = 1023 ; // 10 bit resolution
pinMode (9, OUTPUT);
}

void loop()
{
      OCR1A = 100; //questo valore modifica il D.C.
}

Ho risolto con:
TCCR1A = B10110010;
TCCR1B = B00011001;
ICR1 = 640;

Le prime due righe mi hanno permesso di ottenere il DC più stretto con valori più bassi (prima funzionava all'inverso); la terza in pratica è una sorta di divisore, con i precedenti 1023 avevo 15kHz, ho testato 320 ed ho ottenuto 50kHz.
Questo perché ho trovato un post simile in cui si parlava proprio di 25 kHz, mi piacerebbe capirci qualcosa a questo punto, quindi ben venga un buon tutorial se esiste. Grazie.

Michele, ci sono decine di "timer calculator" per Arduino on-line ... perché non li usi?

Scaricati QUESTO che permette anche i calcoli del PWM :wink:

Guglielmo

1 Like

Grazie Guglielmo, sempre prezioso! L'ho scaricato, in questi giorni ci gioco un po'

C'è anche un video su YouTube :wink:

Guglielmo

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.