![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
a
Diff: src/Drivers/vnh.cpp
- Revision:
- 1:ceee5a608e7c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Drivers/vnh.cpp Thu Mar 28 07:44:42 2019 +0000 @@ -0,0 +1,135 @@ +/** + ****************************************************************************** + * @file VNH.cpp + * @author RBRO/PJ-IU + * @version V1.0.0 + * @date day-month-2017 + * @brief This file contains the class defoinition for the VNH Bridge Driver + * functionality. + ****************************************************************************** + */ + +#include <Drivers/vnh.hpp> + + +namespace drivers{ + + + + /** @brief VNH class constructor + * + * Constructor method + * + * @param _pwm PWM pin + * @param _ina pin A + * @param _inb pin B + * @param _current current analog pin + */ + VNH::VNH(PinName _pwm, PinName _ina, PinName _inb, PinName _current) + :pwm(_pwm) + ,ina(_ina) + ,inb(_inb) + ,current(_current) + { + pwm.period_us(200); + increment = 0.01; + current_speed = 0; + } + + /** @brief VNH class destructor + * + * Destructor method + * + * + */ + VNH::~VNH() + { + } + + /** @brief Start method + * + * + * + */ + void VNH::Start(void) + { + ina = !inb; + pwm.write(0); + } + + /** @brief Stop method + * + * + * + */ + void VNH::Stop(void) + { + ina = inb; + } + + /** @brief Run method + * + * @param speed speed value + * + */ + void VNH::Run(float speed) + { + Go(speed); + } + + /** @brief Get current method + * + * + * \return Current value + */ + float VNH::GetCurrent(void) + { + return (current.read()) * 5 / 0.14; + } + + /** @brief Go method + * + * @param speed speed value + * + */ + void VNH::Go(float speed) + { + //pwm.write(abs(speed)); + if (speed < 0) + { + ina = 0; + inb = 1; + } + else + { + ina = 1; + inb = 0; + } + pwm =std::abs(speed); + } + + /** @brief Inverse method + * + * @param f_speed speed value + * + */ + void VNH::Inverse(float f_speed) + { + ina=!ina; + inb=!inb; + pwm =std::abs(f_speed); + } + + /** @brief Brake method + * + * + * + */ + void VNH::Brake() + { + ina.write(0); + inb.write(0); + pwm.write(100.0); + } + +}; // namespace drivers