2016年12月18日日曜日

LPC1114FN28 ロータリーエンコーダを使ってみる

先日,AliExpressで注文していたモータが届いたので,ArduinoとLPC1114FN28で
テストさせてみました.

モータはFaulhaber 1524009SRギア,エンコーダ付.ふたつで\3779でした.



コネクタは取り替えてしまいました.

初めての海外サイトでのお買い物.ちょっとだけ苦労しました.
海外だからきっと不親切だろうなーと思っていましたが,
ちゃんと追跡してくれるし,12/5発送で12/17到着も予定どうりでした.
高分解能のエンコーダ付でこのお値段はなかなかだと思います.
あとは動けば完璧.

・Arduino

Arduinoではおそらく高速回転での制御は無理と判断し,エンコーダのみのテストです.



こちらのサイトにあるプログラムを用いてテストしました.
見事,パルス数がかえってきました.
ちなみにこのArduino互換ボード,3.3V,5Vが切り替えられるのですが,
エンコーダはどちらでも動作しました.よってLPC1114FN28での検証が可能です.

・LPC1114FN28

こちらは,実際にモータを回し,テストしました.



モータ電源はエネループ直列4個,約4.8Vです.
検証に用にはQEIライブラリを使用.ソフトウェアでカウントします.
以下回転数を出力するサンプル

#include "mbed.h"
#include "QEI.h"

DigitalOut myled(LED1);

Serial pc(dp16, dp15);
QEI wheel (dp1, dp2, NC, 512,QEI::X2_ENCODING);
Ticker get_rpm;
int rpm;
int palse;

void flip(){
    palse = wheel.getPulses();
    wheel.reset();
    rpm = 60000*palse/1024;
 }

int main() {
    pc.baud(115200);
    get_rpm.attach_us(&flip,1000);
    while(1){
        wait(0.1);
        //pc.printf("Pulses is: %i\n", wheel.getPulses());
        pc.printf("rpm is: %i\n", rpm);
    }

}

エンコーダは2相1024パルスなので1ms割り込みで 6000*palse/1024
してやることで,回転数に変換できます.

回転数取得の様子



モータのスペック表から回転数定数は1140[rpm/V].よって
1140*4.8=5472[rpm]が大体の出力になるはずです.
ギアがついているとはいえかなり近い値になりました.




モータのテストが終わったので次回は速度制御に移りたいと思います.
このモータもう一組買おうかな・・・

0 件のコメント:

コメントを投稿