AVRマイコンにはATTiny10というとても小さなマイコンがある。
ATTiny13Aと比較してもこのサイズ。小さい。8ピンのDIPがATTiny13Aで、その上の6pinのものがATTiny10です。
米粒マイコンとも呼ばれるように米粒と比較してもこの通り、偽りなしのサイズ。
ゴールはマブチモーターのブラシモーターをPWMで駆動するところ。
0.1uFのコンデンサは回路図では遠いですが、パスコンなのでマイコン近くへの配置が必要です。
実験してわかったけど電解コンデンサ省いたら長い配線のせいかスイッチONの瞬間に電源電圧の低下がありました。
ダイオードとRCフィルタが必要かどうかは微妙なところ(プロトタイプはダイオードもRCフィルタもなしで動かした)。
小さいままプロトタイプ作ってと思いましたが、小さいままでは試作時に都合が悪いので、DIPサイズに大きくしてブレッドボードで実験。
PWMの周波数ははじめにモーターが6000rpm=100Hzで回っていたら1回転で60回くらいスイッチングすればいいかなとか適当に考えて6kHz以上とおもったが、これくらいの周波数だとモーターから可聴域のキーンというノイズがでるのでNG。16kHzもちょっと聞こえるからダメだね。
最終的にはマイコンクロック4MHzでPWMのカウンタ範囲を0-128として31kHzでスイッチング実施。MOSFETのゲート充電時間が気になるけど、これは2SK3510で1us~2usくらいだったのでまあいいでしょう。最終的なMOSFETは友人のおすすめIRLML6344TRPBFTRというInternational Rectifierのゲート電圧0.8Vでonになるものを採用予定。2SK3510はゲート電荷150nC@VGS=10Vで、IRのは6.8nC@VGS=4.5Vと1/10以下なので、速度は問題になるまい。
2SK3510を使ったときのゲート電圧変化、4V弱でMOSFETがONになるための領域が見える。ゲート電圧0Vから0.75usくらいで充電が終わるがまあ、2usくらい充電にかかると思っておけば良かろう。
次は2SK4017を使ったもの。横軸の時間が一桁違うが、150ns程度で立ち上がっているので、十分に高速だろう。
当然だが、電流容量の大きなMOSFETはゲート電荷も多いので、駆動により多量の電流が必要になる。
ちょっと苦労した点
・内蔵クロックのプリスケーラー設定
ATTiny10は8MHzの内蔵クロックを8分周した1MHzで動くのが基本なのだが、これ以外の分周にするには一回CCPというレジスタを変更する必要がある。
CCP=0xD8; の命令の直後に
CLKPSR = 0b00000001; などとプリスケーラー変更の命令を書けばいいのだが、何を勘違いしたのかD8が8bit変数であるにも関わらず、
なぜか2桁だから16bitだとおもってしまい、どうやって8bitのCCPに16bitの値を放り込むのかと考えてしまった。
その他の実験が必要だった箇所
・モーターは回転するのに必要な最低限の電力があるので、単純にADCの値をPWMにすると感度ない領域が出てしまう。
・マブチRE-140RAの場合5V電源でPWMするときはDuty > 50%じゃないと回転しない感じです。回り始めるのに最低限エネルギーが必要な様子。そりゃそうか。
・モーター駆動の逆起電圧、電流を戻すためにダイオードが必要かと思ったが、モーターが回っている限りでは逆起電圧は気にしなくて良さそう。
回転してないけどスイッチングしているときは逆起電圧大きくなりそうだと思ったがMOSFETは現状壊れていない(たまたま大丈夫な可能性もあるのでブレーキになってしまっても
ダイオードは入れておきたい、と思っている。ブレーキ嫌ならツェナーダイオードかな)。
表面実装のマイコンは小さくていいのだが、プログラムの確認などを行う途中ではブレッドボートが使えるくらいのサイズがほしいと思った(実際変換基盤を使った)。
MOSFETのゲート、VRなどが書き込み端子に接続されているとそもそも書き込みができないケースがあった(インピーダンスが低くなる為)ので配線を外すなどが臨機応変に必要だった。
プロトタイピングは終わったのでまた後日最終形態に持っていくこととする。
さて、プロトタイピングが終わっていなかったので再考である。
モーターはリアクタンスがでかいのでスイッチングで動かすときは低周波のほうがむしろいいということで、CPUクロックと分周比で0-255カウントしたときのPWM周波数を求めた。
CPUクロック1MHzが出荷時のデフォルトである。
クロック [MHz] |
分周比 |
1/1 |
1/8 |
1/64 |
1/256 |
1/1024 |
8 |
31250 |
3906 |
488 |
122 |
30.5 |
4 |
15625 |
1953 |
244 |
61.0 |
15.3 |
2 |
7813 |
977 |
122 |
30.5 |
7.6 |
1 |
3906 |
488 |
61 |
15.3 |
3.8 |
CPU=1MHzで1/8分周比くらいの490Hzがちょうどいいくらいでしょうか。
PWMが61Hzでもモーターの慣性力があるのであまり気にならないかな。ためしてみましょう。
もしくはモーター上流をDC-DCコンバーターのようにしてモーターにチョッパした矩形電圧を打ち込むのではなく、整流された電圧を供給するか。でも、部品が増えますね。