RegulationIntensite/RegulationIntensite.ino

50 lines
1.3 KiB
C++

#include "mesure.h"
#define __PIN_PWM__ 3
#define DEBUG
float target_curent = 0.05;//ma
courant collecteur(A0,A1,100,1,1,0.248,0.248); // R1 10K, R2 3K3
courant base(A2,A3,820,1,1,0.5,0.5);
/*
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()
{
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.print(base.lireCourant());Serial.print("\tU1:");Serial.print(base.lireTensionU1());
Serial.print("U2");Serial.println(base.lireTensionU2());
#endif
}