Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Segnale PWM Arduino

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Segnale PWM Arduino

Messaggioda Foto Utentejmonty » 9 mar 2015, 18:42

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.
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

0
voti

[2] Re: Segnale PWM Arduino

Messaggioda Foto Utentespud » 9 mar 2015, 18:53

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

Behind every great man is a woman rolling her eyes.
Avatar utente
Foto Utentespud
3.767 3 10 12
free expert
 
Messaggi: 1601
Iscritto il: 1 feb 2012, 14:26
Località: Udine

0
voti

[3] Re: Segnale PWM Arduino

Messaggioda Foto Utentejmonty » 9 mar 2015, 19:00

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?
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

0
voti

[4] Re: Segnale PWM Arduino

Messaggioda Foto Utentealdofad » 9 mar 2015, 19:45

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.
Avatar utente
Foto Utentealdofad
853 4 5
Sostenitore
Sostenitore
 
Messaggi: 689
Iscritto il: 21 gen 2014, 1:07
Località: Treviso

0
voti

[5] Re: Segnale PWM Arduino

Messaggioda Foto Utentejmonty » 9 mar 2015, 19:55

Ma perché sulla DualVNH5019MotorShieldMega è possibile spingersi ad una frequenza di 20 kHz?
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

0
voti

[6] Re: Segnale PWM Arduino

Messaggioda Foto Utentealdofad » 9 mar 2015, 20:12

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.
Avatar utente
Foto Utentealdofad
853 4 5
Sostenitore
Sostenitore
 
Messaggi: 689
Iscritto il: 21 gen 2014, 1:07
Località: Treviso

0
voti

[7] Re: Segnale PWM Arduino

Messaggioda Foto Utentejmonty » 9 mar 2015, 20:23

La frequenza massima dell'azionamento è di 20 kHz.
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

0
voti

[8] Re: Segnale PWM Arduino

Messaggioda Foto Utentejmonty » 11 mar 2015, 15:22

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
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

0
voti

[9] Re: Segnale PWM Arduino

Messaggioda Foto Utentealdofad » 11 mar 2015, 15:35

Complimenti ma verificalo con l'oscilloscopio
Avatar utente
Foto Utentealdofad
853 4 5
Sostenitore
Sostenitore
 
Messaggi: 689
Iscritto il: 21 gen 2014, 1:07
Località: Treviso

0
voti

[10] Re: Segnale PWM Arduino

Messaggioda Foto Utentejmonty » 11 mar 2015, 16:12

Lo farò a breve!
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58


Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Google [Bot] e 2 ospiti