charging station / wallbox hardware basics
-
- Posts: 11
- Joined: Sun Dec 29, 2024 6:38 pm
- Has thanked: 2 times
- Been thanked: 3 times
Re: charging station / wallbox hardware basics
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.
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.
- 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
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.
[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.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
-
- Posts: 11
- Joined: Sun Dec 29, 2024 6:38 pm
- Has thanked: 2 times
- Been thanked: 3 times
Re: charging station / wallbox hardware basics
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

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

-
- 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
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?
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?
-
- Posts: 11
- Joined: Sun Dec 29, 2024 6:38 pm
- Has thanked: 2 times
- Been thanked: 3 times
Re: charging station / wallbox hardware basics
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.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?
- 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
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.
If nothing helps, you can dremel the housing and PCB on the blue line.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
-
- Posts: 11
- Joined: Sun Dec 29, 2024 6:38 pm
- Has thanked: 2 times
- Been thanked: 3 times
Re: charging station / wallbox hardware basics
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!
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!
- 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
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.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
-
- Posts: 11
- Joined: Sun Dec 29, 2024 6:38 pm
- Has thanked: 2 times
- Been thanked: 3 times
Re: charging station / wallbox hardware basics
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)
-
- Posts: 11
- Joined: Sun Dec 29, 2024 6:38 pm
- Has thanked: 2 times
- Been thanked: 3 times
Re: charging station / wallbox hardware basics
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.
Re: charging station / wallbox hardware basics
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: 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: 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
- 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
The plan is, that at this point
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
[48212ms] [PEV] Checkpoint550: ChargeParams are discovered. Will change to state C.
[48212ms] [HARDWAREINTERFACE] Setting CP line into state C.
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
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
Re: charging station / wallbox hardware basics
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
Arduino code is this: https://github.com/uhi22/dieter/blob/master/dieter.ino
- 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
The serial command "CP=1" is for the celeron device. Dieter uses a different command, based on the self.outvalue.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
Re: charging station / wallbox hardware basics
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.
It will send a value do0001\n to DieterLV. And DieterLV will read serial_debug_value16
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!
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
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!
- 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
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.
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.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
Re: charging station / wallbox hardware basics
Thank you for helping.
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 LOGs:
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 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
- 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
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)
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22