Digital Output

/ Digital Input  |   CdS-Relay-Lamp

임의의 장치 또는 소자를 사용하여 High 또는 Low의 형식으로 두 종류의 신호 (High/Low, 5V/0V, On/Off)를 내 보내는 것을 이야기 한다.
간단히 신호를 0 또는 1을 내 보낼 수도 있고, 참 거짓의 신호를 낼 수도 있으며, LED를 켜거나 끌 수도 있으며, 전압을 0V 또는 5V를 낼 수도 있습니다. 모두가 두가지 경우의 수를 가지고 있는 디지탈 신호를 다루는 것이며 신호의 흐름을 생각하여 장치 또는 소자로 부터 나오는 형식이기때문에 디지탈 출력이라고 한다. 8bit PIC 마이크로컨트롤러의 경우 low 인경우 0V를 high 인 경우 5V를 내보낸다.
명령어는 low 출력인 경우 output_low (pin name), high 출력인 경우 output_high (pin name)이다.

아래 그림은 그림과 같이 회로를 만들고 스위치를 닫았을때와 열었을때 전압 비교를 한 것으로 스위치를 열면 연결이 끊기어 건전지 전압을 그대로 읽게 되어 5V(왼쪽)가, 닫으면 출력 부분이 건전지의 0V 기준전위(그라운드)와 연결되어 0V(오른쪽)가 그림과 같이 테스터에 표시가 된다.



스위치를 사용한 출력 신호 (왼쪽: 스위치 Off, 오른쪽: 스위치 On)
(그림을 마우스로 클릭하면 간단한 동영상을 볼 수 있다)


아래 그림은 위의 스위치 대신 마이크로컨트롤러 PIC12F617을 사용하여 프로그램으로 하여 위의 상황을 자동으로 0V, 5V를 반복하여 출력할 수 있도록 만든 회로로 간단한 프로그램(아래 프로그램 참고)으로 쉽게 0V 또는 5V를 쉽게 출력 할 수 있다.

      


아래 그림은 위의 디지탈 신호(전압)을 이용하여 LED를 켜고 끄는 모습을 나타내는 그립입니다.

디지탈 출력은 위 그림 처럼 간단히 LED를 on/off 할 수 있지만 확장한다면 다양한 기능을 구현 할 수 있다.
아래 그림은 디지탈 출력을 이용하여 Relay를 구동하는 회로이다. Relay는 주로 적은 전유를 큰 전류로 변환시키기 위하여 사용하는 전자 소자로 산업전반에서 많이 사용하고 있다.



PIC12F617의 Digital Output을 이용한 전등 켜고 끄기
(그림을 마우스로 클릭하면 간단한 동영상을 볼 수 있다)


아래 그림은 Relay를 구동하여 220V 전등을 켜고 끄는 방법을 나타낸 것으로 간단히 PIC12F617를 사용하여 아래 프로그램(내부 발진회로 사용)과 같이 PIN_A2(pin name)를 사용하여 디지탈 신호를 만들고 이를 트랜지스터를 구동시켜 Relay를 동작하고 Relay를 사용하여 220V 전등을 켜수 있도록 회로를 만들고 컨트롤 할 수 있다.

아래 그림은 Relay를 구동하여 220V 전등을 켜고 끄는 방법을 나타낸 것으로 간단히 PIC16F687를 사용하여 아래 프로그램(12F617 기준)과 같이 PIN_C2(pin name)를 사용하여 디지탈 신호를 만들고 이를 트랜지스터를 구동시켜 Relay를 동작하고 Relay를 사용하여 220V 전등을 켜수 있도록 회로를 만들고 컨트롤 할 수 있다. 전등대신 모터나 밸브 솔레노이드 등 산업에서사용하는 다른 전기장치를 이용할 수 있으며, relay 대신 전자소자로 바꾸어 활용 가능하다.



PIC16F18345의 Digital Output을 이용한 전등 켜고 끄기 (내부 발진회로 이용)
(그림을 마우스로 클릭하면 간단한 동영상을 볼 수 있다)


//***********************************************************************
// PIC12F617을 사용하여 Relay 다루기 (Basic Circuit/08-Pin 참고)
//***********************************************************************  
                    
#include  <12f617.h>

#fuses    INTRC_IO
#use      delay (clock = 8000000)
										
#define   LAMP_PIN   PIN_A2                              //* PIN_A2를 LAMP_PIN으로 정의
#define   LAMP_ON    output_high (LAMP_PIN)   //* output_high (LAMP_PIN) 을 LAMP_ON 으로 정의
#define   LAMP_OFF   output_low (LAMP_PIN)    //* output_low (LAMP_PIN) 을 LAMP_OFF 로 정의
                                                    
void main (void)
{
	while (1) {
		LAMP_ON ; delay_ms (1000) ;
		LAMP_OFF ; delay_ms (1000) ;
	} 
}
                                                     
//***********************************************************************  
										 

회로와 프로그램은 간단하지만 상당히 많은 장치를 쉽게 컨트롤 할 수 있다.



참고:

     
     
     



 
TOP
Next >