Compare commits

10 Commits
beta ... master

Author SHA1 Message Date
adriy
67c7e25a4a correction erreur sous linux ... 2017-03-09 13:05:21 +00:00
adriy
e97b6fd98b correction erreur sous linux ... 2017-03-09 13:04:40 +00:00
adriy
f19124b6df correction lire tension 2017-02-16 12:46:13 +00:00
Adrien Van
72eb1efda4 .. 2017-02-15 22:27:08 +01:00
Adrien Van
e5bb8fcc4c .. 2017-02-15 22:14:02 +01:00
Adrien Van
f6b4d8edd2 Merge branch 'master' of https://git.adriy.be/ecole/RegulationIntensite 2017-02-15 22:08:53 +01:00
Adrien Van
9a0c4ca74c mauvauais raport resistance pont 2017-02-15 22:08:17 +01:00
adriy
e63fe005d5 Supprimer 'RegulationIntensite.h' 2017-02-15 20:44:39 +00:00
Adrien Van
84524e04fe Probleme au niveau du calcul du pont 2017-02-15 21:41:51 +01:00
Adrien Van
cdb747dd5e Desactivation debug 2017-02-15 21:29:58 +01:00
4 changed files with 15 additions and 45 deletions

View File

@@ -1,34 +0,0 @@
#ifndef REGULATIONINTENSITE_H
#define REGULATIONINTENSITE_H
typedef struct {
float rapportR;
int pinU;
float uMesure;
float uReel;
} PontDiviseur;
typedef struct {
float r;
int pinU1;
int pinU2;
float u1;
float u2;
float i;
} CurentFromR;
typedef struct {
float targetI;
int pinPWM;
float *curI;
} Reg;
float readCurentFromR(CurentFromR *);
float readUFromPontDiviseur(PontDiviseur *);
void regulationI(Reg *);
void regulationVCE(Reg *);
#endif

View File

@@ -1,10 +1,10 @@
#include "mesure.h"
#define __PIN_PWM__ 3
#define DEBUG
//#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,10000);
courant base(A2,A3,820);
/*
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
@@ -25,7 +25,7 @@ void setup()
void loop()
{
static int PWMCourent = 122;
float iBase = base.lireCourant();
double iBase = base.lireCourant();
if(iBase < target_curent*0.9)
PWMCourent++;
else if(iBase > target_curent)
@@ -43,6 +43,7 @@ void loop()
analogWrite(__PIN_PWM__, PWMCourent);
#ifdef DEBUG
Serial.print("PWM:");Serial.print(PWMCourent);
Serial.print("\tIBase:");Serial.println(base.lireCourant());
Serial.print("\tIBase:");Serial.print(base.lireCourant());Serial.print("\tU1:");Serial.print(base.lireTensionU1());
Serial.print("U2");Serial.println(base.lireTensionU2());
#endif
}

View File

@@ -1,5 +1,5 @@
#include <stdarg.h>
#include "arduino.h"
#include <Arduino.h>
#include "mesure.h"
@@ -40,7 +40,7 @@ courant::courant(uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, ui
}
else
{
this->bridgeU1Enable = 0;
this->bridgeU1Enable = 1;
this->bridgeU2Enable = bridgeU2Enable;
bridgeU1RapportR = 1;
if(bridgeU2Enable)
@@ -86,7 +86,7 @@ void courant::config(uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable
}
else
{
this->bridgeU1Enable = 0;
this->bridgeU1Enable = 1;
this->bridgeU2Enable = bridgeU2Enable;
bridgeU1RapportR = 1;
if(bridgeU2Enable)
@@ -101,22 +101,24 @@ void courant::lireTension()
u1RAW = analogRead(pinU1);
u2RAW = analogRead(pinU2);
u1 = (u1RAW*(5.0/1024.0))*(bridgeU1RapportR+1);
u2 = (u2RAW*(5.0/1024.0))*(bridgeU2RapportR+1);
u1 = (u1RAW*(5.0/1024.0))*(1/bridgeU1RapportR);
u2 = (u2RAW*(5.0/1024.0))*(1/bridgeU2RapportR);
}
double courant::lireCourant()
{
lireTension();
double i = ((u1-u2)/820.0)*1000;
double i = ((u1-u2)/(double)r)*1000;
return i;
}
double courant::lireTensionU1()
{
lireTension();
return u1;
}
double courant::lireTensionU2()
{
lireTension();
return u2;
}
}

View File

@@ -2,6 +2,7 @@
#define MESURE_H
#include <stdarg.h>
#include <stdint.h>
class courant
{