Domanda: come generare tre frequenze diverse con Arduino?

Ciao a tutti, dovrei pilotare dei passo passo a tre diverse velocità (fissate) non molto diverse tra loro.
A seconda delle esigenze commuterei la velocità desiderata.
Per farlo avrei bisogno di generare tre frequenze che si avvicinino il più possibile alle seguenti:

408,0 Hz
406,9 Hz
393,1 Hz

e qui scarseggio in conoscenze...
Con il Timer1,Timer2, ecc. sono arrugginito.
Potrebbe andar bene anche l'ausilio di qualche scheda esterna che fornisca il clock, purché sia abbastanza stabile.
Potete darmi qualche consiglio?
Grazie
Ezio

Nessun aiuto?
Dove posso reperire delle spiegazioni esausitve (possibilmente in italiano) sul timer 1?
Grazie

Io conosco questa pagina ma in inglese:
http://letsmakerobots.com/node/28278

Se ne è parlato di recente, guarda qui

http://forum.arduino.cc/index.php?topic=306912.0

Guarda le risposte di astrobeed, la risposta che avevo dato io era poco adeguata per quella richiesta e lo è a maggior ragione nel tuo caso, per la precisione che cerchi.
Può essere un buon punto di inizio.

Se non ti interessa variare il duty cycle, potresti usare l'istruzione tone() che usa il timer 2 generando un onda quadra, anche se il timer 2 essendo ad 8 bit non è molto preciso.

tone(10, 407); // genera un'onda quadra a 407 Hz sul pin 10

http://arduino.cc/en/Reference/Tone

In alternativa, puoi usare il timer 1 a 16 bit, più preciso.

Grazie mille per le risposte. :wink:
Non mi interessa variare il duty cycle.
Con 8 bit che risoluzione potrei avere? Attualmente possiedo Arduino Mega, esistono altre schede Arduino con il timer 2 a maggiore risoluzione?
Grazie ancora,
Ezio

Nel link che ti ho indicato si parla anche della risoluzione.
Altrimenti usa qualche altro circuito per generarti le tre frequenze.

Certamente non riuscirai con il Tone() ad avere una frequenza con decimali, poiché accetta solo interi.

Non posso essere più preciso poiché non conosco l'algoritmo che usa questa funzione: la soluzione più semplice è provare.

Con la MEGA hai a disposizione ben 6 timer, lo 0, 1 ed 2 come nella UNO ed in più il 3, 4 e 5 che sono a 16 bit.

ziooetzi:
Ciao a tutti, dovrei pilotare dei passo passo a tre diverse velocità (fissate) non molto diverse tra loro.
A seconda delle esigenze commuterei la velocità desiderata.
Per farlo avrei bisogno di generare tre frequenze che si avvicinino il più possibile alle seguenti:

408,0 Hz
406,9 Hz
393,1 Hz

e qui scarseggio in conoscenze...
Con il Timer1,Timer2, ecc. sono arrugginito.
Potrebbe andar bene anche l'ausilio di qualche scheda esterna che fornisca il clock, purché sia abbastanza stabile.
Potete darmi qualche consiglio?
Grazie
Ezio

Può avere un senso la domanda su come generare 3 diverse frequenze con arduino, ma non vedo alcun senso su come pilotare dei motori passo passo con delle frequenze cosi precise se non sono riferite a nulla.
I motori passo passo si pilotano con altri criteri, bisogna sapere quanti impulsi x giro, la velocità massima, i gradi di rotazione x impulso ecc, riformula meglio la domanda per favore.

Infatti la domanda è riferita alla generazione delle tre frequenze. :wink:
I motori passo passo sono già montati sulle componenti meccaniche e sono già dotati di driver. Mi servono solo le tre diverse frequenze di clock da fornire ai driver (una alla volta, a seconda delle necessità).

Un ultima domanda: in Arduino Mega è sempre il timer 0 che sarebbe meglio non modificare per evitare di cambiare i valori della funzione millis()?

Grazie e Buone feste
Ezio

Sì, il timer 0 è utilizzato dalla funzione millis().
Se usi la funzione tone() viene utilizzato il timer 2.

Grazie, farò delle prove e vi farò sapere.
A presto
Ezio