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 OnEncoderOn Cstring OnPhotoStart
m_photo OnPhotoStart OnEncoderOff int m_digit int m_encoder OnDigitalStart OnDigitalEnd
13
기본함수 (초기화) InitDevice ( Baseaddress , cardType)
Baseaddress : address를 선정. cardType : SINGLE / DIFFER 선정. DR_InitDevice (second_IRQ , second_DMA) DR_8330을 사용하기 위한 초기화 일반적으로 DR_InitDevice ( -1 , -1)을 사용
14
기본함수 (입력 읽기) int GET_DI ( int ch) DR_1010
int DR_GetDI ( int ch) DR_8330 지정된 디지털 입력 채널의 상태를 읽음. => ch : 입력 채널 번호 => Return : 지정된 채널의 상태 0 : Off 1 : On
15
실험 1 광전 스위치 실 험 목 적 이 실험은 D/I의 실제 응용 예로서, 광전 스위치의 상태를 PC로 읽어 들이는 실험입니다.
16
회 로 도
17
프로그램 설명(DR_1010) void CComPractDlg::OnPhotoStart() {
InitDevice ( 0x220 , DIFFER) ; SetTimer(0 , 100 , NULL); } void CComPractDlg::OnPhotoEnd() KillTimer(0); (DR8330 의 경우) DR_InitDevice (-1 ,-1) ; void CComPractDlg::OnTimer(UINT…) { int i; i=GET_DI(0); if(i) m_photo=“On”; else m_photo=“Off”; UpdateData(FALSE); Cdialog::OnTimer(nIDEvent); } i=DR_GetDI(0);
18
실험 2 디지털 스위치 실 험 목 적 이 실험은 D/I의 실제 응용 예로서, 디지털 스위치의 상태를 PC로 읽어 들이는 실험입니다.
19
회 로 도
20
프로그램 설명(DR_1010) void CComPractDlg::OnDigitalStart() {
InitDevice ( 0x220 , DIFFER) ; SetTimer(0 , 100 , NULL); } void CComPractDlg::OnDigitalEnd() KillTimer(0); DR_InitDevice (-1 ,-1) ; void CComPractDlg::OnTimer(UINT…) { int i[4]; for(int j=0;j<4;j++) i[j]=GET_DI(j); m_digit=pow(2,3)*i[3]+ pow(2,2)*i[2]+2*i[1]+i[0]; UpdateData(FALSE); Cdialog::OnTimer(nIDEvent); } i[j]=DR_GetDI(j);
21
실험 3 (엔 코 더) 실 험 목 적 이 실험은 D/I의 실제 응용 예로서, Encoder 출력 펄스를 PC로 입력(D/I)받아서 펄스의 수를 세는 실험입니다.
22
회 로 도
23
프로그램 설명(DR_1010) void CComPractDlg::OnEncoderOn() {
InitDevice ( 0x220 , DIFFER) ; SetTimer(0 , 100 , NULL); } void CComPractDlg::OnEncoderOff() KillTimer(0); void CComPractDlg ::OnTimer(UINT…) { int x; x=GET_DI(0); if(!x) while(!GET_DI(0)); if(GET_DI(1)) m_encoder --; else m_encoder++; } UpdateData(FALSE); Cdialog::OnTimer(nIDEvent); DR_GetDI(0); DR_InitDevice (-1 ,-1) ; DR_GetDI(1);
Similar presentations