Perché alcuni pin hanno segni `~` accanto ai loro numeri?


32

Stavo guardando il mio Arduino Uno e ho notato che il simbolo da pin digitali 11, 10, 9, 6, 5, e 3. Cosa significano questi? Ciò influisce sul modo in cui funziona? Non posso usare questi pin in determinate situazioni?


19
Il simbolo della tilde significa "approssimativamente". Come in "questo è approssimativamente il pin 11". Durante il processo mfg i pin possono spostarsi leggermente. Raramente il pin 11 sarà esattamente 11. Di solito è un po 'più o un po' meno di 11. I pin che hanno una maggiore tendenza a spostarsi saranno indicati con il simbolo ~. :)

6
@AnnonomusPerson David è faceto, il che non è immediatamente ovvio se non hai familiarità con i pinout e simili.
Shamtam,

7
@Shamtam: O se non hai familiarità con David :)
Chris Laplante,

Risposte:


31

Rilassare. Non ti preoccupare. Questi pin sono chiamati PWMe sono uguali agli altri pin, tranne per il fatto che hanno un "bonus aggiunto".


Alcuni usi dal sito Web di Arduino :

  • Dimmerare un LED
  • Simula un'uscita analogica. L'uscita continua a passare digitalmente da 0 V a 5 V. Tuttavia, filtro passa basso (condensatore e resistenza) per simulare tensioni analogiche.
  • Generazione di segnali audio.
  • Fornire controllo di velocità variabile per i motori.
  • Generazione di un segnale modulato, ad esempio per pilotare un LED a infrarossi per un telecomando.

Come funziona:

I pin PWM sono controllati da timer on-chip che attivano / disattivano i pin automaticamente a una velocità di circa 490Hz. La "Pulse Width Modulation" (PWM) indica per quanto tempo il pin rimane acceso o spento per un singolo ciclo di quella frequenza. Questo può oscurare un LED dando l'illusione che sia a metà della luminosità di prima, dove sta davvero lampeggiando molto rapidamente. Immagine di diversi cicli di lavoro.

Quando è presente un ciclo di funzionamento del 25%, è attivo un quarto del tempo. Se lo utilizzassi per un LED, sembrerebbe circa 1/4 come luminoso [dare o prendere]. (Nota: come alcune persone hanno sottolineato, questo non è veramente proporzionale, ma lasciamolo così per semplicità. ES: il 25% non è sempre 1/4 della luminosità.)

(Se sei veramente esperto di elettricità, probabilmente potresti aggiungere un condensatore per renderlo anche un'uscita analogica.)


Come utilizzare questi pin per l'output:

Innanzitutto, è necessario definire il pin come output. Quindi, lo usi analogWrite(ledPin, 128); per avviarlo. Il ledPinè il perno PWM che si desidera avviare PWM e 128dovrebbe essere sostituito con un numero compreso tra 0e 255; 0: 0% duty cycle(Trasforma il perno completamente spento) e 255: 100% duty cycle. (accende il perno completamente)

Fonte: http://www.arduino-tutorials.com/arduino-pwm/


Perché non posso semplicemente accendere e spegnere la luce molto velocemente nel mio codice ?:

Tecnicamente, tuttavia, ci sono alcuni problemi:

  • Potrebbe non essere preciso come usare i circuiti cablati con Arduino
  • È più semplice digitare istruzioni invece di avere molte istruzioni "if"

Non farà davvero molta differenza se l'unico scopo dell'Arduino è generare segnali PWM. Tuttavia, se si inseriscono ritardi più lunghi di 50 MS nel loop principale, si rovinano i tempi. Con l'approccio software si vorrebbe eliminare qualsiasi funzione di "ritardo" poiché Arduino funziona solo su un thread (può fare solo una cosa alla volta). Se sai cosa stai facendo, non farà molta differenza attenuare la luce, ma se hai un pin extra con PWM, stai solo perdendo tempo con un approccio software.


Come altri hanno sottolineato:

Hai ancora bisogno di una resistenza per i tuoi circuiti per limitare la corrente e la tensione. Non puoi saltare questo.


1
Non ho idea di cosa intendi per "potenza di elaborazione" (o qualunque cosa si supponga significhi quella frase). PWM funziona perché è attivato dai timer che sono in esecuzione indipendentemente dal codice in esecuzione.
baldengineer,

@ JamesC4S Voglio dire che rende il codice generale più lento se aggiungi il ritardo e va "Attivo" e "Disattivo". Il processore può fare solo tante cose al secondo prima di surriscaldarsi, quindi controlla quanto velocemente va.
Pinguino anonimo

@AnnonomusPerson Devi essere molto più chiaro nelle risposte che stai dando. Non riesco ancora a vedere cosa ha a che fare la tua spiegazione con la "potenza di elaborazione". Ad esempio, è possibile scrivere routine PWM che non utilizzano delay (), ad esempio usando millis (), il che avrebbe un impatto minimo sulla velocità di esecuzione per il resto del codice.
baldengineer,

1
@AnnonomusPerson: Direi che ci sono due modi per implementare PWM nel codice: o si può fare in modo che il processore esegua il PWM in un ciclo che non fa nient'altro se non forse decidere quando uscire, oppure si può avere un interruzione timer-tick eseguire il PWM. Nella prima situazione, il processore non sarà in grado di fare nient'altro mentre sta accadendo il PWM; in quest'ultimo caso, ci saranno limiti all'accuratezza e alla precisione dei tempi PWM. I circuiti PWM hardware consentono a un chip di generare forme d'onda PWM pulite che sono accurate all'interno di una fazione di un microsecondo mentre fanno altre cose.
supercat

Si noti che grazie a come funziona la visione, un LED con 1/4 DC (o qualsiasi altro rapporto) non apparirà necessariamente la frazione corrispondente di piena luminosità.
Ignacio Vazquez-Abrams,

7

Un malinteso comune sui pin PWM è che quando si utilizza PWM, non è necessario utilizzare resistori di limitazione della corrente (con LED, ad esempio).

Questo non è vero. I pin PWM dovrebbero essere pensati come pin digitali, che si accendono e si spengono automaticamente. Ciò significa che vanno alla stessa ALTA tensione di tutti gli altri pin.

Quando si utilizzano LED con PWM, è necessario utilizzare ancora resistori di limitazione della corrente. Quando si utilizzano motori con PWM, è consigliabile (quasi sempre) utilizzare un transistor.


2
@AnnonomusPerson No, non è corretto. Avresti ancora bisogno di limitatori di corrente per i LED anche se avessi uscite analogiche vere. I LED richiedono fonti di corrente costanti, non fonti di tensione costanti.
baldengineer

3
È possibile ottenere LED con un resistore di limitazione della corrente incorporato. Sono rimasto così deluso quando ho chiesto un LED a Maplin e un resistore adatto per farlo funzionare a 12V quando mi hanno detto che ne avevano uno che funzionava direttamente a 12V. Heh, aspetta solo che provino a impacchettare un carico di transistor in un pacchetto per creare un gate AND o qualcosa del genere.
Andrew Morton,
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.