Tutorial seriale lettura digitale: calcolo del valore della resistenza


9

Il tutorial Arduino Digital Read Serial ti guida attraverso il cablaggio di un semplice pulsante. Le mie domande sono incentrate sul resistore.

Perché è necessaria la resistenza?

Penso di capirlo, ma correggimi se sbaglio. Per garantire che il pin di ingresso legga un segnale basso e non fluttui, dovremmo collegare il pin a terra quando il pulsante non viene premuto. Quando il pulsante viene premuto, avremo un segnale a 5 V che fluisce verso il pin e verso terra. La legge sulla tensione di Kirchhoff afferma che la tensione totale in anello chiuso deve essere uguale a zero, quindi dobbiamo affrontare questo 5V che scorre direttamente verso terra. Ecco perché mettiamo un resistore tra il pulsante e la terra.

Come è stato scelto il valore della resistenza?

Questo è ciò su cui non sono chiaro. La legge di Ohm afferma che ...

resistance = voltage / current

Questa è un'alimentazione a 5 V e le specifiche di Arduino Uno affermano che il pin fornisce 40 mA di corrente continua. Così..

resistance = 5V / 0.04A = 125 Ohms

Nel tutorial Digital Read Serial , perché abbiamo un resistore da 10K Ohm? È eccessivo, vero? Il che porta a un'altra domanda: puoi mai mettere in atto troppa resistenza, se il tuo unico obiettivo è quello di cancellare la tensione?

Grazie in anticipo per qualsiasi feedback!

Risposte:


6

Sei molto vicino. Il resistore è lì per fungere da resistore pull down; Se il pin di ingresso sta fluttuando, è solo un'antenna che rileva statica casuale. La chiave è che quando viene fornito positivo (premendo il pulsante) la sorgente positiva deve "sovraccaricare" la resistenza di pull down in modo che il pin di ingresso sia positivo.

Se non ci fosse resistenza, il pin di input leggerebbe nel mezzo di un percorso diretto che non favorisce il positivo o il negativo. Asside dal corto diretto che si sarebbe verificato, Quale stato avrebbe letto l'Arduino sospetto che sarebbe casuale o una proprietà dell'alimentatore; Probabilmente leggerebbe ancora terreno.

Con il resistore, il segnale viene letto direttamente collegato al positivo, prima della resistenza di carico. In questo modo sarà sicuro di ottenere un segnale ALTO.

La dimensione esatta del resistore ha poca importanza. Troppo piccolo e sprechi corrente, ma troppa resistenza sta effettivamente scollegando di nuovo la terra. C'è una gamma molto ampia di valori che funzionerà bene tra quelli.

Vorrei notare che quando un pin Arduino è impostato sulla modalità di input, in realtà non fornisce corrente. Può essere modellato in serie con un resistore da 100 megaOhm. vedi http://arduino.cc/en/Tutorial/DigitalPins per i dettagli.


2
La cosa chiave qui è che se non si utilizza un resistore, quando l'interruttore è chiuso, si è cortocircuitato a +5 volt. Un cortocircuito diretto sovraccaricherà l'alimentatore e farà scattare il circuito di protezione sull'alimentatore, causando l'arresto dell'intero Arduino. Volete un resistore di impedenza sufficientemente alta da mantenere basso il flusso di corrente. Di solito uso un resistore da 100k, che è abbastanza per portare il segnale in ingresso a 0 volt quando l'interruttore è aperto, e consente solo il passaggio di .00005 pas, una quantità banale di corrente. Funziona anche un resistore da 10k, ma che consente il flusso di corrente 10 volte maggiore.
Duncan C,

2

Perché è necessaria la resistenza?

Gli ingressi Arduino hanno un'altissima resistenza. Il datasheed di Atmega328 dice 100 MOhm per ADC, valori così alti sono buoni, ma hanno anche lo svantaggio di affrontare gli effetti parassiti (resistenza, induttanza, capacità). Tali effetti possono anche essere usati come sensori di capacità .

Come è stato scelto il valore della resistenza?

Il resistore deve avere un valore arbitrario, inferiore alla resistenza di ingresso. 10k e versioni successive sono utili per disabilitare la perdita di input.

Tuttavia, è anche possibile tralasciare la resistenza quando si utilizzano i resistori pull-up interni. In questo caso hai a che fare con la logica negativa:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

Sul pin 3 misurerai HIGHe il pulsante deve essere collegato al pin e al terreno. Il resistore pull-up interno I / 0 ha il valore di 50k.


1

Hai già ottenuto un paio di buone risposte sul perché è necessaria una resistenza pull-down.

Per riassumere, è necessario collegare l'ingresso a terra per evitare che l'input fluttui in modo semi-casuale tra alto e basso. Si utilizza un resistore in modo che quando si chiude l'interruttore, non si crea un cortocircuito tra l'alimentazione + 5V e la terra.

Un altro punto, però. Gli ingressi di Arduino includono un resistore pull-up interno opzionale, controllato da software . Se si imposta prima il pin come input, quindi si scrive un valore HIGH su quella porta, si attiva la resistenza pull-up. Questo fa sì che il pin legga ALTO quando nulla è collegato ad esso.

È quindi possibile collegare l'interruttore a terra anziché + 5V. È quindi necessario modificare la logica del codice per considerare un valore ALTO come non premuto e un valore BASSO come premuto. Ciò consente di semplificare un po 'il cablaggio, poiché non è necessario un resistore esterno.

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.