In diesem Projekt werden wir LDR mit dem ATMEGA8-Mikrocontroller verbinden und damit die LICHTINTENSITÄT in der Region messen können. In ATMEGA8 verwenden wir die 10-Bit-ADC-Funktion (Analog to Digital Conversion), um die Lichtintensität zu messen.
Am LDR ist ein Wandler, der seinen Widerstand ändert, wenn LICHT auf seine Oberfläche fällt. Der LDR-Sensor ist in verschiedenen Größen und Formen erhältlich.
LDRs werden aus Halbleitermaterialien hergestellt, damit sie ihre lichtempfindlichen Eigenschaften haben. Es werden viele Arten von Materialien verwendet, aber eines, das beliebt ist, ist CADMIUM SULPHIDE (CdS). Diese LDRs oder PHOTO REISTORS arbeiten nach dem Prinzip der „ Fotoleitfähigkeit “. Dieses Prinzip besagt nun, dass immer dann, wenn Licht auf die Oberfläche des LDR fällt (in diesem Fall), die Leitfähigkeit des Elements zunimmt oder mit anderen Worten der Widerstand des LDR abnimmt, wenn das Licht auf die Oberfläche des LDR fällt. Diese Eigenschaft der Widerstandsabnahme für das LDR wird erreicht, weil es eine Eigenschaft des auf der Oberfläche verwendeten Halbleitermaterials ist. LDR werden meistens verwendet, um das Vorhandensein von Licht zu erfassen oder die Intensität des Lichts zu messen.
Es gibt verschiedene Arten von LDR, wie in der obigen Abbildung gezeigt, und jede hat unterschiedliche Spezifikationen. Normalerweise hat ein LDR 1 MΩ-2 MΩ bei völliger Dunkelheit, 10-20 KΩ bei 10 LUX, 2-5 KΩ bei 100 LUX. Der typische Widerstand eines LDR gegen LUX ist in der Abbildung dargestellt.
Wie in der obigen Abbildung gezeigt, nimmt der Widerstand zwischen den beiden Kontakten des Sensors mit der Lichtintensität ab oder die Leitfähigkeit zwischen zwei Kontakten des Sensors nimmt zu.
Um diese Widerstandsänderung in eine Spannungsänderung umzuwandeln, verwenden wir eine Spannungsteilerschaltung. In diesem Widerstandsnetzwerk haben wir einen konstanten Widerstand und einen anderen variablen Widerstand. Wie in der Abbildung gezeigt, ist R1 hier ein konstanter Widerstand und R2 ist ein FORCE-Sensor, der als Widerstand wirkt.
Der Mittelpunkt der Verzweigung wird zur Messung gebracht. Wenn sich der Widerstand R2 ändert, ändert sich der Vout linear mit ihm. Damit haben wir eine Spannung, die sich mit dem Gewicht ändert.
Hierbei ist zu beachten, dass der vom Controller für die ADC-Konvertierung verwendete Eingang nur 50 µAmp beträgt. Dieser Belastungseffekt des auf Widerstand basierenden Spannungsteilers ist wichtig, da der aus Vout des Spannungsteilers entnommene Strom den Fehlerprozentsatz erhöht, da wir uns jetzt nicht um den Belastungseffekt kümmern müssen.
Was wir hier tun werden, ist, dass wir zwei Widerstände nehmen und eine Teilerschaltung bilden, so dass wir für einen 25-Volt-Vin einen 5-Volt-Vout erhalten. Wir müssen also nur den Vout-Wert im Programm mit „5“ multiplizieren, um die tatsächliche Eingangsspannung zu erhalten.
Komponenten
Hardware: ATMEGA8, Netzteil (5 V), AVR-ISP-PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100 uF-Kondensator, 100 nF-Kondensator (5 Stück), 10 kΩ-Widerstand, LDR (lichtabhängiger Widerstand).
Software: Atmel Studio 6.1, Progisp oder Flash Magic.
Schaltplan & Arbeitserklärung
In der Schaltung ist PORTD von ATMEGA8 mit dem Datenport LCD verbunden. Im 16 * 2-LCD gibt es insgesamt 16 Pins, wenn eine Hintergrundbeleuchtung vorhanden ist. Wenn keine Hintergrundbeleuchtung vorhanden ist, sind 14 Pins vorhanden. Man kann die Gegenlichtstifte mit Strom versorgen oder belassen. Nun in den 14 Stiften sind 8 Datenstifte (7-14 oder D0-D7), 2 Stromversorgungsstifte (1, 2 oder VSS & VDD oder GND & + 5 V), 3 rd Stift für die Kontraststeuerung (VEE-Kontrollen, wie dick sollten die Zeichen gezeigt) und 3 Steuerstifte (RS & RW & E)
In der Schaltung können Sie beobachten, dass ich nur zwei Steuerstifte genommen habe. Das Kontrastbit und READ / WRITE werden nicht oft verwendet, so dass sie gegen Masse kurzgeschlossen werden können. Dies versetzt das LCD in den höchsten Kontrast- und Lesemodus. Wir müssen nur die ENABLE- und RS-Pins steuern, um Zeichen und Daten entsprechend zu senden.
Die Anschlüsse für LCD sind unten angegeben:
PIN1 oder VSS ------------------ Masse
PIN2 oder VDD oder VCC ------------ + 5V Stromversorgung
PIN3 oder VEE --------------- Boden (bietet maximalen Kontrast am besten für Anfänger)
PIN4 oder RS (Registerauswahl) --------------- PB0 von uC
PIN5 oder RW (Lesen / Schreiben) ----------------- Masse (versetzt das LCD in den Lesemodus, erleichtert die Kommunikation für den Benutzer)
PIN6 oder E (Aktivieren) ------------------- PB1 von uC
PIN7 oder D0 ----------------------------- PD0 von uC
PIN8 oder D1 ----------------------------- PD1 von uC
PIN9 oder D2 ----------------------------- PD2 von uC
PIN10 oder D3 ----------------------------- PD3 von uC
PIN11 oder D4 ----------------------------- PD4 von uC
PIN12 oder D5 ----------------------------- PD5 von uC
PIN13 oder D6 ----------------------------- PD6 von uC
PIN14 oder D7 ----------------------------- PD7 von uC
In der Schaltung können Sie sehen, dass wir 8-Bit-Kommunikation (D0-D7) verwendet haben, dies ist jedoch nicht obligatorisch, wir können 4-Bit-Kommunikation (D4-D7) verwenden, aber mit 4-Bit-Kommunikationsprogramm wird ein Bit komplex. Nach bloßer Beobachtung aus der obigen Tabelle verbinden wir 10 Pins des LCD mit dem Controller, wobei 8 Pins Datenpins und 2 Pins zur Steuerung sind.
Die Spannung an R2 ist nicht vollständig linear; es wird laut sein. Zum Herausfiltern werden die Rauschkondensatoren wie in der Abbildung gezeigt über jeden Widerstand in der Teilerschaltung gelegt.
In ATMEGA8 können wir jedem der VIER PORTC-Kanäle einen Analogeingang geben. Es spielt keine Rolle, welchen Kanal wir wählen, da alle gleich sind. Wir werden Kanal 0 oder PIN0 von PORTC wählen. In ATMEGA8 hat der ADC eine Auflösung von 10 Bit, sodass der Controller eine minimale Änderung von Vref / 2 ^ 10 erkennen kann. Wenn also die Referenzspannung 5 V beträgt, erhalten wir ein digitales Ausgangsinkrement für jeweils 5/2 ^ 10 = 5 mV. Für jedes 5-mV-Inkrement am Eingang haben wir also ein Inkrement von eins am digitalen Ausgang.
Jetzt müssen wir das ADC-Register basierend auf den folgenden Begriffen einstellen:
1. Zunächst müssen wir die ADC-Funktion in ADC aktivieren.
2. Hier erhalten Sie eine maximale Eingangsspannung für die ADC-Umwandlung von + 5V. So können wir den Maximalwert oder die Referenz des ADC auf 5 V einstellen.
3. Der Controller verfügt über eine Triggerkonvertierungsfunktion, die bedeutet, dass die ADC-Konvertierung erst nach einem externen Trigger erfolgt, da wir nicht möchten, dass die Register so eingestellt werden müssen, dass der ADC im kontinuierlichen Freilaufmodus ausgeführt wird.
4. Bei jedem ADC sind die Umwandlungsfrequenz (Analogwert zu Digitalwert) und die Genauigkeit der Digitalausgabe umgekehrt proportional. Für eine bessere Genauigkeit der digitalen Ausgabe müssen wir daher eine geringere Frequenz wählen. Für die normale ADC-Uhr stellen wir den Vorverkauf des ADC auf den Maximalwert (2) ein. Da wir die interne Uhr von 1 MHz verwenden, ist die Uhr von ADC (1000000/2).
Dies sind die einzigen vier Dinge, die wir wissen müssen, um mit ADC beginnen zu können.
Alle oben genannten vier Merkmale werden durch zwei Register eingestellt.
ROT (ADEN): Dieses Bit muss gesetzt sein, um die ADC-Funktion von ATMEGA zu aktivieren.
BLAU (REFS1, REFS0): Diese beiden Bits werden verwendet, um die Referenzspannung (oder die maximale Eingangsspannung, die wir geben werden) einzustellen. Da wir eine Referenzspannung von 5 V haben möchten, sollte REFS0 anhand der Tabelle eingestellt werden.
GELB (ADFR): Dieses Bit muss gesetzt sein, damit der ADC kontinuierlich läuft (Freilaufmodus).
PINK (MUX0-MUX3): Diese vier Bits dienen zum Teilen des Eingangskanals. Da wir ADC0 oder PIN0 verwenden werden, müssen wir keine Bits wie in der Tabelle setzen.
BRAUN (ADPS0-ADPS2): Diese drei Bits dienen zum Einstellen des Prescalars für ADC. Da wir einen Prescalar von 2 verwenden, müssen wir ein Bit setzen.
DARK GREEN (ADSC): Dieses Bit wird gesetzt, damit der ADC die Konvertierung startet. Dieses Bit kann im Programm deaktiviert werden, wenn die Konvertierung gestoppt werden muss.
Mit dem Widerstand von LDR auf dem 16x2-LCD-Bildschirm können wir ihn mit dem LUX-Diagramm abgleichen, um die Lichtintensität zu erhalten.