Search results for 'AM-3AXIS'

ATmega128을 이용해 가속도값을 ADC로 읽어 CLCD에 출력하기.

2009/08/17 15:33 : View : 1322


이번엔 ATmega의 ADC기능을 이용하여 가속도센서의 값을 읽어내어 LCD에 출력해보겠습니다.
사용된 가속도센서 모듈은 NTC社의 AM-3AXIS 로서 X축과 Y축, 그리고 Z축의 가속도를 센싱할수 있습니다.
그 값은 아날로그로 출력되며 AVR의 ADC기능을 이용해 숫자화 해야 합니다.

차례로 X, Y, Z 값을 읽어 변수에 저장한 후 sprintf를 이용해 ASCII 값으로 변환 후 LCD에 뿌려주면 끝입니다^^
아래에 소스 나갑니다~ ㅋ

[code] #include #include #include #include #include #include "CLCD4.h> unsigned int adc0; unsigned int adca,adcb,adcc; void adc2lcd() { unsigned char str[16]; sprintf(str," %03d, %03d, %03d ",adca,adcb,adcc); LCD_str(0xC0,str); delay_ms(300); } void adc_init() { ADMUX= 0x40; ADCSRA= 0x7F; } SIGNAL(SIG_ADC) { } int main(void) { unsigned int temp; adc_init(); LCD_init(); sei(); LCD_str(0x80," X Y Z "); while(1) { ADMUX= 0x40; ADCSRA |= 0xC0; while((ADCSRA & 0x10) != 0x10); temp = ADCL; temp += (ADCH<<8); adca= temp; ADMUX= 0x42; ADCSRA |= 0xC0; while((ADCSRA & 0x10) != 0x10); temp = ADCL; temp += (ADCH<<8); adcb= temp; ADMUX= 0x44; ADCSRA |= 0xC0; while((ADCSRA & 0x10) != 0x10); temp = ADCL; temp += (ADCH<<8); adcc= temp; adc2lcd(); delay_ms(1); } } [/code]


지금까지 ADC는 많이 다루어 보았으므로 다른 설명하지 않겠습니다...
LCD 사용 헤더파일은 네이버 카페인 '아두이노 스토리'에서 가져왔습니다^^

그럼 작동되는 모습을 보시겠습니다.

2009/08/17 15:33 2009/08/17 15:33


ㄹㅔㅈㅕ Hardware/AVR , , , ,

  1. Blog Icon
    비밀방문자

    관리자만 볼 수 있는 댓글입니다.

  2. 제가 구입한 가속도센서는 10핀 박스헤더로 연결하기 편하게 나온 모듈 형태라 Atmega128키트에 선으로 연결하여 사용한것입니다.
    물론 이렇게 안하고 빵판이 달렸다면 거기다 회로를 구성하고 전원을 넣어주고, 신호선을 연결한다면 안될건 없습니다..^^ 의외로 쉬운문제지요.
    방금 모듈을 보았는데, 빵판에 구성하기 편한 형태이군요.
    키트의 전원이 5볼트일테니 3.3볼트 레귤레이터 회로만 따로 구성해주신다면 문제없이 만들수 있습니다.

    5볼트가 3.3볼트 레귤레이터를 거치면 3.3볼트가 출력되는데 이 전압을 모듈의 J1-1핀과 J1-2핀에 연결해 주시고, J1-4는 그라운드.
    그리고 데이터시트를 보시면 SPI 통신과 I2C 통신 두가지를 모두 지원하는것으로 되어있는데 님께서 사용하실 인터페이스를 결정해 데이터시트대로 ATmega128과 연결해주시면 됩니다...

    처음부터 끝까지 다 글로하면 글이 너무 길어지므로 해보시고 안되는부분을 적어 메일이나 댓글로 남겨주시기바랍니다.

    참고로 제가 블로깅했던 모듈은 출력값이 아날로그값으로 나오기 때문에 AVR에서 ADC를 통해 값을 입력받았습니다. 하지만 님의 모듈은 ADC기능은 모듈내에 내장되어 있고 ADC가 완료된 데이터를 가져오는 통신방법이 SPI와 I2C 두가지를 제공합니다.

[로그인][오픈아이디란?]