'가속도센서'에 해당되는 글 3건

  1. 2015.01.15 각도센서 회로도 (2)
  2. 2015.01.15 MMA7260Q_3AXIS (2)
  3. 2011.08.15 3축 가속도 센서를 이용한 그래프!! (11)

각도센서는 디지털형과 아날로그형이 있다.

이 실험에서 아날로그 및 디지털 실험을 해 볼 것이며, SCA61T라는 모델이다.


대략적으로 스펙은 아래와 같으며, 1축 모델이다.

- Measuring ranges ±30°

- 0.0025° resolution

- Single +5 V supply


SCA61T 모델의 형태는 다음 아래와 같다.







이 모델을 가지고 설계하면서 문제점이 한가지 발생하였다.

이는 5V에서 동작하는 Chip으로써, 전압 레벨쉬프트를 해줘야하는 번거로움이 생기었다.


이에 SPI의 경우, 5V <->3.3V 데이터 통신상에는 문제가 되지 않을 것으로 예상되지만 장시간 사용시 IC에 치명적인 손상이 염려되어

전압레벨변환기은 TXS0104모델로 선정하여 회로도를 그렸다.



 회로도

 angle sensor.pdf

 




 



'DSP(28335) > 각도센서 계획중.' 카테고리의 다른 글

각도센서 회로도  (2) 2015.01.15
Posted by 숭덕이
2015.01.15 16:42

기존에 3축 가속도센서 모듈을 가지고 있기때문에 이를 활용.

- 감도 (1.5g/2g,4g/6g) 선택가능

- 저전압 설계 (2.2V ~ 3.6V)

- 방식은 ADC로 데이터 X,Y,Z 출력


 파일

 3AXIS.pdf



MMA7260Q의 경우 Zero g offset 값은 1.65입니다. (3.3V/2 = 1.65V)

Sleep Mode 진입시 : 3uA


또한 DSP의 ADC 분해능은 2^12=4096Bit이기때문에 Atmega 10Bit보다 정밀하게 측정 할 수 있다.


예를 들면 다음 아래와 같다.


10bit 분해능 : 3.3V / 1024 = 3.223mV

12bit 분해능 : 3.3V / 4096 = 0.805mV 


로 계산된다. 이는 10bit 보다 12bit가 약 4배 정도 분해능이 좋다고 할 수 있다. 

이에 자세한 내용은 추후 공부하면서 부가적으로 설명하겠다.



이는 기준점에 따라 X,Y,Z축이 변경 됨을 확인 할 수 있다.


다음편 연재....







'' 카테고리의 다른 글

MMA7260Q_3AXIS  (2) 2015.01.15
Posted by 숭덕이
 
안녕하세요 숭덕이 박제현 입니다. 또 오랜만에 이렇게 글을 쓰게 되네요!!
요즘 제품하나씩 사서 테스트하기가 힘드네요!!! 물가가 워낙에 비싸다 보니 일단 오늘은 3축 가속도센서를 이용하여
X,Y,Z 값의 데이터만 받아야겠습니다. 이 센서는 이동하는 물체의 가속도나 충격의 세기를 측정하는 센서입니다.
응용분야는 가속도 센서 측정이 필요한 모든 분야에서 사용이 가능하며, 로봇의 움직임, 기울어짐 측정가능, 예를 들어 네비게이션의 센서로 많이 활용됩니다. 요즘은 의학쪽으로  GPS를 통해 순간의 기울어짐을 보고 공공기간에 알라는 시스템이 몇가지 나온것으로 알고 있습니다. 또한 3축 가속도 센서를 가지고 계측기를 만들기에는 오차가 있기떄문에 무리가 있는 듯 합니다.
                 MMA7260Q  




2011년 8월 16일 새벽 1시 37분에 글을 올립니다.


출력방식  아날로그 
제품군  가속도계 
 X, Y, Z 
가속범위  1.5g, 2g, 4g, 6g 
감도  800mV/g, 600mV/g, 300mV/g, 200mV/g 
전압공급  2.2V ~ 3.6V 


g-Select1 g-Select2 가속범위   감도
 HIGH  HIGH 0~6g   200mV/g
HIGH  LOW 0~4g   300mV/g
 LOW  HIGH 0~2g  600mV/g
 LOW LOW  0~1.5g  800mV/g



계산 방식
1024단계로 10비트 샘플링 AVR128기준으로 설명드리겠습니다.
 Resolution = (Vout / 3.3) * 1024




        AVR128에 ADC 포트가 F포트이기때문에 ADC 0, 1, 2번 포트를 사용했습니다.


     
데이터값이 어떻게 나오는지 변화를 확인하기 위해 CP2102칩을 이용하여 USART로
통신해서 받아보겠습니다.


     
 /SLP는 저항이 PULL-UP이 되어 있어 다른신호를 인가하지 않을 경우 Normal Operation Mode로동작하고 g-Select1,2는 LOW,LOW로 줌으로써 1.5g 와 800mV/g를 사용했습니다.
기본적으로는 풀다운이 되어 있습니다.


Apple | iPhone 3GS | Normal program | Average | 1/15sec | F/2.8 | 3.9mm | ISO-160 | No flash function











X,Y,Z 축마다의 그래프입니다.



       




#include <mega128.h>
#include <delay.h>
#include <stdio.h>
 
char  str[50];
int ADC_I;
float ADC_X,ADC_Y,ADC_Z; 
int i=0;
//
void TX0_CHAR(char Sdata){ while ((UCSR0A&0x20)==0); UDR0=Sdata; }
 
void main(void){
    char i;       
    DDRA=0x03;
    UCSR0B=0x08; UCSR0C=6; UBRR0H=0; UBRR0L=103;  
    #asm("sei")
    
    while(1){    
       
        delay_us(104); 
       
        ADMUX=0; ADCSRA=0xE7; ADC_I=ADCW;
        ADC_X=(float)ADC_I * 3.3 / 1023.0;
        i=0; while(str[i])TX0_CHAR(str[i++]); // TXD1
//
        delay_us(104);
        ADMUX=1; ADCSRA=0xE7; ADC_I=ADCW;
        ADC_Y=(float)ADC_I * 3.3 / 1023.0;
        i=0; while(str[i])TX0_CHAR(str[i++]); // TXD1  
        
        delay_us(104);    
        
        ADMUX=2; ADCSRA=0xE7; ADC_I=ADCW;
        ADC_Z=(float)ADC_I * 3.3 / 1023.0;
        i=0; while(str[i])TX0_CHAR(str[i++]); // TXD1  
        
   sprintf(str,"%3.1f,%3.1f,%3.1f \n", ADC_X,ADC_Y,ADC_Z);
    }
}    
 


Posted by 숭덕이