ツイート
昨日 今日 |
ハンドコンPWM制御計画2009.05.10
ハンドコンの使い勝手は気に入っている。36lbという非力なエレキも大会にでるわけではないので、特に不満はない。ただ・・5段変速だとバッテリーが持たない。。 理屈 なんで5段階変速と無段階変速でバッテリーの持ちが違うのかというと、5段階変速は12Vのバッテリをつないだときに、半分の速度にしたい場合、6Vにしてやれば半分になると、残りの6Vは捨ててしまおう。一方、on/offを細かく切り替えてモーターを動かせば、ボートが動く慣性の法則で、半分の速度で動かすことができるよね、というのが無段階変速。5段変速で半分の速度で動くと、バッテリーの半分は捨てていることになるが、無段変速だとoffの区間はバッテリーが減らないので、倍の時間持つということになる。(ちょ〜ざっくり説明)。 で、半分の速度にする場合、6Vにすれば半分の速度になる(おおまかにはね)。そのためには、12Vを6Vにしなきゃいけないわけだけど、バッテリーは何をやっても12Vなわけで、6Vを出すことはできない。なので、5段変速の場合、6V分を捨てることで速度調整をする。 すると、速度は半分になったけど、捨てちゃっているので時間は5時間しか持たない。で、無断変速の場合、12VのままOn/Offを細かく切り替えることで、速度調整をしている。あぁ、だんだん説明がめんどくさくなってしまった・・。つまりだ、下の図みたいに使うと10時間持つようになる訳だよ。このOn/Offの時間が短ければ、ボートは止まることなく次の動作に移るため、ゆっくり動き続けてくれるということ。 さらに速度を遅くするには下の図のようにオフの時間を長くしてやればいい。その場合さらに持つようになる。こんな感じで、PWM制御にすると無駄な電力を使わないので、効率がよい。 とまぁ、適当に説明してみたが、要は、下の図みたいな波形をつくって調整できるようにしてやれば無段変速になると、そゆこと。 実現方法と概要 さて、この理屈を実現するためには、細かくスイッチのOn/Offをするための仕組みがいる。そのためにPowerMosFETってやつでスイッチをし、AVRというマイクロコントローラーで制御する。一応危険なので、 良い子はまねしないでください。 と但し書きをしておく。下手すると死ぬよ。 必要な知識他のページと違って、多少専門知識がいる。必要なものは
あらかじめ言っておくと、プログラムに関してはそれが仕事なので、自分の専門。電気電子に関しては多少の知識はあるが、大電流を扱うような物は全くわからん。つまり、回路ができれば後はどうにでもなるって所からのスタート。 パーツの入手先 その辺のDIYショップに行けば売っているパーツではないので、ほとんどの場合ネット販売を利用する。 簡単な回路いきなり、作業!とかってのもあれなので、概要を・・ 大体こんな感じ。まず、FETだけど、電圧は12Vで大したことないんだが、食う電流がすごいので、探すのが大変。とりあえず、秋月で探した2SK3163ってやつを使う。スペックとしては60V,75A,RDS6mΩ。75AあればOKでしょって感じだが、6mΩのRDSがどれだけ発熱してくれるか・・。やってみた熱量によっては2パラ、3パラで並列につなぐかもしれない。DC/DCコンバーターは12VからAVRの電源の5Vを作るための物だが、ダイソーで売っている車用携帯充電器をばらすとそういう回路が入っているのでこれでOK、315円だ。で、マイコンはAVR。このマイコンはPWMが内蔵されているので比較的楽。また、プログラム環境も全部フリーだし、プログラムを書き込むライターも700円くらいで買えるので、初期コストが少なくていい。 まずは実験 まずは実験。とりあえず、AVRのキットを買ってきて、回路の参考にする。とメイン部品のFETを2,3個。あとはブレットボードっていう回路の実験するボードを揃えて、LEDの光量を調整したりできるかどうかの実験をする。 パーツ購入とりあえず、AVRはATmega168というのをチョイス。ramが1k,ROMが16kでAD変換が6つ、PWMが3つついてる。ピン数は28ピン。ROM容量やRAM容量の選択は商品を作る訳じゃないので余裕をもって大きめを選んだ。1つ500円くらいだけど、壊れたときを考えて2つ。今時8bitマイコンが500円ってえれぇ高いんだが、個人購入だから仕方がない。。参考にするキットはAVR-DEV-AM328RAって1つ上のランクのMCU(MicroControlerUnit)が付いた物を買った。ピン互換だから別の物でも問題ない。というか168のボードが売り切れてた。それとAVR-PRG-1SというAVRのFlashメモリーにプログラムするライターを買う。5Vの電源はその辺に転がっているACアダプタを流用(ハードオフのジャンクで買ってくる)。あとはFET,ダイオードね。上がAVR-DEV-AM328RAのボード、下にくっついてる黒いのがAVR本体。下がAVR-PRG-1SっていうシリアルライターとLEDを実験したときのブレットボード。見ての通りこのキットはRS232Cが必要なので、付いてないパソコンはUSB-RS232c変換とかが必要になる。俺は家のサーバーマシンにRS-232cが付いていたので、Macからサーバーのlinuxにアクセスしてlinux上で開発した。ブレットボードは素人が実験するにはとても便利。間違えてハンダ付けしちゃうとめんどくさいからね。あ、この基盤完成してるけど、自分でハンダ付けするのよ。 AVRを調べるまずはatmelのサイトからAVRのマニュアルをゲットして読む。PWMの使い方、どこのピンにPWM出力が出ているのか等。とりあえず、AVRの12番ピンが8bitのPWM出力に割り振られてた。ここの出力をするプログラムを組んで、Flashメモリーに書き込んでみて、動けば、第一関門クリア。 開発ツール家のサーバーはlinuxでDebianを入れてある。幸いなことにAVRは海外ではメジャーなMCUらしく、ツール一式が簡単にインストールできる。 >apt-get install avr-gcc >apt-get install avrdude >apt-get install avr-libc コマンドラインでこうやって入力するだけで開発環境のインストールは完了。 テストプログラムを作って動かしてみるとりあえず、12pinに上のブレットボードのLEDを点滅させるプログラムを作って動かしてみる。プログラムは以下。 /* * avr test * @author tuck */ #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> int main(int argc,char**argv) { while(1){ PORTD &= 0xbF; /* Lo */ _delay_ms(1000); PORTD &= 0x40; /* HI */ _delay_ms(1000); } return 0; } で、これをコンパイル。 >avr-gcc test.c -o test.elf 今度、これをFlashメモリーに焼く形に変換する >avr-objcopy -O ihex test.elf test.hex でできたtest.hexをavrに書き込む。フラッシュライターをAVR基盤のコネクタ部分に差し、フラッシュライターにRS-232cケーブルをつなぎ、電源を入れて、フラッシュライターのスイッチをON!。で書き込みコマンドを打つ!。 >avrdude -P /dev/ttyS0 -p m168 -c avrsp -U flash:w:test.hex:i -U lfuse:w:0x62:m おぉぉぉ〜。とりあえず、動いた〜。 さあ実践だでは、実践で実験だ(笑)。モーターのスペックも実際に人間がボートに乗っているときの負荷もPWMの周波数をどれくらいにしたらよいのかもわからない。実際に作ってみて、湖の上で実際に動かしてみて試すしかない。 回路 評価用のボードに直接部品をくっつけてもいいんだが、また何か作りたくなったときに実験するボードがないのはあれなので、ユニバーサル基盤で作る。速度調整をどうするかだが、この時点ではボリュームをA/D変換で読み込んで20段階変速くらいのすれば十分ではなかろうかと。それと、今duty比がどれくらいなのかを知るために表示器も欲しい。それも踏まえて回路図兼、パターンイメージ図を書く。赤い線は上を通り、黒い線は下を通る。自分がわかれば良いのです。 できた基盤がこちら↑。で表示器と調整用のボリュームが↓。左にある変な格好をした基盤がダイソーの携帯充電器から取り出したやつ。これ、電源逆につけるといきなり燃える。1回間違えてつないで燃えた(笑)。 ぴろーんと出てる黄色い線がFETへとつながる。 ロードテスト1最初にFET1つをくっつけてロードテストしにいった。PWMの周波数は120Hz、だがしかし、エレキ側を5(最速)にしてPWM50%にすると、FETがものすごく熱くなって燃えた(笑)。家で無負荷状態で動かしたときはほのかに暖かくなった程度だったので平気だと思ったんだが、負荷による影響は思ったより大きい。ってことで第一弾失敗です・・・。 改善1前回のロードテストを受けて、改善する。FETが1つじゃ足らんのかと3つにしてみた。またPWMの周波数を60Hzに変更。 こんな感じで、FET3段積み。接触抵抗も大きそうだが、とりあえずはあたりをつけないとね。 ロードテスト2 FET3段積みで使っていた。前回の反省を元に、速度5(最速)でテストする場合はFETを触りながら熱くなりすぎるかどうかを確認し、FETが壊れないように気をつける。 改善22009.05.30
FETのデータシートを見てると、ゲート電圧が高い方がドレインソース間の抵抗が低くなるらしいので、トランジスタを付けて、5.5Vの出力を12Vにしてみた。 ロードテスト3FETの入力を12Vにしてやった結果フルに電流を流しても熱くならない!。成功じゃ!。後は、防水対策が必要だな。 改善3 これから梅雨に向けて、防水対策が必要。アナログのボリュームじゃ防水のしようがないので、テレビのボリュームみたいにアップとダウンのキー方式に変更する。 こんな感じで、キーを押すとAD変換部に入る電圧が変化するような回路を組んだ。何も押さなければ5V、100kオームが着いてるキーを押すと2.5V,それ以外のキーを押すと5Vx10k/(100k+10k)見たいな感じで電圧が変化する。なんでキーを3つにしたかというと、一気に0にするボタンとかメニューを出すボタンとかに使えるかな?と。 んで、厚さ1mmのゴムをエポキシで張って完成。コネクタ部分は防水じゃないけど、バウデッキの下に隠してしまうので問題なし。コントローラー部分は、ゴムと発泡塩ビとエポキシで完全な防水に早変わり。 同様にLCD用の防水ケースも作る。発泡塩ビで外観を作るのは一緒。窓の部分はPET素材。適当な大きさにPET素材を切って、それに合わせて発泡塩ビをくり抜く。んで、一応硬化すると透明になるエポキシでくっつける。後でヤスリ掛けしてグレーかなんかに塗装しようかな。と思ったけど、多分めんどくさくてこのまま使うな。 つづく・・ |