秋月電子通商で購入したソリッドステートリレー (SSR) キットのフォトトライアックを非ゼロクロスタイプ S21ME3 に変更し、位相制御による電力調整をやってみました。
回路図
電力調整を行なう回路は、「トライアックによる電力調整 − SSRを改造」で作った以下の回路と変わりありません。
ブレッドボード
先日、これまで使っていた Arduino UNO が故障してしまいました。「Arduino UNO が壊れた!」
なので、ゼロクロス回路を変更したついでに、Arduino NANO に交換してブレッドボードに載っけてあります。
回路図は UNO のままですが、基本的に何も変わりありません。
代わりの UNO もあるんだけど、俺はどうも、NANO の方が使いやすいなぁ (^_^;)
ちなみにこの NANO は互換品です。
スケッチ (位相制御電力調整)
今回やってみた位相制御の概要。
ゼロクロスパルスがはいってきたら、トリガ出力をオフにします。同時に遅延タイマーをスタートさせて、規定の遅延時間が経過したらトリガ出力をオンにします。
これを繰り返すだけです。
本来なら遅延タイマーも割り込みさせるべきなんだろうけど、Arduino での多重割り込みってどうもうまくないらしい、やってみていないけど (^_^;)
なので、遅延時間は micros() で経過時間をみているだけです。そのせいか、わりとフラフラしてますね。だから電球が少しちらつく。
調光器として使って気になるようなら、delayMicroseconds() で遅延させた方がいいかもしれません。
- // AC-Dimmer-PhaseControl v.1.0 2020.11.03 by meyon
- char inputPin = A0;
- int outputPin = 4;
- int interruptPin = 2;
- int levelTable[11] = {
- 8500,5400,4700,4150,3800,3300,2900,2450,2000,1500,500
- };
- volatile bool zero = false;
- volatile bool timer = false;
- unsigned long preTime;
- void zeroCross() {
- digitalWrite(outputPin, LOW);
- zero = true;
- timer = true;
- }
- void delayTimer(int level) {
- noInterrupts();
-
- if(zero) {
- preTime = micros();
- zero = false;
- }
- if(micros() - preTime > levelTable[level]) {
- digitalWrite(outputPin, HIGH);
- timer = false;
- }
- interrupts();
- }
- void setup() {
- pinMode(outputPin, OUTPUT);
- attachInterrupt(digitalPinToInterrupt(interruptPin), zeroCross, RISING);
- }
- void loop() {
- int inputValue = analogRead(inputPin);
- int dimmerLevel = map (inputValue, 0, 1024, 0, 11);
- if(timer) {
- delayTimer(dimmerLevel);
- }
- }
7 ~ 9 行 levelTable[] が入力レベルに対する遅延時間のテーブル、μs 単位です。
ゼロクロスパルスの割り込みから、ここで規定した時間だけ経過したらトリガ出力がオンになります。
60Hz では半サイクルは 8333μs ですから、最初の値 8500μs ではトリガしません。出力オフの状態です。
出力電力がだいたい 10% 刻みになる値を規定してみました。
14 ~ 18 行 zeroCross() はゼロクロスパルスの割り込みハンドラで、出力ピンを LOW にし、フラグをセットしています。
20 ~ 32 行 delayTimer() が遅延タイマーです。ゼロクロスパルスが入るとタイマーをスタートさせ、規定の時間が経過したら出力ピンを HIGH にします。
loop() では入力電圧を読み取って、遅延タイマーが稼働している場合は delayTimer() へ行きます。
交流出力波形
交流電圧の出力を計測しています。
入力のボリュームを回していくと、位相制御された出力が現れていきます。
10 段階の出力制御なので、電球の明るさは段階的です。20 段階ぐらいにすると連続的になるんじゃないでしょうか。
というわけで。
改善の余地はいろいろあるんだけど、市販の SSR キットでわりと簡単に位相制御ができちゃうし、基板も付属しているので、いろいろ利用できるかなぁと思ってます。