charging station / wallbox hardware basics

Development and discussion of fast charging systems eg Chademo , CCS etc
raysunwong
Posts: 11
Joined: Sun Dec 29, 2024 6:38 pm
Has thanked: 2 times
Been thanked: 3 times

Re: charging station / wallbox hardware basics

Post by raysunwong »

Sorry for asking very basics questions, have been reading up on the GitHub repo about modifying the modem.
Currently i have got a TP-Link PA4010P v5.0 (UK plug), the live and neutral pin on the PCB seems to be injection moulded into the plastic housing, preventing me from disassembling it.
I see from the pictures from the repo the mains part has been removed, was it just cut off from the PCB with a dremel? I'm worried the layers of PCB would short together and interfere with the communication and wanting to know how you modified it.
Thanks a lot in advance.
User avatar
uhi22
Posts: 1085
Joined: Mon Mar 14, 2022 3:20 pm
Location: Ingolstadt/Germany
Has thanked: 187 times
Been thanked: 604 times

Re: charging station / wallbox hardware basics

Post by uhi22 »

Could you share a photo of this situation? I would assume cutting the PCB is not necessary. Either desoldering the connection from the PCB, or cutting the metal beside the PCB with a dremel should be fine.
[Edit] If your PCB is the same as here: https://github.com/uhi22/pyPLC/blob/mas ... a4010p-v50 it is safe to cut the PCB with a dremel, too, at the same positions to not destroy too much.
raysunwong
Posts: 11
Joined: Sun Dec 29, 2024 6:38 pm
Has thanked: 2 times
Been thanked: 3 times

Re: charging station / wallbox hardware basics

Post by raysunwong »

To take the PCB out I think I have to remove the AC pins (Pass thru plug so the pin at the bottom are holding it in).
There are two ways of doing it I think.
a) Destroy the plastic casing and extract the PCB that way
b) Use a Dremel and cut the PCB off right below the AC pins

Any ideas will be appreciated
Image
jrbe
Posts: 567
Joined: Mon Jul 03, 2023 3:17 pm
Location: CT, central shoreline, USA
Has thanked: 199 times
Been thanked: 165 times

Re: charging station / wallbox hardware basics

Post by jrbe »

They assembled it somehow. It doesn't look like a mold in place situation from the picture at all.
The shrouded one needs better pictures. They connected it / trapped it in there somehow. It's it soldered?
Maybe a small torch to heat the terminal from the top to melt the solder of it is?
raysunwong
Posts: 11
Joined: Sun Dec 29, 2024 6:38 pm
Has thanked: 2 times
Been thanked: 3 times

Re: charging station / wallbox hardware basics

Post by raysunwong »

jrbe wrote: Sun Dec 29, 2024 9:53 pm They assembled it somehow. It doesn't look like a mold in place situation from the picture at all.
The shrouded one needs better pictures. They connected it / trapped it in there somehow. It's it soldered?
Maybe a small torch to heat the terminal from the top to melt the solder of it is?
upon further inspection, I suspect the solder connection at the bottom of the top AC pin is maybe connected to the bottom AC pin. I will try to unsolder that and post some update later.
User avatar
uhi22
Posts: 1085
Joined: Mon Mar 14, 2022 3:20 pm
Location: Ingolstadt/Germany
Has thanked: 187 times
Been thanked: 604 times

Re: charging station / wallbox hardware basics

Post by uhi22 »

If you do not need the plastic housing anymore, just dremel it away (e.g. at the green lines), maybe this reveals some snap-in thingies below the PCB.
If nothing helps, you can dremel the housing and PCB on the blue line.
image.png
raysunwong
Posts: 11
Joined: Sun Dec 29, 2024 6:38 pm
Has thanked: 2 times
Been thanked: 3 times

Re: charging station / wallbox hardware basics

Post by raysunwong »

A question regarding op-amp selection.
On the BOM it stated to use the LF355 Op-Amp, is it ok for me to substitute it with the LF356N. (355 dont seemed to be available in the UK and i dont fancy buying potentially fakes on ebay)
I have skimmed through the datasheet, it seems like the difference is just power/voltage rating and it seems 356 is rated above 355 so it should be compatible?
Any help would be much appreciated, thank you!
User avatar
uhi22
Posts: 1085
Joined: Mon Mar 14, 2022 3:20 pm
Location: Ingolstadt/Germany
Has thanked: 187 times
Been thanked: 604 times

Re: charging station / wallbox hardware basics

Post by uhi22 »

LF356 should be ok. The only concern is the output voltage swing, WE need nearly rail to rail, which does neigther the 356 nor the 355 advertise. So just give a try and look on the scope.
raysunwong
Posts: 11
Joined: Sun Dec 29, 2024 6:38 pm
Has thanked: 2 times
Been thanked: 3 times

Re: charging station / wallbox hardware basics

Post by raysunwong »

uhi22 wrote: Sun Jan 05, 2025 2:07 pm LF356 should be ok. The only concern is the output voltage swing, WE need nearly rail to rail, which does neigther the 356 nor the 355 advertise. So just give a try and look on the scope.
Thanks for the advice, i have not got all the components together yet, shall update the homeplug situation when i get my stripboard and other random passive components from work (Very lucky my work has top notch fully equipped electronics lab haha)
raysunwong
Posts: 11
Joined: Sun Dec 29, 2024 6:38 pm
Has thanked: 2 times
Been thanked: 3 times

Re: charging station / wallbox hardware basics

Post by raysunwong »

uhi22 wrote: Sun Dec 29, 2024 11:31 pm If you do not need the plastic housing anymore, just dremel it away (e.g. at the green lines), maybe this reveals some snap-in thingies below the PCB.
If nothing helps, you can dremel the housing and PCB on the blue line.
image.png
To provide an update on how to disassemble the UK version of the PA4010P, desolder the two solder join below the live and neutral connection. The bottom socket is injection molded into the bottom case, the solder joint connects it to the PCB.
Housing
Housing
PCB
PCB
p477d343
Posts: 24
Joined: Wed Jun 12, 2024 3:58 pm
Has thanked: 2 times
Been thanked: 1 time

Re: charging station / wallbox hardware basics

Post by p477d343 »

Hello, I am now building the miniPEV to perform normal PEV charging. After I try 2 different charging stations. It always stops at cable check. EVSE send back a cable check response with failed. Check below for log.

At the same time, the multimeter shows an 8.87V. I think is the resistor that I use NPN (BC547) to switch is not working. What do you use to switch/attach the resistor?

And After I attach a diode to it. Its resistor become 0.372M. Is it normal?

Thanks for the time.

Circuit:
螢幕擷取畫面 2025-03-07 153614.png
Log:

Code: Select all

[45123ms] [PEV] Checkpoint538: Auth is Finished. Will send ChargeParameterDiscoveryReq
[45132ms] [PEV] responding (52bytes) = 01 FE 80 01 00 00 00 2C 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 71 90 40 05 00 C0 C1 90 08 0E 19 09 80 60 A1 1C 06 01 84 87 06 D0 08 06 12 14 13 80 20 C8 14 00 
[45133ms] [PEV] from 7:WaitForContractAuthenticationResponse entering 8:WaitForChargeParameterDiscoveryResponse
[SNIFFER] EXI from 34118 to 53105 (44bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 71 90 40 05 00 C0 C1 90 08 0E 19 09 80 60 A1 1C 06 01 84 87 06 D0 08 06 12 14 13 80 20 C8 14 00 
[SNIFFER] EXI from 53105 to 34118 (50bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 80 02 00 00 00 00 00 00 00 00 05 50 00 80 00 01 01 80 00 0C 1C 00 00 81 40 00 08 0C 00 00 81 40 00 44 06 00 02 00 
[45330ms] [CONNMGR] 9 0 0 0 0 0 324  --> 100
[46125ms] [PEV] In state WaitForChargeParameterDiscoveryResponse, received (58bytes) = 01 FE 80 01 00 00 00 32 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 80 02 00 00 00 00 00 00 00 00 05 50 00 80 00 01 01 80 00 0C 1C 00 00 81 40 00 08 0C 00 00 81 40 00 44 06 00 02 00 
[46128ms] [PEV] {
"msgName": "ChargeParameterDiscoveryRes",
"info": "50 bytes to convert", 
"error": "",
"result": "",
"schema": "DIN",
"g_errn": "0",
"header.SessionID": "36303036354b4b4b",
"header.Notification_isUsed": "0",
"header.Signature_isUsed": "0",
"ResponseCode": "OK",
"EVSEProcessing": "Ongoing",
"SAScheduleList_isUsed": "1",
"SAScheduleList.SAScheduleTuple.arrayLen": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.arrayLen": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].TimeInterval_isUsed": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval_isUsed": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.start": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration_isUsed": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].PMax": "0",
"DC_EVSEStatus.EVSEIsolationStatus": "0",
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
"DC_EVSEStatus.EVSEStatusCode": "1",
"EVSEStatusCode_text": "EVSE_Ready",
"DC_EVSEStatus.NotificationMaxDelay": "0",
"DC_EVSEStatus.EVSENotification": "0",
"EVSEMaximumCurrentLimit.Multiplier": "-1",
"EVSEMaximumCurrentLimit.Value": "0",
"EVSEMaximumCurrentLimit.Unit": "A",
"EVSEMaximumPowerLimit_isUsed": "1",
"EVSEMaximumPowerLimit.Multiplier": "0",
"EVSEMaximumPowerLimit.Value": "0",
"EVSEMaximumPowerLimit.Unit": "W",
"EVSEMaximumVoltageLimit.Multiplier": "-1",
"EVSEMaximumVoltageLimit.Value": "0",
"EVSEMaximumVoltageLimit.Unit": "V",
"EVSEMinimumCurrentLimit.Multiplier": "-1",
"EVSEMinimumCurrentLimit.Value": "0",
"EVSEMinimumCurrentLimit.Unit": "A",
"EVSEMinimumVoltageLimit.Multiplier": "-1",
"EVSEMinimumVoltageLimit.Value": "0",
"EVSEMinimumVoltageLimit.Unit": "V",
"debug": "Line406"
}
[46136ms] [PEV] Not (yet) finished. Will again send ChargeParameterDiscoveryReq #2
[46148ms] [PEV] responding (52bytes) = 01 FE 80 01 00 00 00 2C 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 71 90 40 05 00 C0 C1 90 08 0E 19 09 80 60 A1 1C 06 01 84 87 06 D0 08 06 12 14 13 80 20 C8 14 00 
[46148ms] [PEV] from 8:WaitForChargeParameterDiscoveryResponse entering 8:WaitForChargeParameterDiscoveryResponse
[SNIFFER] EXI from 34118 to 53105 (44bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 71 90 40 05 00 C0 C1 90 08 0E 19 09 80 60 A1 1C 06 01 84 87 06 D0 08 06 12 14 13 80 20 C8 14 00 
[SNIFFER] EXI from 53105 to 34118 (50bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 80 02 00 00 00 00 00 00 00 00 05 50 00 80 00 01 01 80 00 0C 1C 00 00 81 40 00 08 0C 00 00 81 40 00 44 06 00 02 00 
[46457ms] [CONNMGR] 9 0 0 0 0 0 321  --> 100
[47163ms] [PEV] In state WaitForChargeParameterDiscoveryResponse, received (58bytes) = 01 FE 80 01 00 00 00 32 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 80 02 00 00 00 00 00 00 00 00 05 50 00 80 00 01 01 80 00 0C 1C 00 00 81 40 00 08 0C 00 00 81 40 00 44 06 00 02 00 
[47166ms] [PEV] {
"msgName": "ChargeParameterDiscoveryRes",
"info": "50 bytes to convert", 
"error": "",
"result": "",
"schema": "DIN",
"g_errn": "0",
"header.SessionID": "36303036354b4b4b",
"header.Notification_isUsed": "0",
"header.Signature_isUsed": "0",
"ResponseCode": "OK",
"EVSEProcessing": "Ongoing",
"SAScheduleList_isUsed": "1",
"SAScheduleList.SAScheduleTuple.arrayLen": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.arrayLen": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].TimeInterval_isUsed": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval_isUsed": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.start": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration_isUsed": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].PMax": "0",
"DC_EVSEStatus.EVSEIsolationStatus": "0",
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
"DC_EVSEStatus.EVSEStatusCode": "1",
"EVSEStatusCode_text": "EVSE_Ready",
"DC_EVSEStatus.NotificationMaxDelay": "0",
"DC_EVSEStatus.EVSENotification": "0",
"EVSEMaximumCurrentLimit.Multiplier": "-1",
"EVSEMaximumCurrentLimit.Value": "0",
"EVSEMaximumCurrentLimit.Unit": "A",
"EVSEMaximumPowerLimit_isUsed": "1",
"EVSEMaximumPowerLimit.Multiplier": "0",
"EVSEMaximumPowerLimit.Value": "0",
"EVSEMaximumPowerLimit.Unit": "W",
"EVSEMaximumVoltageLimit.Multiplier": "-1",
"EVSEMaximumVoltageLimit.Value": "0",
"EVSEMaximumVoltageLimit.Unit": "V",
"EVSEMinimumCurrentLimit.Multiplier": "-1",
"EVSEMinimumCurrentLimit.Value": "0",
"EVSEMinimumCurrentLimit.Unit": "A",
"EVSEMinimumVoltageLimit.Multiplier": "-1",
"EVSEMinimumVoltageLimit.Value": "0",
"EVSEMinimumVoltageLimit.Unit": "V",
"debug": "Line406"
}
[47170ms] [PEV] Not (yet) finished. Will again send ChargeParameterDiscoveryReq #3
[47181ms] [PEV] responding (52bytes) = 01 FE 80 01 00 00 00 2C 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 71 90 40 05 00 C0 C1 90 08 0E 19 09 80 60 A1 1C 06 01 84 87 06 D0 08 06 12 14 13 80 20 C8 14 00 
[47182ms] [PEV] from 8:WaitForChargeParameterDiscoveryResponse entering 8:WaitForChargeParameterDiscoveryResponse
[SNIFFER] EXI from 34118 to 53105 (44bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 71 90 40 05 00 C0 C1 90 08 0E 19 09 80 60 A1 1C 06 01 84 87 06 D0 08 06 12 14 13 80 20 C8 14 00 
[SNIFFER] EXI from 53105 to 34118 (59bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 80 00 00 28 02 80 00 04 05 18 28 3F FF C0 45 50 00 80 00 01 01 84 B0 F8 10 1C 34 23 00 40 81 42 20 9C 08 0C 02 80 81 43 70 2C 44 06 01 42 00 
[47585ms] [CONNMGR] 9 0 0 0 0 0 318  --> 100
[48201ms] [PEV] In state WaitForChargeParameterDiscoveryResponse, received (67bytes) = 01 FE 80 01 00 00 00 3B 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 80 00 00 28 02 80 00 04 05 18 28 3F FF C0 45 50 00 80 00 01 01 84 B0 F8 10 1C 34 23 00 40 81 42 20 9C 08 0C 02 80 81 43 70 2C 44 06 01 42 00 
[48204ms] [PEV] {
"msgName": "ChargeParameterDiscoveryRes",
"info": "59 bytes to convert", 
"error": "",
"result": "",
"schema": "DIN",
"g_errn": "0",
"header.SessionID": "36303036354b4b4b",
"header.Notification_isUsed": "0",
"header.Signature_isUsed": "0",
"ResponseCode": "OK",
"EVSEProcessing": "Finished",
"SAScheduleList_isUsed": "1",
"SAScheduleList.SAScheduleTuple.arrayLen": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.arrayLen": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].TimeInterval_isUsed": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval_isUsed": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.start": "0",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration_isUsed": "1",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].RelativeTimeInterval.duration": "86400",
"SchedTuple0.PMaxSchedule.PMaxScheduleEntry.array[0].PMax": "32767",
"DC_EVSEStatus.EVSEIsolationStatus": "0",
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
"DC_EVSEStatus.EVSEStatusCode": "1",
"EVSEStatusCode_text": "EVSE_Ready",
"DC_EVSEStatus.NotificationMaxDelay": "0",
"DC_EVSEStatus.EVSENotification": "0",
"EVSEMaximumCurrentLimit.Multiplier": "-1",
"EVSEMaximumCurrentLimit.Value": "3990",
"EVSEMaximumCurrentLimit.Unit": "A",
"EVSEMaximumPowerLimit_isUsed": "1",
"EVSEMaximumPowerLimit.Multiplier": "1",
"EVSEMaximumPowerLimit.Value": "18000",
"EVSEMaximumPowerLimit.Unit": "W",
"EVSEMaximumVoltageLimit.Multiplier": "-1",
"EVSEMaximumVoltageLimit.Value": "5000",
"EVSEMaximumVoltageLimit.Unit": "V",
"EVSEMinimumCurrentLimit.Multiplier": "-1",
"EVSEMinimumCurrentLimit.Value": "10",
"EVSEMinimumCurrentLimit.Unit": "A",
"EVSEMinimumVoltageLimit.Multiplier": "-1",
"EVSEMinimumVoltageLimit.Value": "1500",
"EVSEMinimumVoltageLimit.Unit": "V",
"debug": "Line406"
}
[48212ms] [PEV] Checkpoint550: ChargeParams are discovered. Will change to state C.
[48212ms] [HARDWAREINTERFACE] Setting CP line into state C.
[48212ms] [PEV] Checkpoint555: Locking the connector.
[48212ms] [HARDWAREINTERFACE] Locking the connector
[48213ms] [PEV] from 8:WaitForChargeParameterDiscoveryResponse entering 9:WaitForConnectorLock
[48247ms] [PEV] Checkpoint560: Connector Lock confirmed. Will send CableCheckReq.
[48260ms] [PEV] responding (24bytes) = 01 FE 80 01 00 00 00 10 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 11 40 05 00 
[48260ms] [PEV] from 9:WaitForConnectorLock entering 10:WaitForCableCheckResponse
[SNIFFER] EXI from 34118 to 53105 (16bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 11 40 05 00 
[48736ms] [CONNMGR] 9 0 0 0 0 0 1009  --> 100
[SNIFFER] EXI from 53105 to 34118 (19bytes) = 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 20 80 02 80 00 00 00 
[49780ms] [PEV] In state WaitForCableCheckResponse, received (27bytes) = 01 FE 80 01 00 00 00 13 80 9A 02 0D 8C 0C 0D 8D 52 D2 D2 D0 20 80 02 80 00 00 00 
[49783ms] [PEV] {
"msgName": "CableCheckRes",
"info": "19 bytes to convert", 
"error": "",
"result": "",
"schema": "DIN",
"g_errn": "0",
"header.SessionID": "36303036354b4b4b",
"header.Notification_isUsed": "0",
"header.Signature_isUsed": "0",
"ResponseCode": "FAILED",
"DC_EVSEStatus.EVSEIsolationStatus": "0",
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
"DC_EVSEStatus.EVSEStatusCode": "5",
"EVSEStatusCode_text": "EVSE_EmergencyShutdown",
"DC_EVSEStatus.NotificationMaxDelay": "0",
"DC_EVSEStatus.EVSENotification": "0",
"EVSEProcessing": "Finished",
"debug": "Line370"
}
[49784ms] [PEV] The CableCheck result is FAILED Finished
[49784ms] [PEV] Wrong response code. Aborting.
[49784ms] [PEV] from 10:WaitForCableCheckResponse entering 88:UnrecoverableError
[49828ms] [PEV] Safe-shutdown-sequence: setting state B
[49829ms] [HARDWAREINTERFACE] Setting CP line into state B.
[49829ms] [PEV] from 88:UnrecoverableError entering 111:SafeShutDownWaitForChargerShutdown
[49860ms] [CONNMGR] 9 0 0 0 0 0 328  --> 100
[50974ms] [CONNMGR] 9 0 0 0 0 0 329  --> 100
[52081ms] [CONNMGR] 9 0 0 0 0 0 329  --> 100
[52083ms] [PEV] Safe-shutdown-sequence: opening contactors
[52083ms] [HARDWAREINTERFACE] Switching PowerRelay OFF.
[52084ms] [HARDWAREINTERFACE] Switching Relay2 OFF.
[52084ms] [PEV] from 111:SafeShutDownWaitForChargerShutdown entering 222:SafeShutDownWaitForContactorsOpen
[53152ms] [CONNMGR] 9 0 0 0 0 0 329  --> 100
[53187ms] [PEV] Safe-shutdown-sequence: unlocking the connector
[53187ms] [HARDWAREINTERFACE] Unocking the connector
[53188ms] [PEV] from 222:SafeShutDownWaitForContactorsOpen entering 1000:End
User avatar
uhi22
Posts: 1085
Joined: Mon Mar 14, 2022 3:20 pm
Location: Ingolstadt/Germany
Has thanked: 187 times
Been thanked: 604 times

Re: charging station / wallbox hardware basics

Post by uhi22 »

The plan is, that at this point

Code: Select all

[48212ms] [PEV] Checkpoint550: ChargeParams are discovered. Will change to state C.
[48212ms] [HARDWAREINTERFACE] Setting CP line into state C.
the basis of the NPN transistor gets high level, and the transistor switches the 1k2 resistor to ground. The high level of the CP PWM should change from 9V to 6V. The low level of the CP PWM shall stay at -12V.

The best way to see the actual behavior is using an oscilloscope to look to the CP line.
Or maybe you find by review, that the control of the NPN does not work, maybe wrong control method in the hardwareinterface.py.

This is the function which should control the NPN transistor to turn-on the state C:

Code: Select all

    def setStateC(self):
        self.addToTrace("Setting CP line into state C.")
        if (getConfigValue("digital_output_device")=="beaglebone"):
            GPIO.output(PinCp, GPIO.HIGH)
        if (getConfigValue("digital_output_device")=="celeron55device"):
            self.ser.write(bytes("cp=1\n", "utf-8"))
        if (getConfigValue("digital_output_device")=="mqtt"):
            self.mqttclient.publish(getConfigValue("mqtt_topic") + "/cpstate", "C")
        self.outvalue |= 1
p477d343
Posts: 24
Joined: Wed Jun 12, 2024 3:58 pm
Has thanked: 2 times
Been thanked: 1 time

Re: charging station / wallbox hardware basics

Post by p477d343 »

Hello, I have used the oscilloscope to measure the CP line. It stays at high level 9V and low level of 12v. After several modifications to the Arduino code and fsmPEV code. It still can not switch to 1k2 resistor to ground. Would it be the NPN problem? I am now using BC547. And does it control by hardwareinterface.py, sending a string "cp=1\n" through serial controller TX to dieter LV's RX. After dieter LV receives the string (cp=1\n), it should change the #define PIN_STATE_C 12 to on so that NPN can switch 1k2 to ground.

Arduino code is this: https://github.com/uhi22/dieter/blob/master/dieter.ino
User avatar
uhi22
Posts: 1085
Joined: Mon Mar 14, 2022 3:20 pm
Location: Ingolstadt/Germany
Has thanked: 187 times
Been thanked: 604 times

Re: charging station / wallbox hardware basics

Post by uhi22 »

The serial command "CP=1" is for the celeron device. Dieter uses a different command, based on the self.outvalue.
p477d343
Posts: 24
Joined: Wed Jun 12, 2024 3:58 pm
Has thanked: 2 times
Been thanked: 1 time

Re: charging station / wallbox hardware basics

Post by p477d343 »

Thanks for reminding me. After looking back at the code. I know that when it detects dieter to switch stateC. It will return self. Outvalue =1. and inside mainfunction_dieter.

Code: Select all

# self.ser.write(b'hello world\n')
s = "000" + str(self.outvalue)
self.ser.write(bytes("do"+s+"\n", "utf-8")) # set outputs of dieter, see https://github.com/uhi22/dieter
It will send a value do0001\n to DieterLV. And DieterLV will read serial_debug_value16

Code: Select all

 digitalWrite(PIN_STATE_C    , (serial_debug_value16 & 1)!=0);

and set pin_state_C to 1. So based on this. It should trigger the NPN and make 1.2k attach to the ground. What model of NPN are you using?

Thanks for your reply!
User avatar
uhi22
Posts: 1085
Joined: Mon Mar 14, 2022 3:20 pm
Location: Ingolstadt/Germany
Has thanked: 187 times
Been thanked: 604 times

Re: charging station / wallbox hardware basics

Post by uhi22 »

BC547 is perfect.
You could check with oscilloscope whether the serial lines of Dieter are both talking, and whether the baud rate fits. And check the dieters digital outputs for state C and contactors whether they go to 5V.
p477d343
Posts: 24
Joined: Wed Jun 12, 2024 3:58 pm
Has thanked: 2 times
Been thanked: 1 time

Re: charging station / wallbox hardware basics

Post by p477d343 »

Thank you for helping.
uhi22 wrote: Fri Mar 07, 2025 7:06 pm BC547 is perfect.
You could check with oscilloscope whether the serial lines of Dieter are both talking and whether the baud rate fits. And check the dieters digital outputs for state C and contactors whether they go to 5V.
Today, I finally let NPN start working. It turns out that when I removed the 10k resistor between LV's pin 12 and BC547's base pin, it just worked. Would that be normal, or does it need to be running with 10k resistor to behave normally?

As I this is finally resolved. When I plugged into CCS1. It still shows an error when cable checks. Is it because the isolation check failed? How do you wire your 2 relay drivers? Mine is like this.

Relay1 NC: None
Relay1 COM: lightbulb-
Relay1 NO: DC- 1M5*2

Relay2 NC: None
Relay2 COM: lightbulb+
Relay2 NO: DC+ 1M5*2
螢幕擷取畫面 2025-03-10 174034.png
LOGs:

Code: Select all

[PEV] In state WaitForCableCheckResponse, received (27bytes) = 01 FE 80 01 00 00 00 13 80 9A 02 16 04 D2 89 D8 48 49 D3 D0 20 00 00 86 40 04 00 
[51730ms] [PEV] In state WaitForCableCheckResponse, received (27bytes) = 01 FE 80 01 00 00 00 13 80 9A 02 16 04 D2 89 D8 48 49 D3 D0 20 00 00 86 40 04 00 
[PEV] {
"msgName": "CableCheckRes",
"info": "19 bytes to convert", 
"error": "",
"result": "",
"schema": "DIN",
"g_errn": "0",
"header.SessionID": "58134a276121274f",
"header.Notification_isUsed": "0",
"header.Signature_isUsed": "0",
"ResponseCode": "OK",
"DC_EVSEStatus.EVSEIsolationStatus": "0",
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
"DC_EVSEStatus.EVSEStatusCode": "1",
"EVSEStatusCode_text": "EVSE_Ready",
"DC_EVSEStatus.NotificationMaxDelay": "100",
"DC_EVSEStatus.EVSENotification": "0",
"EVSEProcessing": "Ongoing",
"debug": "Line370"
}
[51742ms] [PEV] {
"msgName": "CableCheckRes",
"info": "19 bytes to convert", 
"error": "",
"result": "",
"schema": "DIN",
"g_errn": "0",
"header.SessionID": "58134a276121274f",
"header.Notification_isUsed": "0",
"header.Signature_isUsed": "0",
"ResponseCode": "OK",
"DC_EVSEStatus.EVSEIsolationStatus": "0",
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
"DC_EVSEStatus.EVSEStatusCode": "1",
"EVSEStatusCode_text": "EVSE_Ready",
"DC_EVSEStatus.NotificationMaxDelay": "100",
"DC_EVSEStatus.EVSENotification": "0",
"EVSEProcessing": "Ongoing",
"debug": "Line370"
}
[PEV] The CableCheck result is OK Ongoing
[51744ms] [PEV] The CableCheck result is OK Ongoing
[PEV] Max retries reached (5). Aborting.
[51744ms] [PEV] Max retries reached (5). Aborting.
[PEV] from 10:WaitForCableCheckResponse entering 88:UnrecoverableError
[51744ms] [PEV] from 10:WaitForCableCheckResponse entering 88:UnrecoverableError
[HARDWAREINTERFACE] Loop counter incremented to 2.
[51780ms] [HARDWAREINTERFACE] Loop counter incremented to 2.
[HARDWAREINTERFACE] Serial interface is OK.
[51780ms] [HARDWAREINTERFACE] Serial interface is OK.
[PEV] Safe-shutdown-sequence: setting state B
[51792ms] [PEV] Safe-shutdown-sequence: setting state B
[HARDWAREINTERFACE] Setting CP line into state B.
[51792ms] [HARDWAREINTERFACE] Setting CP line into state B.
[PEV] from 88:UnrecoverableError entering 111:SafeShutDownWaitForChargerShutdown
[51792ms] [PEV] from 88:UnrecoverableError entering 111:SafeShutDownWaitForChargerShutdown
User avatar
uhi22
Posts: 1085
Joined: Mon Mar 14, 2022 3:20 pm
Location: Ingolstadt/Germany
Has thanked: 187 times
Been thanked: 604 times

Re: charging station / wallbox hardware basics

Post by uhi22 »

p477d343 wrote: Mon Mar 10, 2025 2:24 pm I removed the 10k resistor between LV's pin 12 and BC547's base pin, it just worked
This produces heat. Because the Dieter LV wants to drive 5V on the port pin, and the basis is limited to 0.7V by the base-emitter-diode. You want to add an 1k series resistor. Or you have an NPN with integrated resistors, then it is fine. The original BC547 does not have integrated resistors.

The log snippet shows no error of the cable check. It shows, that the charging station wants to continue the cable check ("EVSEProcessing": "Ongoing"). The PEV shall further try. Seems you do not have the latest sources of pyPLC. It should retry for 60 loops:

if (self.numberOfCableCheckReq>60): # approx 60s should be sufficient for cable check. The ISO allows up to 55s reaction time and 60s timeout for "ongoing".
self.addToTrace("CableCheck lasted too long. " + str(self.numberOfCableCheckReq) + " Giving up.")
self.enterState(stateSequenceTimeout)
Post Reply