Autor Tema: adxl335 interpretar choque  (Leído 1231 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
adxl335 interpretar choque
« en: 16 de Agosto de 2017, 10:35:26 »
Saludos, encontré este código para el uso del Acelerómetro  adxl335.
Funciona bien la captura de los ejes, pero alguien tiene alguna aplicación de este integrado... quiero saber como interpreto cuando haya un choque o una desaceleracion fuerte.


Código: C
  1. #include <12f683.h>
  2. #fuses INTRC_IO,NOWDT,NOMCLR,NOBROWNOUT
  3. #use delay(clock=8000000)
  4. #define adc=10;
  5. #use rs232(baud=9600,xmit=PIN_A5,rcv=PIN_A3,bits=8)   // RX=A3, TX=A5
  6. float get_lectura(int channel);
  7. float ejex,ejey,ejez = 0.0;
  8.  
  9. void main(){
  10.   setup_adc_ports(sAN0|sAN1|sAN2);
  11.    setup_adc(ADC_CLOCK_INTERNAL);
  12.    while(1){
  13.       ejex = get_lectura(0);
  14.       ejey = get_lectura(1);
  15.       ejez = get_lectura(2);
  16.       printf("ejeX:%f ejeY:%f ejeZ: %f \r\n",ejex,ejey,ejez);
  17.      
  18.      output_toggle(PIN_A4);delay_ms(500);    // running
  19.    }
  20. }
  21.  
  22. float get_Lectura(int channel){
  23.    float medicion=0;                    
  24.    int1 done = 0;                        
  25.    setup_adc (adc_clock_internal);      
  26.    setup_adc_ports (all_analog);        
  27.    set_adc_channel (channel);          
  28.    delay_ms(1);                      
  29.    medicion=read_adc ();              
  30.    done = adc_done();                  
  31.    while(!done){done = adc_done();}
  32.    setup_adc (adc_off);                
  33.    return medicion;                    
  34. }

Resultado
ejeX:99.00 ejeY:85.00 ejeZ: 108.00
ejeX:99.00 ejeY:85.00 ejeZ: 108.00
ejeX:99.00 ejeY:85.00 ejeZ: 108.00
« Última modificación: 16 de Agosto de 2017, 10:39:59 por cvargcal »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:adxl335 interpretar choque
« Respuesta #1 en: 16 de Agosto de 2017, 21:27:37 »
Deberias detectar una variacion grande en la aceleracion, en cualquiera de los ejes, o su combinado. En ese codigo es complejo que lo logres porque la medicion se realiza cada 500ms.