MCookie-Motor

From Microduino Wiki
Revision as of 22:17, 29 March 2017 by Sonny (talk)
Jump to: navigation, search
Language: English  • 中文
mCookie-Motor

mCookie-Motor is a DC motor controller with PWM (Pulse Width Modulation) for various speed control. The speed of the motor can be controlled through PWM and direction (forward or backwards). This module needs to be powered with a sufficient power supply such as a BM shield with a BM module or with mBattery.


Features

  • Current & speed limited by internal PWM;
  • Synchronous double-channel can reduce power consumption;
  • DC motor braking mode;
  • Capable of controlling two DC motors.
  • Speed and direction control.
  • Uses standard connectors: 2 pin, 1.25mm pitch JST connectors.

Specification

  • External power supply: BM module
  • Pin Description
mCookie pin Motor chip pin Function
D6 1A Control 1A high level and rotate clockwise
D8 1B Control 1B high level and rotate counter clockwise
D5 2A Control 2A high level and rotate clockwise
D7 2B Control 2A high level and rotate counter clockwise
VMOT BM module Power supply
GND GND Ground

Note:

    • The pins including 5, 6, 7 and 8 cannot be occupied by other sensors while using the Motor or it may cause problems.
    • Module Motor must be powered on by mCookie-BM module, rather than by being connected to the computer through CoreUSB, otherwise it will result in that the application can't work.
Motor-Pinout-1Big.jpg

Document

Development

DC Motor Wire Connection

  • Connect one DC motor to (OUT1A, OUT1B) and the other to (OUT2A, OUT2B);
  • DC motor pin control:
//(D6, D8) controls motor (1A, 1B) 
#define OUT1A 6
#define OUT1B 8
//(D5, D7) controls motor (2A, 2B) 
#define OUT2A 5
#define OUT2B 7

PWM Rate Control

Project

  • Connection and disconnection control
6 8 5 7 1A 1B 2A 2B Function
Low Low Low Low Off Off Off Off Close (Stop habitually)
High Low High Low High Low High Low Rotate clockwise
Low High Low High Low High Low High Rotate counter clockwise
High High High High Low Low Low Low Halt
#define OUT1A 6
#define OUT1B 8
#define OUT2A 5
#define OUT2B 7

void setup()
{
  pinMode(OUT1A, OUTPUT);
  pinMode(OUT1B, OUTPUT);
  pinMode(OUT2A, OUTPUT);
  pinMode(OUT2B, OUTPUT);
}

void loop()
{
head();
delay(2000);
back();
delay(1000);
stop();
delay(500);
}

void head()
{
  digitalWrite(OUT1A, HIGH);
  digitalWrite(OUT1B, LOW);
  digitalWrite(OUT2A, HIGH);
  digitalWrite(OUT2B, LOW);
}
void back()
{
  digitalWrite(OUT1A, LOW);
  digitalWrite(OUT1B, HIGH);
  digitalWrite(OUT2A, LOW);
  digitalWrite(OUT2B, HIGH);
}
void stop()
{
  digitalWrite(OUT1A, LOW);
  digitalWrite(OUT1B, LOW);
  digitalWrite(OUT2A, LOW);
  digitalWrite(OUT2B, LOW);
}
  • PWM rate control
//(D6, D8) controls motor (1A, 1B)
#define OUT1A 6
#define OUT1B 8
//(D5, D7) controls motor (2A, 2B) 
#define OUT2A 5
#define OUT2B 7

void setup()
{
  pinMode(OUT1A, OUTPUT);
  pinMode(OUT1B, OUTPUT);
  pinMode(OUT2A, OUTPUT);
  pinMode(OUT2B, OUTPUT);
}

void loop()
{
  for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5)
    //Loop statement. Along with PWM rate increases, you can change brightness level by controlling fadeValue. 
  {
    analogWrite(OUT1A, fadeValue);  //Write rate level into the motor 
    digitalWrite(OUT1B, LOW);
    analogWrite(OUT2A, fadeValue);
    digitalWrite(OUT2B, LOW);
    delay(100);                       //Delay time of rate. (The unit is ms)
  }
  for (int fadeValue = 255; fadeValue >= 0; fadeValue -= 5)
    // Loop statement. Along with PWM rate decreases, you can change brightness level by controlling fadeValue.
  {
    digitalWrite(OUT1A, LOW);
    analogWrite(OUT1B, fadeValue);  // Write rate level into the motor
    digitalWrite(OUT2A, LOW);
    analogWrite(OUT2B, fadeValue);
    delay(100);                     // Delay time of rate. (The unit is ms)
  }
  delay(1000);
}

Other Projects:

Purchase

History

Pictures

MCookie-Motor-t1.jpg
MCookie-Motor-b1.jpg

Video