Collegare un LDR ai pin GPIO di un Raspberry Pi


12

Voglio collegare un LDR ai pin GPIO del mio Raspberry Pi, so che Raspberry Pi non ha un convertitore da analogico a digitale, quindi quello che voglio fare è segnalare un segnale ALTO (3.3 v) sul GPIO quando c'è bassa resistenza sul LDR (qualcosa al di sotto di 200 ohm) e un segnale BASSO quando la resistenza del LDR è alta (sopra 2k per esempio). La corrente massima che posso prelevare in modo sicuro dai pin GPIO del Raspberry Pi, secondo la documentazione è 50mA, come posso calcolare la resistenza necessaria, dovrò aggiungere anche una resistenza pull up / down? Non ho le idee chiare su come farlo in modo sicuro senza bruciare il mio processore.

Immagino di dover collegare anche una resistenza sul circuito per assicurarsi che abbia sempre una resistenza quando il LDR è in uno stato di resistenza molto basso.

Aggiornamento : ha funzionato bene, ho costruito il circuito ed è mostrato in questo post , grazie per l'aiuto.


1
"L'isteresi di ingresso GPIO (trigger Schmitt) può essere attivata o disattivata, la velocità di risposta dell'uscita può essere rapida o limitata e la corrente di source e sink è configurabile da 2 mA a 16 mA." Il 50mA è il massimo assorbimento dal pin 3V3.
Ignacio Vazquez-Abrams,

Risposte:


13

Il modo migliore per farlo sarebbe usare un transistor come comparatore per rendere più nitida la transizione.
Ecco un esempio di circuito:

LDR

Utilizza LDR come parte superiore di un divisore di tensione. Quando la resistenza LDR diminuisce, la tensione alla base del transistor aumenta e la accende. Il transistor può essere qualsiasi NPN generico.
Siamo in grado di calcolare il valore della resistenza in base alla posizione in cui si desidera che avvenga l'accensione.

Diciamo che le resistenze LDR vanno da 200Ω (scuro) a 10kΩ (scuro). Vogliamo che il transistor si accenda quando LDR è a 5kΩ. L'alimentazione (V +) è a 3,3 V. Un tipico transistor NPN si accende a circa 0,7 V, quindi se lo facciamo:

5.000 * (0,7 / 3,3) = 1060Ω necessari per la resistenza di base. Possiamo scegliere una resistenza da 1kΩ poiché è abbastanza vicina. Regola i valori in base al punto di accensione.

Ecco una simulazione del circuito:

LDR sim

L'asse orizzontale è la resistenza LDR e la linea blu è la tensione nel punto Vout (lo si collega al pin di ingresso Rpi - deve essere impostato su input. È possibile aggiungere una resistenza da 1kΩ tra Vout e il pin Rpi per proteggerlo in caso di impostazione accidentale sull'uscita) Possiamo vedere il transistor accendersi a circa 5kΩ come previsto (non sarà esatto poiché la tensione dell'emettitore base del transistor varierà con la temperatura, ecc. ma abbastanza vicino ai tuoi scopi)

Si noti che l'uscita del transistor è bassa quando è chiara e alta quando è scura, è possibile scambiare LDR e resistenza e utilizzare 5.000 * (3.3 / 0.7) = 23.5kΩ per la resistenza se si desidera viceversa - questo è in realtà una configurazione migliore in quanto assorbe meno corrente (a causa di resistenze più elevate), quindi se è importante utilizzare questa versione.


Concordato. Stavo per suggerire un comparatore di amplificatori operazionali, ma poi ho pensato che fosse eccessivo. La semplice soluzione di usare un transistor come interruttore non mi era venuta in mente.
Ignacio Vazquez-Abrams,

2
Questo è esattamente ciò di cui ho bisogno, lo farò, grazie per la risposta, è davvero sorprendente poter costruire questo sigmoide per controllare i livelli logici, non avrei mai immaginato qualcosa del genere, grazie per aver passato il tuo tempo per scrivere questo.
Tarantola,

@Tarantula - nessun problema, felice di aiutarti.
Oli Glaser,
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.