Extragere externă vs internă

Există două moduri de a trage pinii în Arduino – folosind rezistorul intern și extern. Mă întreb când ar trebui să folosesc rezistență externă în loc de INPUT_PULLUP.

Comentarii

  • Din experiența mea, singura diferență este " pullup / pulldown extern este mai ușor de înlocuit " și poate, de asemenea, " doar uitându-vă la circuit, puteți vedea externul rezistor, astfel încât ' este mai ușor de înțeles proiectarea după câteva luni "

Răspuns

Puteți utiliza rezistorul intern sau extern într-o aplicație normală.

Fiecare metodă are fiecare propriile avantaje:

Rezistor intern

  • Pro: flexibil de modificat prin schimbarea codului
  • Pro: reduceți dimensiunea PCB
  • Pro: reduceți costul (foarte mic)
  • Contra: poate face MCU fierbinte

Rezistor extern

  • Pr OS: Reduceți căldura pentru MCU
  • Contra: nu este ușor de înlocuit când este încorporat PCB
  • Contra: creșteți dimensiunea PCB

, Rezistențele pull-up și pull-down nu sunt utilizate doar pentru portul INPUT, ci și pentru portul OUTPUT. În cazul portului OUTPUT. Rezistorul extern are un alt avantaj: flexibilitate în conectarea dispozitivelor cu diferite tensiuni I / O. De exemplu, în hardware I2C vezi I2C la nivel hardware .

NOTĂ: Din câte știu, la momentul scrierii, Arduino biblioteca NU acceptă INPUT_PULLDOWN

Comentarii

  • 1. Căldura generată de tragerea internă este neglijabilă. 2. Unele plăci (nu cele bazate pe AVR) au INPUT_PULLDOWN.

Răspuns

„Contra: poate face ca MCU să fie fierbinte”
Nu o va face. P = V ^ 2 / R, deci 5 * 5 / 20.000 = 1,25mW, care nu va face procesorul fierbinte. Chiar dacă întoarceți toate cele 80 într-un Mega2560 și le trageți pe toate, va disipa doar 0.1W.

„NOTĂ: Din câte știu eu, la momentul scrierii, biblioteca Arduino NU acceptă INPUT_PULLDOWN” Adică deoarece familia de dispozitive Atmega328P, „1284”, 2560 etc. nu are rezistențe interne de derulare. Numai pullup. Consultați Secțiunea 14 din fișele lor tehnice, „Porturi I / O”.

Această extragere este în general insuficientă pentru extragerea I2C, marginea ascendentă creată de extragerea internă de 20K la 50K este foarte lentă. Sunt necesare 4,7K externe până la aproximativ 2,2K (depinde de câte dispozitive I2C sunt conectate). Și specificația autobuzului I2C spune că ar trebui să fie la sfârșitul autobuzului, nu originea magistralei (care este în general procesorul).

Dacă aveți un fir lung care vine de la un buton sau un comutator, este, în general, un moment bun pentru a utiliza o extragere externă pentru a asigura niveluri bune de comutare între ridicat și scăzut.

Răspuns

„Arduino Limba „(adică funcția pinMode()) cunoaște numai INPUT_PULLUP.

Deci aveți nevoie de rezistențe externe pentru rezistențe PULLDOWN.

Semnalele OUTPUT nu sunt plutitoare, astfel încât termenul de rezistență PULLUP / PULLDOWN nu se aplică cu adevărat acolo.

În plus, valoarea unui rezistor de tragere intern nu este reglabilă. Dacă această valoare (20 .. 50k) nu este adecvată (I²C are nevoie de ceva mai puțin de 10k) este necesar un rezistor extern.

Comentarii

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *