In diesem Tutorial werden wir ein Joystick-Modul mit dem atmega8-Mikrocontroller verbinden. Ein JOY STICK ist ein Eingangsmodul für die Kommunikation. Dies erleichtert im Grunde die Kommunikation zwischen Benutzer und Maschine. Ein Joystick ist in der folgenden Abbildung dargestellt.
Das Joystick-Modul hat zwei Achsen - eine ist horizontal und die andere ist vertikal. Jede Joystickachse ist an einem Potentiometer oder Topf oder einem variablen Widerstand montiert. Die Mittelpunkte werden als Rx und Ry herabgesetzt. Diese Pins tragen als Ausgangssignalpins für JOYSTICK. Wenn der Stick bei vorhandener Versorgungsspannung entlang der horizontalen Achse bewegt wird, ändert sich die Spannung am Rx-Pin.
Die Spannung an Rx steigt an, wenn sie vorwärts bewegt wird, die Spannung an Rx-Pin nimmt ab, wenn sie rückwärts bewegt wird. In ähnlicher Weise steigt die Spannung an Ry an, wenn sie nach oben bewegt wird, und die Spannung am Ry-Pin nimmt ab, wenn sie nach unten bewegt wird.
Wir haben also vier Richtungen von JOYSTICK auf zwei ADC-Kanälen. Im Normalfall haben wir unter normalen Umständen 1 Volt an jedem Pin. Wenn der Stick bewegt wird, geht die Spannung an jedem Pin je nach Richtung hoch oder niedrig. Also vier Richtungen als (0V, 5V auf Kanal 0) für die x-Achse; (0 V, 5 V auf Kanal 1) für die y-Achse.
Wir werden zwei ADC-Kanäle von ATMEGA8 verwenden, um die Arbeit zu erledigen. Wir werden Kanal 0 und Kanal 1 verwenden.
Erforderliche Komponenten
Hardware: ATMEGA8, Netzteil (5 V), AVR-ISP-PROGRAMMER, LED (4 Stück), 1000 uF Kondensator, 100 nF Kondensator (5 Stück), 1 kΩ Widerstand (6 Stück).
Software: Atmel Studio 6.1, Progisp oder Flash Magic.
Schaltplan und Arbeitserklärung
Die Spannung an JOYSTICK ist nicht vollständig linear. es wird laut sein. Um das Rauschen herauszufiltern, werden Kondensatoren über jeden Widerstand in der Schaltung gelegt, wie in der Abbildung gezeigt.
Wie in der Abbildung gezeigt, befinden sich vier LEDs in der Schaltung. Jede LED repräsentiert jede Richtung von JOYSTICK. Wenn der Stick in eine Richtung bewegt wird, leuchtet die entsprechende LED.
Bevor wir weitermachen, müssen wir über ADC von ATMEGA8 sprechen.
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.