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:
- 2014-08-23
- Revision:
- 0:05db098cf4f8
- Child:
- 1:a9b58bc85be0
File content as of revision 0:05db098cf4f8:
/* * mbed library program * Texas Instruments / DRV8830 H-Bridge Voltage-Controlled Motor Driver * http://www.ti.com/product/drv8830 * * Copyright (c) 2014 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * http://mbed.org/users/kenjiArai/ * Created: August 6th, 2014 * Revised: August 16th, 2014 * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #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); /** Read status * @param none * @return FAULT register content */ uint8_t status(); /** Reset DRV8830 chip * @param none * @return none */ void reset(); protected: I2C i2c; private: char DRV8830_addr; }; #endif // MBED_DRV8830