ぽんず製造所

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

2016年12月

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

テスラコイルでドラムっぽいこと昔からやってみたかったんですよね
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兆円欲しい!