a

Dependencies:   mbed mbed-rtos

Committer:
alexpirciu
Date:
Thu Mar 28 07:44:42 2019 +0000
Revision:
1:ceee5a608e7c
assa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexpirciu 1:ceee5a608e7c 1 /**
alexpirciu 1:ceee5a608e7c 2 ******************************************************************************
alexpirciu 1:ceee5a608e7c 3 * @file VNH.cpp
alexpirciu 1:ceee5a608e7c 4 * @author RBRO/PJ-IU
alexpirciu 1:ceee5a608e7c 5 * @version V1.0.0
alexpirciu 1:ceee5a608e7c 6 * @date day-month-2017
alexpirciu 1:ceee5a608e7c 7 * @brief This file contains the class defoinition for the VNH Bridge Driver
alexpirciu 1:ceee5a608e7c 8 * functionality.
alexpirciu 1:ceee5a608e7c 9 ******************************************************************************
alexpirciu 1:ceee5a608e7c 10 */
alexpirciu 1:ceee5a608e7c 11
alexpirciu 1:ceee5a608e7c 12 #include <Drivers/vnh.hpp>
alexpirciu 1:ceee5a608e7c 13
alexpirciu 1:ceee5a608e7c 14
alexpirciu 1:ceee5a608e7c 15 namespace drivers{
alexpirciu 1:ceee5a608e7c 16
alexpirciu 1:ceee5a608e7c 17
alexpirciu 1:ceee5a608e7c 18
alexpirciu 1:ceee5a608e7c 19 /** @brief VNH class constructor
alexpirciu 1:ceee5a608e7c 20 *
alexpirciu 1:ceee5a608e7c 21 * Constructor method
alexpirciu 1:ceee5a608e7c 22 *
alexpirciu 1:ceee5a608e7c 23 * @param _pwm PWM pin
alexpirciu 1:ceee5a608e7c 24 * @param _ina pin A
alexpirciu 1:ceee5a608e7c 25 * @param _inb pin B
alexpirciu 1:ceee5a608e7c 26 * @param _current current analog pin
alexpirciu 1:ceee5a608e7c 27 */
alexpirciu 1:ceee5a608e7c 28 VNH::VNH(PinName _pwm, PinName _ina, PinName _inb, PinName _current)
alexpirciu 1:ceee5a608e7c 29 :pwm(_pwm)
alexpirciu 1:ceee5a608e7c 30 ,ina(_ina)
alexpirciu 1:ceee5a608e7c 31 ,inb(_inb)
alexpirciu 1:ceee5a608e7c 32 ,current(_current)
alexpirciu 1:ceee5a608e7c 33 {
alexpirciu 1:ceee5a608e7c 34 pwm.period_us(200);
alexpirciu 1:ceee5a608e7c 35 increment = 0.01;
alexpirciu 1:ceee5a608e7c 36 current_speed = 0;
alexpirciu 1:ceee5a608e7c 37 }
alexpirciu 1:ceee5a608e7c 38
alexpirciu 1:ceee5a608e7c 39 /** @brief VNH class destructor
alexpirciu 1:ceee5a608e7c 40 *
alexpirciu 1:ceee5a608e7c 41 * Destructor method
alexpirciu 1:ceee5a608e7c 42 *
alexpirciu 1:ceee5a608e7c 43 *
alexpirciu 1:ceee5a608e7c 44 */
alexpirciu 1:ceee5a608e7c 45 VNH::~VNH()
alexpirciu 1:ceee5a608e7c 46 {
alexpirciu 1:ceee5a608e7c 47 }
alexpirciu 1:ceee5a608e7c 48
alexpirciu 1:ceee5a608e7c 49 /** @brief Start method
alexpirciu 1:ceee5a608e7c 50 *
alexpirciu 1:ceee5a608e7c 51 *
alexpirciu 1:ceee5a608e7c 52 *
alexpirciu 1:ceee5a608e7c 53 */
alexpirciu 1:ceee5a608e7c 54 void VNH::Start(void)
alexpirciu 1:ceee5a608e7c 55 {
alexpirciu 1:ceee5a608e7c 56 ina = !inb;
alexpirciu 1:ceee5a608e7c 57 pwm.write(0);
alexpirciu 1:ceee5a608e7c 58 }
alexpirciu 1:ceee5a608e7c 59
alexpirciu 1:ceee5a608e7c 60 /** @brief Stop method
alexpirciu 1:ceee5a608e7c 61 *
alexpirciu 1:ceee5a608e7c 62 *
alexpirciu 1:ceee5a608e7c 63 *
alexpirciu 1:ceee5a608e7c 64 */
alexpirciu 1:ceee5a608e7c 65 void VNH::Stop(void)
alexpirciu 1:ceee5a608e7c 66 {
alexpirciu 1:ceee5a608e7c 67 ina = inb;
alexpirciu 1:ceee5a608e7c 68 }
alexpirciu 1:ceee5a608e7c 69
alexpirciu 1:ceee5a608e7c 70 /** @brief Run method
alexpirciu 1:ceee5a608e7c 71 *
alexpirciu 1:ceee5a608e7c 72 * @param speed speed value
alexpirciu 1:ceee5a608e7c 73 *
alexpirciu 1:ceee5a608e7c 74 */
alexpirciu 1:ceee5a608e7c 75 void VNH::Run(float speed)
alexpirciu 1:ceee5a608e7c 76 {
alexpirciu 1:ceee5a608e7c 77 Go(speed);
alexpirciu 1:ceee5a608e7c 78 }
alexpirciu 1:ceee5a608e7c 79
alexpirciu 1:ceee5a608e7c 80 /** @brief Get current method
alexpirciu 1:ceee5a608e7c 81 *
alexpirciu 1:ceee5a608e7c 82 *
alexpirciu 1:ceee5a608e7c 83 * \return Current value
alexpirciu 1:ceee5a608e7c 84 */
alexpirciu 1:ceee5a608e7c 85 float VNH::GetCurrent(void)
alexpirciu 1:ceee5a608e7c 86 {
alexpirciu 1:ceee5a608e7c 87 return (current.read()) * 5 / 0.14;
alexpirciu 1:ceee5a608e7c 88 }
alexpirciu 1:ceee5a608e7c 89
alexpirciu 1:ceee5a608e7c 90 /** @brief Go method
alexpirciu 1:ceee5a608e7c 91 *
alexpirciu 1:ceee5a608e7c 92 * @param speed speed value
alexpirciu 1:ceee5a608e7c 93 *
alexpirciu 1:ceee5a608e7c 94 */
alexpirciu 1:ceee5a608e7c 95 void VNH::Go(float speed)
alexpirciu 1:ceee5a608e7c 96 {
alexpirciu 1:ceee5a608e7c 97 //pwm.write(abs(speed));
alexpirciu 1:ceee5a608e7c 98 if (speed < 0)
alexpirciu 1:ceee5a608e7c 99 {
alexpirciu 1:ceee5a608e7c 100 ina = 0;
alexpirciu 1:ceee5a608e7c 101 inb = 1;
alexpirciu 1:ceee5a608e7c 102 }
alexpirciu 1:ceee5a608e7c 103 else
alexpirciu 1:ceee5a608e7c 104 {
alexpirciu 1:ceee5a608e7c 105 ina = 1;
alexpirciu 1:ceee5a608e7c 106 inb = 0;
alexpirciu 1:ceee5a608e7c 107 }
alexpirciu 1:ceee5a608e7c 108 pwm =std::abs(speed);
alexpirciu 1:ceee5a608e7c 109 }
alexpirciu 1:ceee5a608e7c 110
alexpirciu 1:ceee5a608e7c 111 /** @brief Inverse method
alexpirciu 1:ceee5a608e7c 112 *
alexpirciu 1:ceee5a608e7c 113 * @param f_speed speed value
alexpirciu 1:ceee5a608e7c 114 *
alexpirciu 1:ceee5a608e7c 115 */
alexpirciu 1:ceee5a608e7c 116 void VNH::Inverse(float f_speed)
alexpirciu 1:ceee5a608e7c 117 {
alexpirciu 1:ceee5a608e7c 118 ina=!ina;
alexpirciu 1:ceee5a608e7c 119 inb=!inb;
alexpirciu 1:ceee5a608e7c 120 pwm =std::abs(f_speed);
alexpirciu 1:ceee5a608e7c 121 }
alexpirciu 1:ceee5a608e7c 122
alexpirciu 1:ceee5a608e7c 123 /** @brief Brake method
alexpirciu 1:ceee5a608e7c 124 *
alexpirciu 1:ceee5a608e7c 125 *
alexpirciu 1:ceee5a608e7c 126 *
alexpirciu 1:ceee5a608e7c 127 */
alexpirciu 1:ceee5a608e7c 128 void VNH::Brake()
alexpirciu 1:ceee5a608e7c 129 {
alexpirciu 1:ceee5a608e7c 130 ina.write(0);
alexpirciu 1:ceee5a608e7c 131 inb.write(0);
alexpirciu 1:ceee5a608e7c 132 pwm.write(100.0);
alexpirciu 1:ceee5a608e7c 133 }
alexpirciu 1:ceee5a608e7c 134
alexpirciu 1:ceee5a608e7c 135 }; // namespace drivers