컴퓨터 계측 및 실습 로터리 엔코더 영남대학교 기계공학부
로터리 엔코더란? - 슬롯이 없는 부분이 지나갈때 수광부에서는 전압이 발생하지 않다가 - 엔코더란? 광원 슬롯 이동 수광부에서의 출력전압 수광부 - 슬롯이 없는 부분이 지나갈때 수광부에서는 전압이 발생하지 않다가 슬롯있는 부분에서 펄스가 발생한다면 이동하고 있는 물체의 위치를 검출 할 수 있다. 이 원리를 회전체에 적용한것이 로터리 엔코더 - 회전하는 디스크에 슬롯을 등간격으로 만들어 놓고 회전시키면 회전각 만큼 펄스의 개수가 나오게 된다. - 이 개수를 세어주면 회전각을 검출할 수 있다.
로터리 엔코더의 종류(1) 1. 광학식 엔코더 - 광원, 슬릿디스크, 포토셀, 슈미트 트리거 회로로 구성 Schimidt Trigger 포토셀 - 광원, 슬릿디스크, 포토셀, 슈미트 트리거 회로로 구성 - 슬릿을 통과한 빛 포토셀에서 전기신호로 바뀜 - 슈미트 트리거 회로에서 파형을 정형화 시켜 출력함
로터리 엔코더의 종류(2) 2. 브러시 엔코더 - 브러시가 디스크에 접촉 - 도통 물질과 비도통 물질이 교대로 배열 - 접촉식이므로 신뢰성, 수명등에 문제
로터리 엔코더의 종류(3) 3. 자기식 엔코더 - 트로이달 코어 : 해독헤드 - 자화된부분 : 트로이달 코어가 자기장으로 포화되어 출력이 않나옴 0 - 경계를 지나면 : 포화가 해소되어 출력이 1 - 내환경, 수명특성은 우수 - 고분해능의 디스크 제작이 어렵다.
인크리멘탈 엔코더
인크리멘탈 엔코더 출력 신호 - 2상 신호 (전진출력, 후진출력) - 각 신호 1 Cycle 당 T/4 의 위상차 - 논리회로를 통해서 전압이 상승한 순간만 짧은 펄스를 내보낸다. - 1배, 2배, 4배의 UP, DOWN 신호를 이용해 계수하므로써 회전각도를 알 수 있다. - 회전각의 절대위치는 알 수 없고 상대적인 회전량의 각도만 나온다. - 한 회전에 한번만 펄스가 나타나는 Zero 점 신호 출력이 나오는 엔코더의 경우 연산을 통해서 절대각을 측정할 수도 있다.
카운트회로의 원리
UP/DOWN 카운트의 타임차트
Absolute 엔코더 - 입력축의 위치(각도) 를 2진 또는 2진화된 10진 (BCD : binary-coded decimal) 의 디지털 신호로 변환하여 출력하는 엔코더 - 입력축의 절대위치가 검출가능 - 순 2진 출력 : 8bit (20 ~ 27) 에서 20bit (20 ~ 219) 의 분해능 - 2진화 10진 출력 : 0~9999, 0~3699 절대위치 표시나 각도표시용
로터리 엔코더의 응용예
Digital Input 구동 프로그램 OnEncoderOn OnEncoderOff int m_encoder
기본함수 (입력 읽기) COMI_DI_GetOne (HANDLE hDevice, int ch) 지정된 디지털 입력 채널의 상태를 읽음. => hDevice : 디바이스 핸들 => ch : 입력 채널 번호 => Return : 지정된 채널의 상태 0 : Off 1 : On
실험 (엔 코 더) 실 험 목 적 이 실험은 D/I의 실제 응용 예로서, Encoder 출력 펄스를 PC로 입력(D/I)받아서 펄스의 수를 세는 실험입니다.
회 로 도 COMI-SD104의 터미널보드의 DI0 ~ DI2 단자에 연결 COMI-SD104의 터미널보드의 GND단자에 연결
프로그램 설명 void CComPractDlg::OnEncoderOn() { SetTimer(0 , 100 , NULL); } void CComPractDlg::OnEncoderOff() KillTimer(0); void CComPractDlg::OnTimer(UINT…) { int x; x=COMI_DI_GetOne(m_hDevice, 0); if(!x){ while(! COMI_DI_GetOne(m_hDevice, 0)); if(COMI_DI_GetOne(m_hDevice, 1)) m_encoder--; else m_encoder++; } UpdateData(FALSE); Cdialog::OnTimer(nIDEvent);