Pagina 1 di 1

Segnale PWM Arduino

MessaggioInviato: 9 mar 2015, 18:42
da jmonty
Salve,

Ho comprato arduino Mega 2560 e la Pololu Dual MC33926 Motor Driver Shield che permette di azionare 2 motori in corrente continua. La libreria che permette di gestire questo shield è la seguente:
Arduino library for the Pololu Dual MC33926 Motor Driver Shield. L'unico problema e che essa nel caso di arduino mega non permette di impostare una frequenza PWM a 20khz (quella ottimale più performante) ma una frequenza standard sotto i 1000 Hz. Ho trovato il seguente link: http://forum.pololu.com/viewtopic.php?f=15&t=6139 che permette di utilizzare un'altra tipologia di scheda con una frequenza di 20 kHz. E' possibile adattarla alla mia nel senso delle impostazioni del segnale PWM?

Spero che mi sono spiegato bene, e grazie per la pazienza e la professionalità con cui rispondete alle mie domande e dubbi.

Re: Segnale PWM Arduino

MessaggioInviato: 9 mar 2015, 18:53
da spud
Se il problema è solo variare la frequenza del PWM c'è una funzioncina che ti permette di farlo abbastanza facilmente, la trovi qui. Io l'ho provata e funziona.

Re: Segnale PWM Arduino

MessaggioInviato: 9 mar 2015, 19:00
da jmonty
Ciao Grazie per la risposta!

Comunque con questa funzione non arrivo alla frequenza di 20 kHz! Hai qualche altra soluzione? anche variando il dutycycle non più da 0 a 255 ma da 0 a 400 come nella libreria modificata?

Re: Segnale PWM Arduino

MessaggioInviato: 9 mar 2015, 19:45
da aldofad
Foto Utentespud ti ha risposto correttamente. Adopero da molto proprio quel metodo. Se non trovi la frequenza desiderata allora non ti resta che cambiare scheda, dato che per essere una Pololu hai preso un modello piuttosto scarsino.

Re: Segnale PWM Arduino

MessaggioInviato: 9 mar 2015, 19:55
da jmonty
Ma perché sulla DualVNH5019MotorShieldMega è possibile spingersi ad una frequenza di 20 kHz?

Re: Segnale PWM Arduino

MessaggioInviato: 9 mar 2015, 20:12
da aldofad
Non capisco il problema, ti è stata linkata una funzione con la quale arrivi a 33 kHz di frequenza PWM, cosa non ti è chiaro?
Quella funzione l'ho adoperata io stesso per pilotare un motore in PWM oltre la frequenza sonora ed evitando il classico fastidioso rumore. E' evidente che puoi fermarti a 20 kHz.

Re: Segnale PWM Arduino

MessaggioInviato: 9 mar 2015, 20:23
da jmonty
La frequenza massima dell'azionamento è di 20 kHz.

Re: Segnale PWM Arduino

MessaggioInviato: 11 mar 2015, 15:22
da jmonty
Ho trovato questo codice che permette di imporre un segnale PWM a 20 kHz:
Codice: Seleziona tutto
  #if defined(__AVR_ATmega168__)|| defined(__AVR_ATmega328P__)
  // Timer 1 configuration
  // prescaler: clockI/O / 1
  // outputs enabled
  // phase-correct PWM
  // top of 400
  //
  // PWM frequency calculation
  // 16MHz / 1 (prescaler) / 2 (phase-correct) / 400 (top) = 20kHz
  TCCR1A = 0b10100000;
  TCCR1B = 0b00010001;
  ICR1 = 400;
  #endif

  #if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  // Mega board specific stuff here - assumes assigning timer3, using pins 3 & 5
  TCCR1A = 0b10100000; // Mega pin 5 // 11
  TCCR1B = 0b00010001; // Mega pin 3 // 12
  ICR1 = 400;
  #endif


Impostando i registri OCR1A e OCR1B si può variare il dutycycle

Re: Segnale PWM Arduino

MessaggioInviato: 11 mar 2015, 15:35
da aldofad
Complimenti ma verificalo con l'oscilloscopio

Re: Segnale PWM Arduino

MessaggioInviato: 11 mar 2015, 16:12
da jmonty
Lo farò a breve!