2014. 1. 10. 15:00

로드셀처럼 변화값이 작은 센서들은 컴퓨터로 읽기 위해서 전압을 증폭해야 합니다.

(낮은 전압을 읽을 수 있는 보드라면 상관없지만 일반적인 범용보드들은 이정도로 낮은 값은 재대로 읽지 못합니다.)

아두이노에서 읽을 수 있는 전압값은 '참조 전압 /1024'이라고 입니다.

 

인터넷을 뒤져보면 1mV 정도까지는 읽는 듯 한데 직접 해보면 가변저항 이 값이 비교적 정확하게 들어오는 센서들이나 의미 있는 내용이고

값이 불안정하게 들어오는 센서들(로드 셀, 거리측정 센서) 같은 것들은 10mV정도부터 의미 있는 값으로 보는 게 맞는 듯 하네요.

 

어찌됐건 로드셀은 낮은 전압을 내보내기 때문에 증폭해야 아두이노에서 읽을 수 있습니다.

 

이 포스팅에서 사용된 증폭용 칩은 'AD620'입니다.

(참고 : 디바이스 마트 - AD620 )

 

약 500배 증폭을 위해 100Ω을 사용합니다.

데이터시트에 저항이 계산되어 있습니다.

 

(참고 : AllDataSheet.co.kr - AD620 데이터시트 (HTML) - Analog Devices 13/16 )

 

 

'AD620'를 사용하려면 마이너스 전압이 필요한데 이것을 위해 DC/DC컨버터인 'ICL7660'칩을 사용합니다.

(참고 : 디바이스 마트 - ICL7660SCPAZ)

 

 

1. 보드 구성

'AD620'는 양 전원 증폭기라 마이너스 전압(-V)이 필요합니다.

그래서 'ICL7660'와 캐패시터를 이용하여 마이너스 전압을 만들어 줘야 하죠.

 

2. 펌웨어 작성

이 포스팅에서 아두이노의 역활은 증폭된 값을 표시하는 용도이기 때문에 코드는 값을 '시리얼 모니터'에 출력하는 용도의 코드입니다.

int m_nA0 = 0;
int m_nA1 = 0;

void setup()
{
	Serial.begin(9600);
	pinMode(A0, INPUT);
	pinMode(A1, INPUT);

}

void loop()
{
	m_nA0 = analogRead(A0);
	m_nA1 = analogRead(A1);

	Serial.println((String)m_nA0 + " - " + (String)m_nA1 + " = " + (String)(m_nA0 - m_nA1));

	delay(100);
}

 

 

3. 테스트

딱히 증폭할 값이 없어서 체중계를 연결하여 테스트하였습니다.

(이 과정은 다른 포스트에서 설명하도록 하죠.)

(생각해보니 그냥 아두이노로 PWM값 출력해도 될 텐데 ㅡ.-;;)

 

테스터기를 이용할 때는 'OUTPUT'에 플러스, REF 그라운드를 연결하여 테스트합니다.

 

 

제가 체중계에 올라가면 전압이 높아지는 것을 볼 수 있습니다.

 

 

 

계산되어 나오는 값을 기준으로 -10~20 사이의 값이 아무것도 없을 때고 그 이상의 값이 제가 올라갔을 때입니다.

딱히 들고 올라갈 만한 것이 없어서 양쪽의 값이 일정합니다;;;

동영상의 끝쯤에 나름 이것저것 들고 올라갔는데 별 차이가 없네요 ㅎㅎㅎ

 

 

마무리

사실 이런 용도의 원칩도 많고 따로 칩을 안 써도 가능은 합니다.

상황에 맞게 사용하면 되는 것이죠 ㅎㅎ