さて、モーター回転中の電圧から回転数をセンシングしようというものだが、まずはモーターを別のモーターで回転させながら発生電圧を調べる。
一定電圧ではないので、山あり谷ありの波形だが、最大電圧はこのような感じになっている。6600rpmくらいで2Vくらいの起電力が発生するようだ。
マブチのRE-140RAは3スロット2ブラシなので、1回転6パルスを前提として回転数を算出しています。
電圧波形について、次のPWM回路で調べると、V1とGNDの間の電圧は
このような感じです。波形がギザギザするのはモーターの整流子の都合かと思います。上記の回転数の電圧変化はボトムの電圧を見ています。
マイコン側のプログラムとしては
MOSFETがONのときはADC読まない(読んでもそのまま捨てる)。MOSFETがOFFのタイミングでADC実施をいう方法が良さそう。
図にすると、下のようにPWMのカウンタ(TCNT0)が0-255までカウントする間に、PWM用のOCCR0Bレジスタと、OCCR0Aレジスタの値を少し変更しておき、
OCCAR0AとTCNT0が一致したらADC開始、TCNT0のリセットでADC終了というようなものがいいかと思っている。
OCCR0AはADCを開始したら250などに設定し、TCNT0のオーバーフローを待たずにADC変換やめてもいいと思う。
電圧は上記のようにフラフラ不安定なので上記の回路のようにLPFを使うか、デジタルでフィルタを入れるかして最小値を読むような方法がいいかなと思っている。
電流検出による正帰還方式でも、係数を合わせれば低回転で結構なトルクが出ると思うよ。
ブラシレスの位相制御は一回本で見たことありますが、指摘のように面倒くさそうなのでだめです。
モーターへの正帰還ですか。一晩負帰還で考えてみましたがだめっぽいので、やはり正帰還・・・
キモは負荷が無くなったときに回転数が上がりすぎるのを抑えることができればいいので、そこをどうするかですね。
電流センサを入れると一つアイテム増えるので、電圧帰還でなんとかしてやりたいです。
係数を上げすぎると発振するので、発振しないギリギリぐらいに設定すると、負荷変動してもかなり一定した回転になります。
やはりフィルター欲しいですね。
ブラシレスモーターの場合だとすごくきれいな波形になるのですが。
もちろんブラシレスモーターにすると位相制御が、めちゃ面倒です。(^^;)