Borne de recharge 'maison'
+6
Cameleon
Pixel
alien_charlou
seb.maccagnoni
tonnerre33
wolf_larsen
10 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
Borne de recharge 'maison'
Bonjour,
Je m'adresse à vous, au cas où l'un d'entre vous pourrait m'apporter de l'aide.
J'ai 'construit' une wallbox à partir de zéro, en m'inspirant de la doc technique disponible et de quelques sources internet.
Il s'agit d'une wallbox à câble fixe type 1 (le monophasé) en 16 à 20A, pour recharger une Nissan Leaf ou autres véhicules compatibles.
Le schéma électronique est presque exactement celui-ci (hormis la led tricolore, remplacée par un afficheur lcd 4x20) :
J'ai ignoré la partie GFCI, mon circuit étant protégé dans mon boîtier par un disjoncteur différentiel de 30A.
J'y ai ajouté un circuit de mesure de l'intensité et un afficheur LCD 4x20 (I2C) en façade.
Tout fonctionne parfaitement en mode 'simulation', avec les résistances ad hoc.
Le problème est que lorsque je branche la prise à la voiture, après quelques secondes de charge, le chargeur de la voiture arrête la charge avec un signal sonore d'anomalie.
J'ai essayé de comparer mon signal à celui du CRO fourni, le mien est 'presque meilleur' au niveau tensions, fréquence, rapport cyclique, etc.
Enfin bon, il ne doit pas être si bon que ça, faut croire
Je vous fournis le code que j'ai écrit, c'est assez simple:
J'ai tenté de modifier le rapport cyclique (20,25,30%) mais ça ne chage rien.
Voilà c'est pas simple à analyser avec peu d'infos je le sais, mais si l'un d'entre vous peut regarder ou me donner des pistes de recherche, ce sera très apprécié !
Merci.
Je m'adresse à vous, au cas où l'un d'entre vous pourrait m'apporter de l'aide.
J'ai 'construit' une wallbox à partir de zéro, en m'inspirant de la doc technique disponible et de quelques sources internet.
Il s'agit d'une wallbox à câble fixe type 1 (le monophasé) en 16 à 20A, pour recharger une Nissan Leaf ou autres véhicules compatibles.
Le schéma électronique est presque exactement celui-ci (hormis la led tricolore, remplacée par un afficheur lcd 4x20) :
J'ai ignoré la partie GFCI, mon circuit étant protégé dans mon boîtier par un disjoncteur différentiel de 30A.
J'y ai ajouté un circuit de mesure de l'intensité et un afficheur LCD 4x20 (I2C) en façade.
Tout fonctionne parfaitement en mode 'simulation', avec les résistances ad hoc.
Le problème est que lorsque je branche la prise à la voiture, après quelques secondes de charge, le chargeur de la voiture arrête la charge avec un signal sonore d'anomalie.
J'ai essayé de comparer mon signal à celui du CRO fourni, le mien est 'presque meilleur' au niveau tensions, fréquence, rapport cyclique, etc.
Enfin bon, il ne doit pas être si bon que ça, faut croire
Je vous fournis le code que j'ai écrit, c'est assez simple:
- Code:
// Bib LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// initialise le LCD
LiquidCrystal_I2C lcd(0x3f, 20, 4);
// Numero de port qui génère le signal 1kHz
const int squareSignalPin = 10;
// Rapport cyclique. On peut peut-être faire plus efficace...
#define SIGNAL_NUMBER_OF_PARTS 20
int signalPartPos=0;
boolean signalParts[SIGNAL_NUMBER_OF_PARTS] = {
true,
true,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
};
// indique si le signal 1kHz est activé ou pas
boolean squareSignal_ON=false;
// pour debug: mettre à true pour ne jamais générer de signal carré
#define NOSQUARESIGNAL false
#define SQUARESIGNAL_ALWAYS_ON false
// valeur minimale de lecture de tension
// à ajuster en fonction du montage et des conditions réelles
const int IVAL_12V = 900;
const int IVAL_9V = 780;
const int IVAL_6V = 680;
const int IVAL_3V = 600;
const int IVAL_NEG = 570;
const int sensorPin = A1;
int sensorValue = 0;
int sensorPrevValue = 0;
int sensorMinValue = 1000;
int sensorMaxValue = 0;
const int relayPin = 9;
char datecharge[20]="";
int compteur;
const int sensorAmpPin = A0;
int sensorAmpValue = 0;
// nombre de lecture de la tension
#define ANALOG_READ_LOOPS 10
// pour debug: mettre à true pour afficher les valeurs de tension sur LCD
#define ANALOG_VALUES_DEBUG true
void setup() {
pinMode(squareSignalPin, OUTPUT);
digitalWrite(squareSignalPin, false);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, false);
lcd.begin();
#if ANALOG_VALUES_DEBUG
lcd.setCursor(0, 1);
lcd.print("Instantané:");
#else
lcd.setCursor(0, 1);
lcd.print("Départ charge:");
#endif
lcd.setCursor(0, 0);
lcd.print("Intensite:");
cli();
TCCR2A = 0;
TCCR2B = 0b00000010;
TIMSK2 = 0b00000001;
sei();
delay(500);
digitalWrite(squareSignalPin, true);
delay(500);
}
ISR (TIMER2_OVF_vect)
{
if (squareSignal_ON || SQUARESIGNAL_ALWAYS_ON) {
TCNT2 = 163; // 50 us
digitalWrite(squareSignalPin, signalParts[signalPartPos++]);
if (signalPartPos > SIGNAL_NUMBER_OF_PARTS-1) {
signalPartPos=0;
}
}
else {
digitalWrite(squareSignalPin, true);
signalPartPos=0;
}
}
void loop() {
// On effectue plusieurs mesures successives en ne retenant que la plus élevée
// afin de ne pas mesurer par erreur un front montant ou descendant
sensorValue = analogRead(sensorPin);
for (compteur=1; compteur < ANALOG_READ_LOOPS; compteur++) {
sensorValue = max(analogRead(sensorPin),sensorValue);
}
// On n'exploite que la valeur 'positive' du signal
// pour détecter un changement de tension
if (sensorValue > IVAL_NEG) {
#if ANALOG_VALUES_DEBUG
// calcul et affichage sur LCD des tension min/max/courante
sensorMinValue = min(sensorMinValue,sensorValue);
sensorMaxValue = max(sensorMaxValue,sensorValue);
lcd.setCursor(12, 1);
lcd.print(sensorValue);
lcd.print(" ");
#else
#endif
if (abs(sensorValue - sensorPrevValue) > 10) {
sensorPrevValue = sensorValue;
// détection du '12V', VE non branché, désactivation du relais et du signal 1kHz
if (sensorValue >= IVAL_12V) {
squareSignal_ON = false;
digitalWrite(relayPin, false);
lcd.setCursor(0, 2);
lcd.print("+12V Square Off ");
lcd.setCursor(0, 3);
lcd.print("ON ");
delay(500);
}
// détection du '9V' VE prêt, activation du relais et du signal 1kHz
else if (sensorValue < IVAL_12V && sensorValue >= IVAL_9V) {
if ( ! NOSQUARESIGNAL) squareSignal_ON = true;
digitalWrite(relayPin, true);
lcd.setCursor(0, 2);
lcd.print("+9V Square On ");
lcd.setCursor(0, 3);
lcd.print("READY ");
delay(500);
}
// détection du '6V' VE charge, activation du relais et du signal 1kHz
else if (sensorValue < IVAL_9V && sensorValue >= IVAL_6V) {
if ( ! NOSQUARESIGNAL) squareSignal_ON = true;
digitalWrite(relayPin, true);
lcd.setCursor(0, 2);
lcd.print("+6V Square On ");
lcd.setCursor(0, 3);
lcd.print("CHARGE ");
delay(500);
}
// détection du '3V' VE charge, ventilation requise (?), activation du relais et du signal 1kHz
else if (sensorValue < IVAL_6V && sensorValue >= IVAL_3V) {
if ( ! NOSQUARESIGNAL) squareSignal_ON = true;
digitalWrite(relayPin, true);
lcd.setCursor(0, 2);
lcd.print("+3V Square On ");
lcd.setCursor(0, 3);
lcd.print("VENT.REQ.");
delay(1000);
}
// détection de tension hors limites, VE en erreur , désactivation du relais et du signal 1kHz
else if (sensorValue < IVAL_3V) {
squareSignal_ON = false;
digitalWrite(relayPin, false);
lcd.setCursor(0, 2);
lcd.print("0V Square Off ");
lcd.setCursor(0, 3);
lcd.print("ERROR ");
delay(1000);
}
}
}
sensorAmpValue = analogRead(sensorAmpPin);
lcd.setCursor(10, 0);
lcd.print(" ");
lcd.setCursor(10, 0);
lcd.print(sensorAmpValue);
delay(123);
}
J'ai tenté de modifier le rapport cyclique (20,25,30%) mais ça ne chage rien.
Voilà c'est pas simple à analyser avec peu d'infos je le sais, mais si l'un d'entre vous peut regarder ou me donner des pistes de recherche, ce sera très apprécié !
Merci.
Dernière édition par wolf_larsen le Dim 31 Déc 2017 - 0:07, édité 1 fois
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Salut très intéressant ton circuit.
Je n'ai jamais utilisé le PWM comme ca, tu m'as séché là XD.
Tu as pu contrôler le bon fonctionnement de ta sortie PWM ?
C'est quoi des résistances ad-hoc ?
Je n'ai jamais utilisé le PWM comme ca, tu m'as séché là XD.
Tu as pu contrôler le bon fonctionnement de ta sortie PWM ?
C'est quoi des résistances ad-hoc ?
Re: Borne de recharge 'maison'
Merci pour ta réponse.
Le circuit de détection de tension (la partie haute) n'est pas de moi.
va vient de là:
http://www.instructables.com/id/Arduino-EV-J1772-Charging-Station/
(lui-même l'a pris ailleurs il me semble)
La génération du pwm est comme tu l'as vu purement logicielle, avec les interruptions interne de l'arduino ça fonctionne bien, j'obtiens 1,001 khz à 30% de duty cycle (ou autre valeur par pas de 5%). c'est facilement adaptable pour plus de finesse.
J'ai controlé la sortie à l'oscillo, c'est 'parfait' sauf que j'ai du m...r quelque part.
les résistance ad hoc, ce sont celles qui permettent de simuler celles presentes dans la voiture et qui indiquent le statut:
2,7 kohm et 840 ohm
je m'aperçois que j'ai activé le relais dès la détection du 9V, c'est peut-être ça qui la stresse...
Je vais modifier ça (c'est galère d'emmener le pc dans le garage, pfff) et je donne le résultat.
Le circuit de détection de tension (la partie haute) n'est pas de moi.
va vient de là:
http://www.instructables.com/id/Arduino-EV-J1772-Charging-Station/
(lui-même l'a pris ailleurs il me semble)
La génération du pwm est comme tu l'as vu purement logicielle, avec les interruptions interne de l'arduino ça fonctionne bien, j'obtiens 1,001 khz à 30% de duty cycle (ou autre valeur par pas de 5%). c'est facilement adaptable pour plus de finesse.
J'ai controlé la sortie à l'oscillo, c'est 'parfait' sauf que j'ai du m...r quelque part.
les résistance ad hoc, ce sont celles qui permettent de simuler celles presentes dans la voiture et qui indiquent le statut:
2,7 kohm et 840 ohm
je m'aperçois que j'ai activé le relais dès la détection du 9V, c'est peut-être ça qui la stresse...
Je vais modifier ça (c'est galère d'emmener le pc dans le garage, pfff) et je donne le résultat.
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Salut,
Pour ma part je me suis contenté d'utiliser un OpenEVSE, du coup je n'ai pas du tout géré la partie électronique, désolé...
Pour ma part je me suis contenté d'utiliser un OpenEVSE, du coup je n'ai pas du tout géré la partie électronique, désolé...
Re: Borne de recharge 'maison'
seb.maccagnoni a écrit:Salut,
Pour ma part je me suis contenté d'utiliser un OpenEVSE, du coup je n'ai pas du tout géré la partie électronique, désolé...
Je voulais justement le faire moi-même, c'est intéressant et pas trop compliqué, mais quelque chose m'échappe...
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Ah mais tu as adapté le code car le firmware open_evse me semble plus complexe ?
Tu es parti sur le firmware open_evse_fw_v2.0B7.zip ?
Tu es parti sur le firmware open_evse_fw_v2.0B7.zip ?
Re: Borne de recharge 'maison'
Non pas du tout, j'ai écrit le programme à partir de zéro, en lisant la doc du protocole. C'était à but didactique, pas par envie de réinventer la roue
A dire vrai, le code openEVSE m'a paru extrèmement 'lourd', mais il doit correspondre à une utilisation différente, je suppose.
Je ne pense pas que le code soit en cause:
Il se peut que le problème provienne de l'électronique un peu simpliste: le protocole indique ( http://www.ti.com/lit/ug/tidub87/tidub87.pdf )
que la partie 'négative' du signal carré doit rester à -12V même quand le véhicule applique une résistance qui fait chuter la tension de la partie 'positive' du signal.
J'ai vérifié ce que fournit le CRO: c'est bien du 12V continu , puis du +9V / -12V puis,en charge, du +6V / -12V
alors que le montage ci-dessus 'fournit' 12V puis +9V / -9V puis +6V / -6V en charge
Et ça, une tension dissymétrique, je ne sais pas faire (mes connaissances en électronique analogique/ ampli op sont très modestes...)
Je ne vois pas d'autre différence avec le CRO.
A dire vrai, le code openEVSE m'a paru extrèmement 'lourd', mais il doit correspondre à une utilisation différente, je suppose.
Je ne pense pas que le code soit en cause:
Il se peut que le problème provienne de l'électronique un peu simpliste: le protocole indique ( http://www.ti.com/lit/ug/tidub87/tidub87.pdf )
que la partie 'négative' du signal carré doit rester à -12V même quand le véhicule applique une résistance qui fait chuter la tension de la partie 'positive' du signal.
J'ai vérifié ce que fournit le CRO: c'est bien du 12V continu , puis du +9V / -12V puis,en charge, du +6V / -12V
alors que le montage ci-dessus 'fournit' 12V puis +9V / -9V puis +6V / -6V en charge
Et ça, une tension dissymétrique, je ne sais pas faire (mes connaissances en électronique analogique/ ampli op sont très modestes...)
Je ne vois pas d'autre différence avec le CRO.
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Je me dis que tu gagnerais peut-être à y jeter un œil si tu ne l'as pas déjà fait :
https://code.google.com/archive/p/open-evse/wikis/J1772Basics.wiki
... mais les infos semblent être les mêmes que ce que tu as déjà.
https://code.google.com/archive/p/open-evse/wikis/J1772Basics.wiki
... mais les infos semblent être les mêmes que ce que tu as déjà.
Re: Borne de recharge 'maison'
Je suis aussi en train de faire la même chose que toi, exactement avec le même schéma électronique. La simulation fonctionne.
Pas encore testé sur la Zoe. J'attends de recevoir le socket Type 2 pour mon boîtier.
Je n'ai pas utilisé de LCD pour diminuer le coût de fabrication, juste comme toi 4 leds avec une gestion de clignotement, pour indiquer quel step serait éventuellement en défaut. J'essayerai de trouver un moment dans la journée pour mettre le code (encore en phase de développement) ici. Tu pourras comparer avec le tien.
Pas encore testé sur la Zoe. J'attends de recevoir le socket Type 2 pour mon boîtier.
Je n'ai pas utilisé de LCD pour diminuer le coût de fabrication, juste comme toi 4 leds avec une gestion de clignotement, pour indiquer quel step serait éventuellement en défaut. J'essayerai de trouver un moment dans la journée pour mettre le code (encore en phase de développement) ici. Tu pourras comparer avec le tien.
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Re: Borne de recharge 'maison'
Ci-dessous mon code, soyez indulgent je suis pas informaticien, il y à encore des améliorations à faire, notamment dans la gestion du bouton poussoir de start /stop/reset.
J'ai gardé des I/O de réserve ( en vue d'ajouté un LCD c'est pour cela que j'utilise des entrées analogique pour le bouton poussoir et pour les dip switch de sélections de puissances.
J'ai gardé des I/O de réserve ( en vue d'ajouté un LCD c'est pour cela que j'utilise des entrées analogique pour le bouton poussoir et pour les dip switch de sélections de puissances.
- Code:
#include <SPI.h>
#include <LiquidCrystal.h>
#include <RTClib.h>
#include <Wire.h>
#include "RTClib.h"
// Déclaration I/O pins
int i_M_Bp_In_Pin = A5; // Pin Mesure Bp noir
int i_Mp_In_Pin = A2; // Pin Mesure analogique dip swich puissance
int i_M_Bp_Lcd_In_Pin = A1; // Pin Mesure analogique Boutons Lcd
int i_Cp_In_Pin = A0; // Pin Mesure analogique control pilote
int i_Cp_Out_Pin = 3; // Pin digital ouput control pilote
int i_Attente_Connect_Cable_Out_Pin = 12; // Pin digital ouput Led attente connection câble
int i_Test_Diode_Out_Pin = 2;//10 2 // Pin digital ouput Led test diode en cours
int i_Attente_Ve_Out_Pin = 9; // Pin digital ouput Led attente VE
int i_Contactor_Out_Pin = 13; // Pin digital ouput conctator
int i_Contactor_Led_Out_Pin = 10;//12 10 // Pin digital ouput Led conctator
// Déclaration variables I/O
int i_M_Bp_In; // Mesure analogique Bp sur proto shild
int i_M_S_Power_In; // Mesure analogique dip swich puissance sur proto shild
int i_M_Bp_Lcd_In; // Mesure analogique Bp sur shild Lcd
int i_Cp_In; // Mesure analogique control pilote
int i_Cp_Out; // Consigne analogique control pilote
// Déclaration variables de travail
int i_Step = 0;
int i_Mem_Step;
int i_Cpt = 0;
int i_Cp_in_max;
int i_Cp_in_max_m = 0;
int i_Cp_in_som_max = 0;
int i_CP_Cpt1 = 0;
int i_CP_Cpt2 = 0;
boolean b_Fault = 0;
boolean b_Pb_On;
boolean b_M_Pb_On;
boolean b_M_Pb_Off;
unsigned long l_PreviousMillis=0;
unsigned long l_Interval = 0;
float f_Rc; // Raport cyclique pour fréquence 1Khz control plilot
// Déclaration fonctions
// Fonction Suveiliance temporelle
boolean b_Suv_Temp(unsigned long l__PreviousMilis, unsigned long l__Interval)
{
if((millis() - l__PreviousMilis) >= l__Interval) // Comptage temps attente connexion câble
{
return true; // Temps attente écoulé --> restart
}
else
{
return false;
}
}
// Fonction clignotement de la led du pas en cours si défaut suveiliance temporelle ecoulée.
void v_Clignotement(int i_Pin_Led)
{
digitalWrite(i_Pin_Led, HIGH);
delay(50);
digitalWrite(i_Pin_Led, LOW);
delay(50);
return;
}
void setup ()
{
pinMode(i_Attente_Connect_Cable_Out_Pin, OUTPUT); // Led attente connection câble
pinMode(i_Test_Diode_Out_Pin, OUTPUT); // Led test diode
pinMode(i_Attente_Ve_Out_Pin, OUTPUT); // Led attente VE
pinMode(i_Contactor_Out_Pin, OUTPUT); // Ouput contateur
pinMode(i_Contactor_Led_Out_Pin, OUTPUT); // Led contateur
pinMode(i_Cp_Out_Pin, OUTPUT); // Ouput control pilote
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop ()
{
// Acquisition entrees analogique
i_M_Bp_In = analogRead(i_M_Bp_In_Pin);
i_M_S_Power_In = analogRead(i_Mp_In_Pin);
i_M_Bp_Lcd_In = analogRead(i_M_Bp_Lcd_In_Pin);
i_Cp_In = analogRead(i_Cp_In_Pin);
//Serial.print("Mes ana BP sur proto shild = " );
//Serial.println(i_M_Bp_In);
//Serial.print("Mes ana dip swich sur proto shild = " );
//Serial.println(i_M_S_Power_In);
//Serial.print("Mes ana Bp sur shild Lcd = " );
//Serial.print(i_M_Bp_Lcd_In);
//Serial.print("Mes ana control pilot = " );
//Serial.print(i_Cp_In);
// Décodage des dip switch pour déterminer la puissance de la borne
/*
10% 6A
20% 12A
30% 18A
40% 24A
50% 30A */
// Serial.println(i_M_S_Power_In);
if (i_M_S_Power_In > 500 && i_M_S_Power_In < 520) // 40% 24A
{
f_Rc = 62.5;
// Serial.println("Puissance = 24 A" );
}
if (i_M_S_Power_In > 328 && i_M_S_Power_In < 348) // 30% 18A
{
f_Rc = 46.8;
// Serial.println("Puissance = 18 A" );
}
if (i_M_S_Power_In > 402 && i_M_S_Power_In < 422)
{
f_Rc = 31.25; // 20% 12A
// Serial.println("Puissance = 12 A" );
}
if (i_M_S_Power_In > 282 && i_M_S_Power_In < 302) // 10% 6A
{
f_Rc = 31.25;
// Serial.println("Puissance = 6 A" );
}
// Clignotement led si défaut surveiliance temporelle
if(b_Fault == true)
{
switch (i_Mem_Step)
{
case 10:
v_Clignotement(i_Attente_Connect_Cable_Out_Pin);
break;
case 21:
v_Clignotement(i_Test_Diode_Out_Pin);
break;
case 40:
v_Clignotement(i_Attente_Ve_Out_Pin);
break;
}
}
// Gestion bouton poussoir
if(i_M_Bp_In > 500) // Bouton enfoncé
{
b_Pb_On = true;
}
else
{
b_Pb_On = false; // Bouton pas enfoncé
if (i_Cpt < 20){
i_Cpt++;
}
}
if(b_Pb_On && i_Cpt > 10 && !b_M_Pb_On)
{
i_Cpt = 0;
b_Fault = false;
i_Step = 0;
b_M_Pb_On = true;
}
if(b_Pb_On && i_Cpt > 10 && b_M_Pb_On)
{
i_Cpt = 0;
i_Step = 10;
//Serial.print(" l_PreviousMillis bouton " ); Serial.println(l_PreviousMillis,DEC);
b_M_Pb_On = false;
}
// Séquence vérifiction et démarage chargement.
switch (i_Step)
{
case 0:
if(b_Fault == false)
{
digitalWrite(i_Attente_Connect_Cable_Out_Pin,LOW); // Led attente connexion câble
digitalWrite(i_Test_Diode_Out_Pin, LOW); // Led test diode
digitalWrite(i_Attente_Ve_Out_Pin, LOW); // Led attente VE
digitalWrite(i_Contactor_Out_Pin, LOW); // Ouput contateur
digitalWrite(i_Contactor_Led_Out_Pin, LOW); // Led contateur
digitalWrite(i_Cp_Out_Pin,LOW); // Ouput control pilote
}
i_Cp_In = analogRead(i_Cp_In_Pin);
Serial.print(" Step = " );
Serial.print(i_Step );
Serial.print(" Mesure Cp = " );
Serial.println(i_Cp_In );
l_PreviousMillis = millis();
break;
case 10:// Step 0 Attente connection cable
digitalWrite(i_Attente_Connect_Cable_Out_Pin, HIGH); // Led
digitalWrite(i_Cp_Out_Pin, HIGH); // Control pilote 12v
i_Cp_In = analogRead(i_Cp_In_Pin);
Serial.print(" Step = " );
Serial.print(i_Step );
Serial.print(" Mesure Cp = " );
Serial.println(i_Cp_In );
if (i_Cp_In < 900) // Seuil detection cp pour câble connecté
{
i_Step = 20;
digitalWrite(i_Attente_Connect_Cable_Out_Pin, LOW);
}
l_Interval = 10000;
if((millis() - l_PreviousMillis) >= l_Interval) // Comptage tempt attente connection cable
{
i_Mem_Step = 10;
b_Fault = true;
i_Step = 0;
}
break;
case 20:// Step 20 Cable connecté --> Test diode
digitalWrite(i_Test_Diode_Out_Pin, HIGH);
delay(5000);
l_PreviousMillis = millis();
i_Step = 21;
break;
case 21:// Step 21 Cable connecté --> Test diode
digitalWrite(i_Cp_Out_Pin, LOW); // Control pilote -12v
if (i_Cp_In < 180)
{
//Diode Ok
i_Step = 30;
digitalWrite(i_Test_Diode_Out_Pin, LOW);
}
l_Interval = 2000;
if ((millis() - l_PreviousMillis) >= l_Interval)
{
i_Mem_Step = 21;
b_Fault = true;
i_Step = 0;
}
break;
case 30:// Step 30 +12v on control pilot CP --> 1Khz on pin i_Cp_Out_Pin (3)
TCCR2A = _BV(COM2A0) | _BV(COM2B1) | _BV(WGM20);
TCCR2B = _BV(WGM22) | _BV(CS22);
OCR2A = 125;
OCR2B = f_Rc; http://62.5;
i_Step = 31;
digitalWrite(i_Attente_Ve_Out_Pin, HIGH);
l_PreviousMillis = millis();
break;
case 31:
l_Interval = 3000;
if ((millis() - l_PreviousMillis) >= l_Interval)
{
i_Step = 40;
l_PreviousMillis = millis();
}
i_Cp_in_max =0;
break;
case 40:// Step 40 1Khz on pin i_Cp_Out_Pin (3) --> Attente charge en cours
for(i_CP_Cpt2 =0; i_CP_Cpt2 < 20; i_CP_Cpt2++)
{
i_Cp_In = analogRead(i_Cp_In_Pin);
if (i_Cp_In > i_Cp_in_max) {
i_Cp_in_max = i_Cp_In;
}
Serial.print(" Step = " );
Serial.print(i_Step );
Serial.print(" Mesure Cp = " );
Serial.print(i_Cp_In );
Serial.print(" i_Cp_in_max = " );
Serial.println(i_Cp_in_max );
}
if (i_Cp_in_max < 800)
{
// Contacteur on
digitalWrite(i_Attente_Ve_Out_Pin, LOW);
digitalWrite(i_Contactor_Out_Pin, HIGH);
digitalWrite(i_Contactor_Led_Out_Pin, HIGH);
//delay(1000);
i_Step = 50;
}
i_Cp_in_max =0;
l_Interval = 30000;
if ((millis() - l_PreviousMillis) >= l_Interval)
{
i_Mem_Step = 40;
b_Fault = true;
i_Step = 0;
}
break;
case 50:// Step 50 Attente signal fin de charge VE
for(i_CP_Cpt2 =0; i_CP_Cpt2 < 10; i_CP_Cpt2++)
{
i_Cp_In = analogRead(i_Cp_In_Pin);
if (i_Cp_In > i_Cp_in_max) {
i_Cp_in_max = i_Cp_In;
}
Serial.print(" Step = " );
Serial.print(i_Step );
Serial.print(" Mesure Cp = " );
Serial.print(i_Cp_In );
Serial.print(" i_Cp_in_max = " );
Serial.println(i_Cp_in_max );
}
if (i_Cp_in_max > 800)
{
i_Cp_in_max =0;
i_Step = 0;
}
break;
}
}
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Re: Borne de recharge 'maison'
Hou là là.
Bon, j'ai mis ton code entre balises "code" car ton message était monumental.
Ceci dit, je ne sais pas si des trucs n'ont pas sauté.
Quand on met du code directement dans un message sur un forum, ça peut donner des choses surprenantes.
Je te conseille de refaire un copier-coller de ton code entre les balises.
Bon, j'ai mis ton code entre balises "code" car ton message était monumental.
Ceci dit, je ne sais pas si des trucs n'ont pas sauté.
Quand on met du code directement dans un message sur un forum, ça peut donner des choses surprenantes.
Je te conseille de refaire un copier-coller de ton code entre les balises.
Pixel- Administrateur
- Messages : 34977
Date d'inscription : 23/01/2015
Age : 76
Localisation : Marolles en Hurepoix (Essonne)
Re: Borne de recharge 'maison'
Pixel a écrit:Hou là là.
Bon, j'ai mis ton code entre balises "code" car ton message était monumental.
Ceci dit, je ne sais pas si des trucs n'ont pas sauté.
Quand on met du code directement dans un message sur un forum, ça peut donner des choses surprenantes.
Je te conseille de refaire un copier-coller de ton code entre les balises.
Merci Pixel.
Peux tu m'expliquer un peu mieux de quelles balise il s'agit.
J'ai aussi posté un message avec deux image juste avant celui-ci, il n’apparaît pas dans le forum.
Merci
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Re: Borne de recharge 'maison'
La balise code, c'est le mot "code" entre crochets et tu fermes avec "/code" entre crochets aussi.
Tu peux le voir en éditant le message où je l'ai fait.
Tu peux aussi générer ces balises en cliquant sur le bouton code dans l'éditeur (bouton n° 10).
Pour les images, si elles sont sur un site, tu cliques sur le bouton n° 14 (Insérer une image).
Si tu veux héberger l'image ici (en fait, sur le site servimg) tu cliques sur le bouton n° 13 (Héberger une image).
Cette image va sur un compte chez Servimg qui a été créé quand tu t'es inscrit sur le forum et qui est accessible avec les mêmes adresse email et mot de passe.
Tuto ici : https://renault-zoe.forumpro.fr/t1185-tutoriel-pour-inserer-des-photos-dans-vos-topics#17367
Tu peux le voir en éditant le message où je l'ai fait.
Tu peux aussi générer ces balises en cliquant sur le bouton code dans l'éditeur (bouton n° 10).
Pour les images, si elles sont sur un site, tu cliques sur le bouton n° 14 (Insérer une image).
Si tu veux héberger l'image ici (en fait, sur le site servimg) tu cliques sur le bouton n° 13 (Héberger une image).
Cette image va sur un compte chez Servimg qui a été créé quand tu t'es inscrit sur le forum et qui est accessible avec les mêmes adresse email et mot de passe.
Tuto ici : https://renault-zoe.forumpro.fr/t1185-tutoriel-pour-inserer-des-photos-dans-vos-topics#17367
Pixel- Administrateur
- Messages : 34977
Date d'inscription : 23/01/2015
Age : 76
Localisation : Marolles en Hurepoix (Essonne)
Re: Borne de recharge 'maison'
wolf_larsen a écrit:Non pas du tout, j'ai écrit le programme à partir de zéro, en lisant la doc du protocole. C'était à but didactique, pas par envie de réinventer la roue
A dire vrai, le code openEVSE m'a paru extrèmement 'lourd', mais il doit correspondre à une utilisation différente, je suppose.
Je ne pense pas que le code soit en cause:
Il se peut que le problème provienne de l'électronique un peu simpliste: le protocole indique ( http://www.ti.com/lit/ug/tidub87/tidub87.pdf )
que la partie 'négative' du signal carré doit rester à -12V même quand le véhicule applique une résistance qui fait chuter la tension de la partie 'positive' du signal.
J'ai vérifié ce que fournit le CRO: c'est bien du 12V continu , puis du +9V / -12V puis,en charge, du +6V / -12V
alors que le montage ci-dessus 'fournit' 12V puis +9V / -9V puis +6V / -6V en charge
Et ça, une tension dissymétrique, je ne sais pas faire (mes connaissances en électronique analogique/ ampli op sont très modestes...)
Je ne vois pas d'autre différence avec le CRO.
Voici les images de l'oscilloscope, (mesures avec probe diviseur par 10) avant et après l’enclenchement du contacteur de puissance, le -12 n'est pas atténué.
Peut être que mon circuit de simulation n'est pas identique au circuit de la Zoé, ou alors il y un truc qui vas pas dans ton montage, tien moi au courant vu que moi j'ai pas encore connecté à la zoé.
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Re: Borne de recharge 'maison'
Bonjour,
D'abord merci pour vos réponses et commentaires.
Alien, je suis bien content qui tu aies fait le même circuit que moi et, en effet, tu n'as pas d'écretage du -12V.
Je vais ramener le barda du garage et faire comme toi photographier les signaux.
Si tu as utilisé exactement le même montage (la partie en haut à droite) c'est en effet que j'ai dû rater qq chose.
Pourtant j'ai fait une version en breadboard, une en pastille à trous puis la version proto-shield et à chaque fois j'avais du +9/-9V etc. J'ai dû faire la même erreur à chaque fois...
Je vous tiens au courant.
Et Alien dis-moi si la ZOE se charge avec ton montage, ça m'intéresse évidemment !
edit: voici mes oscillogrammes:
le +9/-12V c'est plutôt +8.4/-7.6V
le +6/-12V c'est +5/-4.6V
Moi pas comprendre ...
edit2: le 'mââgnifique' montage:
l'afficheur n'est pas branché
l'afficheur:
(le flash fait apparaître l'intérieur mais en vrai on ne voit quasiment que le texte lumineux derrière la vitre fumée)
D'abord merci pour vos réponses et commentaires.
Alien, je suis bien content qui tu aies fait le même circuit que moi et, en effet, tu n'as pas d'écretage du -12V.
Je vais ramener le barda du garage et faire comme toi photographier les signaux.
Si tu as utilisé exactement le même montage (la partie en haut à droite) c'est en effet que j'ai dû rater qq chose.
Pourtant j'ai fait une version en breadboard, une en pastille à trous puis la version proto-shield et à chaque fois j'avais du +9/-9V etc. J'ai dû faire la même erreur à chaque fois...
Je vous tiens au courant.
Et Alien dis-moi si la ZOE se charge avec ton montage, ça m'intéresse évidemment !
edit: voici mes oscillogrammes:
le +9/-12V c'est plutôt +8.4/-7.6V
le +6/-12V c'est +5/-4.6V
Moi pas comprendre ...
edit2: le 'mââgnifique' montage:
l'afficheur n'est pas branché
l'afficheur:
(le flash fait apparaître l'intérieur mais en vrai on ne voit quasiment que le texte lumineux derrière la vitre fumée)
Dernière édition par wolf_larsen le Dim 31 Déc 2017 - 21:43, édité 1 fois
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Voila le schéma de simulation que j'ai réalisé, comme tu as remarqué la diode D1 bloque la tension négative du CP il est donc normal je pense que la tension -12 ne soit pas atténuée quand k1 s’enclenche, si la Zoe n'a pas cette diode mon montage atténuera aussi le -12v.
Si la Zoé n'a pas de diode il faudrait peut êtres en mettre une en série avec la sortie Cp de l'arduino, à essayer.
Normalement le protocol impose cette diode elle devrait être présente, il devrait être possible de la mesurer à l’ohmmètre.
Si la Zoé n'a pas de diode il faudrait peut êtres en mettre une en série avec la sortie Cp de l'arduino, à essayer.
Normalement le protocol impose cette diode elle devrait être présente, il devrait être possible de la mesurer à l’ohmmètre.
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Re: Borne de recharge 'maison'
alien_charlou a écrit:Voila le schéma de simulation que j'ai réalisé, comme tu as remarqué la diode D1 bloque la tension négative du CP il est donc normal je pense que la tension -12 ne soit pas atténuée quand k1 s’enclenche, si la Zoe n'a pas cette diode mon montage atténuera aussi le -12v.
Si la Zoé n'a pas de diode il faudrait peut êtres en mettre une en série avec la sortie Cp de l'arduino, à essayer.
Normalement le protocol impose cette diode elle devrait être présente, il devrait être possible de la mesurer à l’ohmmètre.
Oui, j'ai souvent lu des références à cette diode, mais sans en comprendre l'usage.
Au final, ça voudrait dire que la partie négative du signal est ignorée par le véhicule ?
Ca ne doit pas être ça, sinon pourquoi imposer un +/-12V ?
Je vais tenter de mettre cette diode dans mon montage entre R1 et le signal pilote, mais je vais avoir encore plus de chute de tension avec celle de la jonction de la diode...
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Alors, grande nouvelle : CA FONCTIONNE impeccablement !
J'ai juste ajouté une diode en sortie et je n'ai plus le problème de -12V.
Elle est pas belle la vie ?
Pour info, voici la liste des élements utilisés et leur prix:
Soit total de moins de 220 euros (c'est la prise j1772 avec son cable qui plombe le budget, on n'y peut pas grand-chose)
J'ai tout cablé en 2.5mm2. Je voulais tout faire en 6mm2, mais ça ne passe pas dans les borniers de capteur (prévu pour 30A, je rigole...)
Voilà, s'il y en a qui sont intéressé, je peux donner des indications, sachant que le code est celui founi dans le 1er message, avec le schéma électronique (+ diode à ajouter).
Merci à Alien pour la piste qui m'a permis de trouver une solution.
J'ai juste ajouté une diode en sortie et je n'ai plus le problème de -12V.
Elle est pas belle la vie ?
Pour info, voici la liste des élements utilisés et leur prix:
- Code:
Element Prix (avec port)
Arduino 10
Proto shield 1
Petite électronique 5
Prise J1772A 125
avec cable 6,7M
Disjonteur 20A 12
(occasion)
Coffret étanche 25
2xrelais 1RT 30A 12V 7
Alimentation 12V 5V 5
Alim inverseuse 5
12V -> -12V
Afficheur LCD 4
4x20 I2C
Capteur de courant 4
(facultatif)
Soit total de moins de 220 euros (c'est la prise j1772 avec son cable qui plombe le budget, on n'y peut pas grand-chose)
J'ai tout cablé en 2.5mm2. Je voulais tout faire en 6mm2, mais ça ne passe pas dans les borniers de capteur (prévu pour 30A, je rigole...)
Voilà, s'il y en a qui sont intéressé, je peux donner des indications, sachant que le code est celui founi dans le 1er message, avec le schéma électronique (+ diode à ajouter).
Merci à Alien pour la piste qui m'a permis de trouver une solution.
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Bonne année à toi et à ZOE.
Et bien dis donc tu n'a par traîne tu commence bien l'année, félicitation.
Encore une victoire de l'homme sur la machine.
Pour diminuer les coûts je vais jute mettre un une prise type 2 encastrable sur le boité +- 60 euros, avec du matériel de récupération pour la partie puissance je devrait être sous les 100 euros.
Je charge presque jamais à la maison, j'utiliserai le câble fourni avec la zoé.
Pour la partie puissance j'utilise un contacteur 220v piloté en 5v par un opto triac, c'est plus facile à câblé et pour faire passer 32A en triphasés c'est mieux
Par contre si tu pouvais me donner les références et le fournisseur de ton Afficheur LCD et du capteur de courant (pas cher ça).
Et bien dis donc tu n'a par traîne tu commence bien l'année, félicitation.
Encore une victoire de l'homme sur la machine.
Pour diminuer les coûts je vais jute mettre un une prise type 2 encastrable sur le boité +- 60 euros, avec du matériel de récupération pour la partie puissance je devrait être sous les 100 euros.
Je charge presque jamais à la maison, j'utiliserai le câble fourni avec la zoé.
Pour la partie puissance j'utilise un contacteur 220v piloté en 5v par un opto triac, c'est plus facile à câblé et pour faire passer 32A en triphasés c'est mieux
Par contre si tu pouvais me donner les références et le fournisseur de ton Afficheur LCD et du capteur de courant (pas cher ça).
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Re: Borne de recharge 'maison'
Bonjour,
afficheur LCD 4x20 I2C (<4€ port gratuit):
https://www.ebay.fr/itm/Blue-Serial-IIC-I2C-TWI-2004-204-20X4-Character-LCD-Module-Display-For-Arduino/141975888833
ou en jaune à 3.7€ port gratuit:
https://www.ebay.fr/itm/Serial-IIC-I2C-TWI-2004-20X4-Character-LCD-Module-For-Arduino-Yellow-Green/191022044294
Capteur de courant (1,44€ port gratuit !):
https://www.ebay.fr/itm/New-Design-30A-Range-Current-Sensor-Module-ACS712-Module-Arduino/263062524357
afficheur LCD 4x20 I2C (<4€ port gratuit):
https://www.ebay.fr/itm/Blue-Serial-IIC-I2C-TWI-2004-204-20X4-Character-LCD-Module-Display-For-Arduino/141975888833
ou en jaune à 3.7€ port gratuit:
https://www.ebay.fr/itm/Serial-IIC-I2C-TWI-2004-20X4-Character-LCD-Module-For-Arduino-Yellow-Green/191022044294
Capteur de courant (1,44€ port gratuit !):
https://www.ebay.fr/itm/New-Design-30A-Range-Current-Sensor-Module-ACS712-Module-Arduino/263062524357
wolf_larsen- Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes
Re: Borne de recharge 'maison'
Super mais du coup pourquoi faire une alimentation symétrique si c'est pour ne pas utiliser le négatif ?
Re: Borne de recharge 'maison'
Le schéma utilisé dans ce montage remonte à février 2012 et semble correspondre à une des toutes premières versions du projet OpenEVSE.
Depuis lors, de nombreuses fonctionnalités ont été ajoutées :
- contrôle que le relais/contacteur n'est pas collé
- contrôle de présence de la terre
- auto-contrôle du différentiel
- contrôle du "Proximity Pilot"
- etc.
Un site d'archives donne accès à de nombreuses versions des schémas du projet (voir la V1 en page 5) jusqu'à fin 2013.
Les versions plus récentes sont disponibles sur github.
Pour plus d'informations, se reporter aux généralités du site de support actuel.
De mémoire, le contrôle de présence du -12V est une sécurité qui permet de vérifier que c'est bien une voiture qui est branchée à la borne et modifie seulement la composante positive de la tension.
Depuis lors, de nombreuses fonctionnalités ont été ajoutées :
- contrôle que le relais/contacteur n'est pas collé
- contrôle de présence de la terre
- auto-contrôle du différentiel
- contrôle du "Proximity Pilot"
- etc.
Un site d'archives donne accès à de nombreuses versions des schémas du projet (voir la V1 en page 5) jusqu'à fin 2013.
Les versions plus récentes sont disponibles sur github.
Pour plus d'informations, se reporter aux généralités du site de support actuel.
De mémoire, le contrôle de présence du -12V est une sécurité qui permet de vérifier que c'est bien une voiture qui est branchée à la borne et modifie seulement la composante positive de la tension.
jmomjo- Messages : 371
Date d'inscription : 14/10/2012
Localisation : Gironde
Re: Borne de recharge 'maison'
tonnerre33 a écrit:Super mais du coup pourquoi faire une alimentation symétrique si c'est pour ne pas utiliser le négatif ?
En effet je pense que cela ne sert à rien j'essayerai sans.
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Re: Borne de recharge 'maison'
jmomjo a écrit:Le schéma utilisé dans ce montage remonte à février 2012 et semble correspondre à une des toutes premières versions du projet OpenEVSE.
Depuis lors, de nombreuses fonctionnalités ont été ajoutées :
- contrôle que le relais/contacteur n'est pas collé
- contrôle de présence de la terre
- auto-contrôle du différentiel
- contrôle du "Proximity Pilot"
- etc.
Un site d'archives donne accès à de nombreuses versions des schémas du projet (voir la V1 en page 5) jusqu'à fin 2013.
Les versions plus récentes sont disponibles sur github.
Pour plus d'informations, se reporter aux généralités du site de support actuel.
De mémoire, le contrôle de présence du -12V est une sécurité qui permet de vérifier que c'est bien une voiture qui est branchée à la borne et modifie seulement la composante positive de la tension.
Je pense que l'OpenEVSE est trop compliqué et toute les sécurités ajoutées sont surfaites, je sais pas pourquoi à notre époque ils faut toujours compliquer les choses simples, sans doute obliger à acheter plus cher ou à décourager les bricoleurs comme nous.
C'est quand même dingue les prix exorbitants des accessoires de connexion pour VE alors que ce n'est rien extraordinaire un bout de plastique et un peux de métal.
Je me demande aussi pourquoi les VE ne peuvent pas être branchée directement sur le secteur cela éviterait toutes ces bornes de recharges bien trop coûteuse.
alien_charlou- Messages : 262
Date d'inscription : 18/04/2017
Page 1 sur 2 • 1, 2
Sujets similaires
» Ma borne & mon câble de recharge fait maison openEVSE
» Recharge borne publique ou à la maison en heures creuses
» Différences entre "Borne de Recharge Tierce" et "Borne de Recharge Autolib" chez Autolib
» Recharge CCS à la maison
» Borne à la maison, un conseil ?
» Recharge borne publique ou à la maison en heures creuses
» Différences entre "Borne de Recharge Tierce" et "Borne de Recharge Autolib" chez Autolib
» Recharge CCS à la maison
» Borne à la maison, un conseil ?
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum