In diesem Tutorial werden wir den FLEX-Sensor mit dem ATMEGA8-Mikrocontroller verbinden. In ATMEGA8 verwenden wir für diese Aufgabe die 10-Bit-ADC-Funktion (Analog-Digital-Konvertierung). Jetzt kann der ADC in ATMEGA nicht mehr als +5 V eingeben.
Was ist ein Flex-Sensor?
Ein FLEX-Sensor ist ein Wandler, der seinen Widerstand ändert, wenn sich seine Form ändert. Es ist in der folgenden Abbildung dargestellt.
Dieser Sensor wird verwendet, um die Änderungen der Linearität zu erfassen. Wenn also der FLEX-Sensor gebogen wird, wird der Widerstand drastisch gebogen. Dies ist in der folgenden Abbildung dargestellt.
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 folgenden Abbildung gezeigt, ist R1 hier ein konstanter Widerstand und R2 ist ein FLEX-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 der Linearität ändert.
Hierbei ist zu beachten, dass der vom Controller für die ADC-Konvertierung verwendete Eingang nur 50 µAmp beträgt. Dieser Belastungseffekt des widerstandsbasierten Spannungsteilers ist wichtig, da der aus Vout des Spannungsteilers entnommene Strom den Fehlerprozentsatz erhöht. Im Moment müssen wir uns keine Gedanken über den Belastungseffekt machen.
Wir werden 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.
Erforderliche Komponenten
HARDWARE: ATMEGA8, Netzteil (5 V), AVR-ISP-PROGRAMMER, JHD_162ALCD (16x2LCD), 100 uF Kondensator, 100 nF Kondensator (5 Stück), 100 kΩ Widerstand.
SOFTWARE: Atmel Studio 6.1, Progisp oder Flash Magic.
Schaltplan und Arbeitserklärung
In der Schaltung ist PORTD von ATMEGA8 mit dem Datenport LCD verbunden. Im 16x2-LCD gibt es insgesamt 16 Pins, wenn eine Hintergrundbeleuchtung vorhanden ist. Wenn keine Hintergrundbeleuchtung vorhanden ist, gibt es 14 Pins. 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 LCD-Verbindungen mit ATmega8 sind wie folgt:
PIN1 oder VSS nach Masse
PIN2 oder VDD oder VCC auf +5V
PIN3 oder VEE to Ground (bietet maximalen Kontrast für Anfänger)
PIN4 oder RS (Registerauswahl) zu PB0 von uC
PIN5 oder RW (Lesen / Schreiben) auf Masse (versetzt das LCD in den Lesemodus, erleichtert die Kommunikation für den Benutzer)
PIN6 oder E (Aktivieren) zu PB1 von uC
PIN7 oder D0 bis PD0 von uC
PIN8 oder D1 bis PD1 von uC
PIN9 oder D2 bis PD2 von uC
PIN10 oder D3 bis PD3 von uC
PIN11 oder D4 bis D4 von uC
PIN12 oder D5 bis PD5 von uC
PIN13 oder D6 bis PD6 von uC
PIN14 oder D7 bis PD7 von uC
In der Schaltung sehen Sie, 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 es ein bisschen komplex, also haben wir nur 8-Bit verwendet Kommunikation. (Überprüfen Sie auch dieses Tutorial: 16x2 LCD-Schnittstelle mit AVR-Mikrocontroller)
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.
Der 1K-Poti dient hier zum Einstellen der Genauigkeit des ADC. Lassen Sie uns nun über ADC von ATMEGA8 diskutieren.
In ATMEGA8 können wir jedem von VIER PORTC-Kanälen 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 erfassen 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 Funktionen werden durch zwei Register festgelegt:
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.
Die Schnittstelle des FLEX-Sensors zu ATmega8 wird Schritt für Schritt im unten angegebenen C-Code erläutert.