From d68add73dfb2e7c7a57cd6be0dbd5db5ac55a79b Mon Sep 17 00:00:00 2001 From: Adrien Van Date: Wed, 15 Feb 2017 21:27:17 +0100 Subject: [PATCH] Correction bug --- RegulationIntensite.ino | 40 ++++++++++++++++++++++++++++++++++++---- mesure.cpp | 41 +++++++++++++++++------------------------ mesure.h | 22 +++++++++++----------- 3 files changed, 64 insertions(+), 39 deletions(-) diff --git a/RegulationIntensite.ino b/RegulationIntensite.ino index 6cf796f..e09002d 100644 --- a/RegulationIntensite.ino +++ b/RegulationIntensite.ino @@ -1,16 +1,48 @@ #include "mesure.h" - +#define __PIN_PWM__ 3 +#define DEBUG float target_curent = 0.05;//ma -courant collecteur(3,A0,A1,820); +courant collecteur(A0,A1,100,1,1,0.248,0.248); // R1 10K, R2 3K3 +courant base(A2,A3,10000); +/* + courant collecteur(Potentien Haut U1,Potentiel Bas U2,Resistance[,Pon résistif sur U1,Pon résistif sur U2, Raport Résistance U1, Raport Résistance U2]); + par ex + courant collecteur(A0,A1,800,1,1,0.2,0.8); + courant collecteur(A0,A1,800,1,0,0.1); + courant collecteur(A0,A1,800,0,1,0.8); +*/ void setup() { + pinMode(3,1); Serial.begin(9600); + + + Serial.println("Ic;Vce"); } void loop() { - Serial.println(collecteur.lireCourant()); - delay(500); + static int PWMCourent = 122; + float iBase = base.lireCourant(); + if(iBase < target_curent*0.9) + PWMCourent++; + else if(iBase > target_curent) + PWMCourent--; + #ifndef DEBUG + else + { + #endif + //Courent stabilisé on affiche les valeurs + Serial.print(collecteur.lireCourant());Serial.print(";");Serial.print(collecteur.lireTensionU2());Serial.print("\n"); + delay(500); + #ifndef DEBUG + } + #endif + analogWrite(__PIN_PWM__, PWMCourent); + #ifdef DEBUG + Serial.print("PWM:");Serial.print(PWMCourent); + Serial.print("\tIBase:");Serial.println(base.lireCourant()); + #endif } diff --git a/mesure.cpp b/mesure.cpp index 013d5a8..183249f 100644 --- a/mesure.cpp +++ b/mesure.cpp @@ -3,13 +3,11 @@ #include "mesure.h" -courant::courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r) +courant::courant(uint8_t pinU1, uint8_t pinU2, int r) { - this->pinPWM = pinPWM; this->pinU1 = pinU1; this->pinU2 = pinU2; this->r = r; - pinMode(pinPWM, 1); pinMode(pinU1, 0); pinMode(pinU2, 0); bridgeU1Enable = 0; @@ -17,13 +15,12 @@ courant::courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r) bridgeU1RapportR = 1; bridgeU2RapportR = 1; } -courant::courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable, ...) +courant::courant(uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable,...) { - this->pinPWM = pinPWM; + this->pinU1 = pinU1; this->pinU2 = pinU2; this->r = r; - pinMode(pinPWM, 1); pinMode(pinU1, 0); pinMode(pinU2, 0); this->bridgeU1Enable = bridgeU1Enable; @@ -35,9 +32,9 @@ courant::courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t br { this->bridgeU1Enable = bridgeU1Enable; this->bridgeU2Enable = bridgeU2Enable; - bridgeU1RapportR = va_arg(ap, float); + bridgeU1RapportR = va_arg(ap, double); if(bridgeU2Enable) - bridgeU2RapportR = va_arg(ap, float); + bridgeU2RapportR = va_arg(ap, double); else bridgeU2RapportR = 1; } @@ -47,19 +44,17 @@ courant::courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t br this->bridgeU2Enable = bridgeU2Enable; bridgeU1RapportR = 1; if(bridgeU2Enable) - bridgeU2RapportR = va_arg(ap, float); + bridgeU2RapportR = va_arg(ap, double); else bridgeU2RapportR = 1; } va_end(ap); } -void courant::config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r) +void courant::config(uint8_t pinU1, uint8_t pinU2, int r) { - this->pinPWM = pinPWM; this->pinU1 = pinU1; this->pinU2 = pinU2; this->r = r; - pinMode(pinPWM, 1); pinMode(pinU1, 0); pinMode(pinU2, 0); bridgeU1Enable = 0; @@ -67,13 +62,11 @@ void courant::config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r) bridgeU1RapportR = 1; bridgeU2RapportR = 1; } -void courant::config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable, ...) +void courant::config(uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable, ...) { - this->pinPWM = pinPWM; this->pinU1 = pinU1; this->pinU2 = pinU2; this->r = r; - pinMode(pinPWM, 1); pinMode(pinU1, 0); pinMode(pinU2, 0); this->bridgeU1Enable = bridgeU1Enable; @@ -85,9 +78,9 @@ void courant::config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_ { this->bridgeU1Enable = bridgeU1Enable; this->bridgeU2Enable = bridgeU2Enable; - bridgeU1RapportR = va_arg(ap, float); + bridgeU1RapportR = va_arg(ap, double); if(bridgeU2Enable) - bridgeU2RapportR = va_arg(ap, float); + bridgeU2RapportR = va_arg(ap, double); else bridgeU2RapportR = 1; } @@ -97,7 +90,7 @@ void courant::config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_ this->bridgeU2Enable = bridgeU2Enable; bridgeU1RapportR = 1; if(bridgeU2Enable) - bridgeU2RapportR = va_arg(ap, float); + bridgeU2RapportR = va_arg(ap, double); else bridgeU2RapportR = 1; } @@ -108,22 +101,22 @@ void courant::lireTension() u1RAW = analogRead(pinU1); u2RAW = analogRead(pinU2); - u1 = (u1RAW*(5.0/1024.0))*bridgeU1RapportR; - u2 = (u2RAW*(5.0/1024.0))*bridgeU2RapportR; + u1 = (u1RAW*(5.0/1024.0))*(bridgeU1RapportR+1); + u2 = (u2RAW*(5.0/1024.0))*(bridgeU2RapportR+1); } -float courant::lireCourant() +double courant::lireCourant() { lireTension(); - float i = ((u1-u2)/820.0)*1000; + double i = ((u1-u2)/820.0)*1000; return i; } -float courant::lireTensionU1() +double courant::lireTensionU1() { return u1; } -float courant::lireTensionU2() +double courant::lireTensionU2() { return u2; } diff --git a/mesure.h b/mesure.h index 7e2891c..ef11e2b 100644 --- a/mesure.h +++ b/mesure.h @@ -12,21 +12,21 @@ class courant uint8_t pinPWM; uint8_t pinU1; uint8_t pinU2; - float u1; - float u2; + double u1; + double u2; uint8_t bridgeU1Enable; uint8_t bridgeU2Enable; - float bridgeU1RapportR; - float bridgeU2RapportR; + double bridgeU1RapportR; + double bridgeU2RapportR; void lireTension(); public: - courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r); - courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable, ...); - void config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r); - void config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1, uint8_t bridgeU2, ...); - float lireCourant(); - float lireTensionU1(); - float lireTensionU2(); + courant(uint8_t pinU1, uint8_t pinU2, int r); + courant(uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable, ...); + void config(uint8_t pinU1, uint8_t pinU2, int r); + void config(uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1, uint8_t bridgeU2, ...); + double lireCourant(); + double lireTensionU1(); + double lireTensionU2(); ;}; #endif