En este tutorial vamos a conectar un módulo de joystick con el microcontrolador atmega8. Un JOY STICK es un módulo de entrada que se utiliza para la comunicación. Básicamente, facilita la comunicación entre el usuario y la máquina. En la figura siguiente se muestra un joystick.
El módulo del joystick tiene dos ejes: uno es horizontal y el otro es vertical. Cada eje del joystick está montado en un potenciómetro o potenciómetro o resistencia variable. Los puntos medios se reducen como Rx y Ry. Estos pines llevan como pines de señal de salida para JOYSTICK. Cuando la palanca se mueve a lo largo del eje horizontal, con el voltaje de suministro presente, el voltaje en el pin Rx cambia.
El voltaje en Rx aumenta cuando se mueve hacia adelante, el voltaje en el pin Rx disminuye cuando se mueve hacia atrás. De manera similar, el voltaje en Ry aumenta cuando se mueve hacia arriba, el voltaje en el pin Ry disminuye cuando se mueve hacia abajo.
Entonces tenemos cuatro direcciones de JOYSTICK en dos canales ADC. En casos normales, tenemos 1 voltio en cada pin en circunstancias normales. Cuando se mueve la palanca, el voltaje en cada pin sube o baja dependiendo de la dirección. Entonces, cuatro direcciones como (0V, 5V en el canal 0) para el eje x; (0 V, 5 V en el canal 1) para el eje y.
Vamos a usar dos canales ADC de ATMEGA8 para hacer el trabajo. Vamos a utilizar el canal 0 y el canal 1.
Componentes requeridos
Hardware: ATMEGA8, fuente de alimentación (5v), PROGRAMADOR AVR-ISP, LED (4 piezas), condensador de 1000uF, condensador de 100nF (5 piezas), resistencia de 1KΩ (6 piezas).
Software: Atmel studio 6.1, progisp o flash magic.
Diagrama de circuito y explicación de trabajo
El voltaje en JOYSTICK no es completamente lineal; será ruidoso. Para filtrar el ruido, se colocan condensadores a través de cada resistencia en el circuito como se muestra en la figura.
Como se muestra en la figura, hay cuatro LED en el circuito. Cada LED representa cada dirección de JOYSTICK. Cuando la palanca se mueve en una dirección, el LED correspondiente se ilumina.
Antes de seguir adelante tenemos que hablar del ADC de ATMEGA8, En ATMEGA8 podemos dar entrada Analógica a cualquiera de los CUATRO canales de PORTC, no importa qué canal elijamos ya que todos son iguales, vamos a elegir el canal 0 o PIN0 de PORTC.
En ATMEGA8, el ADC tiene una resolución de 10 bits, por lo que el controlador puede detectar un cambio mínimo de Vref / 2 ^ 10, por lo que si el voltaje de referencia es 5V obtenemos un incremento de salida digital por cada 5/2 ^ 10 = 5mV. Entonces, por cada incremento de 5mV en la entrada, tendremos un incremento de uno en la salida digital.
Ahora tenemos que configurar el registro de ADC según los siguientes términos, 1. En primer lugar, debemos habilitar la función ADC en ADC.
2. Aquí obtendremos un voltaje de entrada máximo para la conversión de ADC de + 5V. Entonces podemos configurar el valor máximo o la referencia de ADC a 5V.
3. El controlador tiene una función de conversión de disparador que significa que la conversión de ADC se lleva a cabo solo después de un disparador externo, ya que no queremos que tengamos que configurar los registros para que el ADC se ejecute en modo de ejecución libre continuo.
4. Para cualquier ADC, la frecuencia de conversión (valor analógico a valor digital) y la precisión de la salida digital son inversamente proporcionales. Entonces, para una mejor precisión de la salida digital, tenemos que elegir una frecuencia menor. Para un reloj ADC normal, estamos configurando la preventa de ADC al valor máximo (2). Dado que estamos usando el reloj interno de 1 MHZ, el reloj de ADC será (1000000/2).
Estas son las únicas cuatro cosas que necesitamos saber para comenzar con ADC.
Las cuatro características anteriores se establecen mediante dos registros:
ROJO (ADEN): Este bit debe establecerse para habilitar la función ADC de ATMEGA.
AZUL (REFS1, REFS0): Estos dos bits se utilizan para configurar el voltaje de referencia (o voltaje de entrada máximo que le vamos a dar). Como queremos tener un voltaje de referencia de 5V, REFS0 debe establecerse, según la tabla.
AMARILLO (ADFR): Este bit debe establecerse para que el ADC funcione continuamente (modo de ejecución libre).
ROSA (MUX0-MUX3): Estos cuatro bits son para indicar el canal de entrada. Dado que vamos a usar ADC0 o PIN0, no necesitamos establecer ningún bit como se indica en la tabla.
MARRÓN (ADPS0-ADPS2): estos tres bits son para configurar el prescalar para ADC. Como estamos usando un prescalar de 2, tenemos que establecer un bit.
VERDE OSCURO (ADSC): este bit se establece para que el ADC inicie la conversión. Este bit puede desactivarse en el programa cuando necesitemos detener la conversión.