Buenas,
Estoy desarrollando un proyecto para medir la aceleración de un movimiento lineal de apenas 2 segundos de duración. Para ello estoy utilizando un acelerómetro analógico LIS344ALH y un PIC24FJ128GC010. Para la conversión utilizo uno de los ADC internos de 12 bits y estoy trabajando con el compilador CCS.
La primera prueba que hice para ver que funcionaba el código escrito y el ADC fue la clásica con un potenciómetro, la cual resultó satisfactoria a la primera. No se apreciaba variación en la lectura del valor.
Al conectar una de las salidas del acelerómetro en el mismo canal del ADC, la lectura se volvió muy inestable (aún teniendo el acelerómetro totalmente fijo).
He leído que una de las soluciones es trabajar tomando medias, pero considero que no es una solución óptima para el proyecto que quiero desarrollar. También he leído que la colocación de un condensador de 0.1uF entre las tensiones de referencia del ADC ayuda a ello (esto fue lo primero que hice al iniciar el proyecto).
Después de pasar varias horas, no he encontrado ninguna solución que me ayude a resolver mi problema.
Alguien podría echarme una mano con ello?
Muchas gracias de antemano.
#include <24FJ128GC010.H>
#device adc=12
#fuses FRC, NOWDT, NOPROTECT, BROWNOUT, ICSP1
#use delay(clock = 8000000)
#include <flex_lcd.c>
//==========================
float tension;
signed int32 read;
void main()
{
setup_oscillator(OSC_INTERNAL,8000000);
lcd_init();
delay_ms(30);
setup_adc_ports(sAN6,VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(6);
while(1){
delay_ms(1000);
read = read_adc();
tension = (read*3.11)/4095;
printf(lcd_putc,"\fE: %2.2f",tension);
printf(lcd_putc,"\n%u",read);
}
}