ただ今の日時:

ワンチップマイコン・PICでC言語を使った学習報告4
商用交流電圧スイッチの製作

 勉強を重ねるにつれ、少しづつですがプログラムのポイント(こつ?)が掴めてきていると思われます。でもかなり「我流」なので、先駆者の御仁のプログラムには到底及ばないのは致し方ないでしょう!今回はすでに下記のサイトで見つけたいたものがあり、 いつかは自分でも作ってみたいと思い、第4弾としてアップします。この歳になると、ちょっと(約2週間ほど)さぼると、たちまち基本的なことが頭から抜け落ちる始末で、まったく困ったものです。従って自分で言うのもなんですがプログラムのコーティングも決して「 美しい」と言うものではありませんので皆様、ご容赦を!なお、今回はAC100Vと言う高電圧を扱いますので、くれぐれも注意して作業してください。決して「 感電」や「漏電」など起こさないで下さい。煤S( ̄0 ̄;ノ オーット!※ 当方は一切責任はもちませんので!
 なお今回も、アップした回路図プログラム間違いや無駄などがあるかもしれません。そのあたりは勉強中と言うことでご容赦願います。できればご指摘やアドバイスを頂ければ幸いです。(メールなどで直接でもOKです)
 お決まりの条文ですが、ここに紹介するものは私個人が勝手に製作したもので、万一製作されて事故などの被害にあわれても当方は一切責任を持ちませんので、ご理解とご了解のうえで、ご参照並びにご利用ください。 できれば勉強用として利用して頂ければ幸いです。なにせ私もまったくの素人ですから!

1. 日付
2008年6月29日
2. テーマ
外部割り込みの学習として、デューティ可変・商用周波数・交流電圧のスイッチの製作
3. 使用したPICマイコン
PIC16F876A-I/SP
4. 電源電圧とシステムクロック
電源:CPU:DC5V、その他:AC100V、クロック:20MHz
5. 開発環境
ハードウェア:ICD2(Microchip)、ICD-U40(CCS)、ブレッドボード(鰹H月電子通商)
ソフトウェア:PCWHD Compiler Ver4.075(CCS)
6. 回路図
ここにあります!
7. プログラム
ソースファイル一式はここにあります。ZIPで圧縮しています。
8. 参照した主な書籍とWebサイト
「C言語によるPICプログラミング入門」 後閑哲也 著者 葛Z術評論社 発行・・・文献1
参考にしたサイト:http://www8.plala.or.jp/InHisTime/index.html
※ 2020年10月現在、このサイトの情報は無くなっているようですm(__)m
 きっかけ

 冒頭にも触れましたが、「交流スイッチ」を、それもただのスイッチではなく、例えば「電球の明るさを可変できるもの」や、「 扇風機の風の量を可変できる」などの機能をもったスイッチを製作する機会がありましたので、思い切ってトライしてみました。きっかけは、参照したサイトを見て下さい。「電子工作etc」のサイトで、素晴らしい作品をかなり手がけており、 今大変興味深く、そして、とても役に立つサイトの一つです。C言語を学習される方はぜひ、覗いて見て下さい。
 今回はいつものようにブレードボード上で作成しました。一番気にしたことは、交流の位相で「ゼロ」を見つける手段をどうするかを少し悩みました。いくつか考えられるのですが「安全面」を考慮して、やはり「 トランス」で行こうと決めました。容量は殆どいらないので出来るだけ小型なものを探していたところ、ありました!ありました!某電機メーカ(ide?)のランプに内蔵しているトランスです!AC100Vを入れて二次側には6.3Vが発生します。あとは、スイッチするものです。 これも倉庫にあり、昔に秋月電子で買ったAC250V/3Aの「SSR」を使いました。(もしかすると今でも売っているかもしれません)

 具体的な内容

まずは全容と詳細を写真で紹介します。汚い机の上での作業です。((^┰^))ゞ テヘヘ

↑ブレードボード部です。一番右端にあるのはLCDです。中央にはPIC、赤や白、黒などが見える丸いものは押釦スイッチです。

← ※ 左の配線は高電圧を含めクリップで配線しています。決して真似しないで、ちゃんと外れないように配線しましょう危ないですよ!ほんと!Σ( ̄ε ̄;|||・・・



 上の写真4枚は左から、位相を見つけるための小型トランス(一次:AC100V、二次:AC6.3V)、次が位相を見つける回路(片整流して 定電流ダイオードをつなぎ、フォトカプラーに接続しています)、次がSSRスイッチです(2個搭載していますが使っているのは1個です。動作モニター用LEDを付けています)、一番右端が負荷抵抗 です(5kΩ/10Wあります。この抵抗器は高電圧用の抵抗で、直流で3万ボルトはもちます)、以上の構成で組み上げています(回路図参照)。回路的には規模は小さい方です。

 動作説明

 まず回路図を見て下さい。交流の位相、ゼロを見つけるため、小型トランスで降圧して整流した後、フォトカプラに配線してます。ゼロ点で切り替わる信号を作り、ロジックレベル(+5V)に変換し、PICマイコンの外部割り込み端子 (Port-B0)に入力してやります。ハードウェアのポイントはこれだけです。あとは、デューティを切り替えるスイッチと、SSRを駆動させる信号を用意するだけです。
 ソフトウェアでは、I/Oの初期化後、割り込みを動作させ(具体的にはTIMER1外部割り込みの2つです)、初めに商用周波数を計測します。計測はTIMER1を使い割り込みで1秒を作り、その間に入力された外部割り込みの信号の数を数えて やれば、周波数になります。確かめていませんが、99Hzは余裕で計測しています。(※ 外部信号では動作確認しています!)
デューティの初期値は、ONが「0%」、OFF100%」です。写真では見にくいですが、赤丸ボタンがデューティ「Up」、その下の白丸ボタンが「Down」です。
 Upボタンを1回押すごとにデューティは、10%上昇します。Upボタンの上限は100%までです。逆にDownボタンは1回押すごとにデューティは10%下がります。0%以下は下がりません。周波数が動作途中で変わっても平気です。LCDには1秒ごとに周波数を計測させています。それでは動作状態を見ていきましょう!


 まずはじめに、デューティ0%の波形を見てみました。上2枚がその波形写真です。注目は拡大した右の写真です。オシロスコープの電圧軸は10V/div です。ざっとですが約15Vp-pの商用周波数の電圧が漏れています。これは何かと考えた所、SSRスイッチ端子間容量ERZV14240Uと言う バリスタ端子間容量と思われます。ちなみにカタログからSSR開時漏れ電流値は、AC200V/60Hzの規定5mA以下とあります。これを容量換算すると約66nF(5mAの場合)相当になります。ちなみに印加電圧が今回半分のAC100VなのでSSRの端子間容量をざっと 50%33nFと見て、バリスタの1nFを足して34nFとした場合、漏れ電流値は、 約1.1mAになり、これに負荷の5kΩを積算するとざっと5.34Vrmsになります。この電圧のセンターピークで約7.6Vpになる・・・と推察しています。 割と合っているように思えますが、まあ今回はこれで実験しましょう!



印加電圧AC100V/デューティ10%/負荷=5kΩ(10%)抵抗




印加電圧AC100V/デューティ20%/負荷=5kΩ(10%)抵抗




印加電圧AC100V/デューティ50%/負荷=5kΩ(10%)抵抗




印加電圧AC100V/デューティ70%/負荷=5kΩ(10%)抵抗




印加電圧AC100V/デューティ90%/負荷=5kΩ(10%)抵抗




印加電圧AC100V/デューティ100%/負荷=5kΩ(10%)抵抗



 上写真の右側の波形を見て下さい。これはデューティを 10% にした時の0V付近の拡大波形です。拡大したのは本当に「ゼロボルト」でON/OFFしているのかを確認したかったのですが、 先ほどの漏れ電流による電圧と、結構汚い波形で、判断が難しい状態にあります。こうなれば、歪みの少ない交流定電圧電源が欲しくなりますね!機会を見つけて確認してみたいと思います。

 苦労したこと/その他

 今回、「さぁー始めるぞー!」と言って、3日で出来てしまいました。ブレードボードのおかげと、SSR基板など、すでに出来ているものを流用した事情もあります。 プログラムも結構短くできましたが、今一つスマートでないので、自分でもあまり気に入っていません。苦労と言う苦労はなかったのですが、AC100Vと言う高圧を扱うので、ちょっと緊張しました・・・と言ってもついその昔には数十万ボルト以上の電圧を操っていたのが嘘の様でした。つまり、やはり 感電は怖いと言うことです。

 総  評

 今回は、抵抗負荷での実験でしたが、容量負荷誘導負荷の場合、どうなるかも見てみたいものです。特に電流の振る舞いについて、SSRがどのようになるか?経験では 突入電流に気を付けることは認識しております。私が気にしているのはその電流の振る舞いでPICがどの様に影響を受けるかと言うことです。
 応用として、SSRの容量を大きくすると、結構使い道はありそうです。これを機に、今度は 位相パルス重畳器を考えたいと思います。なんとなく出来そうな気がします。3桁のサムホイールスイッチまたは、液晶LCD上で位相角を設定し、そこにパルスを打ち込むだけの装置です。例えば分解能が 55.5μS あれば、360度を見つけられます。 55.5μS×360=20mS、つまり50Hzです。それでは、次回もお楽しみに!