Download presentation
Presentation is loading. Please wait.
1
컴퓨터 계측 및 실습 디지털 입력 영남대학교 기계공학부
2
디지털 입력이란? (1) 전등이 켜져 있는 경우 전등이 꺼져 있는 경우 전압 상태 Digit 전등이 켜져 있는 경우 5V
High(H) 1 전등이 꺼져 있는 경우 0V Low(L) 이 상태로 컴퓨터는 전등의 점등 상태를 알 수있다.
3
디지털 입력이란? (2) 컴퓨터에서는 여러 개의 입력을 동시에 받아들여서 여러가지의 장치 혹은 센서 등의 상태를 파악할 수 있다. 경우에 따라서는 bit의 H, L 를 연속적으로 읽어서펄스의 수와 속도를 파악할 수도 있다. 예를 들면 모터의 속도를 이와 같이 측정한다.
4
기본 D/I 연결 방법 D/I D I/O Terminal block connector DR8330 DR1010
BASE+4 Get_DI 라는 함수에서 알아서 각 bit의 주소를 계산하므로 신경 쓸 필요는 없다. DR1010
5
근접센서 (디지털 출력을 내는 소자) 원리 종류 고주파형 교류형 정전용량형 교과서 pp.262 참조
6
근접센서 선정시 유의점
7
광전 스위치 (디지털 출력을 내는 소자) 원리 종류 (검출형태에 따른 분류) 고온금속 투과형 직접반사형 거울반사형
복사량 검출형
8
광전 스위치 (2) 종류 (광원의 종류에 따른 분류) 1. 백열전구형 (가시광) : 저가격
종류 (광원의 종류에 따른 분류) 1. 백열전구형 (가시광) : 저가격 2. LED형 (가시광, 근적외광) : 초소형, 소정력 가강 이상적인 광원 3. 형광등형 (가시광) : 이미지 센서 4. 자외광 : 이물질 검출 5. 가스 레이저형 (가시광) : 바코드 리더 6. 반도체 레이저형(근적외광) : 강력한 투과력, 철장설비등 종류 (광원의 변조에 따른 분류) 1. 전기적 펄스 변조형 2. 기계적 회전 변조형 3. 다중 스캐닝형
9
디지털 스위치 (디지털 출력을 내는 소자) +, - 단자를 한 번 누를 때마다 내부에서
원리 +, - 단자를 한 번 누를 때마다 내부에서 카운트하여 BCD (Binary-Coded Decimal) 코드로 내보내는 소자 + - Vcc GND 2 1 3
10
로터리 엔코더 (디지털 출력을 내는 소자) 원리 회전하면서 일정 각도마다 하나의 펄스를 내보내는 장치
(단위: pulse/rev)
11
로터리 엔코더의 응용
12
Digital Input 구동 프로그램 OnPhotoEnd Cstring OnPhotoStart m_photo int
m_digit OnDigitalStart OnDigitalEnd
13
기본함수 (입력 읽기) COMI_DI_GetOne (HANDLE hDevice, int ch)
지정된 디지털 입력 채널의 상태를 읽음. => hDevice : 디바이스 핸들 => ch : 입력 채널 번호 => Return : 지정된 채널의 상태 0 : Off 1 : On
14
실험 1 광전 스위치 실 험 목 적 이 실험은 D/I의 실제 응용 예로서, 광전 스위치의 상태를 PC로 읽어 들이는 실험입니다.
15
회 로 도 COMI-SD104의 터미널보드의 DI0단자에 연결 COMI-SD104의 터미널보드의 GND단자에 연결
16
프로그램 설명 void CComPractDlg::OnPhotoStart() { SetTimer(0 , 100 , NULL);
} void CComPractDlg::OnPhotoEnd() KillTimer(0); void CComPractDlg::OnTimer(UINT…) { int i; i=COMI_DI_GetOne(m_hDevice, 0); if(i) m_photo=“On”; else m_photo=“Off”; UpdateData(FALSE); Cdialog::OnTimer(nIDEvent); }
17
실험 2 디지털 스위치 실 험 목 적 이 실험은 D/I의 실제 응용 예로서, 디지털 스위치의 상태를 PC로 읽어 들이는 실험입니다.
18
회 로 도 COMI-SD104의 터미널보드의 DI0 ~ DI3 단자에 연결 COMI-SD104의 터미널보드의 GND단자에 연결
19
프로그램 설명 void CComPractDlg::OnDigitalStart() {
SetTimer(0 , 100 , NULL); } void CComPractDlg::OnDigitalEnd() KillTimer(0); void CComPractDlg::OnTimer(UINT…) { int i[4]; for(int j=0;j<4;j++) i[j]= COMI_DI_GetOne(m_hDevice, j); m_digit=pow(2,3)*i[3]+pow(2,2)*i[2]+2*i[1]+i[0]; UpdateData(FALSE); Cdialog::OnTimer(nIDEvent); }
Similar presentations