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

글 내용

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

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


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

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

  1. user picture
    비밀댓글입니다
    • user picture
      제가 구입한 가속도센서는 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 두가지를 제공합니다.
  2. user picture
    비밀댓글입니다
    • user picture
      ADC포트 지정하는 소스가 어떤말씀이신지..
      ATMEGA128에서 ADC로 사용할수 있는 포트는 F포트 8개뿐 입니다.
      혹시 각 핀에 대해 사용할 핀을 정하는것을 말씀하신다면 ADMUX 레지스터를 공부해보시기 바랍니다.
    • user picture
      아 제가 잘못 알고 있었네요..답변 감사합니다..
      한가지만 여쭤 볼게요.. lcd에서 나오는 값이 무엇을 표현하는건가요??
      제가 속도를 구하기 위해선 adc값 받은걸 계산해야하는건가요??
    • user picture
      LCD에 출력되는 값은 가속도센서에서 출력된 아날로그 신호를 디지털화 하여 출력된 숫자값입니다.

      사용된 가속도 센서에서는 가속도 값에 따라 0~5볼트를 출력하는데요, 이 구간을 1024 구간으로 쪼개어 숫자로 표시하게 되는것 입니다.
      예를 들어 0볼트가 출력되면 lcd에도 0, 2.5 볼트가 출력되면 512가 출력되는 방식이지요.

      adc값을 받아 속도를 계산하려면 출력값의 변화량에 따른 정확한 가속도값을 알아야 할것 같습니다.
  3. user picture
    만약 LCD가 아니라 컴퓨터에 출력하고 싶다면 어떻게 해야 하나요??
    • user picture
      컴퓨터에 출력하고 싶다면 RS232 통신을 사용하여 컴퓨터에 뿌려주면 됩니다.
      코딩은 다시해야합니다....
      UART를 RS232로 변경해주는 컨버터를 사용해야 하며, 센서에서 출력된 값도 UART를 사용하여 출력해야 합니다.

      컴퓨터에서는 USB로 연결된 RS232컨버터를 이용해 터미널 프로그램으로 받아야 하구요... UART 통신에 대해 공부해 보시기 바랍니다.
  4. user picture
    질문이 있는데요, 저 가속도 센서는 atmega128의 어떤 포트에 연결한 건가요?? ADC니깐 F포트인가요?
  5. user picture
    선생님께서 주신 코드랑 조언 덕분에 성공했습니다ㅠㅠ아 너무 뿌듯하네요ㅠㅠㅠ다음 번엔 더 열심히 공부해서 저 스스로 해봐야겠습니다ㅎㅎ
    정말 감사합니다!
  6. user picture
    안녕하세요 저도 이번에 가속도 모듈을 이용해서 CLCD에 출력을 하려는데 생각보다 잘안됩니다 ㅠㅠ... 저는 일단 가속도 모듈은 선생님과 똑같은걸 쓰고 보드는 us-technology사의 ATMEGA128키트중 하나를 사용하고 있고 CLCD는 HY-1602를 사용했습니다 . 우선 연결은 가속도 모듈의 X Y Z 축 핀을 Atmega의 F포트 0 2 4 핀에 연결하였고 5V 전원과 그라운드를 보드를 통해서 입력 받아서 구동중입니다. CLCD역시 가속도 값 말고 다른 일반적인 글씨는 출력 확인했는데, 가속도 모듈을 연결후 가속도 값을 출력하려니 아무 값도 안나오네여 ㅠㅠ 뭐가 문제일까요 선생님 코드 똑같이 썻고 다만 CLCD헤더 파일을 찾아보려 했으나 찾지못했습니다.. ㅠㅠ 혹시 헤더파일 코드 혹시 답글로라도 부탁드릴수 있을까요? 그냥 바로 복사해서 선생님코드에 붙여넣기 해보려고합니다. 그렇게라도 해결되면 이제 조금더 공부해 보고 원인을 찾아보려구요
    아 그리고 혹시 KD-128PRO-USB 개발보드를 사용하셨는데 그냥 atmega128 pro를 이용해서 직접 핀에 연결해서 가속도 모듈 핀에 연결 핀끼리 직접적으로 연결해도 동작가능한거 맞나요?
  7. user picture
    비밀댓글입니다
  8. user picture
    비밀댓글입니다

티스토리 툴바