Acelerómetro Microcontrolador ATMEL

Embed Size (px)

DESCRIPTION

autor:https://hetpro-store.com/

Citation preview

  • Posted by Administrador on abr 15, 2014 in AVR | 3 comments

    Sensor Acelerometro MMA8451Q Sensor Acelerometro MMA8451Q Ejemplo para la tarjeta acelerometro MMA8451 (Link) HeTPro.

    Sensor Acelermetro

    Descripcin del sensor acelerometro Para este ejemplo se har uso de un sensor acelerometro, este es un modulo independiente, el cual es controlado va I2C (Inter-Integrated Circuit), este protocolo es tambin conocido como TWI (Two-Wire-Interface).En este ejemplo el Microcontrolador nos entrega los datos de modo serial y los estaremos observando en la computadora con el software LabView.

  • DIAGRAMA ESQUEMTICO

    sensor acelerometro

    Nota 1: Es muy importante que cuando se programe el Microcontrolador se retire el Sensor acelerpmetro y una vez programado retirar el programador y alimentar el circuito con una fuente de 3.3 Volts. El convertidor TTL/CMOS-RS232 funciona con 5V o 3.3V, pero en este caso ser alimentado con 3.3V. MATERIALES Tarjeta con sensor acelerometro de 3 ejes MMA8451 1 Microcontrolador ATMEGA8535 Programador USBasp V3.0 Convertidor TTL/CMOS RS232 Fuente de 3.3 Volts Cable USB serial (opcional)

  • INTRODUCCIN Sensor acelerometro DESCRIPCIN Son pequeos circuitos integrados que entregan en una de sus salidas (pueden disponer de una para cada eje espacial) una serie de pulsos cuya frecuencia depende de la aceleracin a la que estn sometidos. Un Microcontrolador puede leer esos trenes de pulsos y determinar el sentido y la magnitud de la aceleracin. Su precisin es tan grande que se los utiliza para medir vibraciones o para construir mandos de juegos. Muchos mviles o reproductores de medios han comenzado tambin a incluir acelermetros. Para este ejemplo el sensor acelerometro MMA8551 convierte de manera interna los datos y nos los entrega de manera digital a travs del protocolo I2C. CARACTERSTICAS DEL SENSOR

    Voltaje de alimentacin de 1.95V a 3.6V Voltaje lgico de 1.6V a 3.6V Seleccin de escala de trabajo 2g/4g/8g Tasa de salida de datos (ODR) de 1.56 Hz a 800 Hz Salida digital de 8 y 14-bits Interfaz digital I2C (TWI) 2 interrupciones programables Filtro pasa altas disponible Ruido 99 g/Hz

    I2C o TWI I2C es un bus de comunicaciones en serie. Su nombre viene de Inter-Integrated Circuit (Circuitos Inter-Integrados). La versin 1.0 data del ao 1992 y la versin 2.1 del ao 2000, su diseador es Philips. La velocidad es de 100 Kbits por segundo en el modo estndar, aunque tambin permite velocidades de 3.4 Mbit/s. Es un bus muy usado en la industria, principalmente para comunicar microcontroladores y sus perifricos en sistemas integrados (Embedded Systems) y generalizando ms para comunicar circuitos integrados entre si que normalmente residen en un mismo circuito impreso. La principal caracterstica de IC es que utiliza dos lneas para transmitir la informacin: una para los datos y por otra la seal de reloj. Tambin es necesaria una tercera lnea, pero esta slo es la referencia GND. Las lneas para transmitir datos mencionadas anteriormente son:

  • SDA: datos. SCL: reloj. GND: Referencia. En la siguiente imagen se puede ver un ejemplo de conexin de un Microcontrolador, en modo maestro y varios otros dispositivos conectados como esclavos, como ADCs DACs otros microcontroladores, sensores etc.

    sensor acelerometro

    Para adquirir el sensor acelerometro, visite nuestra tienda en linea: http://hetpro-store.com/sensores-es/inerciales/tarjeta-acelerometro-mma8451.html LABVIEW DESCRIPCIN LabVIEW es una herramienta grfica para pruebas, control y diseo mediante la programacin. El lenguaje que usa se llama lenguaje G, donde la G simboliza que es lenguaje Grfico. Este programa fue creado por National Instruments (1976) para funcionar sobre mquinas MAC, sali al mercado por primera vez en 1986. Ahora est disponible para las plataformas Windows, UNIX, MAC y GNU/Linux. La ltima versin es la 2011. Los programas desarrollados con LabVIEW se llaman Instrumentos Virtuales, o VIs, y su origen provena del control de instrumentos, aunque hoy en da se ha expandido ampliamente no slo al control de todo tipo de electrnica (Instrumentacin electrnica) sino tambin a su programacin embebida. Un lema tradicional de LabVIEW es: La potencia est en el Software, que con la aparicin de los sistemas multincleo se ha hecho an ms potente. Entre sus objetivos estn el reducir el tiempo de desarrollo de aplicaciones de todo tipo (no slo en mbitos de Pruebas, Control y Diseo) y el permitir la entrada a la informtica a profesionales de cualquier otro campo. LabVIEW consigue combinarse con todo

  • tipo de software y hardware, tanto del propio fabricante (tarjetas de adquisicin de datos, PAC, Visin, instrumentos y otro Hardware) como de otros fabricantes. Para adquirir el Software, visite el siguiente enlace: http://www.ni.com/labview/esa/ Principales usos Adquisicin de datos y anlisis matemtico. Comunicacin y control de instrumentos de cualquier fabricante. Automatizacin industrial y programacin de PACs (Controlador de Automatizacin Programable). Diseo de controladores: simulacin, prototipaje rpido, hardware-en-el-ciclo (HIL) y validacin. Diseo embebido de micros y chips. Control y supervisin de procesos. Visin artificial y control de movimiento. Robtica. A continuacin tenemos el programa en lenguaje C, fue desarrollado en AVR Studio y compilado con WinAVR. En el cdigo se describe la inicializacin de los mdulos de comunicacin del Microcontrolador al Sensor acelermetro MMA8451 que es por protocolo I2C y del Microcontrolador a la Computadora que es por transmisin de modo serial. Para este ejemplo se utilizo el Microcontrolador ATmega8535 ya que su artitectura nos permite la comunicacin por el protocolo I2C, que son los pines 22(SCL) y 23(SDA) y la transmisin de los datos obtenidos del Sensor acelermetro de modo serial, que es por los pines 14(Rx) y 15(Tx).

  • PROGRAMA EN C

    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

    #include //Librera necesaria para las entradas y salidas #include //Librera para usar los retardos de tiempo #include #include #define Clock 8000000 //Frecuencia de trabajo del Microcontrolador void TWI_config (unsigned long int); //Declarar las funciones char i2c_read(char,char); int dato; void InitUART (unsigned char baudrate) //Configurando la UART { UBRRL = baudrate; //Seleccionando la velocidad UCSRB = (UCSRB | _BV(RXEN) | _BV(TXEN)); //Habilitando la transmisin y recepcin } unsigned char ReceiveByte(void) //Funcin para recibir un byte { while ( !(UCSRA & (1

  • 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

    int main (void) { InitUART( 51 ); //Inicializar la UART TWI_config(100000); //Configurar el I2C o TWI unsigned char valor=0; while(1) { TransmitByte('O'); _delay_ms(20); i2c_transmit(0x3A,0x2A,0x01); //Transmitir: direccin 0x3A, registro 0x2A, dato 0x01 _delay_ms(10); valor = i2c_read(0x3A,0x01); //leer: direccin 0x3A, registro 0x01 TransmitByte(valor); _delay_ms(10); valor = i2c_read(0x3A,0x03); //leer: direccin 0x3A, registro 0x03 TransmitByte(valor); _delay_ms(10); valor = i2c_read(0x3A,0x05); //leer: direccin 0x3A, registro 0x05 TransmitByte(valor); _delay_ms(10); } } void TWI_config(unsigned long int frecuencia) { TWBR = ((Clock/frecuencia) - 16)/8; // Registro para la frecuencia de SCL TWSR=(0

  • 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

    while(!(TWCR & 0x80)); // Esperando la confirmacin TWDR = address; // Cargar direccin (adress) en el dispositivo TWCR = 0x84; // Transmitir while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWDR = reg; // Enviar nmero de registro a leer TWCR = 0x84; // Transmitir while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWCR = 0xA4; // Volver a mandar un bit de inicio while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWDR = address+1; // Transmitir direccin por I2C con la lectura habilitada TWCR = 0xC4; // Borrar la bandera de interrupcin de transmisin while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWCR = 0x84; // Transmitir (Solicitud del ltimo byte) while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin read_data = TWDR; // Tomar el dato TWCR = 0x94; // Mandar un bit de paro al bus I2C return read_data; } void i2c_transmit(char address, char reg, char data) { TWCR = 0xA4; // Mandar el bit de inicio para el bus I2C while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWDR = address; // Cargar direccin (adress) en el dispositivo TWCR = 0x84; // Transmitir while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWDR = reg; TWCR = 0x84; // Transmitir while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWDR = data; TWCR = 0x84; // Transmitir while(!(TWCR & 0x80)); // Esperar confirmacin de la transmisin TWCR = 0x94; // Mandar un bit de paro al bus I2C }

  • LABVIEW Como se mencion anteriormente el LabView es una herramienta grfica para pruebas, control, etc. Optamos por utilizar este Software porque es muy fcil de usar y hacer la comunicacin con el Microcontrolador de modo serial, para el procesamiento y presentacin de datos grficamente. En la siguiente imagen es donde se mostraran los datos que obtendremos del sensor. Tenemos 3 indicadores principalmente, uno en el que se muestra una grfica lineal con los valores de los ejes que se estn leyendo del Sensor, las barras muestran los mismos valores de la grafica pero de una manera ms sencilla de visualizar. Y los gauges nos indican la inclinacin que se tiene en ese momento la Tarjeta con el Sensor acelermetro.

    sensor acelerometro

  • En las siguientes imgenes se muestra el diagrama de bloques, que es el programa propiamente dicho, donde se define su funcionalidad, aqu se colocan conos que realizan una determinada funcin y se interconectan (el cdigo que controla el programa). Suele haber una tercera parte icono/conector que son los medios utilizados para conectar un VI con otros VIs.

    sensor acelerometro

  • En la siguiente imagen se muestra la configuracion que se hace en el Labview para comunicar el microcontrolador con la computadora mediante el cable USB-RS232.

    Sensor acelerometro

  • En la siguiente imagen se muestra el procesamiento de los datos que nos enva el Microcontrolador que son en forma de caracteres.

    sensor acelerometro

  • En la siguiente imagen se muestra en Registro en el que se van almacenando los datos para ser mostrados ms adelante en una grafica y algunos indicadores.

    sensor acelerometro

    En la siguiente imagen se muestra el final del programa que es donde se muestran los datos en una grafica e indicadores. Los gauges muestran la inclinacin que tiene el sensor con respecto a los ejes X y Y.

  • sensor acelerometro

  • sensor acelerometro

    En el caso que se produzca un error en la transmisin de datos se mostraran los datos anteriores en los indicadores, y el error simplemente saldr del ciclo. En la siguiente imagen se muestra lo explicado anteriormente.

  • Related Posts

    Sensor de distancia SRF08

    Sensor de vibracin MS 605-00004

    Sensor de Fuerza o Presin MF01

  • Matriz de LEDs 57

    QRE1113 mostrar graficamente los datos

    QRE1113 Tarjeta sensor siguelineas ADC

    3 Comments 1.

    Hector Torres septiembre 22, 2014

  • Edgar, que tal, deja busco los archivos y veo si los podemos subir aqu mismo al tutorial. Porfavor mndame un mensaje por este medio en unos 1 o 2 das haber si los encontr. REPLY

    2. Agustn Garibo abril 26, 2015 Hola que tal. Hace ya mucho tiempo te compr este sensor a travs de este medio, esta viendo como seguir este tutorial y la verdad es que no tengo conocimiento sobre como usar LABVIEW, te agradecera muchisimo si me facilitaras los archivos. Que pases buen da, y felicidades por tu empresa REPLY

    3. Hector Torres mayo 6, 2015 Agustin, lamentablemente los archivos no los tenemos ya pero solo busca los bloques y seguro los encuentras aunque puede resultar un

    poco tedioso, pero si se puede

    HETPRO ACELEROMETROSensor Acelerometro MMA8451QSensor Acelerometro MMA8451QINTRODUCCINI2C o TWI

    PROGRAMA EN CPROGRAMA EN C

    LABVIEWLABVIEWRelated Posts3 Comments