Come può Arduino Uno supportare fino a 12 servi se ha solo 6 pin PWM digitali?


8

Secondo questo :

La libreria Servo supporta fino a 12 motori sulla maggior parte delle schede Arduino e 48 su Arduino Mega. Su schede diverse da Mega, l'uso della libreria disabilita la funzionalità analogWrite () (PWM) sui pin 9 e 10, indipendentemente dal fatto che sia presente un servo su tali pin. Su Mega, è possibile utilizzare fino a 12 servi senza interferire con la funzionalità PWM; l'uso di motori da 12 a 23 disabiliterà PWM sui pin 11 e 12.

Tuttavia, secondo questo :

Pin I / O digitali 14 (di cui 6 forniscono uscita PWM)

Quindi come può Uno controllare più di 6 servi se ha solo 6 pin I / O digitali in grado di fornire uscita PWM?

Risposte:


4

Anche se non ho guardato la fonte da solo, in questi tipi di situazioni di solito usano il timer di interruzione 1 , che in modalità PWM sarebbe stato associato ai pin 9 e 10. Questo spiegherebbe perché non è possibile utilizzare la modulazione della larghezza di impulso su quei perni. In effetti, puoi utilizzare uno qualsiasi dei tre timer per PWM su qualsiasi pin digitale, anche se non è buono come le opzioni PWM integrate .


(fonte: bansky.net )

( Fonte )

L'immagine sopra descrive accuratamente come i segnali vengono inviati al servomotore. Tale forma d'onda è simile a un PWM standard. La libreria di servo può tradurre un grado in una forma d'onda che l'IC del servo sarà in grado di utilizzare per regolare la posizione del motore con il suo motore e potenziometro.


1
Quindi simula essenzialmente PWM? Qual è il punto dei pin digitali con i canali PWM allora?
user1265

@ user1265 Più o meno ... sta usando i timer che guidano PWM. Per quanto riguarda il punto di PWM, IIRC l'ATmega328 ha circuiti per rendere PWM più efficiente.
Pinguino anonimo il

2
@ user1265, l'hardware PWM è "gratuito", cioè non influisce affatto sulle prestazioni del resto del programma (lega solo un timer, o almeno parte di esso). La manutenzione delle routine di interruzione per PWM emulato è relativamente costosa. Tuttavia, in questo caso, la frequenza PWM è solo di circa 50Hz, quindi questo non è eccessivamente tragico (la frequenza PWM Arduino standard è 31 / 62kHz, fare PWM per es. Applicazioni di illuminazione a 50Hz sarebbe probabilmente piuttosto sfarfallio).
microtherion

What is the point of the digital pins with PWM channels then?- è possibile ottenere frequenze molto più elevate (fino a 8 MHz) e cicli di lavoro molto precisi. Questo non è possibile quando fai affidamento su un interrupt per farlo per te.
Nick Gammon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.