Develop a QCA7000 board?
- muehlpower
- Posts: 575
- Joined: Fri Oct 11, 2019 10:51 am
- Location: Germany Fürstenfeldbruck
- Has thanked: 12 times
- Been thanked: 103 times
Re: Develop a QCA7000 board?
I took another look at the LIM. According to the circuit diagram, PP is connected to pin 2 (A250-B2) in the CCS2 version. No resistor is shown in the charging plug. CCS1 has an additional jumper from pin 2 to pin 6. This pin 6 is connected to GND (PE) in the LIM via 2k7. This means: In EU no 2k7 to PE, in USA yes.
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
Mechanically the CCS2-to-SchuKo-adaptor is nearly finished, including integrated accu.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- johu
- Site Admin
- Posts: 5789
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 157 times
- Been thanked: 1023 times
- Contact:
Re: Develop a QCA7000 board?
Sweet
I'll test the now built-in foccci soon
I'll test the now built-in foccci soon
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
- asavage
- Posts: 329
- Joined: Sat May 14, 2022 10:57 pm
- Location: Oak Harbor, Washington, USA
- Has thanked: 279 times
- Been thanked: 103 times
- Contact:
Re: Develop a QCA7000 board?
Yes, this has been documented on the LIM Wiki for some time.muehlpower wrote: ↑Sat Jan 27, 2024 11:13 am I took another look at the LIM. According to the circuit diagram, PP is connected to pin 2 (A250-B2) in the CCS2 version. No resistor is shown in the charging plug. CCS1 has an additional jumper from pin 2 to pin 6. This pin 6 is connected to GND (PE) in the LIM via 2k7. This means: In EU no 2k7 to PE, in USA yes.
Those entries could both use some cleanup, probably.
Re: Develop a QCA7000 board?
Great project and essential reading for me over the last couple of days.
The board looks a great solution for an EV conversion I am working on. Most charging will be AC type2 at home and CCS when away.
If AC is not supported then I might simply add a type2 socket and support it separately but it would be nice to use the CCS socket and that requires the board to somehow support it.
So does foccc9/clara recognise and support a Type2 AC connection?
The board looks a great solution for an EV conversion I am working on. Most charging will be AC type2 at home and CCS when away.
If AC is not supported then I might simply add a type2 socket and support it separately but it would be nice to use the CCS socket and that requires the board to somehow support it.
So does foccc9/clara recognise and support a Type2 AC connection?
- johu
- Site Admin
- Posts: 5789
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 157 times
- Been thanked: 1023 times
- Contact:
Re: Develop a QCA7000 board?
I currently also use two separate inlets. Foccci can distinguish between CCS and AC by the Duytcycle of the CP signal. But of course if you connect CP also to a charger you will get a sort of "bus collision" because both Foccci and the charger will do the 2k7 pull-down.
Maybe an interesting hardware mod? Make 2k7 switchable as well and leave it off when >> 5% duty cycle is seen?
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
The 2k7 must be there before the PWM starts, the charging station wants to see 2k7 to start the PWM. So I think it needs to be a design decision per car, whether the 2k7 is in the AC charger or in the Foccci. We could make it configurable via a parameter in Foccci, or, for the beginning, just desolder the Focccis 2k7 if there is another somewhere in the car.
Then the next question is how the AC charger is controlled. If it has its own CP handling (sensing the PWM and applying the additional resistor), it would work just "out of the box" by just connecting Foccci and the AC charger in parallel to the CP. An other option would be that Foccci cares for measuring the CP PWM and telling the ratio via CAN or analog to the AC charger. Many options, maybe just start with one and later add more.
Also for the PP there are several options.
Then the next question is how the AC charger is controlled. If it has its own CP handling (sensing the PWM and applying the additional resistor), it would work just "out of the box" by just connecting Foccci and the AC charger in parallel to the CP. An other option would be that Foccci cares for measuring the CP PWM and telling the ratio via CAN or analog to the AC charger. Many options, maybe just start with one and later add more.
Also for the PP there are several options.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
Re: Develop a QCA7000 board?
Thanks for that. The more I think about it, the more two sockets, one for AC and another for CCS is the way forward with an interlock that prevents both from being used at any one time. I have more than enough space as the sockets are behind a flip up number plate.
The problem is as you say the control handling. With my current AC interface I have an ESP32 that handles the PWM sensing and controlling the resistor pull down. It also handles the BMS functions and then uses the information including the PP to work out the max current and then programs the AC chargers appropriately over CAN. It is quite intelligent in that it will cope with changes in the PWM dynamically and adjusts the chargers as needed. If the charger or batteries get warm it throttles back. If they get cooler it ramps up and so on.
Keeping it simple I suspect would be the best approach at the moment.
The problem is as you say the control handling. With my current AC interface I have an ESP32 that handles the PWM sensing and controlling the resistor pull down. It also handles the BMS functions and then uses the information including the PP to work out the max current and then programs the AC chargers appropriately over CAN. It is quite intelligent in that it will cope with changes in the PWM dynamically and adjusts the chargers as needed. If the charger or batteries get warm it throttles back. If they get cooler it ramps up and so on.
Keeping it simple I suspect would be the best approach at the moment.
- muehlpower
- Posts: 575
- Joined: Fri Oct 11, 2019 10:51 am
- Location: Germany Fürstenfeldbruck
- Has thanked: 12 times
- Been thanked: 103 times
Re: Develop a QCA7000 board?
I only use one plug. To manage the AC charging I need a CAN output from clara with the EVSE and cable current carrying capacity. I would return the charging status via CAN so that clara can switch the 1k3 resistor and the lock and the LEDs display something meaningful.
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
Are there constraints how these signals are scaled? In detail:
- The cable current limit (defined by the PP resistance) could be transmitted on CAN as "PP_Resistance" or as "CableCurrentLimit" in amperes or tenth of amperes or whatever.
- The current limit (defined by the PWM) could be transmitted on CAN as "PwmRatio" or as "EvseCurrentLimit" in amperes or tenth of amperes or whatever.
- The two values above could be transmitted as separate signals, or as a combined "AcCurrentLimit".
The most flexible solution would be to define all these signals in the software, and let the user define with CAN-mappings, which of them is on CAN.
And for the other way: Is there a certain CAN definition for the 1k3, lock, LEDs?
- The cable current limit (defined by the PP resistance) could be transmitted on CAN as "PP_Resistance" or as "CableCurrentLimit" in amperes or tenth of amperes or whatever.
- The current limit (defined by the PWM) could be transmitted on CAN as "PwmRatio" or as "EvseCurrentLimit" in amperes or tenth of amperes or whatever.
- The two values above could be transmitted as separate signals, or as a combined "AcCurrentLimit".
The most flexible solution would be to define all these signals in the software, and let the user define with CAN-mappings, which of them is on CAN.
And for the other way: Is there a certain CAN definition for the 1k3, lock, LEDs?
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- muehlpower
- Posts: 575
- Joined: Fri Oct 11, 2019 10:51 am
- Location: Germany Fürstenfeldbruck
- Has thanked: 12 times
- Been thanked: 103 times
Re: Develop a QCA7000 board?
I can do it however I want. BMW outputs cable and EVSE limit in whole amperes and a few other things so that the AC charger knows what to do. I have attached the corresponding frame from the LIM.
The control of the LED, the 1k3 resistor and the locking is done with a status signal. For example, initializing means locking and LED orange, charging means switching on 1k3 resistor and LED blue pulsating, unlocking end of charging and LED green, etc. This could be done in such a way that it behaves similarly to DC charging.
Code: Select all
ID 03B4
48/8 CHGNG_TYP_IMME Laden_Typ_Aktuell
00 Kein Ladeverfahren 8 bit enum
01 AC-Laden mit Typ1-Stecker
02 AC-Laden mit Typ2-Stecker
03 DC-Laden nach CHAdeMO-Protokoll
04 DC-Laden mit DC-Pins über Typ1-Combo-Dose
05 AC-Laden-CN
06 AC-Laden über Typ1-Combo-Dose
07 AC-Laden über Typ2-Combo (Kern)-Ladedose
08 DC-Laden mit Kernpins über Typ2-Combo (Kern)-Ladedose
09 DC-Laden mit DC-Pins über Typ2-Combo (Kern)-Ladedose
0A DC_Laden_mit_DC_Pins_nach_GB_T
FD Schnittstelle ist nicht verfügbar
FE Funktion meldet Fehler
FF Signal_unbefuellt
32/3 ST_PIL Status_Pilot
00 Kein Pilot erkannt erkannt (0V oder -12 V) 3 bit enum
01 PWM 10-96%, keine Ladebereitschaft
02 PWM 10-96%, Ladebereitschaft
03 Fehler Pilotsignal
04 PWM 5%, keine Ladebereitschaft
05 PWM 5%, Ladebereitschaft
06 Statischer Pilot erkannt
07 Signal ungültig
35/2 ST_DC_CHGWR_PLGD Status_Gleichstrom_Ladeleitung_Steckt (Chademo)
00 DC-Ladestecker nicht gesteckt 2 bit enum
01 DC-Ladestecker gesteckt
10 Fehler
11 Signal ungültig
26/2 ST_LOKG_CHGP Status_Verriegelung_Ladestecker
0 Nicht verriegelt 2 bit enum
1 Verriegelt
2 Fehler
3 Signal ungültig
22/2 CHGNG_ENB Laden_Freischaltung (Charge enable Leitung)
0 Inaktiv
1 Aktiv
2 Fehler
3 Signal ungültig
20/2 RQ_CHGNG_END Anforderung_Laden_Ende
0 Keine Anforderung 2 bit enum
1 Laden beenden Fahrer
2 Laden beenden CSM
3 Signal ungültig
18/2 ST_PUBU_ULOK_PLG Status_Taster_Entriegeln_Stecker (nur Typ1)
0 Taster nicht betätigt 2 bit enum
1 Taster betätigt
3 Signal ungültig
16/2 ST_CHGWR_PLGD Status_Ladeleitung_Steckt
0 Kein Kabel gesteckt 2 bit enum
1 Kabel gesteckt
2 Fehler
3 Signal ungültig
8/8 MAX_I_WR Maximal_Strom_Leitung
0 ... 252 A (HEX) [A] uint 8
253 Funktionsschnittstelle_ist_nicht_verfuegbar
254 Funktion_meldet_Fehler
255 Signal_unbefuellt
0/8 MAX_I_GRID Maximal_Strom_Netz
0 ... 252 A (HEX) [A] uint 8
253 Funktionsschnittstelle_ist_nicht_verfuegbar
254 Funktion_meldet_Fehler
255 Signal_unbefuellt
Code: Select all
20/4 ST_CHGNG Status_Laden 0 Kein Laden 4 Bit Enum
1 Initialisierung
2 Laden aktiv
3 Ladepause
4 Laden beendet
5 Ladefehler
15 Signal ungültig
24/2 ST_CHGRDI Status_Ladebereitschaft 0 Keine Ladebereitschaft 2 Bit Enum
1 Ladebereitschaft
3 Signal ungültig
- johu
- Site Admin
- Posts: 5789
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 157 times
- Been thanked: 1023 times
- Contact:
Re: Develop a QCA7000 board?
This this already works well for simulating CHAdeMO so will work likewise for these simple data items. The "evsevp" data item already exists and contains the CP duty cycle and of course it can be mapped to CAN like all others. evsepp is to be added. And we'd need a handler for evsecp > 5% i.e. AC charging. An enable data item we already have and it could serve the purpose of simply switching in the 1k3 resistor.
I'd avoid hard-coded CAN mappings as everyone needs something else
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
As starting point, implemented the measurement of the PP resistor. Connected a 100 ohm resistor for test, and this gives
For the PP resistance calculation I needed to introduce a new parameter, ppvariant, to be able to distinguish between the "old" Foccci with the 1k pull-up to 3.3V (which is selected by ppvariant=0), and the "new" (handwired) Foccci with 330 ohm pull-up to 5V (selected by ppvariant>0).
[Edit] Tested these possibilities PASS (from https://www.goingelectric.de/wiki/Typ2- ... codierung/)
So depending on the use case, it is possible to map the following data to CAN as wished: the raw AD value, the calculated PP resistance, or the calculated cable current limit.For the PP resistance calculation I needed to introduce a new parameter, ppvariant, to be able to distinguish between the "old" Foccci with the 1k pull-up to 3.3V (which is selected by ppvariant=0), and the "new" (handwired) Foccci with 330 ohm pull-up to 5V (selected by ppvariant>0).
[Edit] Tested these possibilities PASS (from https://www.goingelectric.de/wiki/Typ2- ... codierung/)
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- johu
- Site Admin
- Posts: 5789
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 157 times
- Been thanked: 1023 times
- Contact:
Re: Develop a QCA7000 board?
Is anyone using the older foccci? I think it would be a good idea to have a version indicator on board and change it whenever there is a breaking change in hardware. So simply voltage divider to ADC pin like here: viewtopic.php?p=61949#p61949
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
Yes, the "older" is the last spread one So everybody uses it, potentially. Only mine is patched to the "officially specified" 330ohm/5V pull-up. Yes, a version indicator resistor is a very good idea, I'll put it on the todo list.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- muehlpower
- Posts: 575
- Joined: Fri Oct 11, 2019 10:51 am
- Location: Germany Fürstenfeldbruck
- Has thanked: 12 times
- Been thanked: 103 times
Re: Develop a QCA7000 board?
I have the old foccci. If only the resistor needs to be replaced, I would simply resolder it.
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
It's more:
- The value of the pull-up changes from 1k to 330ohms.
- The supply of the pull-up is moved from 3.3V to the 5V rail.
- An additional 47k to ground needs to be added, to create a voltage divider 2:1, which scales the now 5V PP voltage to be measurable with the 3.3V ADC range.
- Added also a 3k pull-down on the PP, to have the same situation as measured in my Ioniq.
For the moment I propose to support both variants, the "old" and the "new" in software, and configure it with a parameter. So we do not lock-out anybody just using the existing boards. This gives the freedom to everybody to either patch the hardware or to stick to the existing state.
- The value of the pull-up changes from 1k to 330ohms.
- The supply of the pull-up is moved from 3.3V to the 5V rail.
- An additional 47k to ground needs to be added, to create a voltage divider 2:1, which scales the now 5V PP voltage to be measurable with the 3.3V ADC range.
- Added also a 3k pull-down on the PP, to have the same situation as measured in my Ioniq.
For the moment I propose to support both variants, the "old" and the "new" in software, and configure it with a parameter. So we do not lock-out anybody just using the existing boards. This gives the freedom to everybody to either patch the hardware or to stick to the existing state.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- muehlpower
- Posts: 575
- Joined: Fri Oct 11, 2019 10:51 am
- Location: Germany Fürstenfeldbruck
- Has thanked: 12 times
- Been thanked: 103 times
Re: Develop a QCA7000 board?
Changing was easy. Now it should also work with the Tesla charging points.
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
Perfect Fortunately, the 5V is perfectly near to just solder the 330 ohms. The upper circle is the additional 47k I guess, this is difficult to see. And the 3k pull down? Maybe it works without.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- muehlpower
- Posts: 575
- Joined: Fri Oct 11, 2019 10:51 am
- Location: Germany Fürstenfeldbruck
- Has thanked: 12 times
- Been thanked: 103 times
Re: Develop a QCA7000 board?
I have left out the 2k7 (3k) resistor for now, as it is not there at BMW either. If necessary, I solder a THT resistor to the underside of the board at the connector between pin A10 and A12
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
I think it is good to not populate it, to have tested also this scenario. My strategy would be to prepare the software in a way that it works with all possible combinations, to keep the hardware effort as low as possible.
[Edit] Software is ready to be tested with ppvariant = 2 for the case with no pulldown. This should show the correct resistanceProximityPilot and cableCurrentLimit.
[Edit] Software is ready to be tested with ppvariant = 2 for the case with no pulldown. This should show the correct resistanceProximityPilot and cableCurrentLimit.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- johu
- Site Admin
- Posts: 5789
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 157 times
- Been thanked: 1023 times
- Contact:
Re: Develop a QCA7000 board?
I'm still surprised I could charge at Tesla with PP not connected at all. Now I have it pulled up to 12V with 10k. Will do more testing soon.
You can do a variant for people who removed the PP circuit completely. Just kidding
I can no longer measure PP voltage but I have no use case anyway.
You can do a variant for people who removed the PP circuit completely. Just kidding
I can no longer measure PP voltage but I have no use case anyway.
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
Yes, I also do not really believe it that there are different Superchargers. Definitely I got a connection without PP here:
https://www.goingelectric.de/stromtanks ... n-1/44134/
but here not:
https://www.goingelectric.de/stromtanks ... s-4/69557/ and after having the 4.5V also here it works. Both are V3 Superchargers. Really strange. Only Elon knows
https://www.goingelectric.de/stromtanks ... n-1/44134/
but here not:
https://www.goingelectric.de/stromtanks ... s-4/69557/ and after having the 4.5V also here it works. Both are V3 Superchargers. Really strange. Only Elon knows
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
- uhi22
- Posts: 601
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 91 times
- Been thanked: 412 times
Re: Develop a QCA7000 board?
Progress: Ready for AC charging:
- Clara provides the current limitation of the cable in cableCurrentLimit.
- Clara provides the current limit of the AC charging station in evseCurrentLimit.
- Clara receives the control for LEDs and 1k3 resistor in AcObcState. Clara only uses this, if a valid PWM was detected.
Still open:
- triggering of the connector locking and unlocking. For this, especially the unlocking, the strategy needs to be defined.
- switching back to DC mode. At the moment, a power-on of clara is needed to go back from AC mode to DC mode. This can be improved.
- Clara provides the current limitation of the cable in cableCurrentLimit.
- Clara provides the current limit of the AC charging station in evseCurrentLimit.
- Clara receives the control for LEDs and 1k3 resistor in AcObcState. Clara only uses this, if a valid PWM was detected.
Still open:
- triggering of the connector locking and unlocking. For this, especially the unlocking, the strategy needs to be defined.
- switching back to DC mode. At the moment, a power-on of clara is needed to go back from AC mode to DC mode. This can be improved.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
-
- Posts: 1308
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 103 times
- Been thanked: 216 times
Re: Develop a QCA7000 board?
Does the Clara do the follow:
1. detect plugged in
2. determine the CP signal is 5% pwm for DC or above for AC
3. recieve request to charge or verify okay to start
3.lock motor
4. Enable EVSE via CP pull down
5a. stop because EVSE stops, info via CP
5b. stop because EV requests stop via CAN (or however this is implemented) Clara drops CP
6. Unlock unless there is an inhibit unlocking in place (via CAN I would say)
7. Plug removed
8.reset charging session assumptions and wait for plug detected.
How does the LED work?
The way I have mine working and I believe to some extent the BMW implementation
1. Idle/wake/ unlocked - White or Blue Constant
2. Plugged in and waiting + locked - Green Constant
3. Charging started + locked - Green Pulsing
4. Stopped and unlocked - White or Blue Constant
5. Error - Red Constant
1. detect plugged in
2. determine the CP signal is 5% pwm for DC or above for AC
3. recieve request to charge or verify okay to start
3.lock motor
4. Enable EVSE via CP pull down
5a. stop because EVSE stops, info via CP
5b. stop because EV requests stop via CAN (or however this is implemented) Clara drops CP
6. Unlock unless there is an inhibit unlocking in place (via CAN I would say)
7. Plug removed
8.reset charging session assumptions and wait for plug detected.
How does the LED work?
The way I have mine working and I believe to some extent the BMW implementation
1. Idle/wake/ unlocked - White or Blue Constant
2. Plugged in and waiting + locked - Green Constant
3. Charging started + locked - Green Pulsing
4. Stopped and unlocked - White or Blue Constant
5. Error - Red Constant