Lesson 5 of 20
솔레노이드 밸브 — GPIO 는 코일을 못 켠다
MOSFET · 환류 다이오드 · 홀딩 전류
밸브는 이 기계에서 가장 단순한 장치입니다. 켜면 열리고 끄면 닫힙니다. 그런데 초보자가 가장 자주 태워 먹는 장치이기도 합니다.
GPIO 핀이 낼 수 있는 것
핀 하나에 16 mA 남짓, 전부 합쳐 50 mA 정도. 3.3 V.
솔레노이드가 먹는 것
12 V 에 200~500 mA. 열 배가 넘습니다.
GPIO 핀은 신호를 내보내는 곳이지 전기를 대는 곳이 아닙니다. 직접 연결하면 밸브가 안 열리는 데서 끝나지 않고, RP1 칩이 죽습니다 — 그리고 그것은 교체할 수 없습니다.
홀딩 전류는 전기를 아끼는 이야기가 아닙니다. 열이 시약으로 새는 것을 막는 이야기입니다.
Python
Runs in your browser
여섯 개를 한꺼번에 — ULN2803A
MOSFET 을 여섯 개 만드는 대신 ULN2803A 한 칩이면 여덟 채널이 됩니다. 환류 다이오드도 안에 들어 있습니다.
다만 함정이 하나 있습니다 — COM 핀을 코일 전원(+12 V)에 반드시 이어야
그 다이오드가 일을 합니다. 학생들이 거의 반드시 빠뜨리는 배선입니다.
from gpiozero import OutputDevice, PWMOutputDevice
import time
class Valve:
"""당길 때는 100%, 붙잡을 때는 절약 — 드라이버 계층"""
def __init__(self, pin, hold=0.4, pull_ms=100):
self._out = PWMOutputDevice(pin, initial_value=0)
self._hold, self._pull_ms = hold, pull_ms
def open(self):
self._out.value = 1.0 # 당긴다
time.sleep(self._pull_ms / 1000)
self._out.value = self._hold # 붙잡는다
def close(self):
self._out.value = 0.0
밸브는 코일이라 소프트웨어 PWM 으로 충분합니다 — 코일 자체가 큰 저역통과 필터라 지터를 느끼지 못합니다. (TEC 는 다릅니다. 11강에서 봅니다.)
🤔 Check yourself
GPIO 핀에 솔레노이드를 직접 연결하면?
Answer 솔레노이드는 200~500 mA 를 먹습니다. GPIO 는 신호를 내는 곳입니다. 사이에 MOSFET 이나 ULN2803A 를 반드시 넣으십시오.
🤔 Check yourself
게이트 풀다운 저항이 필요한 까닭은?
Answer 부팅 중 GPIO 는 입력으로 떠 있습니다. 풀다운이 없으면 그 몇 초가 정의되지 않은 상태입니다. 19강의 페일세이프 가 이 이야기의 확장판입니다.