MC33926 is a H-Bridge from freescale. This driver allow to use it to drive a DC-Motor using 3 different driving methods: - Lock Antiphase - Sign-Magnitude braking - Sign-Magnitude coasting I used this board https://www.sparkfun.com/products/11080 for my tests and find a lot of informations here: http://modularcircuits.tantosonline.com/blog/articles/h-bridge-secrets/h-bridge-control/
mc33926.h
- Committer:
- garfunkheul
- Date:
- 2013-10-08
- Revision:
- 0:217bc3688cff
File content as of revision 0:217bc3688cff:
#ifndef __MC33926_H__ #define __MC33926_H__ #include "mbed.h" #define MAX_SPEED 5 enum mc33926_mode { LOCK_ANTIPHASE, SIGN_MAGNITUDE_BRAKING, SIGN_MAGNITUDE_COASTING, }; /** driver for the MC33926 H-Bridge * * This driver allow to drive the MC33926 with 3 differents technics: * - Lock antiphase: alternate 1 direction with another * - Sign-manigtude braking: alternate 1 direction with braking * - Sign-magnitude coasting: alternate 1 direction with freewheeling * Speed can be set from -MAX_SPEED to +MAX_SPEED */ class mc33926 { public: /** Create a MC33926 instance * @param inv pin connected to inv * @param in1 pin connected to in1 * @param in2 pin connected to in2 * @param d1 pin connected to d1 * @param d2 pin connected to d2 * @param en pin connected to enable (can be unset) * @param sf pin connected to sf (can be unset) */ mc33926(PinName inv, PinName in1, PinName in2, PinName d1, PinName d2, PinName en = NC, PinName sf = NC); /** Set driving mode * @param _mode mode to set (LOCK_ANTIPHASE, SIGN_MAGNITUDE_BRAKING or SIGN_MAGNITUDE_COASTING) */ void set_mode(int _mode); /** Set speed * @param _speed (from -MAX_SPPED to +MAX_SPEED) */ float set_speed(int _speed); /** Set PWM period * @param _period pwm period in us. Warning: a low period implies SF set, see MC339276 datasheet */ void set_period(int _period); /** Return driving mode */ int get_mode(); /** Return speed */ int get_speed(); /** Return PWM period in us */ int get_period(); /** Enable H-Bridge. Work only if enable pin is set */ void enable(); /* Disable H-Bridge. Work only if enable pin is set */ void disable(); private: PinName pin_inv; PinName pin_in1; PinName pin_in2; PinName pin_d1; PinName pin_d2; PinName pin_en; PinName pin_sf; PwmOut *pwm; int mode; int speed; int period; void setup(); void setup_lock_antiphase(); void setup_sign_magnitude_braking(); void setup_sign_magnitude_coasting(); float speed_lock_antiphase(); float speed_sign_magnitude(); void period_lock_antiphase(); void period_sign_magnitude(); }; #endif