Pullup esterno vs interno

Ci sono due modi per estrarre i pin in Arduino: utilizzando una resistenza interna ed esterna. Mi chiedo quando dovrei usare un resistore esterno invece di INPUT_PULLUP.

Commenti

  • Dalla mia esperienza lunica differenza è " pullup / pulldown esterno è più facile da sostituire " e forse anche " semplicemente guardando il circuito puoi vedere lesterno resistore così è ' più facile da capire il design dopo pochi mesi "

Risposta

È possibile utilizzare il resistore interno o esterno nella normale applicazione.

Ciascun metodo presenta i propri vantaggi:

Resistenza interna

  • Vantaggi: flessibile da modificare cambiando il codice
  • Pro: riduzione delle dimensioni del PCB
  • Pro: riduzione dei costi (molto piccolo)
  • Contro: potrebbe rendere lMCU caldo

Resistore esterno

  • Pr os: Riduci il calore per MCU
  • Contro: non è facile da sostituire quando è integrato PCB
  • Contro: aumenta la dimensione del PCB

Inoltre , Le resistenze pull-up e pull-down non vengono utilizzate solo per la porta INPUT ma anche per la porta OUTPUT. Nel caso della porta OUTPUT. Il resistore esterno ha un altro vantaggio: flessibilità nel collegamento di dispositivi con diverse tensioni di I / O. Ad esempio, nellhardware I2C vedi I2C a livello hardware .

NOTA: per quanto ne so, al momento della scrittura, Arduino la libreria NON supporta INPUT_PULLDOWN

Commenti

  • 1. Il calore generato dal pullup interno è trascurabile. 2. Alcune schede (non quelle basate su AVR) hanno INPUT_PULLDOWN.

Risposta

“Contro: potrebbe surriscaldare lMCU”
Non lo farà. P = V ^ 2 / R, quindi 5 * 5 / 20.000 = 1,25 mW, che non renderà il processore caldo. Anche girare tutti gli 80 in un Mega2560 e tirarli tutti in basso dissiperà solo 0,1 W.

“NOTA: Per quanto ne so, al momento della scrittura, la libreria Arduino NON supporta INPUT_PULLDOWN” Ovvero perché la famiglia di dispositivi Atmega328P, “1284,” 2560, ecc. non dispone di resistori pulldown interni. Solo pullup. Vedere la sezione 14 delle loro schede tecniche, “Porte I / O”.

Questo pullup è generalmente insufficiente per il pullup I2C, il fronte di salita creato dal pullup interno da 20K a 50K è molto lento. Sono necessari 4.7K esterni fino a circa 2.2K (dipende da quanti dispositivi I2C sono collegati). E le specifiche del bus I2C dicono che dovrebbero essere alla fine del bus, non lorigine del bus (che generalmente è il processore).

Se hai un cavo lungo proveniente da un pulsante o interruttore, quello è generalmente un buon momento per utilizzare un pullup esterno per garantire buoni livelli di commutazione tra alto e basso.

Answer

Il “Arduino Language “(cioè la funzione pinMode()) conosce solo INPUT_PULLUP.

Quindi hai bisogno di resistori esterni per i resistori PULLDOWN.

I segnali di OUTPUT non sono flottanti, quindi il termine resistore PULLUP / PULLDOWN non si applica realmente qui.

Inoltre, il valore di un resistore pullup interno non è regolabile. Se quel valore (20 .. 50k) non è appropriato (I²C necessita di qualcosa di meno di 10k) è necessaria una resistenza esterna.

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *