このライブラリは模型用のDCモータをmbedで直接制御します。 モータは正転、反転動作が可能です。 モータの回転速度は可変できます。 This library is directly controlled by a DC motor for model mbed. Motor forward rotation, inversion operation is possible. The motor speed is adjustable.

Dependents:   adxl335_motor_direction

Committer:
suupen
Date:
Mon Dec 05 12:09:54 2011 +0000
Revision:
0:ade473623320
V1.0   2011/12/06

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:ade473623320 1 /**********************************************************
suupen 0:ade473623320 2
suupen 0:ade473623320 3 * DcMotorDirectDrive.cpp
suupen 0:ade473623320 4 * Dc motor direct drive library
suupen 0:ade473623320 5 *
suupen 0:ade473623320 6 **********************************************************/
suupen 0:ade473623320 7 #define _DCMOTORDIRECTDRIVE_C
suupen 0:ade473623320 8
suupen 0:ade473623320 9 #include "types.h"
suupen 0:ade473623320 10 #include "mbed.h"
suupen 0:ade473623320 11 #include "DcMotorDirectDrive.h"
suupen 0:ade473623320 12
suupen 0:ade473623320 13
suupen 0:ade473623320 14
suupen 0:ade473623320 15
suupen 0:ade473623320 16 /** DC motor direct drive object connected to the specified DigtalOutput pin
suupen 0:ade473623320 17 */
suupen 0:ade473623320 18 DcMotorDirectDrive::DcMotorDirectDrive(PinName pwmPin, PinName referencePin) :
suupen 0:ade473623320 19 _pwmPin(pwmPin), _referencePin(referencePin){
suupen 0:ade473623320 20
suupen 0:ade473623320 21 // pwm setting
suupen 0:ade473623320 22 _referencePin = 0;
suupen 0:ade473623320 23 _pwmPin.period_us(Z_pwmPeriod); // pwm period 0.1[ms](10[kHz])
suupen 0:ade473623320 24 _pwmPin.write(0.0);
suupen 0:ade473623320 25
suupen 0:ade473623320 26 }
suupen 0:ade473623320 27
suupen 0:ade473623320 28
suupen 0:ade473623320 29
suupen 0:ade473623320 30
suupen 0:ade473623320 31 /**************************************
suupen 0:ade473623320 32 * main
suupen 0:ade473623320 33 **************************************/
suupen 0:ade473623320 34 void DcMotorDirectDrive::DcMotorDirectDrive_main(float request) {
suupen 0:ade473623320 35 if(request > Z_stopRange){
suupen 0:ade473623320 36 // normal rotation
suupen 0:ade473623320 37 _referencePin = 0;
suupen 0:ade473623320 38 _pwmPin.write(request);
suupen 0:ade473623320 39 }
suupen 0:ade473623320 40 else if(request < -Z_stopRange){
suupen 0:ade473623320 41 // reversal rotation
suupen 0:ade473623320 42 _referencePin = 1;
suupen 0:ade473623320 43 _pwmPin.write(1.0f + request);
suupen 0:ade473623320 44
suupen 0:ade473623320 45 }
suupen 0:ade473623320 46 else{
suupen 0:ade473623320 47 // stop
suupen 0:ade473623320 48 _referencePin = 0;
suupen 0:ade473623320 49 _pwmPin.write(0.0);
suupen 0:ade473623320 50 }
suupen 0:ade473623320 51
suupen 0:ade473623320 52 }
suupen 0:ade473623320 53
suupen 0:ade473623320 54