Posted by Administrador Administrador on on abr 15, 2014 in AVR | 3 comments
Sensor Acelerometro MMA8451Q Sensor Acelerometro MMA8451Q Ejemplo para la tarjeta acelerometro MMA8451 (Link) HeTPro.
DIAGRAMA ESQUEMÁTICO
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
INTRODUCCIÓN
•
•
•
•
•
•
•
Sensor acelerometro DESCRIPCIÓN Son pequeños 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 aceleración a la que están sometidos. Un Microcontrolador puede leer esos trenes de pulsos y determinar el sentido y la magnitud de la aceleración. Su precisión es tan grande que se los utiliza para medir vibraciones o para construir mandos de juegos. Muchos móviles o reproductores de medios han comenzado también a incluir acelerómetros. Para este ejemplo el sensor acelerometro MMA8551 convierte de manera interna los datos y nos los entrega de manera digital a través del protocolo I2C. CARACTERÌSTICAS DEL SENSOR Voltaje de alimentación de 1.95V a 3.6V Voltaje lógico de 1.6V a 3.6V Selección de escala de trabajo ±2g/±4g/±8g ±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
SDA: datos. SCL: reloj. GND: Referencia.
En la siguiente imagen se puede ver un ejemplo de conexión de un Microcontrolador, en modo maestro y varios otros dispositivos conectados como esclavos, como ADCs DACs otros microcontroladores, sensores etc. etc .
sensor acelerometro
Para adquirir el sensor acelerometro, visite nuestra tienda en linea: http://hetprostore.com/sensores-es/inerciales/tarjeta-acelerometro-mma8451.html LABVIEW DESCRIPCIÓN LabVIEW es una herramienta gráfica para pruebas, control y diseño mediante la programación El lenguaje que usa se llama lenguaje G donde la G simboliza
tipo de software y hardware, tanto del propio fabricante (tarjetas de adquisición de datos, PAC, Visión, instrumentos y otro Hardware Hardware)) como de otros fabricantes. Para adquirir el Software, visite el siguiente enlace: enlace : http://www.ni.com/labview/esa/ Principales usos ○ Adquisición de datos y análisis matemático. ○ Comunicación y control de instrumentos instrumentos de cualquier c ualquier fabricante. fabricante. ○ Automatización industrial y programación de PACs (Controlador de Automatización Programable) Programable). ○ Diseño de controladores: simulación, prototipaje rápido, hardware -en-el-ciclo (HIL) y validación. ○ Diseño embebido de micros y chips. ○ Control y supervisión de procesos. ○ Visión artificial y control de movimiento. ○ Robótica. A continuación tenemos el programa en lenguaje C, fue desarrollado en AVR Studio y compilado con WinAVR. En el código se describe la inicialización de los módulos de comunicación del Microcontrolador al Sensor acelerómetro MMA8451 que es por protocolo I2C y del Microcontrolador a la Computadora que es por transmisión de modo modo serial. Para este ejemplo se utilizo el Microcontrolador ATmega8535 ya que su artitectura
01 02 03 04 05
#inclu de
//Librería necesaria para las entradas y salidas #inclu de<útil/delay.h> //Librería para usar los retardo s de tiempo #include #include<útil/twi.h> #define Clock 800 800000 0000 0 //Frecuenci //Fre cuenci a de trabajo del Micro cont rolado r
06 07
void TWI TWI_config _config (unsigned long int);
//Decla // Declarar rar las funciones
08 09 10
char i2c_read(char,char); int dato;
11 12 13 14 15 16
void InitUART (unsign ed char baudrate) { UBRRL UBRR L = baudrate; UCSRB UC SRB = (UCS (UCSRB RB | _BV(RX _BV(RXEN) EN) | _BV(T _BV(TXEN XEN)); )); }
//Configur ando la UART //Seleccion //S eleccion ando la veloci dad //Habili tando la transm isi ón y recepci ón //Habili
17 18 19 20 21 22
unsigned char Re ReceiveByte ceiveByte(void) (void) { whil e ( !(UCS !(UCSRA RA & (1<
//Función //F unción para recibir un byte //Esperar la recepció n //Retornar el dato tomado de la UART //Retornar
23 24 25 26 27 28 29 30 31
void TransmitByte(unsigned char data ) { whil e ( !( UC UCSRA SRA & (1<
//Función // Función para transmitir dato //Esperar transmi sió n compl eta //Esperar //Deposit //De posit ar el dato para transmi tir lo
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
int main (void) { InitUART( 51 ); TWI_conf TWI_conf ig(100000); ig(100000); unsigned char valor=0; valor=0; while(1) { TransmitByte('O'); _delay_m s(20); i2c_trans mit(0x3A,0x2A,0x01); mit(0x3A,0x2A,0x01); _delay_m s(10); valor = i2c_read(0x3A,0x01); i2c_read(0x3A,0x01); TransmitByte(valor); _delay_m s(10); valor = i2c_read(0x3A,0x03); i2c_read(0x3A,0x03); TransmitByte(valor); _delay_m s(10); valor = i2c_read(0x3A,0x05); i2c_read(0x3A,0x05); TransmitByte(valor); _delay_m s(10); } }
//Inici //Inici alizar la UART //Configurar el I2C o TWI
//Transmitir : direc ción 0x3A, regist ro 0x2A, dato 0x01 //leer: //leer: direc ción 0x3A, regist ro 0x01
//leer: //leer: direc ción 0x3A, regist ro 0x03
//leer: //leer: direc ción 0x3A, regist ro 0x05
55 56 57 58 59 60
void TWI_config(unsigned TWI_config(unsigned long int fr ecuencia) { TWBR = ((Clock/frecuenc ia) - 16)/ 16)/8; 8; // Registro para la frecuenc ia de SCL TWSR=(0<
61 62 63 64 65
char i2c_read(char address, char reg) { char r ead_da ead_data ta = 0; TWCR = 0xA4; // Mandar el bit de inic io para el bus I2C
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
whil e(!(TW e(!(TWCR CR & 0x80)) 0x80));; TWDR = address; TWCR = 0x84; whil e(!(TW e(!(TWCR CR & 0x80)) 0x80));; TWDR = reg; TWCR = 0x84; whil e(!(TW e(!(TWCR CR & 0x80)) 0x80));; TWCR = 0xA4; whil e(!(TW e(!(TWCR CR & 0x80)) 0x80));; TWDR = address+1; TWCR = 0xC4; whil e(!(TW e(!(TWCR CR & 0x80)) 0x80));; TWCR TWC R = 0x84 0x84;; whil e(!(TWC e(!(TWCR R & 0x80)) 0x80));; read_data = TWDR TWDR;; TWCR = 0x94; return read_data; }
// Esperando la conf irmac ión // Cargar dir ección (adress) en el dispo sit ivo // Transmit ir // Esperar confi rmac ión de la transm isió n // Enviar número de regist ro a leer // Transmit ir // Esperar confi rmac ión de la transm isió n // Volver a mandar un bit de inic io // Esperar confi rmac ión de la transm isió n // Transmit ir dir ecció n por I2C con la lectur a habilit ada // Borr ar la bandera de interr upc ión de transmi sión // Esperar confi rmac ión de la transm isió n // Transmitir (Solicitud del último byte) // Esperar confi rmac ión de la transm isió n // Tomar el dato // Mandar un bit de paro al bus I2C
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
void i2c_transmit(char address, char reg, char data) { TWCR = 0xA4; // Mandar el bit de inic io para el bus I2C whil e(!(TWC e(!(TWCR R & 0x80)) 0x80));; // Esperar confi rmació n de la transm isi ón TWDR = address; // Cargar direcc ión (adress) en el dispo sit ivo TWCR = 0x84; // Transmit ir whil e(!(TWC e(!(TWCR R & 0x80)) 0x80));; // Esperar conf irmaci ón de la transm isi ón TWDR = reg; TWCR = 0x84; // Transmit ir whil e(!(TWC e(!(TWCR R & 0x80)) 0x80));; // Esperar conf irmaci ón de la transm isi ón TWDR = data; TWCR = 0x84; // Transmit ir whil e(!(TW e(!(TWCR CR & 0x80)) 0x80));; // Esperar conf irmac ión de la transm isió n TWCR = 0x94; // Mandar un bit de paro al bus I2C }
LABVIEW Como se mencionó anteriormente el LabView es una herramienta gráfica para pruebas, control, etc. Optamos por utilizar este Software porque es muy fácil de usar y hacer la comunicación comunicación con el Microcontrolador Microcontrolador de modo serial, serial, para el procesamiento y presentación presentación de datos gráficamente. 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 gráfica lineal con los valores de los ejes que se están leyendo del Sensor, las barras muestran los mismos valores de la grafica pero de una manera más sencilla de visualizar. Y los gauges nos indican la inclinación que se tiene en ese momento la Tarjeta con el Sensor acelerómetro.
sensor acelerometro acelerometro
En las siguientes imágenes 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 función y se interconectan (el código 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 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 acelerometro
En la siguiente imagen se muestr muestraa el procesamiento procesamient o de los los datos que nos envía el Microcontrolador que son en forma de caracteres.
sensor acelerometro acelerometro
En la siguiente imagen se muestra en Registro en el que se van almacenando los datos para ser mostrados más adelante en una grafica y algunos indicadores.
sensor acelerometro 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 inclinación que tiene el sensor con respecto a los ejes X y Y.
sensor acelerometro acelerometro
sensor acelerometro
En el caso que se produzca un error en la transmisión 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 vibración MS 605-00004
•
Sensor de Fuerza o Presión MF01
•
Matriz de LEDs 5×7
•
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 mándame un mensaje por este medio en unos 1 o 2 días haber si los encontré. REPLY
2. Agustín Garibo abril Garibo abril 26, 2015 Hola que tal. Hace ya mucho tiempo te compré este sensor a través de este medio, esta viendo como seguir este tutorial y la verdad es que no tengo conocimiento sobre como usar LABVIEW, te agradecería muchisimo si me facilitaras los archivos. Que pases buen día, 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, tedioso, pero si se puede puede