Grove - I2C Motor Driver Release date: 9/20/2015 Version: 1.0 Wiki: http://www.seeedstudio.com/wiki/Grove_-_I2C_Motor_Driver_V1.3 Bazaar: http://www.seeedstudio.com/depot/Grove-I2C-Motor-Driver-p-907.
Document Revision History Revision Date Author Description 1.0 Sep 21, 2015 Victor.
Contents Document Revision History ···································································································2 1. Introduction ···················································································································2 2. Features··························································································································3 3.
Disclaimer For physical injuries and possessions loss caused by those reasons which are not related to product quality, such as operating without following manual guide, natural disasters or force majeure, we take no responsibility for that. Under the supervision of Seeed Technology Inc., this manual has been compiled and published which covered the latest product description and specification. The content of this manual is subject to change without notice.
1. Introduction The Grove - I2C Motor Driver V1.3 (latest version) can directly control Stepper Motor or DC Motor. Its heart is a dual channel H-bridge driver chip(L298N)that can handle current up to 2A per channel, controlled by an Atmel ATmega8L which handles the I2C communication with for example an Arduino. Both motors can be driven simultaneously while set to a different speed and direction. It can power two brushed DC motors or one 4-wire two-phase stepper motor.
2.
3. Specifications Item Min Typical Max Unit Working Voltage 6 - 15 VDC Max Output Current per channel 0.5 A Maximum Total current 1.
4. Interface functions 78M05 IC: 5v voltage regulator L298 IC: dual full bridge driver Atmega8 IC: Control Motor Rotate. NOTE: Input voltage on screw terminals is regulated to 5v and connected to I2C +5v via a jumper (J4). Remove jumper if both external power via the screw terminals and power via the I2C header are used. Use jumper if 5v should be supplied to the I2C bus.
5.
6. Usage The I2C Motor Driver can control motor which is based on the chip L298. The L298 is not just a dual motor driver, it is a dual H-bridge. An h-bridge is basically a specific setup of transistors that allow you to switch direction of current. Hooking up to a motor means you can have it spin in both directions; and with PWM input, you can use your Arduino to make them spin at any speed.
6.2 How to drive 2 DC motors Note: The first thing to notice however, is that you need an external power source for your DC motors. The 5v pin on the Arduino cannot provide enough power to drive 2 motors, you may damage your Arduino if you do so. And then program your Arduino as below: #include ....... ....... < Driver functions > ....... ....... void setup() { Wire.
delay(1000); MotorDirectionSet(0b0101); //0b0101 Rotating in the opposite direction delay(500); } In this program, Arduino first set the speed of the 2 DC motors with the MotorSpeedSetAB()command, and then set the DC motors work directions with MotorDirectionSet() command. Please refer to the Function Reference for details, you can download all the demo code in the Resource. 6.3 How to driver a stepper using I2C motor driver V1.3 As the upgraded version of I2C motor DriverV1.
MotorDirectionSet(0b1100); delay(4); MotorDirectionSet(0b1000); delay(4); MotorDirectionSet(0b1001); delay(4); } } This connected 4-wire stepper will rotate; you can adjust the rotation speed or step number in your Arduino program. You can also use some other stepper libraries to control it. For all the demo code please refer to Resource. 2. Control the Stepper using the I2C motor Driver V1.3 on-chip Atmega8L.
The connection between 24BYJ48 Stepper Motor and I2C Motor Driver is shown as blow: Download the Grove-I2C motor driver V1.3 demo code, and open the StepperControlMode2.ino: #include
delay(5000); Serial.println("sent command to - direction, fast"); StepperMotorEnable(0, 2);// ennable the i2c motor driver a stepper. delay(5000); Serial.println("sent command to + direction,100 steps, fast"); SteperStepset(100); StepperMotorEnable(1,5); delay(3000); Serial.println("sent command to shut down the stepper"); StepperMotorUnenable(); delay(1000); Serial.println("sent command to - direction, slow, and 10 steps then stop"); SteperStepset(10); StepperMotorEnable(0,40); delay(5000); Serial.
7. Function Reference 1. void SteperStepset(unsigned char stepnu) Description: Set the steps you want. stepnu: the Parameter can be 1~255. if 255, the stepper will rotate continuously; Usage: Serial.println("sent command to + direction,100 steps, fast"); SteperStepset(100); } 2. void StepperMotorEnable(unsigned char Direction, unsigned char motorspeed) Description: Enable the IIC motor driver to drive a 4-wire stepper.
Frequence: the prescale frequency of PWM 6. void MotorDirectionSet(unsigned char Direction) Description: Adjust the direction of the motors Direction:can be Forward/Reverse rotating. Usage: MotorDirectionSet(0b1010); //"0b1010" defines the output polarity, "10" means the //M+ is "positive" while the M- is "negative" // make sure M+ and M- is different polarity when driving DC motors. delay(1000); MotorDirectionSet(0b0101); //0b0101 Rotating in the opposite direction delay(500) 7.
8. Version Tracker Revision Descriptions Release v1.0 Initial public release May 17th, 2012 v1.2 modify the I2C address set by hardware July 2nd, 2012 v1.
9.
10. Support If you have questions or other better design ideas, you can go to our forum or wish to discuss.