- ADC0804 und Raspberry Pi:
- LM35 Temperatursensor:
- Erforderliche Komponenten:
- Schaltung und Funktionserklärung:
- Programmiererklärung:
In unserer Raspberry Pi Tutorial-Reihe haben wir größtenteils alle Basiskomponenten behandelt, die mit Raspberry Pi verbunden sind. Wir haben alle Tutorials auf einfache und detaillierte Weise behandelt, sodass jeder, ob er mit Raspberry Pi gearbeitet hat oder nicht, leicht aus dieser Serie lernen kann. Nachdem Sie alle Tutorials durchgearbeitet haben, können Sie mit Raspberry Pi einige High Level-Projekte erstellen.
Hier entwerfen wir also die erste Anwendung basierend auf den vorherigen Tutorials. Die erste grundlegende Anwendung ist eine Lesesaal-Temperatur von Raspberry Pi. Und Sie können die Messwerte am Computer überwachen.
Wie in früheren Tutorials erläutert, sind in Raspberry Pi intern keine ADC-Kanäle bereitgestellt. Wenn wir also analoge Sensoren anschließen möchten, benötigen wir eine ADC-Konvertierungseinheit. Und in einem unserer Tutorials haben wir den ADC0804-Chip an Raspberry Pi angeschlossen, um einen analogen Wert zu lesen. Gehen Sie es also durch, bevor Sie dieses Raumtemperaturthermometer bauen.
ADC0804 und Raspberry Pi:
ADC0804 ist ein Chip zur Umwandlung von analogen Signalen in digitale 8-Bit-Daten. Dieser Chip ist eine der beliebtesten Serien von ADC. Es ist eine 8-Bit-Konvertierungseinheit, also haben wir Werte oder 0 bis 255 Werte. Die Auflösung dieses Chips ändert sich basierend auf der von uns gewählten Referenzspannung. Wir werden später mehr darüber sprechen. Unten ist die Pinbelegung von ADC0804:
Eine weitere wichtige Sache ist, dass der ADC0804 mit 5 V arbeitet und daher einen Ausgang in einem 5-V-Logiksignal liefert. Bei einem 8-Pin-Ausgang (der 8 Bit darstellt) liefert jeder Pin einen + 5 V-Ausgang, um die Logik '1' darzustellen. Das Problem ist also, dass die PI-Logik +3,3 V hat, sodass Sie dem + 3,3-V-GPIO-Pin von PI keine +5-V-Logik geben können. Wenn Sie einen GPIO-Pin von PI mit +5 V versorgen, wird die Karte beschädigt.
Um den Logikpegel von +5 V zu verringern, verwenden wir eine Spannungsteilerschaltung. Wir haben die Spannungsteilerschaltung bereits besprochen und sie zur weiteren Klärung untersucht. Wir werden zwei Widerstände verwenden, um die + 5V-Logik in 2 * 2,5V-Logik zu unterteilen. Nach der Division geben wir PI + 2,5 V Logik. Wenn also die logische '1' von ADC0804 dargestellt wird, sehen wir + 2,5 V am PI GPIO-Pin anstelle von + 5 V.
LM35 Temperatursensor:
Zum Ablesen der Raumtemperatur benötigen wir einen Sensor. Hier verwenden wir den LM35-Temperatursensor. Die Temperatur wird normalerweise in „Celsius“ oder „Fahrenheit“ gemessen. Der Sensor „LM35“ liefert eine Ausgabe in Grad Celsius.
Wie in der Abbildung gezeigt, ist LM35 eine dreipolige transistorähnliche Vorrichtung. Die Stifte sind nummeriert als, PIN1 = Vcc - Stromversorgung (angeschlossen an + 5V)
PIN2 = Signal oder Ausgang (an ADC-Chip angeschlossen)
PIN3 = Masse (mit Masse verbunden)
Dieser Sensor liefert eine variable Spannung am Ausgang, basierend auf der Temperatur. Für jeden Temperaturanstieg von +1 Grad Celsius liegt am Ausgangspin eine um + 10 mV höhere Spannung an. Wenn die Temperatur 0 ° C beträgt, beträgt der Ausgang des Sensors 0 V, wenn die Temperatur 10 ° C beträgt, beträgt der Ausgang des Sensors + 100 mV, wenn die Temperatur 25 ° C beträgt, beträgt der Ausgang des Sensors + 250 mV.
Erforderliche Komponenten:
Hier verwenden wir Raspberry Pi 2 Model B mit Raspbian Jessie OS. Alle grundlegenden Hardware- und Softwareanforderungen wurden bereits erläutert. Sie können sie in der Raspberry Pi-Einführung nachschlagen.
- Verbindungsstifte
- 1KΩWiderstand (17 Stück)
- 10K Topf
- 0,1µF Kondensator
- 100µF Kondensator
- 1000µF Kondensator
- ADC0804 IC
- LM35 Temperatursensor
- Brotbrett
Schaltung und Funktionserklärung:
Die Verbindungen, die zum Anschließen von Raspberry an ADC0804 und LM35 hergestellt werden, sind im folgenden Schaltplan dargestellt.
Der LM35-Ausgang weist viele Spannungsschwankungen auf. Daher wird ein 100uF-Kondensator verwendet, um den Ausgang zu glätten, wie in der Abbildung gezeigt.
Der ADC hat immer viel Rauschen. Dieses Rauschen kann die Leistung stark beeinträchtigen. Daher verwenden wir einen 0,1-uF-Kondensator für die Rauschfiltration. Ohne dies wird es viele Schwankungen am Ausgang geben.
Der Chip arbeitet mit einem RC-Oszillatortakt (Resistor-Capacitor). Wie im Schaltplan gezeigt , bilden C2 und R20 eine Uhr. Das Wichtigste dabei ist, dass der Kondensator C2 für eine höhere ADC-Umwandlungsrate auf einen niedrigeren Wert geändert werden kann. Bei höherer Geschwindigkeit nimmt jedoch die Genauigkeit ab. Wenn die Anwendung eine höhere Genauigkeit erfordert, wählen Sie den Kondensator mit höherem Wert und für höhere Geschwindigkeit den Kondensator mit niedrigerem Wert.
Wie bereits erwähnt, liefert der LM35 +10 mV für jeden Grad Celsius. Die maximale Temperatur, die mit dem LM35 gemessen werden kann, beträgt 150 ° C. Wir haben also maximal 1,5 V am LM35-Ausgangsanschluss. Die Standardreferenzspannung von ADC0804 beträgt jedoch + 5V. Wenn wir also diesen Referenzwert verwenden, ist die Auflösung des Ausgangs niedrig, da wir maximal (5 / 1,5) 34% des digitalen Ausgangsbereichs verwenden würden.
Glücklicherweise hat der ADC0804 einen einstellbaren Vref-Pin (PIN9), wie oben im Pin-Diagramm gezeigt. Also setzen wir die Vref des Chips auf + 2V. Um Vref + 2V einzustellen, müssen wir an PIN9 eine Spannung von + 1V (VREF / 2) bereitstellen. Hier verwenden wir 10K Pot, um die Spannung an PIN9 auf + 1V einzustellen. Verwenden Sie das Voltmeter, um die genaue Spannung zu erhalten.
Wir haben zuvor den LM35-Temperatursensor verwendet, um die Raumtemperatur mit Arduino und mit dem AVR-Mikrocontroller abzulesen. Überprüfen Sie auch die Feuchtigkeits- und Temperaturmessung mit Arduino
Programmiererklärung:
Sobald alles gemäß Schaltplan angeschlossen ist, können wir den PI einschalten, um das Programm in PYHTON zu schreiben.
Wir werden über einige Befehle sprechen, die wir im PYHTON-Programm verwenden werden.
Wir werden die GPIO-Datei aus der Bibliothek importieren. Mit der folgenden Funktion können wir die GPIO-Pins von PI programmieren. Wir benennen auch "GPIO" in "IO" um. Wenn wir also im Programm auf GPIO-Pins verweisen möchten, verwenden wir das Wort "IO".
importiere RPi.GPIO als IO
Manchmal, wenn die GPIO-Pins, die wir verwenden möchten, andere Funktionen ausführen. In diesem Fall erhalten wir während der Ausführung des Programms Warnungen. Der folgende Befehl weist den PI an, die Warnungen zu ignorieren und mit dem Programm fortzufahren.
IO.setwarnings (False)
Wir können die GPIO-Pins von PI entweder anhand der Pin-Nummer an Bord oder anhand ihrer Funktionsnummer referenzieren. Wie 'PIN 29' auf der Karte ist 'GPIO5'. Also sagen wir hier entweder, dass wir den Pin hier durch '29' oder '5' darstellen werden.
IO.setmode (IO.BCM)
Wir setzen 8 Pins als Eingangspins. Wir werden 8 Bit ADC-Daten durch diese Pins erkennen.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Wenn die Bedingung in geschweiften Klammern erfüllt ist, werden die Anweisungen in der Schleife einmal ausgeführt. Wenn also der GPIO-Pin 19 hoch geht, werden die Anweisungen innerhalb der IF-Schleife einmal ausgeführt. Wenn der GPIO-Pin 19 nicht hoch geht, werden die Anweisungen innerhalb der IF-Schleife nicht ausgeführt.
if (IO.input (19) == True):
Der folgende Befehl wird als Forever-Schleife verwendet. Mit diesem Befehl werden die Anweisungen in dieser Schleife kontinuierlich ausgeführt.
Während 1:
Weitere Erläuterungen zum Code finden Sie im folgenden Codeabschnitt.
Nach dem Schreiben des Programms ist es Zeit, es auszuführen. Lassen Sie uns vor dem Ausführen des Programms als Zusammenfassung darüber sprechen, was in der Schaltung geschieht. Der erste LM35-Sensor erfasst die Raumtemperatur und liefert am Ausgang eine analoge Spannung. Diese variable Spannung repräsentiert die Temperatur linear mit + 10 mV pro ºC. Dieses Signal wird dem ADC0804-Chip zugeführt. Dieser Chip wandelt den Analogwert in einen Digitalwert mit 255/200 = 1,275 Zählung pro 10 mV oder 1,275 Zählung für 1 Grad um. Diese Zählung wird vom PI GPIO übernommen. Das Programm wandelt den Zählerstand in einen Temperaturwert um und zeigt ihn auf dem Bildschirm an. Die typische von PI abgelesene Temperatur ist unten gezeigt.
Daher haben wir diesen Raspberry Pi Temperaturmonitor.