前回の「ラジコン風」ではモーターの駆動に、TA7219Pを使った。
ネットをうろつくと、モータの駆動にはパワーMOSFETというのを使うそうで、この辺を参考にうなってみた。

回すモータは、マブチモーターのRE260。
SN3E0076.JPG

タミヤのハイスピードギヤボックス。
これ、ユニバーサルプレートの穴と、ギヤボックスのネジ穴位置がびみょーに合わない。
カットするしかないのか、とも思ったが今はモータを固定できればいいので、テストベッド的な感じで。


SN3E0078.JPG

MP4212は、NchとPchのMOSFETが2つずつパッケージされていて、なんとなく扱いやすそうだと思ってこれにした。4Vで駆動できるしRE260なら定格に収ま りそうだし。

FETは燃えるぞ壊れるぞ、という話があちこちで見られる。
チキンなので、正転方向だけマイコン制御ありに、逆転方向のMOSFETはプルアップ・プルダウンで常にOFFになるようにして、PWMで回転数を制御するところだけ試した。

TA7291Pのときと違ってドライバでの電圧降下が少ないため、エネループ2本で十分よくまわる。

冒頭の参考ページにあるLow-side-PWMをなんちゃってでまねっこしてみる。
右側の7セグメントLEDは、analogWrite()の値を示している。
写真では、MOSFETをトランジスタ1個でスイッチしているけど、のちにプッシュ・プル構成にして高速スイッチングをめざした。けど、arduinoのPWM周波数が約490Hzということで(日本語リファレンスより)、今のところMOSFETのスイッチング速度を活かせる構成ではない。

写真では付いていないけど、10kΩの半固定抵抗で分圧した電圧をanalogRead()で読ませて回転数が変化するようにした。半固定抵抗を動かすとスムーズに回転数が変化してちょっと楽しかった。調子にのってぐりぐり動かしていたら、ねじ切ってしまった。あぁ。今度はちゃんとボリュームにしよう・・。


最終的には、モータ制御はATtinyなど小さめのマイコンを使い、arduinoから独立させようと考えている。
SN3E0079.JPG

ちょっと検索するとライタを自分で作っちゃう人ばかりで、道は遠いなーと思わざるを得ない。
が、4000円投資してAVR ISP mkIIを購入。いいんだこれで。

AVR Studio本体とSPをダウンロードしてインストール。
ハナっからCで書くつもりなのでWinAVRもDLしてインストール。

ここの環境はWindows 7 x64だけどドライバも問題なく認識。

ATtiny 2313Vを2つ購入した。低電圧版を選んだのは、モータ制御とは別にリモコン的なものを考えていて、単三×2で動くようにしてみたかったから(モータ制御用のは5Vで使う予定)。
とりあえずLチカするところまで進めたいなー、と、電源とGND(とISPに必要なピン)とLED+抵抗だけ結線して、ISPに繋ぐ。

ISPのコネクタにジャンプワイヤを突っ込んでブレッドボードに挿す、大雑把さ。ISP側のピン配置はこのページを参考にした。後はデータシートを見てAVR側のピンに接続。
Lチカ用のLEDは、PB0に繋いだ。

電源はスイッチングなACアダプタ5Vから給電。クリスタルもパスコンもなんにもない状態。内部発振8MHzの1/8で、システムクロックは1MHz。

AVR Studioを起動して、こんな感じのだらっとしたhello worldをビルドしてAVRに書きこむ。

#include <avr/io.h>
#include <util/delay.h>

int main(void) {

DDRB = 0xFF;

const int pin = 0;

while(1) {
PORTB |= 1<<pin;
_delay_ms(100);
_delay_ms(100);
_delay_ms(100);
PORTB &= ~(1<<pin);
_delay_ms(100);
_delay_ms(100);
_delay_ms(100);
}
}
なんか、ちゃんと点滅してる。
ブレッドボード上を見てると、ほぼワンチップマイコンだけが載ってる状態でプログラムが動いちゃうんだからおもしろいなー、と感動してしまう。

次は、arduinoからSPIなりなんなりで、このATtinyに指令を送って何かさせる、ってことをやろう。


環境:
 Windows 7 x64 Ultimate
  arduino 0018
  AVR Studio 4.18 + SP2
  WinAVR 20100110
Arduino Duemilanove
AVR ATtiny 2313V