ESP32とSSR(Solid State Relay)で100V電球を制御
はじめに
この記事は、AC100Vの商用電源に接続された60W程度の電球をSSR(Solid State Relay:半導体リレー)とESP32を使って制御する方法について記述しています。
今回は便宜上、60W程度の電球を使用しましたが、他の負荷に置き換えても大丈夫です。ただし、使用する電力によってはSSRからの出る熱を放熱する必要があるかもしれません。
使用している言語はMicropythonです。
In English
This article describes how to drive a SSR(Solid State Relay) with PWM connected to ESP32 using Micropython in Japanese.
SSRとは
ESP32やRaspberry PiのGPIOポートはLEDを点灯させる程度の微弱な電力しか取り出すことができません。
一般的に、大きな電力を必要とする装置の制御にはリレーモジュールやSSRとよばれる外部部品を使用します。
リレーについて
リレーは電磁石の原理を応用して大きな接点容量のスイッチをON/OFFする装置です。
リレーの詳細についてはリンクを参照して下さい。リレーとは
リレーモジュールは下図のように、GPIOの信号によりリレーを制御するようにした製品でAmazon等で500円程度で売られています。
*画像引用元:'https://m.media-amazon.com/images/I/613Tod1Cy1L.AC_SX679.jpg'*
SSRについて
SSR(Solid State Relay)は無接点リレーともよばれ、一般的なリレーが有接点であるのに対して、接点の代わりに半導体を使用してON/OFFを制御しています。
SSRは有接点リレーに対して次のような特徴があります。
- 機械的な接点がないのでON/OFF時の音がしない。
- 高速にON/OFFの切り替えができる。
- 接点の摩耗がないので耐久性に優れている。
SSRの詳細についてはリンクを参照して下さい。
この記事で使用するSSR(SSR-25 DA)を下図に示します。1,000円前後で市販されています。
この製品は仕様書によると、最大380Vまでの交流電圧で、最大25Aまでの電流の制御ができます。
画像引用元:https://akizukidenshi.com/catalog/g/g114017/
結線
回路図
ブレッドボード図
サンプルコード1
SSRが接続されたGPIOポートを単純にON/OFFするサンプルコードです。
1秒毎にON/OFFを3回繰り返し、3秒停止を無限に繰り返します。
# Lamp color control by SSR
# Mar.29th 2024 (C) iot101 at zenn.dev
from machine import Pin
import time
SSR = 26 # SSR is connected to GPIO26
# Make LED instance
ssr = Pin(SSR, Pin.OUT)
try:
while True:
for d in range(3):
print("ON")
ssr.on()
time.sleep(1)
print("OFF")
ssr.off()
time.sleep(1)
time.sleep(3)
except KeyboardInterrupt:
ssr.off()
print("stopped")
サンプルコード2
SSRをPWMで制御しています。
デューティー比を0%から100%まで2%毎に変化させています。
# Lamp(bulb) PWM color control by SSR
# Mar.29th 2024 (C) iot101 at zenn.dev
from machine import PWM, Pin
import time
FREQ = 60
SSR = 26 # SSR is connected to GPIO26
# Make LED instance
ssr = PWM(Pin(SSR), FREQ)
ssr.duty(0) # Turn OFF the bulb
try:
while True:
for d in range(0, 102, 2):
print("Duty =", d)
ssr.duty(int(d / 100 * 1023))
time.sleep(0.1)
time.sleep(3)
except KeyboardInterrupt:
ssr.duty(0)
print("stopped")
Discussion