ぽんず製造所

当ブログの記事を参考にして行った事により、いかなる不都合が発生としても当方は一切の責任を負いません。全て各自の自己責任でお願いします。

PICマイコン

自動二次コイル巻き機

もう1年近く前になりますが、自動二次コイル巻き機を作りました。記事書いてないことを思い出したので今書きます。

テスラコイルはあの二次コイルを作らなければもはやテスラコイルとして成り立ちません。
でもコレを巻くのは非常に面倒で大変。1000回くらい巻かなければいけません。
ということで自動でコイルを巻いてくれる装置を作ってみました。
今までも電動ドリルの先に塩ビパイプを取り付け、半自動で巻けるようにしていました。
しかし、巻いてる時の調整は手で行わなければいけませんし、巻数もカウントできません。巻数は使った銅線の重さを量る、または巻取り長を測って線の直径で割ることで大体の巻数は算出できますが、スキマや誤差で正確には測定できません。
そこで、巻数をカウントできて、調整も自動でしてくれる、というのを目標にしました。

まず。正確に巻数をカウントするために、今回は巻取り用モーターにステッピングモーターを用いることにしました。DCモーターでもいいですがフィードバックが必要になると思います。
次に、線を巻いていくと巻くべき場所が移動するので、巻く場所を調整する必要があります。
これも正確に移動させる必要があるので同じくステッピングモーターにします。

そんでもって適当に回路を作りました。

DSC_1102

左から、制御回路、モータードライバ基板、ステッピングモーターです。
制御回路には秋月の福箱から出たものを使ったり、部品箱の奥底にあったものを使って、極力お金をかけないようにしてみました。部品の消化にもなるし
モタドラはなんだか大げさですが、学校に大量にあったICをいくつか頂いてきた(許可済み)ものなので文句は言えないです


次に巻き取るところを作りました。

DSC_1100

真ん中にコイルをセットします。 
一応最大40cm程度のコイルまで巻けるようにしました。右側の板は下のアルミ棒に沿って移動できるようになっているので任意の長さで調整できます。

巻線を自動送りするところも取り付けました。ネジ送りになっていて細かな移動が可能なはずです。

DSC_1117


これは巻線を掴む部分です。
こんな感じで線を通したらフタで挟み込みます。

DSC_1056

布を使ったのでいい感じに線を摘んでくれます。ネジで挟み具合を程よい感じに調整することも出来ます。ピッピッって糸が張る感じです。



さて、この時点でハードはほぼ完成なのでテスト用プログラム書いて動かしてみました。
この時ステッピングモータは二相励磁で動かしていて、その分解能が低かったためか、モータが思ったよりガクガク動いてあまりよろしくありませんでした。
そこで、マイクロステップ駆動というものでもっと細かな制御をすることにしました。電流値を細かく制御するらしいのですが、マイコンで制御するのは大変めんどくさそうなので専用ICのTB6608FNGつ使うことにしました。

制御基板のLCDの裏は空きスペースとなっているのでそこに実装しました。

DSC_1075

結構発熱しそうだったので銅板貼っつけてその上にIC載せました。配線はUEWでやりました。
そしてその上にクールスタッフ貼って放熱はバッチリです。(結局、実際動かしてみると思ったより発熱しませんでした...)

DSC_1078

結果として制御基板とMDが合体して1枚になり、ステップ数も細かくなり、モータの制御も楽になって一石三鳥です。
ついでにDCジャック付けました。

DSC_1177

基板を取り付けて完成です。

DSC_1193

全体的にかなり雑な作りなのは、急いで作りたかった・安く済ませたかった・まぁでもそれなりに使える、を求めた結果です。許して


ソフトはこんな感じになりました。



turnsは巻いた数、densityは巻取り間隔です。横の矢印は巻く方向とかです。
RotationModeはコイル側だけ回します。ニス塗りのときに有用です。MovementModeとかは送り位置の調節とか用です。


VU管とはこんなの作って連結します。

DSC_1145


試しに巻いてみました。途中で間隔を変更しながら巻いてるのでこんな感じになっています。

DSC_1138


本番用コイル(約800巻)を巻いてみました。動画は40倍速にしていますが本当は約10分かかりました。



出来たやつ
DSC_1188

782回巻いたらしいです。
DSC_1184

キレイに巻くにはどうやらセッティングにコツがいるようで、それまでUEWを結構無駄にしてしまいました。あまりにも雑に作ってしまったので精度の悪さや歪みなどがあり、その影響もあると思います。
しかし手巻き/半自動巻よりかだいぶ楽に制作できるようになったので良かったです。

1石お手軽誘導加熱

Twitter上で誘導加熱が流行って(?)いたので自分も作ってみました。

DSC_0014

1石で動作する回路です。
IHクッキングヒーターや炊飯器、電子レンジのインバータなど、わりと身近にある家電に使われてる方式だったりします。

缶に水入れて沸騰させてみました。



電源には24Vの電源装置を使っています。本当はAC100V突っ込みたかったのですが、高耐圧な素子がなくて今のところ24Vで我慢しているところです。


基本的な回路図です。

1石共振

L1が加熱コイル、C1が共振コンデンサ、M1がメインのスイッチング素子です。
回路の簡単さでは自信があります。将来保護機能などの拡張も楽にできるようになっています。

まず、「動作開始」と書いてある電源から一瞬電圧が出力されると、回路が動作し始めます。※一瞬(1usくらい?)じゃないと動作おかしくなるかも。
その先にあるORが1になると、さらにその先の「A」の回路に入力されます。この回路はパルスの立ち上がりエッジを検出する回路で、連続的に1が入力されても一瞬だけ1を出力してくれます。

赤:ORの出力(A回路の入力)
緑:A回路の出力
A回路


Aの回路の先にはSR-FFがあります。Sに1の信号が入力されるのでQが1、そしてMOSFETがONになります。そしてL1に電流が流れ始めます。
この時、MOSFETのドレインの電圧は(理想では)0Vです。ドレインの横にある分圧回路で分圧されたあと、コンパレータに入力されます。
そういえばこの分圧回路はあんまり分圧の意味をなしていません、どちらかと言うと高電圧が入力された場合にはダイオードを通ってクランプされるような動作をします。
話を戻しますと、コンパレータの-には分圧された0V、+に基準用の電圧がかかるのでコンパレータの出力は1となり、ORに入力されます。
今度は「B」の回路を見てみましょう。ORの出力が1のとき、50kΩの抵抗を通ってじわじわと1000pFのコンデンサに充電されていきます。電圧が上がっていき、しばらくするとその先にあるSR-FFの閾値に到達し、Rが1と判定されるのでQが0になり、素子がOFFになります。
つまり50kΩと1000pFの大きさで素子をONしている期間を決定しています。
(ちなみにこの時Aの回路は一瞬だけ1になるのでORの出力が1でもAの出力は0になっています)

赤:ORの出力(B回路の入力)
緑:B回路の出力
B回路


素子がOFFになるとL1の電流も途切れたいところですが、そういうわけにはいかず、かわりにC1へ電流が流れていきます。これでなんとなくL1とC1で共振します。
この時はD電圧は高電圧になってるので、コンパレータは出力0となり、Aの回路もBの回路も出力0なので、SR-FFは変わらず素子はOFFのままです。

L1とC1が共振するとなんかしらんが勢いで勝手にドレイン電圧が0Vまで戻ってくる点があります。
この0Vになった瞬間、コンパレータが1となり、SR-FFが1、そしてMOSFETがONになります。
このようにして発振が続いていきます。

そして注目してもらいたいのが素子のON/OFF時のドレイン電圧です。
ターンオフ時はC1に充電される時間があるため、いきなりドレイン電圧が上がることはなく、0Vから徐々に電圧が上がっていきます。その後、共振で0Vまで戻ってきます。今度はこの点で素子をONにします。
要するにうまいことZVS動作をしていて素子のスイッチング損失がほとんどゼロにできるんです。考えた人頭いいですよね...

赤:ドレイン電圧
緑:ゲート電圧
zvs


「動作開始」は一瞬電圧を出力します。こいつがないと発振が開始しません。
コンパレータの基準用電源はZVSタイミングの調整と、MOSFETのRdsやIGBTのVce_Satの対策みたいなものです。
分圧後のコンパレータへの入力なんですが、寄生容量のせいでなんか遅れ気味になっちゃうみたいです...。自分のやつはこれが逆にいい感じの動作をしてくれててZVSタイミングを調整できます。でも寄生容量利用するとか気持ちわりぃよね

素子のON時間の設定はBの回路の抵抗値で調整できるのでここを半固定抵抗またはボリュームにして出力の調整をすることが出来ます。B回路の後ろにコンパレータくっつけても良いかもしれません。
ただしあんまりON時間を短くしすぎると周波数が高くなったり、電流があまり流れなくなってドレイン電圧が0Vまで戻ってこなくて発振が止まっちゃったりするので注意です。

また、上記の回路はすごく基本的な部分だけの回路図なので何の機能もついていません。過電圧・過電流検出回路をつけたり、動作/停止の制御もできると良いかもしれませんね。
あと回路図上ではゲートドライバも省略してるので実際作る時は付けましょう。


自分は上記の制御回路をPICマイコン内に組み込んで簡単に仕上げました。IH本体の回路は中でロジック回路組むモジュールとコンパレータと周辺回路で完結してるので、マイコン的お仕事は動作開始のパルスを出すことしかしていません。

DSC_0012


この回路はZVS動作できるのが良いところですが、自分のは発熱が結構あるのでうまくZVS出来てないのかもしれないです。オシロで見た感じはまぁZVSどうなになってる気がするんですけどねぇ...。ON抵抗で普通に発熱してるだけかもしれないです。わかんないです。

黃:ゲート
青:D電圧
紫:D電流

077

なんか電流波形がひどいね
とりあえず簡単に作れたので満足しています。




===追記===
回路いじってたらもうちょっと簡単にできました。
基本構造は同じです。試作してないのでわかりませんが動きそうな気がします。
OR(A1)の後ろ~バッファ(A2)の間の部分で、立ち上がりエッジ検出とON時間のタイマーを兼ねました。真ん中の10kΩの抵抗(R2)を調整すれば出力可変(ON時間可変)できるはずです。
RS-FFが消えたのは大きいと思います。マイコンに組んだとしても外付け部品が少なくなるのは嬉しいことです。

キャプチャ

PICマイコンを使ったノーマルインタラプタ

今までテスラコイルのインタラプターには言わずと知れたスティーブ氏のインタラプタを使ってきました。

これ
DSC_0443

しかしドラム放電やQCW放電など、単発の出力をすることはできなかったので新しくインタラプタを作ることにしました。
(や、実は左上のボタンで単発出せるんだけど接触悪かったり何回も押さないといけないしなんだかんだで使い勝手が悪かった)

スティーブ氏のものは555を使ったディスクリート構成でしたが、今回はすべてマイコンで制御しようと思います。
基本的にはスティーブ氏のものと同じ動作+ドラムモードを実装するつもりですが、マイコンを使ってプログラム次第で柔軟に動作させたり、部品数も少なく配線も簡単にしちゃおうという魂胆
あと電池の持ちも良くなるように、というかなくなっても安価に入手できるように単3の電池を使うことにします。006Pはちょっと高いよね。あんまりかわんないかも。

こちらが作った基板

DSC_1237

乾電池一本で動かせるように、HT7733を使ったDC-DCコンバータで1.5V→3.3Vに昇圧しています。
あとはメインのマイコンとボリューム類のコネクタ(ピンソケットだけど)、出力の光コネクタが載っています。

ボリューム類がわちゃわちゃしすぎてる

DSC_1242

ケースに組み込んだ。

DSC_1249

ケースはその辺にあったテキトーな物なので少し小さく操作性が悪いです 

かんせー

DSC_1248

ボリューム類は、
電源スイッチ、モード切替、バーストモード間隔、バーストモードD比
    動作状態確認LED
単発出力ボタン、単発を一定時間おきにパンッパンッってやるやつ、周波数、パルス幅
という感じに並んでます。

使用したマイコンはPIC16F18325です。NCOというモジュールを使い、かなり滑らかに周波数を変更できます。0~125kHzまで0.1192092896Hzごと(20bit)に周波数を変えられますがもはやVR値をADCが10bitなのでNCOを使いきれてない。

???
DSC_1239


動画



このインタラプタは実はNT京都にあわせて作ったのですが、来場者の方から「なんで音が出せるの?」という質問をされそうだったのでパンッパンッパッパッパパパパバーーー(伝われ)ってやって原理を説明できるモードにを付けてみました。実際文化祭で実演した時は何度かこのような質問されました。まぁ結局テスラ本体がダメだったのでNTでこのモードを使うことはありませんでした(
話を戻しますとモード切り替えスイッチを一番下にするとこのモードになります。周波数ボリュームを右から左に下げていくと周波数が上がっていきます。
そのまま、モード切替スイッチを中点にするとノーマルインタラプタモードになり、ボリュームを上げていくと周波数がさらに上がっていきます。原理説明モード→ノーマルモードの切替時に周波数を連続させたかったので原理説明モードの操作が変な感じになりました。
モード切替スイッチを一番上にするとバーストモードになります。
左下のボタンを押すと単発出力(1msくらい)を出せます。で、その隣のボリュームで一定時間おきに単発出力してくれます。
長々と書いてしまいましたが動作はこんな感じです。 

使ってみた感想としては、上にも書きましたが操作性が悪い。持ちやすいケースで作り直したいね。
それ以外は思った通りに動いてくれましたし、特に以前のインタラプタで問題になった点を解決することが出来て満足しています。以上です。

ドラム風に放電できるインタラプタ

テスラコイルでドラムっぽいこと昔からやってみたかったんですよね
QCWDRSSTCがドラムに最適だなとか思ったんですけどもうちょっと手っ取り早くやりたいなと思って(作る技量もないし)
インタラプタの方を改良してドラム風な放電ができるようにしてみました。 


とりあえず動画

うまるーん


けいおんのやつ


らき☆すた


ドラム音は、強制的に(通常のパルスに比べて)非常に長いパルスを1パルスだけ送っているだけだったりします。
放電が長くなるのと、通常の音楽の放電が中断されるのでポツッって感じに放電できるわけです
確か200us~1ms(ベロシティによって可変)のパルスだったと思います。

あと同時に通常の放電についても、ベロシティによってパルス幅可変にしました。
これによりパルス幅は74HC123制御ではなく全てマイコン制御になりました。マイコンがバグってもテスラ側に保護付けといたので大丈夫だと思います。
これで小さい放電(小さい音)とか大きい放電(大きい音)とか表現できますね!
動画内ではうまるちゃんの一番最後のピ↓ロ↓ロ↓ロ↓ロ↓のところとかわかりやすいと思います。

放電テスト的な↓

ボリュームも無理やり追加したので全体的な音量調節もできます。

アッそういえば74HC123を使わなくなったので、代わりに光コネクタ用の信号変調マイコンを取り付けました。ピン配置を合わせるために一回基板に実装してからソケットに刺さっています

CvYKjvQUEAAjX0x

テスラコイルといえば光コネクタの受信側の改造が必要でしたが、このマイコンを通すことで改造が不要になりました。これについてはまたいつか記事にしようと思っています。


実はどれも文化祭にあわせて改良した機能です。おかげでいい感じに放電させることができました。
それでは、今日はこの辺(へん) で。

PIC16F1705でWS2812Bを動かす

WS2812Bはシリアル通信で制御できるRGB LEDです。WS2812Bについての概要は他のサイト等でググってみてください
今回はPICマイコンでWS2812Bを動かす方法(?)を紹介しようと思います。

WS2812B系のLEDの何がめんどくさいって通信波形の生成ですよね。
少しググって調べた人ならわかると思うんですけど、信号の1パルスが1ビットの情報になっていて、このパルスの長さによって0か1かを表すというものです。
しかしこのパルスが1周期1~2us程度と、そのへんの8bitマイコンだと処理がギリギリです。C言語で書くと処理速度が遅くなってしまうのでアセンブラで書いてる人が多いみたいです。

自分がWS2812Bについて調べてる時、次のようなアプリケーションノートを見つけました。
PIC16F1509 の構成可能なロジックセル (CLC) を使った WS2811 LED ドライバ インターフェイスの作成(AN1606)(PDF)
PICマイコンは処理速度は速くないですが、周辺モジュールが豊富にあるので、これを使って信号を生成してみようというもの。
タイマー、SPI、PWM、CLCを使いLEDドライバを構成しています。CLCと言うのはロジック回路をマイコン内部に生成できるというものです。CPLDやFPGAの超小規模版といったところ。
このLEDドライバはSPIに表示させたいデータを入れるだけで信号を生成してくれるというすぐれものです。
SPIのSCK信号を長いパルスとして使用し、PWMで短いパルスを生成しています。これをCLCでSPIのSDOと合成して信号波形を生成しています。
SPIとPWMは同じタイマーを使っているので完全に同期させることができるようです。考えた人ホント頭いいですよね

もうほぼこれを参考にして(いやパクリ)作ってみました。
PICはアプリケーションノートのマイコンではなくPIC16F1705を使用しました。WS2812はとりあえず4つです。



使ってみた感想としては、モジュールの設定を済ませれば、あとはSPIにデータを入れるだけでいいので簡単に制御することができました。ただデータを送ったら次のデータを即座に用意しないと表示がおかしく(チカチカする)なってしまうので結局工夫してプログラム書かないとダメみたいですね。



ていうかこれやったのもう半年以上前だからよく覚えてないんだよなぁ...
本当はもうちょっとLEDドライバについて書く予定だったんだけどね、しょうがないね
5000兆円欲しい!
Twitter
Twitterに大体います