2012年8月30日木曜日

DCモータのPWM制御

最近のモータ制御では主流となっているPWM(Pulse Width Modulation)での制御をしてみた。

目的は
1.モータをPWMでドライブする。
2.可変抵抗(ボリューム)で回転数が変えられる。
3.正転、逆転が可能。
の3つ。
大昔の授業でマイコン制御のサンプルとして持ってきてもらったので良い実験材料かと。

で、まあ必要なのがボリュームの位置を読むAD変換と、
出力用のPWMという訳で。

PWM自体はやったことあったので2時間あれば組みきれると思ったら大間違い。
原因はプログラム特有の問題(オーバーフロー)だったりモータ特有の問題(突入電流など)だったり。


まず、手持ちでAD変換ができるチップがATMEGA88Pだったのでこれを使用。
データシートを見ると11番(PD5)と12番(PD6)がPWMの出力端子で、
23〜28番(PC0〜PC5)がAD変換用に使える。

PWM用の端子もたくさんあるみたいだけど今回はOC0xしか使わないので。

モータードライブにはTOSHIBAのTA8428K(S)を使用。
なければ自作でフルブリッジドライバを作るほかない。

ドライバはIN1がHIGH、IN2がLOWで正転、

IN1がLOW、IN2がHIGHで逆転、
両方LOWで開放、
両方HIGHでブレーキだったような気がする。
詳しくはデータシートを。


可変抵抗は今回特に何でもいいので適当。


プログラムリストは続きから。


今回、最も詰まった注意点を先に。
まず、volatile unsigned long でvalue を宣言しているけど、
途中で割り込み排除したのでvolatileは多分不要。

あと、これはint型ではオーバーフローしてしまう(最大値を超えてしまう)ので、必ずlong型に。
これに気づかずボリュームを上げてるのに、ある点で急に回転数が低くなってしまった。


もうひとつはマイコンの電源をACアダプタから取っていて、
ACアダプタが3Aまで流せるんだけど、そこにモータつないでたのも失敗だった。

やっぱりドライバには別電源が必要だと感じた。
モータの突入時(通電時)には大電流が流れるので、PWM制御でモータを動かすときには、
秒間何回も突入が起きて動作が不安定になる。

もっとACアダプタの定格電流が大きければ問題ないかもしれないけど、
今回は3Aだったので突入電流によってアダプタが落ちていたかも。
これに一番苦労させられた。

モータの通電時にアダプタが落ちて、一瞬後に復旧するわけだけど、
このときも通電時なわけでまたアダプタが落ちる。

このせいでモータが動いたと思った瞬間止まって、また動いてを繰り返す。
今回はPWM制御が目的だったから、この反応がむしろ正常に見えてデューティに問題がないかなどのプログラム上の問題を探しに行ったりもした。

また、モータドライバで2V程度電圧が落ちるらしいので、モータ用には少なくとも5V程度はほしい。
定格は30Vなのでよくある箱型の9V電池を使用した。


なので電源とオーバーフローには注意。
とくにAVRのAD変換器の出力は10bit(1024通り)なので。


プログラムの大まかな流れは、
AD変換の出力が0〜1023なので、半分の511で区切り、
0〜511が逆転、512〜1023が正転となってる。
ただし、511近傍では信号を与えない停止状態となってる。
この近傍の広さがdefineにあるBRANGEの値。

あと今回は可変抵抗の出力を電圧として読む必要が無いので、
0〜1023のままで使ってる。


では、以下リスト。

2012年8月10日金曜日

USBメモリからMacbookAir2012にUbuntuをインストールする

前回(http://hamachan-pon.blogspot.jp/2012/07/macbookair2012ubuntu.html)、
USBフラッシュメモリを利用したUbuntuのインストールについて言及したので。

なお、MacbookAir2012でしか確認していないのでWin機や他のMacでも同様に動作するかは不明。
あと、大抵の場合にはCDドライブついてるのでそちらを利用するととても便利。
また、外付けCDドライブでもインストール可能みたいなので持っているならそちらを利用。


この記事は
「CDドライブの付いていないPCに外付けCDドライブを購入することなくUbuntuをインストールする」
ためのものです。
また、作業をUbuntuで行なっているのでMacに無いコマンドがあるかも…。



本題。
簡単な流れは、
1.Macでのセットアップ
2.USBインストールメディアの作成
3.インストール
となってます。


詳しくは以下。


1.Macを起動し、rEFItをインストール
rEFItをインストールすることで、起動時にOSやUSBメモリを選択することが可能になります。
インストールはこのあたり(http://refit.sourceforge.net/)から出来ます。

2.パーティションの分割
Macの上部のメニューから移動→ユーティリティ→HDD(SSD)のパーティションを選択。
Mac側を適当に減らして空き領域を作る。
この際、「Mac,空き領域,空き領域(4GB)」のように、4GB程度(実際にはメモリの2倍だっけ)のスワップ領域を作成することが推奨されてますが、なくても問題なく動くという話もあります。

3.Ubuntuインストールメディアの作成
まず、公式(http://www.ubuntu.com/download/desktop)からUbuntuのisoイメージをダウンロード。64bit対応してるのかよく知らないけど32bit。
ダウンロード先はデスクトップにしておくとわかりやすいかな。

端末を開いて、
cd Desktop
など。カレントディレクトリをダウンロードしたisoイメージのあるディレクトリに移動すればOK。

このディレクトリで、
hdiutil convert -format UDRW -o FILENAME.dwg FILENAME.iso

とする。
FILENAMEはisoイメージの名前。
これでisoイメージを変換する。


ここでUSBメモリを差し込む。端末から、
diskutil list
でUSBメモリのデバイス名を確認。
今回は(/dev/disk1)だった。

確認できたらアンマウント。端末から
diskutil unmountdisk /dev/disk1
とするとアンマウントできる。


手順2で使ったディスクユーティリティからUSBメモリのパーティションを変更。
USBメモリをフォーマットする。(FAT32で)

さっきと同様にアンマウント(されてるかも)


次のコマンドを実行。
dd if=filename.dmg of=/dev/rdisk1 bs=1m
これでUSBに書きこんでます。
確認したデバイスの頭にrが付いていることに注意。
(/dev/disk1→/dev/rdisk1)

書きこみ完了まで十数分かかります。
/dev/disk1に書きこむと気が遠くなるほど長いので注意。


書き込みが終わったらUSBメモリの取り出し。
diskutil eject /dev/disk1



4.Ubuntuのインストール
作成したUSBインストールメディアを挿したまま、コンピュータを再起動。

するとrEFItにより選択画面が出てくるのでUSBメモリ(Ubuntu)を選択。

画面の流れに沿ってキーバインドなどの設定を行う。

Ubuntuのインストール先をパーティション分けした空き領域に入れる。
マウントポイントは「/」です。
同様に4GBの空き領域にはswapを設定。

両方ともフォーマットはext4でよいです。


ブートローダのインストール先を/dev/sdaに設定。

インストールの実行。




以上です。

記憶で書いてるのでなかなか間違いも多いかも。