Domanda:
Affondare 80 mA con un microcontrollore senza alcun circuito di pilotaggio?
Flood Gravemind
2016-02-17 04:33:18 UTC
view on stackexchange narkive permalink

Mi chiedevo dal momento che un microcontrollore può assorbire 20 mA su ogni pin, se posso ridurre le porte a 4 pin dal software e collegare semplicemente il lato positivo del carico a Vcc, questa è una metodologia affidabile per guidare carichi più grandi ? L'unica cosa di cui preoccuparsi e per cui pregare è che il ciclo della macchina sia abbastanza veloce da gestire le fluttuazioni dell'impostazione di tutti i perni allo stesso tempo? Sono sulla strada giusta?

In molti ambienti, la M maiuscola sta per Mega ...
Il chip avrà anche una corrente di terra massima totale.Non dovresti superarlo!
Le informazioni sulla scheda tecnica sono generalmente considerate superiori alla preghiera.
@Daniel su un chip arduino max è 200ma.
Ciò che è ancora meglio delle schede tecniche o della preghiera è il test.Usa un misuratore di corrente e carica i pin sia alti che bassi e vedi se fa caldo.Provalo per 20 minuti a tratta.Se diventa caldo al tatto, hai raggiunto il limite.Altrimenti, fintanto che la cosa non si surriscalda dovrebbe funzionare bene.Calcola anche i numeri di Fibonacci in un ciclo ogni 1 ms.
@squarewav Prima di provare ho avuto una possibilità a meno che non voglia visitare Amazon / ebay e aspettare 2 giorni per ricominciare a lavorare, grazie per aver capito il mio punto.
Beh, hai bisogno di un qualche tipo di carico (ad esempio, 5V su 250R è 20 mA).
*** Com'è fuori tema?Riguarda specificamente il design dell'elettronica ***
@squarewav se il tuo MCU si riscalda al tatto per la corrente o l'affondamento di corrente su un pin, hai superato il limite ore fa.In OP: la risposta semplice è: no, non è possibile combinare i pin in parallelo senza resistenze di protezione, perché non si conoscono i processi interni e le dimensioni dei transistor su tutti i pin.Potrebbero anche esserci differenze tra i pin a causa delle capacità combinate.Tutto ciò può funzionare liberamente quando si verificano anche piccoli frammenti di calore o squilibrio di corrente che causano trucioli seriamente rotti.
Non ricordo se è Atmel o TI che ha una piccola nota sul parallelismo GPIO per questo scopo esatto, principalmente a causa della caduta di tensione da una trazione di corrente troppo alta su un singolo pin.Finché la corrente totale attraverso vcc / gnd pin rientra nelle specifiche e si impostano sempre i pin nella stessa istruzione, andrebbe bene.Un array Darlington come l'ULN2003A menziona specificamente il parallelismo per una maggiore capacità per canale.
Non siamo qui per leggervi la scheda tecnica.
Sei risposte:
Ecnerwal
2016-02-17 04:55:15 UTC
view on stackexchange narkive permalink

Se non acquistare un "modulo" è il tuo problema, considera di spendere 6 centesimi (o meno) per un transistor che affonderà felicemente 200 o 500 mA e occuperà solo un pin per il suo ingresso di controllo di base. Penso che 6 centesimi sia quello che ho pagato per l'ultimo lotto di 2N3904 / 6 e 2N4401 / 2 in lotti di 100. Non ha molto senso comprare meno di quello, ma se ti piace pagare 4 volte tanto per uno alla volta, sii mio ospite.

Questi sono molto lontani dall'essere componenti all'avanguardia, ma svolgono bene un particolare tipo di lavoro e sono piuttosto economici.

Il problema probabilmente non è il costo.Il problema potrebbe essere più simile alla semplicità, allo spazio e al non utilizzo di cose che non sono realmente necessarie.Avresti anche bisogno di un resistore di base per limitare la corrente nella base.Anche se fosse un mosfet, penso che vorresti comunque un resistore di gate.Se comprendi davvero bene i requisiti di alimentazione, penso che ci siano molti casi in cui puoi fare a meno dei driver fuoribordo.
Passerby
2016-02-20 01:14:13 UTC
view on stackexchange narkive permalink

Dovrebbe funzionare bene, ma devi tenere a mente alcune cose.

  1. Max VCC o Max GND current. C'è una corrente massima che il microcontrollore può supportare attraverso il suo pin VCC o GND.
  2. Max Port current. Anche una singola porta ha una corrente massima.
  3. Pin ESR. Un'uscita GPIO avrà una caduta (o un aumento) di tensione in base alla quantità di corrente che la attraversa. In genere, la corrente massima consigliata attraverso il pin è per una determinata tensione di uscita rispetto a VCC o GND.

enter image description here
Es: la famiglia MSP430G2xxx La tensione in uscita bassa aumenterà di 1 Volt da Gnd, a ~ 30 mA.

Se il tuo carico rientra in queste specifiche, quale dovrebbe essere il tuo esempio di carico da 80 mA per i microcontrollori ATMega, allora l'altra preoccupazione è prevenire shorts.

Devi assicurarti di cambiare l'intera porta in una volta , invece di un pin alla volta. Se modifichi solo un pin alla volta, da Basso ad Alto o da Alto a Basso, puoi creare un cortocircuito tra i pin, soffiandone uno o più. A seconda dello stato predefinito dei pin quando all'avvio, prima che il codice possa impostarli, ciò potrebbe non essere evitabile senza parti aggiuntive. Prova anche a mantenerlo isolato su una singola porta, poiché sarà difficile cambiare più porte contemporaneamente e le differenze di tensione tra le porte potrebbero danneggiare.

In genere, avere resistenze in serie sui pin aiuterà . Anche questi resistori finiranno in parallelo con ciascun pin, il che aiuta a regolare la corrente tra di loro.

Supponendo che tu voglia il carico di 80 mA allo stesso modo su 4 pin, allora sono 4 parti extra, come protezione. A quel punto, potresti anche usare una singola coppia transistor + resistore.

Con un'attenta codifica, non dovresti averne bisogno e il gpio parallelo funzionerà bene come dissipatore di corrente.

Le uscite Open Collector, che possono solo abbassarsi, non hanno problemi con i cortocircuiti, ma dovrebbero comunque essere cambiate allo stesso tempo. Non cambiarli contemporaneamente può portare alla corrente anche se solo una singola uscita, il che causerà problemi se non è presente un limitatore di corrente. Un tipico microcontrollore GPIO non è Open Collector, ma puoi imitarlo commutando solo tra le modalità di input a bassa impedenza e ad alta impedenza.

Se l'OP sta solo assorbendo corrente, come suggerisce la domanda, e i pin sono configurati come open-drain, i pin non andranno effettivamente in corto, anche se non sono stati tutti commutati contemporaneamente.Ma i pin dovrebbero essere commutati allo stesso tempo per equalizzare il carico su tutti loro (a meno che non siano tutti sulla stessa porta).
@tcrosley ma la maggior parte dei mcu gpio sono push pull, non open drain.Ma aggiungerò anche questo.
@Passerby: la maggior parte degli MCU offre una configurazione di uscita a drain aperto e anche quelli che non lo sono possono avere lo stesso effetto ottenuto utilizzando l'abilitazione / direzione dell'uscita invece del registro dei dati del pin.Effettivamente si scrive il registro dati pin su un valore basso mentre è un input, e * quindi * lo si imposta come output.
@ChrisStratton sì, è per questo che ho detto ** imitalo **.Ma lo fanno davvero?I 3 MCU più comuni che conosco sono Atmel, TI e Microchip e non ho visto alcun output open collector su di essi.
Quelli sono marchi, non MCU.
Sì, marchi con più linee mcu e praticamente tutti con la stessa configurazione gpio standard ... sai cosa intendevo.
Voltage Spike
2016-02-17 04:52:26 UTC
view on stackexchange narkive permalink

Non collegare mai una porta digitale a terra se è in push pull o Vcc o a terra se è aperta. Controlla la scheda tecnica, penso che la raspa pi non abbia una scheda tecnica ma le informazioni sono là fuori. L'affondamento è diverso dal sourcing. Se si dispone di un'uscita di scarico aperta, a volte è possibile assorbire più corrente di un push pull. Potresti riuscire a cavartela con un po 'di più con una configurazione a drain aperto in parallelo, perché non stai dissipando molta potenza nel chip ma sei comunque limitato dalla larghezza del filo, se vai oltre questo si surriscalda e bruciare.

Con il push pull questa è generalmente una cattiva idea, puoi mettere in parallelo i pin sul tuo processore per darti più corrente, ma non ottieni più corrente attraverso Vcc Io o I / O pin di alimentazione di tensione. In alcuni casi i dispositivi digitali ti daranno una valutazione corrente sul Vccio e sul pin stesso. Non superare queste valutazioni.

Scott Seidman
2016-02-19 22:50:34 UTC
view on stackexchange narkive permalink

Per me, nonostante l'idea che possa funzionare se tutto va bene, è davvero una cattiva idea perché sarebbe così facile fumare se hai sbagliato una riga di codice o se è successo qualcosa di brutto durante il download del codice. Solo una cattiva pratica

Techydude
2016-02-21 08:47:51 UTC
view on stackexchange narkive permalink

Non indovinare, non pregare, non provare, segui semplicemente la scheda tecnica e trattala come il tuo Dio.

Anche se sono d'accordo che può essere un po 'esoterico, ogni spilla o categoria di pin avrà le correnti massime consigliate (sia di origine & / o affondante). È probabile che ci siano anche limiti massimi per l'intera porta di 8/16/32 pin e / o un source / sink massimo per i pin i / o dell'intero chip. Leggi la scheda tecnica, fai i conti, ottieni la risposta. Solo per complicare ulteriormente le cose, alcuni MCU ti consentono di programmare la quantità di corrente massima di sink / source a cui funzioneranno (ad esempio, i / o su un MCU TI di BeagleBone). Tutte le piattaforme / MCU che menzioni sono diverse.

Esiste il pericolo nel collegare semplicemente diversi pin di i / o insieme e utilizzare la loro capacità combinata di sourcing o sink di corrente, e non è per porta o per chip massimi che ho citato sopra; Gli MCU non sono pensati per essere dispositivi di shunt di potenza, ecco perché sono chiamati microcontrollori. È:

(a) cosa succede a quegli i / o quando il chip è in RESET? La maggior parte andrà in ingresso ad alta impedenza, il che probabilmente è OK, ma a volte un pin avrà uno scopo speciale che potrebbe entrare in gioco durante o immediatamente dopo un reset, nel qual caso, cosa farà il tuo circuito in quel momento, & come molta corrente attraverso quel pin?

(b) la tecnica con cui si impostano / cancellano quei pin di i / o: hai usato solo i pin da 1 porta, nel qual caso puoi scrivere un byte / parola nel registro i / o e impostare / azzerare tutti in una volta, quindi inizieranno tutti a dirigere tutti in una volta - fantastico. Ma se distribuisci il carico tra i pin di più porte i / o (ad es. Porta A & Porta B), allora ciò richiede più scritture di registro, che avviene in sequenza, il che significa che il primo pin / porta che viene scritto conduce per primo e trasporta il totale corrente, quindi non sarà fino a quando non verrà scritta la prossima / ultima porta che la corrente sarà condivisa più o meno equamente tra tutti i pin a cui ti sei collegato. Se stai facendo questo i / o scrivendo un singolo pin alla volta (es. "DidtalWrite (Pin, State)" di Arduino, allora quel primo pin condurrà la corrente COMPLETA fino a quando il secondo pin successivo di & non sarà scritto. Questo è tutto BAD e probabilmente ucciderà l'MCU, se non immediatamente, quindi entro il suo tempo di vita previsto.

La soluzione è semplice. Procurati un transistor NPN o un MOSFET N-ch di specifica adeguata, collega la sua base / gate al pin i / o dell'MCU (e calcolare un resistore in serie appropriato tra i due), collegare il suo collettore / drenaggio a qualunque cosa si desidera accendere / spegnere e collegare il suo emettitore / sorgente a terra.1 pin i / o , 1 transistor, buono per qualsiasi cosa, da decine di mA & oltre. Ci saranno altre domande su SE su come farlo in dettaglio.

Ogni tanto, la scheda tecnica non è Dio.Ti faccio questo esempio: http://www.ti.com/lit/ds/symlink/lm4040-n.pdf.Collegato il pacchetto TO-92 secondo il pinout a pagina 4. Non ha funzionato.Questo perché la scheda tecnica è sbagliata.Non è la vista dall'alto, è la vista dal basso.Una versione precedente della stessa scheda tecnica ha ragione: https://www.adafruit.com/datasheets/lm4040-n.pdf
Nessuno è perfetto, nemmeno i guru dei chip designer, e puoi citare rare eccezioni fino a quando le mucche non tornano a casa, ma rispetto a tutti gli altri suggerimenti (in questa domanda e in particolare è sbagliato rimbalzare su Arduino.SE che è dove ho risposto),la scheda tecnica è Dio rispetto a indovinare, pregare e, peggio ancora, "testarlo" attingendo sempre più corrente finché il chip non inizia a scaldarsi (un caso di "Sai quella linea che non dovresti attraversare? Guarda dietro di te. ")
Non so se puoi cavartela con l'argomento "la scheda tecnica è Dio", alla luce del controesempio di Willis.Dire "la scheda tecnica è il tuo Dio" è come dire "La Honda Civic è senza dubbio il miglior veicolo su quattro ruote che sia mai stato progettato da mani umane" perché stai paragonando quella Civic alle vecchie biciclette arrugginite.Per lo meno metti una nota a piè di pagina che spieghi che le schede tecniche sono in realtà solo accanto a Divinità (proprio accanto a "pulizia")
Questa è un'auto-flagellazione semantica, che ho già affrontato nella mia risposta a Willis.
Peter Green
2016-02-21 20:52:34 UTC
view on stackexchange narkive permalink

Vengono in mente diverse preoccupazioni.

  1. E se si commette un errore nel codice e si porta un pin in alto mentre un altro è in basso? Ora hai un cortocircuito verso massa tramite una coppia di pin IO che non va bene.
  2. Sono presenti restrizioni sulla corrente massima totale per i pin IO. Se è così, sei entro questi limiti
  3. Quanto sono ben bilanciati i transistor del drive. I.E. Quanto vicini o ugualmente condivideranno la corrente inizialmente.
  4. Qual è il coefficiente di temperatura dei transistor di uscita. Poiché la corrente sbilanciata causa un riscaldamento ineguale dei transistor di uscita, il bilanciamento della corrente migliorerà o peggiorerà.

La preoccupazione 1 è principalmente un caso di quanta condidenza hai nel tuo codice. Il problema 2 è qualcosa a cui i fogli dati possono rispondere, ma non credo di aver mai visto un foglio dati che risponde ai problemi 3 e 4.

Come tale, non consiglierei questa configurazione. Usa un transistor esterno per cambiare il carico.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...