See our Tiny Circuits Range Here.
The Dual Motor TinyShield allows you to drive two independently controlled DC brushed motors from your TinyDuino! Create your own tiny robots or drones! Using two of the super miniature but very powerful 2mm x 2mm TI DRV8837Motor Driver (H-Bridge) IC, this shield will allow for to 1.8A per channel and operate motors between 1.8 to 11V. This TinyShield includes a built in motor controller to make driving motors simple and uses the TinyDuino I2C interface - saving GPIO pins on the TinyDuino processor for other tasks, and an easy to use Arduino library is provided to control this.
Since this TinyShield uses I2C for communication, multiple Dual Motor TinyShields can be used on the same (up to four Dual Motor TinyShields), and there are resistors that can be changed to set the I2C address.
The board includes a bypass capacitors, as well as heatsinking the chips to a large plane on the bottom side of the board to help with heat dissipation. An external power connection is supplied to connect up to your motor power source (like a battery), and all the connections to the motors are with standard 0.1″ spaced holes, that you can solder your motor leads into or use the supplied 0.1″ headers. This shield is also available with JST connectors to allow easy connection to motors with this connection (future option).
The TI DRV8837 has one H-bridge driver consisting of N-channel power MOSFETs to drive a DC motor or one winding of a stepper motor, or other devices like solenoids. An internal charge pump generates needed gate-drive voltages. There are internal shutdown functions for overcurrent protection, short-circuit protection, undervoltage lockout and over temperature. The DRV8837 can supply up to 1.8 A of output current. It operates on a motor power-supply voltage from 1.8 V to 11 V .
Note: While the DRV8837 supports 1.8A @ 11V, we highly recommend operating under 500mA @ 5V per channel unless you have some really good heat sinking in place.
Ultra compact size and weight (smaller than a US Quarter!)
Square Version: 20mm x 20mm (.787 inches x .787 inches)
Max Height (from lower bottom TinyShield Connector to upper top TinyShield Connector): 5.11mm (0.201 inches)
Weight: 1.62 grams (.06 ounces)
Two TI DRV8837 H-bridge motor driver
Low MOSFET On-Resistance: HS + LS 280mOhm
1.8A Max Drive Current
1.8V to 11V Motor Operating Supply Voltage Range
I2C Mode used
Arduino pins A4 and A5 are used by this shield
Code: Select all
//-------------------------------------------------------------------------------
// TinyCircuits Dual Motor Driver Basic Example
// Last Updated 30 July 2015
//
// This example code shows basic usage of the ASD2302 Dual Motor Driver TinyShield.
// The library intance is created with the hardware address of the motor driver
// (up to 4 boards/8 motors) and then intialized with begin(maximum PWM value).
// The Dual Motor Driver has 16 bit PWM output capability, but keep in mind the
// output frequency is low when using a large timer value- great for some things,
// like driving servos. To drive the motors, use setMotor(motor, value) to set
// motor 1 or 2 to -maxPWM to +maxPWM.
//
// The board uses the ATtiny841 microcontroller and has direct register access-
// so just about any of the internal peripherals could be put to use.
//
// Written by Ben Rose, TinyCircuits http://Tiny-Circuits.com
//
//-------------------------------------------------------------------------------
#include <Wire.h>
#include <MotorDriver.h>
MotorDriver motor(0);//value passed is the address- remove resistor R1 for 1, R2 for 2, R1 and R2 for 3
int maxPWM=10000;
int steps=100;
int stepSize=maxPWM/steps;
void setup(){
Serial.begin(9600);
Wire.begin();
//The value passed to begin() is the maximum PWM value, which is 16 bit(up to 65535)
//This value also determines the output frequency- by default, 8MHz divided by the maxPWM value
if(motor.begin(maxPWM)){
Serial.println("Motor driver not detected!");
while(1);
}
//The failsafe turns off motors if a command is not sent in a certain amount of time.
//Failsafe is set in milliseconds- comment or set to 0 to disable
motor.setFailsafe(1000);
}
void loop(){
int i;
for(i=-maxPWM;i<maxPWM;i+=stepSize){
delay(10);
motor.setMotor(1,i);
motor.setMotor(2,i);
}
for(i=maxPWM;i>-maxPWM;i-=stepSize){
delay(10);
motor.setMotor(1,i);
motor.setMotor(2,i);
}
}
The motor library can be downloaded from the TinyCircuits github page here:
https://github.com/TinyCircuits/TinyCir ... or_Library