본문 바로가기
아두이노_프로세싱/아두이노

가속도센서

by 돌돌쌤 2013. 6. 26.

가속도 센서

 

사용한 가속도센서는 ADXL335로

3축(x,y,z축) ±3g 측정가능하다.

 

 

datasheet를 참고 하면

전원은 3V를 사용 (유의 해야한다. 아두이노의 3.3V를 사용하면된다.)

각 축이 0g상태에서는 1.5V를 출력하고

±1g 마다 ±300mV로 가감하여 출력한다.

 

실제로 자연 상태는 1g로

센서의 각 축을 -90도와 90도로 기울리면

각각 -1g와 1g가 측정할수 있다.

즉 (x축만 정리하면)

 x축이 중력방향으로 기울면

(90도, 지표의 수직아래)

 1g상태

 x축 단자에서 1.8V출력

 x축이 중력방항과 수직이면

(0도, 지표와 수평)

 0g상태

 x축 단자에서 1.5V출력

 x축이 중력방향과 반대방향으로 기울면

(-90도, 지표의 수직위)

 -1g상태 

 x축 단자에서 1.2V출력 된다.

=> 1g 방향과 각도, -1g 방항과 각도는 반대일수도....

 

실제 스케치후 출력되는 전압을 테스터로 찍어본결과

1g    / 0g    / -1g에서

1.9V / 1.58V/ 1.26V 로 측정되었다.

(datasheet 에서의 오차 범위에서 측정됨.)

 

센서의 출력된 값을

아두이노에서 아날로그 핀으로 입력을 받아 처리된 값을 계산해보면

입력받은 0~5V를 0~1023값으로 표현하므로

0g에서 센서가 1.5V를 출력한다면

아두이노에서는 1.5V를 입력받아

(1.5/5)*1024 = 307.2 로 처리될것으로 계산된다.

 

따라서 정리하면

각도 

 가속도

측정한 출력전압

아두이노

아날로그값 계산

실제 아두이노에서

아날로그로 입력값 

90 

1g 

1.9V 

 (1.9/5)*1024 = 389.12

 407

 0

 0g

 1.58V

 (1.58/5)*1024 = 323.58

 338

 -90

 -1g

 1.26V

 (1.26/5)*1024 = 258.04

 270

=> 계산된 값과 12~18정도 차이를 보임(왜????...)

 

결국 -1g ~ 1g를 x축은 270~407로 표현하므로 이값을 이용 각도로 표현이 가능하겠다

(각도로 표현 하는 것은 다음글에서 정리...)

 

 

센서 연결 회로도

 

 

 

가속도센서값을 받기 위한 스케치

-----------------------------------------------------------------------------

int x,y,z;

void setup(){
  Serial.begin(9600);
}

void loop(){
  x = analogRead(0);
  y = analogRead(1);
  z = analogRead(2);
 
  Serial.print("x : ");
  Serial.print(x);
  Serial.print("    ");
  Serial.print("y : ");
  Serial.print(y);
  Serial.print("    ");
  Serial.print("z : ");
  Serial.println(z);

  delay(100);
}

-----------------------------------------------------------------------------

 

입력 받은 센서값(x:0g / y:0g / z:1g)