Gestion pont-H pour moteur CC

Files at this revision

API Documentation at this revision

Comitter:
Jean92
Date:
Tue Sep 15 19:25:32 2015 +0000
Parent:
3:5181bcf1f0a6
Commit message:
v0.7

Changed in this revision

yMOTOR.cpp Show annotated file Show diff for this revision Revisions of this file
yMOTOR.h Show annotated file Show diff for this revision Revisions of this file
--- a/yMOTOR.cpp	Sun Sep 13 15:55:29 2015 +0000
+++ b/yMOTOR.cpp	Tue Sep 15 19:25:32 2015 +0000
@@ -4,7 +4,7 @@
  /**
  * @file    yMOTOR.cpp
  * @brief   Class 'yMOTOR'
- * @version V0.5
+ * @version V0.7
  * @date    Sept-2015
  * @note    by Jean92 \n
  *          Controlleur pour Pont-H (MC33886)" \n
@@ -17,7 +17,8 @@
 yMOTOR::yMOTOR(PinName pwm, PinName av, PinName ar):
                 _pwm(pwm), _av(av), _ar(ar) {
      // herite de PWM et DO
-     // init PWM
+     // init PWM, init deadband
+    this->m_DB = yDB_def;
     _pwm.period(yPeriod_def);
     _pwm = 0.0;
     
@@ -33,17 +34,17 @@
 /** Traiter le changement de vitesse */
 void yMOTOR::Speed(float speed) {
     if (this->m_run) {              // moteur running?
-        if (abs(speed) < yDB_def) {     // oui, consigne suffisante?
+        if (abs(speed) < this->m_DB) {     // oui, consigne suffisante?
             _ar = 0;                    // non, les 2 cdes à zéro
             _av = 0;
             _pwm = 0.0;                 // reset PWM
             this->m_speed = 0.0;        // memoriser vitesse nulle
         }
-        else {                          // oui, en dehors de la bande morte
-            _av = (speed > yDB_def);    // en avant
-            _ar = (speed < -yDB_def);   // ou en arriere
-            _pwm = abs(speed);          // a la vitesse demandée
-            this->m_speed = speed;      // memoire vitesse
+        else {                             // oui, en dehors de la bande morte
+            _av = (speed > this->m_DB);    // en avant
+            _ar = (speed < -this->m_DB);   // ou en arriere
+            _pwm = abs(speed);             // a la vitesse demandée
+            this->m_speed = speed;         // memoire vitesse
         }
     } 
 } 
@@ -53,11 +54,16 @@
     _pwm.period(seconds);
 }
 
+/** Change DeadBand */
+void yMOTOR::DeadBand(float db) {
+    this->m_DB = db;
+}
+
 /** Marche/Arret request */
 void yMOTOR::MarArr(int mararr) {
     if (mararr == yMARCHE) {
+        this->m_run = 1;        // memoriser l'état
         Speed(this->m_speed);   // appliquer la vitesse demandée
-        this->m_run = 1;        // memoriser l'état
     }
     else if (mararr == yARRET) {
         _ar = 0;                // mettre les 2 cdes a zero
--- a/yMOTOR.h	Sun Sep 13 15:55:29 2015 +0000
+++ b/yMOTOR.h	Tue Sep 15 19:25:32 2015 +0000
@@ -5,7 +5,7 @@
 /**
  * @file    yMOTOR.h
  * @brief   Header de la classe 'yMOTOR'
- * @version V0.5
+ * @version V0.7
  * @date    Sept-2015
  * @note    by Jean92 \n
  *          Controlleur pour Pont-H (MC33886)"
@@ -29,7 +29,7 @@
     /** Interface de controle du moteur
      * @param pwm (Pwmout, vitesse variable)
      * @param av  (DigitalOut, marche avant)
-     * @param ar  (DigialOut, marche arriere)
+     * @param ar  (DigitalOut, marche arriere)
      */
     yMOTOR(PinName pwm, PinName av, PinName ar);        /// Constructeur par defaut
     ~yMOTOR();                                          /// Destructeur
@@ -45,6 +45,12 @@
      * @param seconds (PWM duty cycle)
      */
     void Period(float seconds);
+
+    /** Change DeadBand
+     * @param db
+     * modify the default dead band (around 0.0 not action)
+     */
+    void DeadBand(float db);
     
     /** Marche/Arret request
      * yARRET ==> av = ar = 0
@@ -64,8 +70,9 @@
     float Velocity();
     
 private:    /// Attributs - m_membres (visibles par les methodes)
-    float m_speed;
-    bool m_run;
+    float m_speed;  //spedd memory
+    bool m_run;     //running memory
+    float m_DB;     //deadband
 
 protected:  /// Attibuts (accessibles seulement via les methodes)
     PwmOut _pwm;        // par heritage