|
LPG, CNG & LNG - General Info and Issues Share experiences and problems |
Information |
|
FAQ Faults & Tips for factory Volvo Bifuel LPG / CNGViews : 56972 Replies : 40Users Viewing This Thread : |
|
Thread Tools | Display Modes |
Aug 28th, 2021, 18:40 | #31 |
New Member
Last Online: Sep 19th, 2023 20:55
Join Date: Aug 2013
Location: London
|
Lpg cng
Thanks for all this information. I currently have a lpg bifuel which immediately dies when i switch to LPG, (it does not revert to petrol).
Apparently when in petrol the car has 12 volts but when I switch over it only gets 8 volts. |
The Following User Says Thank You to happybunny50 For This Useful Post: |
Oct 2nd, 2021, 17:34 | #32 | |
Classic P80 1999 BiFuel
Last Online: Jul 17th, 2024 11:31
Join Date: Aug 2012
Location: 48mph Middle Lane M4
|
Quote:
Now we've to bother the admin to delete this post.
__________________
Bifuel V70 Classic 1999 [The Old Grumpy in the Corner, "When I was a lad... blah, bl**dy blah."] |
|
The Following User Says Thank You to CNGBiFuel For This Useful Post: |
Oct 9th, 2021, 22:20 | #33 |
New Member
Last Online: Dec 8th, 2021 16:19
Join Date: Sep 2021
Location: Darlington
|
Dear forum members I am reaching out to you knowledgeable fellows .I am the owner of a 2005 volvo s60 bi fuel CNG model I have relocated my gas distributor and had the stepper motor refurbished. My dilemma is I sent the old step motor away with the piston attached. When I received the refurbished step motor back the piston was with it but not attached how do I connect the piston to the arm of the stepper motor ..???
|
Dec 23rd, 2021, 13:20 | #34 |
Junior Member
Last Online: Apr 27th, 2023 16:57
Join Date: Feb 2017
Location: Gloucester
|
Haven't been here for a while. I can share some documentation about Koltec system fitted to Volvos. It is a pretty good guide. The only trick is that its is in russian. If you can't read Russian please use Google translate. Hope it helps
|
Aug 14th, 2024, 16:05 | #35 |
Member
Last Online: Yesterday 18:43
Join Date: Nov 2022
Location: None
|
Some components of the CNG distributor PCB:
Two (potentially) 4946 Dual P-Channel 60-V mosfets. Two (potentially) 4948 Dual N-Channel 60 V mosfets. One BL05A - High-side Power Switch IC One big tantalum capacitor 68535K On the other side of the PCB: One PIC microcontroller PIC16C622A with a program stored inside. Will dump later. One crystal oscillator, potentially 8Mhz, not measured yet. Last edited by dikidera; Aug 14th, 2024 at 16:13. |
Aug 18th, 2024, 17:35 | #36 | |
Member
Last Online: Yesterday 18:43
Join Date: Nov 2022
Location: None
|
Quote:
|
|
Aug 25th, 2024, 10:45 | #37 |
Member
Last Online: Yesterday 18:43
Join Date: Nov 2022
Location: None
|
I have not tested yet, but there is a very high likelihood that the PIC microcontroller has copy protection set, meaning one cannot dump the firmware. If this is the case, even if we could replicate the PCB and it's components in order to use it with third party steppers, we lack the original control logic that processes the ECU PWM signal and also outputting the return signal. In this scenario we need new open source logic that mimics the original 1:1 for the stepper motor driving.
I will know more in the following days probably. Additionally we do not know how well the logic is controlling the stepper, is it interpolated steps for finer precision(I think it's called microsteps) or more rough stepping. As for the stepper motor itself, we do not know the properties of the original. Length is stepper motor piston/screw, the rated speed etc. Last edited by dikidera; Aug 25th, 2024 at 10:52. |
Sep 9th, 2024, 22:56 | #38 |
Member
Last Online: Yesterday 18:43
Join Date: Nov 2022
Location: None
|
On the bench with an arduino sketch and some reverse engineering I have determined that the base operation frequency is 175hz(180 and 185hz also work) of a single-pulse PWM wave. This means the pwm pulse is sent ONCE and then immediately stopped. It also might be inverted, but do not quote me on this.
Again I must remind you that there is a whole microprocessor on the board and it could be doing other things as well. There seems to be an occasion where the frequency might be different, but the reason is rooted deeply in Denso code. In some instances, the frequency may become an odd number of 291.66hz, but this could be something related to the internal clock of the Denso SH7055 microprocessor, so the base frequency could potentially still be 175hz(or 180 or 185hz). My bruteforce attempts produced nothing between 2500hz and 190. No reaction of the stepper. It's physical limits are 16-83% duty cycle as stated in VIDA, beyond this the stepper motor becomes undone, the spring becomes a projectile. It can still be assembled though, I know, I did it. Both coils of the stepper measure 45-47 ohms of resistance. I will soon disassemble the stepper again to measure the spring, the shaft etc. With all of this we could potentially build our own steppers to replace this aging garbage. |
Sep 12th, 2024, 18:09 | #39 |
Member
Last Online: Yesterday 18:43
Join Date: Nov 2022
Location: None
|
I have done more testing.
I recently bought a generic Magnetti Marelli stepper motor with part number 820003395010. I have done some visual comparisons and physical and will attach photos. The generic stepper on the left of the image(pardon the dirty table) has a slightly shorter shaft/pintle/screw-head in terms of threads, but a slightly more sharp edge that is longer than our original one. It's coils measure 53 ohms versus the 43/45-47 from the original stepper. The springs measure the same height but as for spring force, I would say our original stepper has a slightly harder spring, but not by much. I have also written the following arduino sketch, courtesy of ChatGPT as it was faster and verified with an oscilloscope. The Arduino sketch works with an ordinary Uno and simulates the PWM signal sent from Denso to the stepper motor driver board which controls the stepping. Additionally I have tested that the original driver board works and controls the generic stepper same as the other one. The only thing left is to measure the difference between maximum open and close between each. As for dumping the PIC micro, I have not yet tried, I have little hope it's unlocked, but if it is, it would be a welcome surprise. If not, new logic and board need to be designed. Code:
// Constants for Timer1 const int pwmPin = 9; // Pin 9 is controlled by Timer1 float frequency = 175; // Initial PWM frequency in Hz void setup() { // Set pin 9 as an output pinMode(pwmPin, OUTPUT); // Start serial communication for printing Serial.begin(9600); // Enable the PWM signal enablePWM(frequency); } void loop() { // Loop to iterate between 20% and 83% duty cycle float duty = 15.8; //for (int duty = 80; duty >= 0; duty -= 25) { enablePWM(frequency); // Calculate OCR1A value based on duty cycle percentage OCR1A = (ICR1 * duty) / 100; delay(70); stopPWM(); // Calculate the high time in milliseconds (to verify the duty cycle is correct) float period = 1000.0 / frequency; // PWM period in milliseconds float highTime = (duty / 100.0) * period; // High time in milliseconds (time pin is HIGH) // Print the duty cycle, high time, and frequency for verification Serial.print("Duty Cycle: "); Serial.print(duty); Serial.print("%, Frequency: "); Serial.print(frequency); Serial.print(" Hz, High Time: "); Serial.print(highTime); Serial.println(" ms"); // Wait for some time before changing the duty cycle again //delay(100); // Adjust the delay as needed while(1); //} // After the loop, stop the PWM signal } // Function to enable the PWM signal void enablePWM(float freq) { // Clear Timer1 control registers TCCR1A = 0; TCCR1B = 0; // Set PWM mode to Phase Correct PWM with ICR1 as TOP TCCR1A |= (1 << COM1A1); // Non-inverting mode for OC1A (pin 9) TCCR1A |= (1 << WGM11); // Set WGM11 to 1 for Phase Correct PWM mode TCCR1B |= (1 << WGM13); // Set WGM13 to 1 for Phase Correct PWM with ICR1 as TOP TCCR1B |= (1 << CS11) | (1 << CS10); // Prescaler set to 64 // Set the PWM frequency dynamically based on the 'frequency' variable setPWMFrequency(freq); // Print a message to confirm PWM has started Serial.println("PWM Enabled"); } // Function to set the PWM frequency by updating ICR1 based on the 'frequency' variable void setPWMFrequency(float freq) { // Calculate ICR1 value based on the given frequency for Phase Correct PWM ICR1 = (16000000 / (2 * 64 * freq)) - 1; // Note the factor of 2 for phase correct mode // Print the updated frequency and ICR1 value for debugging purposes Serial.print("Updated Frequency: "); Serial.print(freq); Serial.print(" Hz, ICR1: "); Serial.println(ICR1); } // Function to stop PWM signal generation void stopPWM() { // Clear the COM1A1 bit in TCCR1A to stop PWM output on pin 9 TCCR1A &= ~(1 << COM1A1); // Optionally stop the timer by clearing the prescaler bits in TCCR1B TCCR1B &= ~(1 << CS11); // Stop the timer by clearing the prescaler bits TCCR1B &= ~(1 << CS10); // Set the pin to LOW to ensure the signal is off digitalWrite(pwmPin, LOW); // Print a message to confirm PWM has stopped Serial.println("PWM Stopped"); } |
Sep 18th, 2024, 17:42 | #40 |
Member
Last Online: Yesterday 18:43
Join Date: Nov 2022
Location: None
|
Update, notice in the images above there is in fact one big difference, the o-ring does not have a groove like the original, so in fact that stepper is incompatible, but I have another one that does, but it had a shorter screw lead, so I swapped it from the Magnetti Marelli, should it work as-is without requiring re-calibration of the stepper motor maps, I will post info later.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|