マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 9.4.2. LED

Up: 9.4. ソフトウェアと外付け回路の詳細

Next: 9.4.4. 自励式ブザー


マイコン徹底入門:RTOS編:フリーのリアルタイムOS活用法: 9. FreeRTOSを利用したマウスロボット: 9.4. ソフトウェアと外付け回路の詳細:

9.4.3. 振動モータ

 振動モータはモータの先に偏芯のおもりを付けたものです。モータを回転させるとおもりが「ぶん回されて」振動します。いろいろなものが出回っているようですが、筆者が入手できたのは電源電圧が3Vまでのものばかりでした。マイコンボードの3.3V出力を利用してもよいのですが、モータなので消費電流が大きいことが予想され、オンボードレギュレタの容量を考えるとためらわれます。そこで電池から直接電源を取り、PWM駆動でデューティー比を少なくして、3V相当の電圧を加えることにしました。こうすると振動の強い弱いも調整できます。

 振動モータはモータとはいっても消費電流が小さいので小型のFET(2SK2231)を使用しました。このFET4V駆動なので、5Vで駆動する74HCT245を介して接続しました。高周波でPWM駆動は行わないので、FETドライバを使用するまでも無いと判断しました。ゲートには過電流と発振を防止するため100Ωの抵抗を付けています。

 振動にも一定のパターンを持たせたいのでタスクで駆動します。prvTask_Vibrator_Control関数(vibrator.c/vibrator.h)によるタスクがそれです。

 キューxVibratorQueueVibratorQueue_Type 型変数を送って指令を与えます。

typedef struct

{

? uint8_t Instruction;

? uint8_t Pattern_Number;

? uint16_t Repetition_Number;

? VibratorPattern_Type* Pattern_Type;

} VibratorQueue_Type;

 メンバInstructionVibratorStatus_Type列挙型で指定します。

typedef enum {VIBRATOR_OFF = 0, VIBRATOR_ON = 1, VIBRATOR_PATTERN = 2} VibratorStatus_Type;

 ここでVIBRATOR_PATTERNを指定した場合、メンバPattern_TypeVibratorPattern_Type型変数の配列を渡すことで、振動モータを一定のパターンで振動させることができます。

typedef struct

{

? uint8_t Power;

? uint16_t Period;

} VibratorPattern_Type;

 例えば下記のVibratorPattern130%の出力で200ms振動、400ms停止を繰り返します。VibratorPattern260%の出力で200ms振動、400ms停止の繰り返しです。タスク側でモータの電圧に合わせたデューティー比低下の計算を行っていますので(あらかじめマクロRESTRICTION_RATEで定義した百分率を乗じています)、ここで送信するパラメータは百分率で構いません。

const VibratorPattern_Type VibratorPattern1[] =

? {

????? {30,200},

????? {0,400},

????? {0,0}

? };

const VibratorPattern_Type VibratorPattern2[] =

? {

????? {60,200},

????? {0,400},

????? {0,0}

? };


Previous: 9.4.2. LED

Up: 9.4. ソフトウェアと外付け回路の詳細

Next: 9.4.4. 自励式ブザー


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。