最終更新日
記事公開日

PICで振動モーター(バイブレーション)が動かないのは「電流不足」が原因

円盤型振動モーター(FM64F30T11F)

【P-15315】 円盤型振動モーター FM64F30T11F
【P-15317】 円盤型振動モーター FM64G30T101

秋月電子で購入した振動モーター(バイブレーション)、とりあえず3Vを流してみたけど動きませんでした。

どうやら、電流が足りていない模様。

  • PICに流すことができる電流:25mA
  • 振動モーターを動かすのに必要な電流:55mA

トランジスタ(2SC1815)を追加して、電流を増幅することで、無事に動きました。

回路図

PICで振動モーター(バイブレーション)を動かす為の回路図

プログラム

// PIC12F683 Configuration Bit Settings
// 'C' source line config statements
#include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// 初期設定
#pragma config FOSC = INTOSCIO  // 内部クロックを使用する(3番Pinは入出力に)
#pragma config WDTE = OFF       // フリーズしたときに強制リセットするか?
#pragma config PWRTE = OFF      // 起動時、電源が安定するまで待つか?
#pragma config MCLRE = ON       // 外部からのリセット信号を受け付けるか?
#pragma config CP = OFF         // プログラムの外部読み取りを許可するか?
#pragma config CPD = OFF        // データの外部読み取りを許可するか?
#pragma config BOREN = ON       // 電源が不安定になったとき動作を停止するか?
#pragma config IESO = OFF        // 外部クロックが安定するまで内部クロックを使用するか?
#pragma config FCMEN = OFF       // 外部クロックが止まったとき内部クロックを使用するか?
#define _XTAL_FREQ 1000000      // delay_ms()などの関数用にクロック周波数を定義

// ============================================================
//
//                   メインプログラム
//
// ============================================================

/*                 12F683
 *                     ------        
 *               VDD -| 1      8 |- VSS
 *               GP5 -| 2      7 |- GP0
 *               GP4 -| 3      6 |- GP1
 *               GP3 -| 4      5 |- GP2
 *                     ------      
 */

void main(void)
{
    // OSCCON レジスタ(内部クロックの周波数を設定)
    // 1MHzに設定
    OSCCON = 0b01000000;

    // TRISIO レジスタ(GP0~GP5の入出力モードを設定)
    // すべて出力モードに設定
    TRISIO = 0b00000000;

    // ANSEL レジスタ(A/D変換のクロック・アナログ入力ピンを設定)
    // 全てデジタルピンに設定
    ANSEL = 0b00000000;

    while(1) {
        GP2 = 1;
        __delay_ms(1000);
        GP2 = 0;
        __delay_ms(1000);
    }
  
}

vibe.txt

こういう当たり前のことって、意外とみんな書いてくれませんもんね。

この記事のURLをコピー

メールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

関連情報