자이로스코프센서로 이동용 물체의 균형을 잡는 용도로 사용한다고 하면 표현이 적절하다고 본다.일본 무라다 제작소에서 제조를 하는것 같다. 데이터 시트 파일을 첨부합니다.많은 응용을 바랍니다.또, 소재 개발에도 힘써 주시길 학수고대하며.....,
http://www.geocities.jp/puw2/forcy.html
http://www.geocities.jp/puw2/forcy2.html
3축가속도 센서(KXM52-1050 모듈)를 ForCy-USB에 접속해 LED 아레이에 X, Y축의 기울기를 표시 PIC에 질려 AVR로 프로그램의 생각중을에서 접한 ForCy로 만든 것입니다.
추월전자의 3축가속도 센서의 X, Y축의 아날로그 출력을 AVR의 A/D로 수중에 넣어 표시하고 있습니다. 수평 상태이므로 한가운데 근처에 LED 도트가 있습니다.
기판 전체를+-30о좌우 전후에 기울이면 들어 올린 방향으로 닷이 이동합니다. 기판의 I/O연결기는 LED 어레이의 표시에 사용되고 있으므로 센서에서는 직접 배선해 있습니다.
ForCy-USB 기판을 제외한 화상입니다. I/O의 접속중계연결기는 유니버설 기판을 컷 해 브렛트보드용으로 핀폭을 펼쳐 있습니다. 이것이 제일의 아이디어일지도 모릅니다.
센서의 전원은 USB로부터 받고 있으므로 전원은 필요 없습니다.
연결기의 업 영상입니다. 아래 쪽은 보이지 않습니다만 한 면 기판이므로 1열의 핀을 억지로 납땜해 있습니다.
ForCY의 프로그램입니다. 흥미의 있는 분은 ForCy로 검색해 봐 주세요. 기술은 간소합니다만 안쪽은 꽤 깊습니다. 아직 입구에 선 곳입니다.
#
/*
A/D 변환에 사용된것(3축가속도센서)
I/O PORT C4,C5에서 3축가속도센서(KXM52-1050)을 이어서。X,Y軸축LED어레이표시
2007/10/29 adc-KXM52-8.txt
05 일단완성 개량할 점은 있음
06 감도상승과 응답을 빠르게 ok
// 포트정의-----------------------------------------
0x23 ;PINB //포트B입력
0x24 ;DDRB //포트B방향
0x25 ;PORTB //포트B데이터
0x26 ;PINC //포트C입력
0x27 ;DDRC //포트C방향
0x28 ;PORTC //포트C데이터
0x29 ;PIND //포트D입력
0x2A ;DDRD //포트D방향
0x2B ;PORTD //포트D데이터
0x7e ;DIDR0 //사용할ADC비트를1아날로그디지털절체
0x7c ;ADMUX //하위3bit로ADC를 선택 채널선택
0x7a ;ADCSRA //클럭선택과ADC기동
0x79 ;ADCH //변환데이터상위
0x78 ;ADCL //변환데이터하위
//------------------------------------------------------
*/
clk + { clk == break } do . //대기:wait
0 { ++ } for .. //지연
:dely
0xff 0x24 =sfr // 포트B를 출력
0x0f 0x27 =sfr // 포트C 하위4bit를 출력
0xfa 0x2a =sfr // 포트D 상위4bit 를 출력
:init
0xcf 0x27 =sfr // 포트C4,5입력 그외 출력에 설정
0xcf 0x28 =sfr // C4,C5이외를 풀업
0x30 0x7e =sfr // ADC4,5를 사용
:ADC_Init
0x44 0x7c =sfr // ADC4 를 선택
0x87 0x7a =sfr // ADC를 기동
:ADC_4
0x45 0x7c =sfr // ADC5를 선택
0x87 0x7a =sfr // ADC 를 기동
:ADC_5
0xc7 0x7a =sfr // ADC 변환개시
:ADC_Start
0x78 sfr 0x79 sfr 8 << | //변환결과를 얻음
:ADC_Read
0 0x7a =sfr
0 0x7e =sfr
:ADC_End
;x ;y
ADC_Init //A/D초기화
ADC_4 //4cH A/D변환읽음포함X축
ADC_Start //A/D변환스타트
100 dely //A/D치 안정시간
// ADC_Read 43 * 10 / 1050 - 270 / =x //LED바 표시위치계산
ADC_Read 43 * 10 / 1800 - 100 / =x //LED바 표시위치계산
"X=" %s x %d //X데이터시리얼송신Y축
ADC_5 //5cH A/D변환읽어 포함
ADC_Start
100 dely
// ADC_Read 43 * 10 / 1050 - 270 / =y //LED바의 표시위치계산
ADC_Read 43 * 10 / 1800 - 100 / =y //LED바의 표시위치계산
" Y=" %s y %d "\r\n" %s //Y데이터시리얼송신
:ADC_read
1 y << 0x25 =sfr //표시출력
7 x - =x
1 x << ~
dup 0x28 =sfr // 포트C 하위4bit를 출력
0x2b =sfr // 포트D 상위4bit 를 출력
:LED
init //I/O초기화
ADC_Init //A/D최기화
{
ADC_read //A/D읽어표시
LED //LED표시
// 200 wait //200ms대기
100 wait //100ms대기
ADC_Init //A/D초기화
1 wait //대기
@c? break //콘솔보다브레이크체크
} do
ADC_End
:main
\
프로그램은 이상입니다.
XY축의데이터는 4800bps로 하이퍼턴미널에서100ms마다 송신하고 있습니다.
3차원의 지진계등이나 쓰여지지 않을까 생각합니다.
'센서(Sensor)' 카테고리의 다른 글
초전형적외선센서(焦電型赤外線センサ-) (0) | 2008.04.29 |
---|---|
적외선온도계 (0) | 2007.10.25 |
적외선링크 온도센서 (0) | 2007.05.29 |
가스센서 (0) | 2006.05.06 |
칼라센서 (0) | 2006.03.04 |