C'è un limite a quanta corrente può affondare un pin?


13

Ho sperimentato una matrice LED 8x8 controllata da un Arduino Uno. Come ritengo tipico, la matrice utilizza un anodo comune per ogni riga e un catodo comune per ogni colonna.

Al momento, ho tutti i pin della matrice collegati direttamente ai pin IO su Uno, e non ho avuto problemi ad accendere i LED uno a uno. Passare attraverso l'intera matrice in questo modo rende gli aggiornamenti un po 'lenti, il che significa che i LED non sono luminosi come vorrei.

Per quanto ne so, non riesco a illuminare in sicurezza un'intera fila in una volta, perché un singolo pin su Uno non è in grado di fornire abbastanza corrente per pilotare 8 LED separati contemporaneamente (che richiedono almeno 10 mA ciascuno per essere abbastanza luminoso).

Mi è venuto in mente che il contrario potrebbe essere più sicuro. Se accendo un'intera colonna alla volta, ogni pin deve solo generare abbastanza corrente per un LED, il che non dovrebbe essere un problema. Tuttavia, si basa su un pin che potenzialmente affonda la corrente da tutti e 8, per un totale di almeno 80 mA.

È possibile o ho intenzione di friggere la mia tavola?


Quale display esatto stai usando (foglio dati) e stai usando resistori serie con esso? Forse visualizzi l'ora per friggere anziché il tuo Arduino.
jippie,

Non esiste un numero di parte, quindi non ho il foglio dati esatto. Ho ipotizzato che ogni LED abbia una tensione diretta di 2 V e al momento sto usando conservatori resistori serie 390 ohm (durante il test). Ciò significa che li sto guidando a circa 8 mA ciascuno, penso.
Peter Bloomfield,

dovrebbe andare bene.
jippie,

Potresti entrare in qualche dettaglio in più su quello che stai facendo, per favore. Il motivo per cui lo sto chiedendo è perché voglio fare la stessa cosa e sono un principiante. Sono RTFMing e la tua domanda è stata il risultato più alto per la mia ricerca. Sono jeffsilverm@gm4il.c0m. grazie.
user1928764

Risposte:


13

ho intenzione di friggere la mia tavola?

Risultato abbastanza probabile. Ecco perché:

Arduino Uno utilizza il microcontrollore atMEGA328, che ha una valutazione massima assoluta di 40 mA sorgente o dissipatore per GPIO. Inoltre, la corrente totale attraverso le guide di alimentazione o di terra (ovvero il totale di tutti gli OP correnti vuole che i pin GPIO affondino, o la sorgente) è valutata ad un massimo di 150 200 mA.

Realisticamente, i grafici attuali nel foglio dati atMEGA328 non arrivano nemmeno a 40 mA, quindi è più sicuro limitare la corrente a forse 20 mA totali per GPIO.

In altre parole, indipendentemente dal fatto che un GPIO sia utilizzato come sorgente o sink, i limiti rimangono piuttosto bassi e, in pratica, dovrebbero essere mantenuti molto più bassi dei valori massimi assoluti. Anche al di sotto del massimo assoluto, far funzionare un microcontrollore a una temperatura troppo elevata riduce la sua aspettativa di vita.

Soluzione :

Utilizzare BJT, MOSFET o alcuni driver IC come ULN2003 per guidare effettivamente la corrente attraverso i LED.


2
Dove hai trovato il massimo 150mA. per il pacchetto? Ho un 200mA in valori nominali massimi assoluti .
jippie,

@jippie I goofed :-)
Anindo Ghosh,

9

Ho intenzione di rubare la mia risposta da quando ho risposto a questa domanda sull'ultimo tentativo di arduino SE.


Questo è un po 'complesso. Fondamentalmente, ci sono una serie di fattori limitanti:

Le linee IO del microcontrollore (cioè i pin analogici e digitali) hanno sia un limite di corrente aggregato (ad es. Totale) sia un limite per pin:

inserisci qui la descrizione dell'immagine
Dal foglio dati ATmega328P .

Tuttavia, a seconda di come definisci i "Pin" di Arduino, questa non è l'intera storia.

Il pin 5V dell'arduino non è collegato tramite il microcontrollore . Come tale, può fornire molta più energia. Quando si alimenta Arduino da USB, l'interfaccia USB limita il consumo totale di energia a 500 mA. Questo è condiviso con i dispositivi sulla scheda Arduino, quindi la potenza disponibile sarà leggermente inferiore.
Quando si utilizza un alimentatore esterno, attraverso il connettore di alimentazione a barilotto, si è limitati dal regolatore 5V locale, che è valutato per un massimo di 1 Amp . Tuttavia, questo ha anche un limite termico , il che significa che quando si assorbe energia, il regolatore si surriscalda. Quando si surriscalda, si spegne temporaneamente.

L'uscita regolata a 3,3 V è in grado di fornire 150 mA max, che è il limite del regolatore a 3,3 V.


In sintesi

  • Il massimo assoluto per ogni singolo pin IO è 40 mA ( questo è il massimo . In realtà non si dovrebbe mai estrarre completamente 40 mA da un pin. Fondamentalmente, è la soglia alla quale Atmel non può più garantire che il chip non venga danneggiato. Devi sempre assicurarti di essere al di sotto di questo limite attuale. )
  • La corrente totale di tutti i pin IO è di 200 mA max
  • Il pin di uscita a 5 V è valido per ~ 400 mA su USB, ~ 900 mA quando si utilizza un adattatore di alimentazione esterno
    • 900 mA è per un adattatore che fornisce ~ 7V. All'aumentare della tensione dell'adattatore, aumenta anche la quantità di calore che il regolatore deve gestire, quindi la corrente massima diminuirà all'aumentare della tensione. Questo si chiama limitazione termica
  • L'uscita 3.3V è in grado di fornire 150 mA .
    • Nota - Ogni potenza assorbita dalla guida 3.3V deve passare attraverso la rotaia 5V . Pertanto, se si dispone di un dispositivo da 100 mA sull'uscita 3,3 V, è necessario conteggiarlo anche rispetto alla corrente totale 5

Nota: questo non si applica ad Arduino Due e probabilmente ci sono alcune differenze per Arduino Mega. È probabilmente vero per qualsiasi Arduino basato sul microcontrollore ATmega328.

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.