DRV8830/Texas Instruments H-Bridge Voltage-Controlled Motor Driver library for Brushed DC Motor
Dependents: NucleoF401_motor_test_simple Frequency_Counter_w_GPS_1PPS Nucleo_ACM1602_I2C_DC_Angle Frequency_Cntr_1PPS_F746ZG
DRV8830.h
- Committer:
- kenjiArai
- Date:
- 2017-08-23
- Revision:
- 4:323a62f5fff3
- Parent:
- 2:fa7da669c1aa
File content as of revision 4:323a62f5fff3:
/* * mbed library program * Texas Instruments / DRV8830 H-Bridge Voltage-Controlled Motor Driver * http://www.ti.com/product/drv8830 * * Copyright (c) 2014,'17 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * http://mbed.org/users/kenjiArai/ * Created: August 6th, 2014 * Revised: August 23rd, 2017 */ #ifndef MBED_DRV8830 #define MBED_DRV8830 // DRV8830 LOW-VOLTAGE MOTOR DRIVER WITH SERIAL INTERFACE // 7bit address = 0b01100000(0x60) -> 8bit = 0b11000000(0xc0) -> 0xc1(Read) or 0xc0(Write) // ADDR_01 = (A1=0)+(A0=1), ADDR_1N = (A1=1)+(A0=No Connection) // -> Please make sure your H/W configuration #define DRV8830ADDR_00 0xc0 #define DRV8830ADDR_0N 0xc2 #define DRV8830ADDR_01 0xc4 #define DRV8830ADDR_N0 0xc6 #define DRV8830ADDR_NN 0xc8 #define DRV8830ADDR_N1 0xca #define DRV8830ADDR_10 0xcc #define DRV8830ADDR_1N 0xce #define DRV8830ADDR_11 0xd0 // fault status #define DRV8830_F_ILIMIT 0x10 #define DRV8830_F_OTS 0x08 #define DRV8830_F_UVLO 0x04 #define DRV8830_F_OCP 0x02 #define DRV8830_F_FAULT 0x01 /** DRV8830 class * * This is a driver code for the DRV8830 H-Bridge Voltage-Controlled Motor Driver. * http://www.ti.com/product/drv8830 * * @code * #include "mbed.h" * #include "DRV8830.h" * * // I2C Communication * DRV8830 motor(PinName p_sda, PinName p_scl, addr); * // If you connected I2C line not only this device but also other devices, * // you need to declare following method. * I2C i2c(PinName p_sda, PinName p_scl); * DRV8830 motor(I2C& p_i2c, addr); * * int main() { * uint8_t status; * * // Speed control * motor.speed(0.5); // CW * motor.speed(-0.5); // CCW * motor.speed(0.0); // Stop(FREE) * // Check error and reset * status = motor.status(); * if (status & DRV8830_F_FAULT){ * motor.reset(); * } * } * @endcode */ class DRV8830 { public: /** Configure data pin * @param data SDA and SCL pins * @param DRV8830 address (H/W configuration of A1,A0) */ DRV8830(PinName p_sda, PinName p_scl, uint8_t addr); /** Configure data pin (with other devices on I2C line) * @param I2C previous definition * @param DRV8830 address (H/W configuration of A1,A0) */ DRV8830(I2C& p_i2c, uint8_t addr); /** Set motor speed * @param speed (Range 0 to 1.0 or 0 to -1.0) * @return none */ void speed(float speed); /** Set voltage * @param voltage (0 to 5V) * @return none */ void set_voltage(float volt); /** Read status * @param none * @return FAULT register content */ uint8_t status(); /** Reset DRV8830 chip * @param none * @return none */ void reset(); protected: I2C *_i2c_p; I2C &_i2c; private: char DRV8830_addr; }; #endif // MBED_DRV8830