2020年9月26日土曜日

テスラスイッチ(4バッテリー・スイッチ)の製作~試運転

本体の説明

まずは、ひとまず テスラスイッチが出来た。

今後テストを行いながら、改造していくことになると思う。

次の写真が全体の姿。


場所をとらないように本体を4層構造にした。

一番下がバッテリー、その上がスイッチ回路と制御ボード、その上が変圧器トランス、一番上がランプ負荷。


スイッチ回路は、動作音が大きく耳障りだった。その対策として、周囲を防音シートと吸音材で囲むようにした。

下の写真は防音処理の様子。この中にスイッチ回路を挿入する。


スイッチ回路はメンテナンスを考慮して1枚のMDFボード上にまとめた。

下の写真のようにスイッチ回路を差し込む。


そして、制御ボードを乗せた正面の蓋をとりつける。スイッチ回路がスペース的に一杯だったため制御ボードは外側に出した。
ちなみに、制御回路は外部の安定化電源から12Vを供給する。しかし最終形ではバッテリー供給にしたいところ。
これで耳障りな音はかなり抑制されるようになった。

それから、4個あるバッテリーには全てターミナルスイッチをつけた。

スイッチ回路とバッテリーをケーブルで接続する際にどこかに当たってショートするなどのトラブルを避けるためである。

この写真の左上の青色のつまみがターミナルスイッチ。



配線を終わらせた後、軽くテストをしてみた。


動作テスト

まずは、バッテリーのターミナルスイッチをすべてOFFにして、制御回路とスイッチ回路が動作することを確認した。スイッチの動作周期は0.2秒。カチ、カチ、っと規則正しくスイッチの音がする。これは問題なかった。


次にバッテリーのターミナルスイッチをすべてON、負荷は変圧器トランスのみ(=無負荷)、スイッチの動作周期は0.2秒。

ここで問題が発生した。制御回路を投入した直後にスイッチ回路が2回ほどカチ、カチと動いて鈍い音とともに停止した。

調べると、過電流保護ヒューズ(30A)が切れていた。0.2秒周期では、商用トランスに対して直流を流しているような感じとなり、過電流が流れた。トランスの巻き線抵抗は1オームもない。そんなところに直流12Vを印加したのだからあっという間に30Aを超えてしまったようだ。


調べたついでに、5Hz(=0.2秒周期)の信号で変圧器がどのように動くかも調査した。外部の発信機で5Hzのサイン波を入れてみたが、出力はほとんど出てこなかった。

つまり、0.2秒周期でスイッチを動作させた場合、変圧器から出力が得られないということだった。よって、スイッチの切り替え周期を0.02秒(=50Hz)かそれ以上にする必要がある。

そしてもしも、このままスイッチ周期0.2秒(5Hz)で実験するには、トランスを使わない方法をとらざるを得ない。


対策

1.直流負荷装置をつくり、変圧器を使わないで、スイッチ回路はそのままで実験を行う。

 これは、一般的なスイッチとソレノイドの組み合わせではテスラスイッチは実現できないということの確認のためにする。

 それと、負荷装置が交流ACタイプと直流DCタイプの両方が準備できるので今後色々と使える。


2.スイッチ回路を回転モータータイプに交換する。

 スイッチを自作しなければならないので手間がかかるが、このタイプであればスイッチ切り替え周期を50Hz以上にできる。

 スイッチの参考画像


ひとまず、対策の1をやって、次に2を行うことにする。










2019年11月9日土曜日

テスラスイッチの回路設計について

話が少し前後するが、テスラスイッチの回路を設計した時のまとめ。
今回作ろうとしているものが下図の回路

<<回路の動作をわかりやすくした絵を追加>>
4個あるスイッチが交互にON-OFF/OFF-ONを繰り返す。そのたびに、バッテリーの充電と放電が入れ替わる。
STATE1では、右側2個のバッテリーが直列つなぎになり24Vが得られる。これが左側2個のバッテリー(これは並列つなぎになっている)を充電する。電流は負荷(この絵ではランプ)を通って右側のバッテリーに戻ってくる。

スイッチが反転してSTATE2になると、今度は左側2個のバッテリーが24Vを作る側となる。そして右側2個のバッテリーが充電される。負荷の電流は先ほどとは逆向きに流れる。

回路にはダイオードが4個使われているが、これは恐らくスイッチの切り替え時や負荷から生じるスパイク波などの影響で逆向きに電流が流れるのを阻止するために使われていると思われる。ゲルマニウムのダイオードが推奨されているのだが、入手困難なので今回はショットキーバリアダイオードを使ってみることにした。

今回設計した回路図は、ネット上から入手した回路図(下の画像)などを参考にした。
この図と大きく異なるのが、下部にある1000uF 100Vコンデンサーと負荷(Load)用の整流ダイオード部分である。

まず、1000uFのコンデンサーがついていることはバッテリーから負荷へ供給できる電荷量が制限されてしまうということになる。
スイッチの切替周波数が十分に高いなら問題ないかもしれないが、5Hz,10Hzといった低周波の場合はほとんど電流が流れないことになる。今回作ろうとしているものはスイッチの定格から低周波で動かす予定なのでこのコンデンサーは無しとした。
その代わりに、バッテリーの+側にヒューズを入れて過電流が流れて発火しないようにした。

それから、負荷を一般商用100Vの電球にしようと思うので整流回路は不要にした。その代わり、昇圧トランスを入れることにした。±12Vの交流出力を100Vにする。
テスラスイッチの負荷は、誘導性のものが良いらしいのでその点を考慮した。どのフリーエネルギー装置にも共通するらしいが、抵抗負荷では良い結果が得られないという話もあるので負荷と言えども注意が必要。
トランスの容量は一応負荷電流から決めた。その負荷電流はスイッチの定格から決まる。スイッチの定格最大電流20Aなので、1/2 * 24V * 20A = 240VA が必要な容量となる。ただし、スイッチはピーク電流が70Aであるため、余裕をみて600VAとしている。
この負荷装置には一つだけ懸念材料がある。スイッチの切替周波数が低いのでトランスが十分に機能しない可能性が高い。本当は50〜60Hzあたりで切替を行いたいところ。実験で確認していこうと思う。
色々と考えてこうしたのだが案外自動車用の12V用ランプを使った方が簡単で良かったかもしれない。

使用するバッテリーは、バイク用の小型のものを4個使う予定。

それから、制御回路が停止している時は、スイッチが設計した回路図通りの位置になるようにした。こうしておくと左右どちらの側も充電モードの12V状態になって釣り合っているので、バッテリーの電圧に大きなばらつきがない限り負荷への電流供給はほぼゼロになる。


2019年11月6日水曜日

テスラ スイッチの制御部を試作

ソレノイドをON/OFFするための電子回路を組んでみた。

下の画像はソレノイドのドライバ。

データシートからソレノイドの抵抗が17Ω。これに10.9Vがかかるようにする。この時の電流が約641mAになる。電源電圧の12Vのうち1.1V分を引き受ける抵抗は、計算では1.7Ωだが抵抗の組み合わせの都合から1.8Ωとした。抵抗の消費電力は0.733W。

ソレノイドの逆起電力を打ち消すためにフライホイールダイオードを挿入。手持ちの高速整流ダイオードPS2010Rを使った。本当はファストリカバリーダイオードの方がいいのだが、今回は低周波なので問題ないはず。定格は1000V2Aで、耐圧はここまでいらないが641mAの2倍以上の容量が欲しかったのでこれにした。

トランジスタは手持ちの2SC2120を使った。コレクタ電流は800mAまで流せるのでギリギリ大丈夫だろう。hfeを100として計算し、ベース電流は6mA、ベース側の抵抗は2kΩとした。

次の画像は発信器。
タイマーICの555を使った簡単なもの。出力波形のDuty比は約50%で、周波数は二つのジャンパー設定で5Hz, 10Hz, 50Hz, 100Hzの切り替えができるようにした。

正直なところ、テスラ スイッチの切り替え周期が不明だったため一番困った。おそらく実験をして最適な周波数を探すものなんだと思う。
ある資料では100Hz以上は危険などという記述があったので、それを一つの目安にした。
それと、基本スイッチの許容操作頻度があり、機械的240回/min、電気的20回/minとなっている。電気的の方はかなり低い。機械的には4Hzまで、電気的には0.333Hzまでということだろうなぁ。スイッチの接点がチャタリングを起こすはずなのでこのような数字になっているということだろうな。この点はかなり悩ましいが、実験で確認していきたい。

ソレノイドスイッチも通電から動作完了までの応答時間というものが存在する。データシートにはかかれていなかったが、10〜20msぐらいだろうか。もしも20msだとすると、50Hz以上ではスイッチがONになる機会が全くないという話になる。

以上の考察を加えると、5Hzの実験が精一杯で、10Hzでスイッチがどこまでもつかなというレベルになりそう。50Hz以上はスイッチがONにならないだろう。

もしも50Hz以上にするなら、モーターで回転させるブラシスイッチにするしかない。しかしそこまで切り替えを頻繁に行うべきなのかすごく疑わしい。

今は簡単な方法での実験を優先しているので、このまま進めていく。

ブレッドボード上で回路を組み立てて、スイッチユニットを動かしてみた。
こちらの画像の上がその回路で、下が出力波形をオシロスコープでみたもの。

オシロスコープの中の上の波形が2SC2120コレクタ電圧で下が555の出力波形。周波数は4.3Hzだった。スイッチは問題なく動いていた。
その動画はこちら。


2019年11月5日火曜日

テスラ スイッチのスイッチユニット一つを作ってみた

テスラ スイッチを製作するに当たり、基本的なパーツを選定した。

スイッチは、オムロンの高容量形基本スイッチA-20Gシリーズにしてみる。
これをタカハ機工のプッシュソレノイドCB1029でON/OFFさせることにする。
回転式の切り替え器も検討してみたが、製作の容易さや費用面を考えてスイッチ+ソレノイドになった。

スイッチA-20Gの定格は20Aあるので、12Vx20A=240VA程度の負荷まで使える。

スイッチを決めた後、ピンを押せるソレノイドを選択。
この2つを1つのユニットにしたのがこの画像。
ネズミ色のパーツは3Dプリンターで作成。レバー付きのスイッチを買っておけばよかったのだが、ピンタイプを購入したのでバーを間に入れてテコの原理でスイッチを押している。

電源電圧はバッテリーから供給することを考えて12Vにした。
ただし、このソレノイドは12Vでは連続動作できず、1周期のON時間は40%となっていた。
少なくともDuty比50%、つまりONとOFFが同じ時間長さで交互にできなければならない。
データシートから、10.9V以下であればDuty比50%動作が可能と分かった。ソレノイドには抵抗を直列に入れて印加電圧を下げることにした。

ソレノイドの印加電圧を下げると吸引力が低下する。それでもスイッチが押せるかどうか検証しなければならない。
この点については、組み上げてから動作テストを実施し、問題ないことを確認した。


2019年10月3日木曜日

FPGAマイニングをやってみて

ここまでVivadoの勉強をしたりして随分遠回りしてしまった。
本来の目的の一つ、PYNQ-Z1ボードを使ったマイニングに取り掛かる。


FPGAのソースコードは、ここからリンクを辿りGithubへ行きGETする。

Vivadoで新しいプロジェクトを作成して、自作IPを作る。そしてソースファイルを追加したり、修正したりしてIPを完成させる。
次にブロックデザインに自作したIPを追加してコネクションする。この時、自作IPのクロックは、「クロックウィザード」を経由して供給。こうしないとIPのクロックとLPのクロックが合わなくてエラーになるので。
Generate Output Product、Create HDL Wrapperを実行して、最後にGenerate Bitstream、Export HardwareでFPGAのHWが完成。Lanch SDKして、プロジェクトを作る。

このあと、Linuxでの作業に入る。上記のSDKをフォルダー丸ごとSCP。
そしてVivadoの練習でやったように、VirtualBoxでpetalinux-createしてプロジェクトを作成。
petalinux-config、petalinux-build、petalinux-packageと続く。
出来上がったBOOT.BINとimage.ubをSDカードのMSDOSパーティッション側に書き込む。これでFPGAにマイニング回路が組み込まれるようになる。

なお、練習ではrootfsのビルドからSDへの書き込みまでやっているが、この作業は不要。
petalinux自体がbusyboxをベースにしているものらしく、コマンドが貧弱すぎて使えない。代わりに一番最初のPYNQ-Z1動作確認に使ったisoイメージの中の物を使う。これはubuntuが入っていて、Linuxが普通に使える。
したがってext4パーティッション側のみ、isoイメージのrootfsを書き込む。(実際にはisoイメージを書き込むと、SDが全て書き換えられてしまう。だから、もう一度上記のVirtualBoxで作ったBOOT.BINとimage.ubを書き込むこととなった。)
ブートがbusyboxベースのLinuxでツールなどの入っているrootfsがubuntuなので心配にもなったが、問題なかった。
この記事が参考になった)

最後にSDカードでPYNQ-Z1を起動し、ここからマイニングソフトを取得しREADMEに書かれているようにビルドする。

これでビットコイン専用のFPGAマイニングマシンが完成。


さあ、マイニングを始めるぞ!!とWalletやプールマイニングの準備をするのだが、、、なんと、すでに旬な時期は過ぎていたようで、プールマイニングでビットコインが見当たらない。なんてことだろう。

すでにビットコインは8割以上採掘済みだし、ASICマイニングの圧倒的パワーに押されて見向きもされなくなったということのようだ。

他の仮想通貨をマイニングするとなると、本腰を入れてVerilogでコーディングしなければならない。しかし、今はそんな時間的余裕がない。

ひとまずFPGAはここまでにして、テスラ スイッチの方に取り掛かってみたいと思う。
電気代がタダなら、GPUマイニングが可能になるのでまだまだ諦めずに頑張ってみる。

今回、FPGAマイニングとはどういうものなのかについて、とても勉強になったし、この貴重な情報ソース・貴重な体験を与えてくださったBOSUKEさんには感謝です。

2019年9月28日土曜日

PetaLinux(3)

今回でこの学習シリーズは終わり。




この回は、ZYBOのボードファイルの定義ミスによってLANが使えなかったという記事。PYNQ-Z1ボードではこの事象はなかったのでほとんどスルー。




この回の記事は、TCF機能を使ってLAN経由でボードのデバッグを行う方法だった。これは参考になった。

Windows側のSDKツールでプロジェクトを作成する前に、petalinux側でsysrootをビルドしておき、それをWindows側へ持ってくる必要があった。この点の記述がなかったので調べたりして分かるまでに時間がかかった。
まず、以下のコマンドを実行する

petalinux-build -s
petalinux-package --sysroot
そして以下のように出来上がったファイルをzip化し、Windows側へ持ってくる必要があった。
zip -r sysroot.zip  work/peta//images/linux/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi
SDKのプロジェクト作成時に、zipを展開したフォルダーsysrootを追加指定する。

これはLinuxを知っていれば分かることなのでスキップ。

またPSの記事なのでパス。

これもPSの記事。しかも私が最終的にやりたいFPGAマイニングではデバイスドライバは必要ないのでこれもパス。

この記事も上記と同様の理由でパス。
「IoT化」は面白そうなので、別な機会があればやってみたい。



以上、最後は記事を読んで終わりだった。
そもそもマイニングが目的で始めた学習だったので必要のない部分はパスでも問題なし。(笑)

ということで次はFPGAマイニングボードの構築にかかるぞ。

2019年9月8日日曜日

PetaLinux(2)

VirutualBoxに不慣れなのと、petalinuxツールの仕様が変わってきているのか、説明通りになかなか進めないでモタついている。

■「ZYBO(Zynq)初心者ガイド」の9回目:Linuxカーネルを少しカスタマイズする。

ここでVirtualBoxからUSBを使えるようにした。

ポイントは、SDカードをWindows本体に差し込むとWindowsが自動的にドライブとしてアクセスできるようにしてしまうのだが、この状態だとVirtualBox側からUSBにアクセスできない。
だから、WindowsのエクスプローラーからSDカードを取り出した状態にしておいて、SDカードは取り出さずにVirtualBoxのUSBアイコンからUSB機器のリストを出して対象を選択する。
赤い矢印のところのUSBアイコンを選択

リストからSDカードを選択
これが分かるまでに少し苦労した。

この後、
> sudo fdisk -l
とすると、SDカードのドライブレターが分かる。
 /dev/sdb1  FAT32
 /dev/sdb2  ext4
そして、マウントする
> sudo mount -t msdos /dev/sdb1 /media/usb
> sudo mount -t ext4 /dev/sdb2 /mnt
マウントしたSDカードにツールでビルドしたイメージファイルをコピーする。
> cd ~/work/peta/SimplePS/
> sudo cp images/linux/BOOT.BIN /media/usb/
> sudo cp images/linux/image.ub /media/usb/
> sudo dd if=images/linux/rootfs.ext4 of=/dev/sdb2


■「ZYBO(Zynq)初心者ガイド」の10回目:Linuxのrootfsをカスタマイズする / PythonでHello World

PYNQボード上のPetaLinuxで python と gdb を利用できるようにするのだが、説明通りだとなぜか結果が異なる。ツールの使い方が微妙に変わったのかもしれない。

VirtualBox上のubuntuで
> petalinux-config -c rootfs
でpythonとgdbのライブラリを追加する。このあとビルド。
> petalinux-build
単純にこうした方が良いようだ。「petalinux -x package」を実行しただけではイメージファイルが更新されなかったし、当然pythonも動かない。
それから、rootfsの設定を変えているので、イメージファイルもrootfs.ext4のサイズが65MBから101MBにアップしていたのは納得がいく。この点が記事の記述と異なった。私のやっていることが、何か間違っているのかもしれない。
しかし、これでpythonが動いたのでこれで良しとしておこう。


■「ZYBO(Zynq)初心者ガイド」の11回目:LinuxユーザアプリケーションでLチカ

「3回目:PSのGPIOでLチカ」でも書いたが、PYNQ-Z1ボードはPSから操作できるLEDが割り当てられていないので、ここでも記事の前半部分はスキップ。

後半部分のPLからLチカはできた。


■「ZYBO(Zynq)初心者ガイド」の12回目:LinuxカーネルモジュールでLチカ

このカーネルモジュールは、PSのGPIOでLチカと同じようなのでスキップ。


あと、残り6回分。予定より時間がかかっているので少し頑張らないと。