Pilot box: probleem code

algemene C code
Berichten: 3
Geregistreerd: 27 Mei 2014, 19:13

Pilot box: probleem code

Berichtdoor SeVack » 07 Mei 2015, 18:10

Hallo iedereen,

Ik zal even kort de situatie uitleggen: Als project maak ik een pilot box controller die de aansturing voorziet voor een mode 3 type 2 laadstation-Elektrisch voertuig.
Via een pilootsignaal wordt er gecommuniceerd tussen wagen en EVSE (Electric Vehicle Supply Equipment). De hoofdschakeling die hier voor gebruikt wordt werd voornamelijk door op amps voorzien. Door middel van een 1000Hz blokgolf kan de wagen zien in welke 'state' deze zich bevindt.
State A: niet geconnecteerd (12V DC)
State B: geconnecteerd en klaar om te laden (9V PWM)
State C: laden (6V PWM)

De frequentie en PWM signaal worden uitgezonden door een een Arduino.
Het CP (pilootsignaal) signaal op de schakeling heeft respectievelijk 12V DC, 9V pwm en 6V pwm. Het 12V signaal wordt via de spanningsdeler daarna teruggekoppeld naar de Arduino en verdubbeld via de laatste opamp om +-5V te hebben. Aan de uitgang wordt het signaal analoog ingelezen door de Arduino en zo kan er dan bepaald worden afhankelijk van de waarde of er al dan niet een PWM signaal gegenereerd moet worden.

Schema (indien gewenst): Afbeelding

Het probleem zit hem nu in het volgende: Wanneer ik de waarde aan de uitgang van de schakeling wil uitlezen aan de hand van AN1, krijg ik geen stabiele waarde:
Afbeelding. Dit wanneer het hele programma draait.

Wanneer ik dit nu afzonderlijk uitlees, bvb aan de hand van Arduino programma ReadAnalogValue krijg ik stabiele waarden:
Afbeelding .

Wellicht is het iets doms maar ik zie het niet meteen.


Code (alleen de stukken van dit gedeelte)
Code: Alles selecteren

#include <PWM.h>


 
  int32_t frequency=1000; // Frequentie op 1000Hz zetten;
 
 

  #define sensorPin A2
  int sensorValue = 0;;
  int PWMsignal=0; //PWM signaal of niet
 
 int Pin=9; //-12v of 12v

---------------------------------------------------------------
Stuk weggelaten code

//------ Spanning -----
 
  //100 metingen doen om zeker te zijn dat we voldoende metingen hebben (hoogste en laagste spanningen)
 
  for (int i=0; i<100; i++){
    sensorValue = analogRead(sensorPin); //input A1 inlezen (0-1023)
   
    Vpilot=((sensorValue-512)*24/1023);
  //Vpilot is nu tussen -12V en 12V
  delay(250); //stabilisatie
 
  //Note: 5V correspondeert tussen -12V en 12V
    Serial.print("sensorvalue:");
    Serial.println(sensorValue);
   
    pinMode(Mos, OUTPUT);
  //kijken of er een pilootsignaal is of niet
 
    if (sensorValue>=910){
 
      stateB=false;
      stateC=false;
      stateA=true;
      digitalWrite(Mos, LOW);
      PWMsignal=0; //staat A: 12V
      }
 
    else if (sensorValue>=660 && sensorValue<=690){
     
      stateB=true;
      stateC=false;
      stateA=false;
      digitalWrite(Mos, LOW);
      PWMsignal=1; //staat B2: pilootspanning is 9V
      }
 
      else if(sensorValue<=460&&I>0)
      {
      stateC=true;
      stateB=false;
      stateA=false;
      digitalWrite(Mos, HIGH);
      PWMsignal=1; //staat C2: pilootspanning is 6V
      }
 
  //-----------------------------------------------------------------------------------------------------------------
 
    Serial.print("PWMsignal:");
    Serial.println(PWMsignal);
    pinMode(Pin, OUTPUT);
    if (PWMsignal==0){ //pilootspanning is 12V en er is geen PWM signaal
//     //wanneer er een PWM signaal is, de spanning is tussen -12V en 12V
    digitalWrite(Pin,HIGH);
    }

    else if(PWMsignal ==1){
     
//   
            if((I>=6) && (I<51)){
     
              DC=(I/0.6)/100;
              }

            else if((I>51) &&(I<80)){
     
              DC=((I/2.5)+64)/100;
               }
               
               else if (I== 80) {
              DC == 96/100;
              }
             
          DCint=DC*255;
 
          pwmWrite(9, DCint); //creeren van het PWM signaal in pin 10 met dutycycle = DCint
          Serial.print("Dutycycle:");
          Serial.print(DCint);
          Serial.print(" - ");
          Serial.println(DC);
        }
      }
  } 




Alvast bedankt voor de hulp!

Grtz,

Sepp

Advertisement

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Pilot box: probleem code

Berichtdoor shooter » 07 Mei 2015, 21:42

een pwm signaal is helemaal niet analoog, dus ja het is onstabiel als analoog signaal. een paar condensatoren doen hier wonderen.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 27 Mei 2014, 19:13

Re: Pilot box: probleem code

Berichtdoor SeVack » 10 Mei 2015, 14:32

Ik was niet echt duidelijk geweest (en op het schema stond het ook niet) maar ik had reeds op het einde een RC filter geplaatst om het "analoge" signaal te verkrijgen. ik weet dat dit beter kan door 2de en 3de orde filters maar dan zal de respons ook veel trager zijn.

Alvast bedankt voor de reactie

Sepp

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Pilot box: probleem code

Berichtdoor shooter » 10 Mei 2015, 22:43

die for loop is veel te lang, er staat geen }
laat het signaal zien dan zie je dat het een 12 Volt PWM signaal is ofwel 66 % 9Volt.
en inderdaad een filter is wel goed, maar dat kan nog wel met 10 Hz hoor.
je hoeft dus eigenlijk maar een 2 weerstanden en een kleine condensator te gebruiken, geen opamps nodig.
paul deelen
shooter@home.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 54 gasten