Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
kimble4 authored Sep 23, 2024
1 parent 5d931b6 commit dacf75f
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 3 deletions.
38 changes: 38 additions & 0 deletions firmware/open_evse/Gfi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,17 @@ void Gfi::Init(uint8_t v6)
#endif // OEV6
pinTest.init(reg,idx,DigitalPin::OUT);
#endif
#ifdef DC_GFCI_TEST
//volatile uint8_t *dcreg = DC_TEST_REG;
//volatile uint8_t dcidx = DCTEST_IDX;
#ifdef OEV6
if (v6) {
pinMode(V6_DC_TEST_PIN,OUTPUT);
}
#else
//pinDCTest.init(reg,idx,DigitalPin::OUT);
#endif // OEV6
#endif //DC_GFCI_TEST

Reset();
}
Expand Down Expand Up @@ -94,6 +105,33 @@ uint8_t Gfi::SelfTest()
}
if (i == 40) return 3;

#ifdef DC_GFCI_TEST
if (testSuccess) { //no point continuing unless AC test was successful
testSuccess = 0;
// turn on DC test pin
#ifdef V6_DC_TEST_PIN
digitalWrite(V6_DC_TEST_PIN,HIGH);
#endif
for(int i=0; !testSuccess && (i < GFI_TEST_CYCLES); i++) {
//just wait this time...
delayMicroseconds(GFI_PULSE_ON_US);
delayMicroseconds(GFI_PULSE_OFF_US);
}
//turn off the DC test pin
#ifdef V6_DC_TEST_PIN
digitalWrite(V6_DC_TEST_PIN,LOW);
#endif
// wait for GFI pin to clear
for (i=0;i < 40;i++) {
WDT_RESET();
if (!pin.read()) break;
delay(50);
}
if (i == 40) return 4;
}
//if testSuccess == 1 at this point then both tests were successful
#endif //DC_GFCI_TEST

#ifndef OPENEVSE_2
// sometimes getting spurious GFI faults when testing just before closing
// relay.
Expand Down
20 changes: 20 additions & 0 deletions firmware/open_evse/J1772EvseController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -275,15 +275,27 @@ void J1772EVSEController::chargingOn()
Serial.print("\nrelayCloseMs: ");Serial.println(m_relayCloseMs);
Serial.print("relayHoldPwm: ");Serial.println(m_relayHoldPwm);
// turn on charging pin to close relay
#ifdef V6_CHARGING_PIN
digitalWrite(V6_CHARGING_PIN,HIGH);
#endif
#ifdef V6_CHARGING_PIN2
digitalWrite(V6_CHARGING_PIN2,HIGH);
#endif
delay(m_relayCloseMs);
// switch to PWM to hold closed
#ifdef V6_CHARGING_PIN
analogWrite(V6_CHARGING_PIN,m_relayHoldPwm);
#endif
#ifdef V6_CHARGING_PIN2
analogWrite(V6_CHARGING_PIN2,m_relayHoldPwm);
#endif
#else // !RELAY_PWM
#ifdef V6_CHARGING_PIN
digitalWrite(V6_CHARGING_PIN,HIGH);
#endif
#ifdef V6_CHARGING_PIN2
digitalWrite(V6_CHARGING_PIN2,HIGH);
#endif
#endif // RELAY_PWM
}
else {
Expand Down Expand Up @@ -323,8 +335,12 @@ void J1772EVSEController::chargingOff()
#ifdef RELAY_AUTO_PWM_PIN
digitalWrite(RELAY_AUTO_PWM_PIN,LOW);
#else // !RELAY_AUTO_PWM_PIN
#ifdef V6_CHARGING_PIN
digitalWrite(V6_CHARGING_PIN,LOW);
#endif
#ifdef V6_CHARGING_PIN2
digitalWrite(V6_CHARGING_PIN2,LOW);
#endif
#endif // RELAY_AUTO_PWM_PIN
}
else {
Expand Down Expand Up @@ -967,8 +983,12 @@ void J1772EVSEController::Init()

#ifdef OEV6
if (isV6()) {
#ifdef V6_CHARGING_PIN
pinMode(V6_CHARGING_PIN,OUTPUT);
#endif
#ifdef V6_CHARGING_PIN2
pinMode(V6_CHARGING_PIN2,OUTPUT);
#endif
}
else { // !V6
#endif // OEV6
Expand Down
17 changes: 14 additions & 3 deletions firmware/open_evse/open_evse.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,9 @@ extern AutoCurrentCapacityController g_ACCController;
// If you loop a wire from the third GFI pin through the CT a few times and then to ground,
// enable this. ADVPWR must also be defined.
#define GFI_SELFTEST
// If you loop a single turn of wire from the 12V supply through a 2k resistor to the
// second DC relay pin, enable this for DC fault test
//#define DC_GFCI_TEST

// behavior specified by UL
// 1) if enabled, POST failure will cause a hard fault until power cycled.
Expand Down Expand Up @@ -487,15 +490,23 @@ extern AutoCurrentCapacityController g_ACCController;
#define ACLINE2_REG &PIND
#define ACLINE2_IDX 4

#define V6_CHARGING_PIN 5
#define V6_CHARGING_PIN2 6

// digital Relay trigger pin
#define V6_CHARGING_PIN 5
#define CHARGING_REG &PINB
#define CHARGING_IDX 0

#ifdef DC_GFCI_TEST
// 6ma DC leakage test when this pin is high
#define V6_DC_TEST_PIN 6
#define DC_TEST_REG &PIND
#define DC_TEST_IDX 7
#else
// digital Relay trigger pin for second relay
#define V6_CHARGING_PIN2 6
#define CHARGING2_REG &PIND
#define CHARGING2_IDX 7
#endif //DC_GFCI_TEST

//digital Charging pin for AC relay
#define CHARGINGAC_REG &PINB
#define CHARGINGAC_IDX 1
Expand Down

0 comments on commit dacf75f

Please sign in to comment.