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コンバーターのようにしてモーターにチョッパした矩形電圧を打ち込むのではなく、整流された電圧を供給するか。でも、部品が増えますね。
私もPIC10F322というのをよく使ってます。
めちゃくちゃ小さいのでどこでも使えて便利ですね。
PWMもコンパイラーを使うとたったの一行書くだけでPWM関係のレジスターセットまでやってくれるので便利です。
もう老眼でチップ部品は良く見えなくなってきているので実態顕微鏡下の半田付けが必須ですね。
顕微鏡の威力は絶大で、チップの半田不良は今まで一度も出していません。(^^)
基板で組み立てるときはプログラミング端子を出しておけばいいのですが、半田付け前にプログラムする時用に、書き込み用ソケットも自作しました。
モーターをチョッパ駆動する場合、KHz以上で動作させると、リアクタンスが大くなって起動しにくくなることがあります。
小型モーターなら、かえって数百Hzとか周波数を下げたほうが音も気にならないかも。
ダイオード保護は必須です。
被相電流を利用できて効率も上がります。
ただし電源に電解コンデンサーが必須になります。
私はCRダンパーは付け無いことが多いです。
ところで、たまに電子工作することがあれば、最近ストレージオシロを新調したので今まで使っていた、PDS7102T(1Gsps,
100MHz)が不要になったのでいりませんか?
フィールドでも使えるようにリチウム電池も内蔵させてあります。
です。(^^;)
ダイオードに流れる電流は、モーターには駆動側に流れますよ。
だから効率が上がります。
ブレーキはかかりません。
うちのPDS5022SはSNT液晶のコントラスト調整ボリュームが壊れかけでコントラストがすごく合わせにくい状態なので。
リゴールのを買おうかと思っていたところです。
DCブラシモーターのブレーキですがHブリッジの動作を見てるとモーター端子をショートするとブレーキと書いてあったので、ダイオードで電流還流させてもブレーキになるかと思ってました。
周波数アドバイスありがとうございます。確かにモーターはコイルですね。