08. 회로 Python Raspberry Pi Pico W 릴레이 제어

안녕하세요 덤블입니다.
Raspberry Pi Pico 기본 교육 보드 사용 릴레이 제어 나는 계속할 것이다.
기본 교육 보드는 다음과 같습니다..
https://ttcw.4

Raspberry Pi Pico 기본 교육 보드 구성

Raspberry Pi Pico 보드 펌웨어 실습을 위한 기본 교육 보드를 소개합니다. 현재 네이버 스마트스토어에서 판매중입니다. Raspberry Pi Pico 기본 교육 보드 Raspberry

ttcw.tistory.com

1) 릴레이 제어의 구동원리
(1) 시설 설명
릴레이는 한국어로 “릴레이”를 의미합니다. 즉, “전기(전류)를 연결하는 장치”를 의미합니다.
릴레이의 원리는 간단히 “전원 스위치”로 설명할 수 있습니다. 입력이 특정 값에 도달하면 활성화되어 다른 회로를 열고 닫기 때문입니다.


릴레이 내부는 아래 그림과 같이 코일, 전기자, 코일 핀과 NO, COM, NC 핀으로 구성되어 있습니다.
NO는 Normal Open을 의미하며 전류가 흐르지 않으면 스위치가 열린 것으로 간주됩니다. COM은 Common Terminal의 약자로 공통 단자입니다. 항상 연결해야 하는 포트입니다. 마지막으로 NC는 Normal Close의 약자로 전류가 흐르지 않을 때 스위치가 닫힌다고 가정할 수 있습니다.


코일 핀을 통해 전류가 흐르면 코일 주위에 자기장이 생성됩니다. 이렇게 생성된 자기장은 감긴 코일에 중첩되고, 코일 중앙에는 한 방향으로만 작용하는 자기장이 형성된다.
이러한 코일에 철심을 넣으면 자기장이 강해져 자석과 같은 힘이 생긴다.
이 힘은 전기자를 움직여 회로를 열고 닫는 데 사용됩니다. 이것이 릴레이의 기본 작동 원리입니다.




2) 릴레이 제어
(1) 시설 설명
센서 값에 따라 릴레이가 활성화됩니다.

코멘트 해제 실행에 따라 가변 저항 및 cds의 값에 따라 변화합니다.

cds_input = adc_input(0)
#cds_input = adc_input(1)

(2) 코드 작성
code.py

import time
import board
import digitalio
import analogio

led1 = digitalio.DigitalInOut(board.GP2)
led1.direction = digitalio.Direction.OUTPUT
led2 = digitalio.DigitalInOut(board.GP3)
led2.direction = digitalio.Direction.OUTPUT

relay = digitalio.DigitalInOut(board.GP12)  # 릴레이 설정
relay.direction = digitalio.Direction.OUTPUT

cds_adc = analogio.AnalogIn(board.GP27)
vr_adc = analogio.AnalogIn(board.GP26)


def adc_input(ch):
    global vr_data
    if ch == 0:  # VR
        vr_data = vr_adc.value
        vr_data_v = (3.3 / 65535) * vr_data
        vr_data_v = round(vr_data_v, 2)
        return vr_data_v
    elif ch == 1:  # CdS
        cds_data = cds_adc.value
        cds_data_v = (3.3 / 65535) * cds_data
        cds_data_v = round(cds_data_v, 2)
        return cds_data_v


relay_state = 0

while True:
    print('CdS Volt   = {}V'.format(adc_input(1)))
    print('RELAY STATE = {}\n'.format(relay_state))

    adc_data = adc_input(0)  #  VR
    #adc_data = adc_input(1) # CDS
    
 
    if adc_data <= 1:
         led2.value = False
         relay.value = False  # relay on
         relay_state = 1
    else:
         led2.value = False
         relay.value = True  # relay off
         relay_state = 0

    time.sleep(0.5)

(3) 연산 결과