Le Deal du moment : -48%
Philips Hue Pack Decouverte 2024 : lightstrip 3M + ...
Voir le deal
119 €

Borne de recharge 'maison'

+6
Cameleon
Pixel
alien_charlou
seb.maccagnoni
tonnerre33
wolf_larsen
10 participants

Page 1 sur 2 1, 2  Suivant

Aller en bas

Borne de recharge 'maison' Empty Borne de recharge 'maison'

Message par wolf_larsen Sam 30 Déc 2017 - 15:46

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) :

Borne de recharge 'maison' Fjysu210

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 Smile

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

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par tonnerre33 Sam 30 Déc 2017 - 19:09

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 ?

tonnerre33

Messages : 235
Date d'inscription : 06/12/2017
Age : 40
Localisation : Bordeaux

https://www.shih-tzu.fr

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par wolf_larsen Sam 30 Déc 2017 - 19:38

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.

wolf_larsen

Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par seb.maccagnoni Sam 30 Déc 2017 - 19:50

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é...

seb.maccagnoni

Messages : 3818
Date d'inscription : 04/11/2014
Age : 42
Localisation : Colmar

https://www.maccagnoni.eu

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par wolf_larsen Sam 30 Déc 2017 - 21:17

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

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par tonnerre33 Sam 30 Déc 2017 - 21:57

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  ?

tonnerre33

Messages : 235
Date d'inscription : 06/12/2017
Age : 40
Localisation : Bordeaux

https://www.shih-tzu.fr

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par wolf_larsen Sam 30 Déc 2017 - 23:56

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 Smile
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.


Borne de recharge 'maison' Captur10

wolf_larsen

Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par seb.maccagnoni Dim 31 Déc 2017 - 0:41

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à.

seb.maccagnoni

Messages : 3818
Date d'inscription : 04/11/2014
Age : 42
Localisation : Colmar

https://www.maccagnoni.eu

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Dim 31 Déc 2017 - 10:20

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.
alien_charlou
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Dim 31 Déc 2017 - 16:01

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.

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
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par Pixel Dim 31 Déc 2017 - 16:18

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.
Pixel
Pixel
Administrateur

Messages : 34977
Date d'inscription : 23/01/2015
Age : 76
Localisation : Marolles en Hurepoix (Essonne)

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Dim 31 Déc 2017 - 16:36

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
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par Pixel Dim 31 Déc 2017 - 16:48

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
Pixel
Pixel
Administrateur

Messages : 34977
Date d'inscription : 23/01/2015
Age : 76
Localisation : Marolles en Hurepoix (Essonne)

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Dim 31 Déc 2017 - 17:46

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 Smile
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.


Borne de recharge 'maison' Captur10


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é.

Borne de recharge 'maison' Img_1415

Borne de recharge 'maison' Img_1416
alien_charlou
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par wolf_larsen Dim 31 Déc 2017 - 19:23

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
Borne de recharge 'maison' _igp0410

le +6/-12V c'est +5/-4.6V
Borne de recharge 'maison' _igp0411

Moi pas comprendre ...

edit2: le 'mââgnifique' montage:
Borne de recharge 'maison' _igp0415


l'afficheur n'est pas branché
Borne de recharge 'maison' _igp0413

l'afficheur:
Borne de recharge 'maison' _igp0414
(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

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Dim 31 Déc 2017 - 21:31

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.  


Borne de recharge 'maison' Simula10
alien_charlou
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par wolf_larsen Dim 31 Déc 2017 - 21:50

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.  


Borne de recharge 'maison' Simula10

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

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par wolf_larsen Lun 1 Jan 2018 - 1:19

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 ?

Borne de recharge 'maison' _igp0416

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

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par Cameleon Lun 1 Jan 2018 - 9:59

Félicitations Smile
Cameleon
Cameleon

Messages : 7137
Date d'inscription : 14/10/2012
Age : 58
Localisation : Bas-Rhin

http://www.acoze.fr/

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Lun 1 Jan 2018 - 10:10

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).
alien_charlou
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par wolf_larsen Lun 1 Jan 2018 - 12:05

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

wolf_larsen

Messages : 19
Date d'inscription : 30/12/2017
Age : 60
Localisation : Sauternes

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par tonnerre33 Lun 1 Jan 2018 - 16:38

Super mais du coup pourquoi faire une alimentation symétrique si c'est pour ne pas utiliser le négatif ?

tonnerre33

Messages : 235
Date d'inscription : 06/12/2017
Age : 40
Localisation : Bordeaux

https://www.shih-tzu.fr

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par jmomjo Lun 1 Jan 2018 - 18:19

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.

jmomjo

Messages : 371
Date d'inscription : 14/10/2012
Localisation : Gironde

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Lun 1 Jan 2018 - 20:15

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
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par alien_charlou Lun 1 Jan 2018 - 20:39

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
alien_charlou

Messages : 262
Date d'inscription : 18/04/2017

Revenir en haut Aller en bas

Borne de recharge 'maison' Empty Re: Borne de recharge 'maison'

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum