Speeduino is now on Github Sponsors (Rather than Patreon): https://github.com/sponsors/noisymime
Help with building your Speeduino, installing it, getting it to run etc.
Thanks for the reply. I understand the coil-resistance thing, which is why I fitted the diode in the first place and which is why the VVT control PID settings for the system including the diode are very different from the ones without the diode, as you can see above. (Pics work, now, right?)

The settings worked. I drove the car with both current and target VVT angles on my dashboard and it worked. I also had noticably more midrange power. For about 15 - 20 minutes. Then Speeduino froze the PWM duty cycle to 38, not budging, not controlling / correcting anymore. So, the VVT system, it's wiring, the basic control settings as posted above, work. But someting causes Speeduino to stop sending out the required PWM signal. Rebooting Speeduino did not help.

I agree I don't have a great understanding of PID tuning, although I did as you suggested and 'read' various explanations on Youtube before you suggested. But the PID settings I received worked. And if they worked for the person who sent them to me, and they worked in my car with identical engine, I feel the problem is not in the PID settings.

The only thing I can think of is that in the settings I copied, the minimum and maximum valve duties are zero. That doesn't make sense to me. Next I'll try to put in some numbers there, like 20 - 80, and see what I get.

This is really interesting (and annoying). The VVT stops and starts at will. I recorded this tonight, excuse the rambling and poor quality of filming in the dark:

Is there any way of checking what is really happening? Should I be able to see a difference in AFR when the VVT is working or frozen, in the same part of the VE table? Something like that?


PSIG wrote:
Sun Jan 10, 2021 11:39 pm
There is a lower limit to the AE response. Speeduino reads TPS relatively slowly, so instant response may not be possible. IIRC, someone here calculated it to be 35ms between reads in code a year or two old. This lag had caused frustrations or confusion with tuning TPS AE.

That said, also check your Analog Filters. They are not set for anything in-particular, nor even as a suggested starting point. In TS under Tools > Set Analog Sensor Filters, all of the filters should be adjusted to minimum effective levels in order to improve response.

For this testing, I would suggest only changing MAP first for effect, then adjust the others as you would normally do for their added effects if any. Of course, there is a balance involved, but it may be of interest to the community in how your filter adjustments change engine operation or response on your specific setup in any way.

Hi David,

All my analog sensor filters are set at zero, so certainly minimum. And I have no problem with any of the sensor signals as far as I know. So you did enrich my knowledge of the system, but I think this is not the issue. In the meantime I have tinkered some more with te ignition and VE tables, making eveything a bit less aggressive, more smooth. That also helped getting things more stable.

About the system speed, would upgrading the Arduino Mega to a Teensy be helpfull? I read somewhere there is a Mega-size inferface board you can put the Teensy on and mount my 0.4.4. onto.


LAV1000 wrote:
Sun Jan 10, 2021 6:25 pm

Only pics in the first post and latest are visible.
I live in Nijkerk.

Did look at your latest settings and data log.
Injector closing time at 355is this where the intake valve is already open ?
Most end to injection settings use the a closed intake valve timing, bit more heat into the fuel mixture so it evaporates better.
Also something happening on the ignition.
When tps and map are rising rpm goes up but ignition drops a degree ?
Also AE taper starts at 1000rpm, if engine idles below 1000.......

Nijkerk, I went to school in Amersfoort, that's pretty near but I now live in the sunny south. Sorta...

Thanks for all the input. I have smoothed out the VE and spark tables a bit which made idle more stable and helped with the lean spike. It's not perfect, yet, but a lot better and good enough for now.

About the injector closing time; I have a hard time finding data. I found this one:
Which seems to say the intake opens at 5 degrees before TDC, so then the 355 degrees after would make sense for the injector to close. But it may need a bit more 'time' (angle) to help. Is there a theory explained somewhere to come to a logical number? Or a rule of thumb? I'm also looking into whether the timing changes caused by the VVT on the intake cam will also change the injector timing, I think it does with the setting 'Adjust fuel timing', but I'm not sure.


The injector close angle is dynamic, and changes with both speed and load. Speeduino had one angle (end-point) you could set per injector channel, and that is improved now to a table that varies by rpm, but for all channels. It does not yet include load; which is the primary influence on end-point timing, with the change in mass flow and velocity with change in VE, which changes the airflow's ability to carry the fuel to the cylinder.

A couple important aspects to this are the time it takes for the last of the injected fuel to travel from the injector to past the valve (therefore typically ending well before valve close), in order to capture the entire fuel pulse. Second that Speeduino shifts injection start when it increases fuel for any reason, e.g., if it ends at 140°ATC and you need more fuel, it begins injecting earlier in order to end at that same angle.

How to set it? There is no easy answer for that, as the dynamics of every engine, design, fuel, cam timing, etc, is effectively different. So, you test. You don't need a dyno for that, but it does simplify the task somewhat. My method is generally to run the [well-tuned] engine at a given load and speed, then vary the end-point timing until your indicators read best efficiency. Indicators are data such as MAP, torque, horsepower, BSFC, etc, or any other data you would use to determine tune efficiency at a given load and speed.

So for example, if you are chasing best efficiency at 2000 rpm cruise at 60kPa, you drive that and watch your indicators for best numbers. The angle will change at different rpm or load, so do a few spots around the table and blend them to each other, in order to have a base end-point table. As we cannot yet set for load, try to test at the load you expect or need it to perform best (emissions, power, economy, etc) Obviously, if you can't hold your test point at 8000 rpm WOT, you'll have to log data and read changes between sweeps (pulls or runs). Tuning is always by comparison, so multiple short accelerations in the testing range with stepped angle change on each will give you data to know if it's improving or not. Larger changes at first to find the right area, and smaller to nail it. Follow the data. Hope that helps!

Thanks, that was really educating. I've messed around a bit at idle, going from the 355 angle all the way down to 340. It made the car run more rich without any other parameters changing. I leaned it back out to 14.5 in the VE table (gamma at 100%). I will get some more driving data or have my wife drive again while I change settings. I wasn't even aware of these settings and they seem to have quite a significant influence.

Today I also messed with the VVT again. Two things bother me.
The first is the freezing of the controls. I doubt they really do as the engine's performance doesn't change from when the VVT is actively controlled and when the PWM signal freezes. I have a feeling it is more in the readout than in the actual controls. I read somewhere Speeduino does everything in milliseconds and only translates in angles for the readout. This is just a feeling but I sometimes get readouts (mostly while cranking cold) of over 60 degrees positive or negative, angles mechanicaly impossible by the mechanism.
The second is that the cam is flopping about, so it seems, when cranking. This is really weird, as the mechanism has a hold pin in it which should stop that from happening. I turned my PWM duty cycle minimum all the way down to zero, hoping that would help (no oil pressure going down to the mechanism when cranking) but it doesn't work. When I turn off the VVT all together, cranking (and starting) works fairly well.
Although I'd like to tinker with it, I have a feeling is might be better to leave it off untill the next firmware update with proper datalogging is relased.

Depending on injector placement, angle, wall-wetting, port velocity, and 101 other factors, I have seen injection end-points at 140°. The engine will run at any end-point setting. Big adjustments first to find the area it likes at that point in the table. ;) Adjust across the range, poor … better … poor, then go back to the better area and begin finer-step tuning for peak efficiency. You'll see trends after some experience, and you'll be able to make fairly good predictions for the next tuning point.

This is "incremental tuning", where each setting helps a little, and after several means a substantial improvement. If you ever want to see the value of your work, save your tune now with the date, then sometime after more tuning load it up and feel the difference. 8-) Start nibbling.
It's great how little changes can have good results, not only in power but also in drive-ability. I love this process, especially when it goes the right direction. Which cannot be set for the VVT issue. I just found this video by DCWerx on youtube:
I wanted to know if the VVT when frozen only doesn't pass the right data to display, or wheter it really doesn't work when frozen. With the video in mind, I thought I'd do two pulls in the relevant rev range with and without VVT enabled, and with VVT frozen and not frozen. Unfortunately, I didn't get a chance to to a pull with the VVT visibly functioning, so, I only have VVT disabled vs VVT enabled but frozen:
The red one is with VVT disabled, the blue one with VVT enabled but frozen. The latttr actually gave 2 hp less. Now the road I tested on is ever so slightly downhill on the first pull and uphill on the second (return run), but it's hard to tell, there is no serious height difference to overcome. It probably explains the 2 hp difference, but not more. So, I believe I can say the VVT does not work when frozen, the readings are correct. Why the PWM duty cycle output freezes I still don't know.

To me it seems to work, because...
You loose some torque at the lower rpm range.
When tuned well and VVT activated you should gain more power at higher rpm.
It is just shifting valve timing to get a better power spread across the rev range.
Yesterday evening I sat down for a new test. I cleared the Mega's memory with the Arduino clear eeprom sketch and did a full clean install. Firmware 202012, the most basic of base tunes. Then I exported the VE, spark and AFR tables from the 'old' project and imported them into the new. Furthermore I went through all tables and setting manually with two TS windows open, manually setting the new project the same as the old. So if messing about with firmware versions in the past, or a corrupted tune, were the cause of the VVT freezing, this should now be solved.

I got back to the car and did the last sensor calibrations and then I was ready; VVT on in closed loop mode. The starting didn't go to plan, the actual cam angle was all over the place. I turned VVT control off and then it started well again. Hmmm, first problem. Next, I switched the VVT on again in closed loop. It froze immediately. But after a minute of driving, it came to life and worked. The actual angle kept pretty close to the desired angle. But only for a minute or two. Then it froze again. Restarting the ECU whiel driving (unplug USB, replug USB) helped a bit, it sometimes sprung back to life, but after three tries that didn't work anymore, either. Bummer.

It almost seems like a register problem I had a little while ago on a PLC (not car related). I had a data register filled by sensory input, but when the table was full it didn't delete the earliest rows of data to allow more to enter. This problem with the VVT acts the same, as if on a fresh install it has enough room to process the data, but after a while it doesn't anymore and freezes.

I was told by someone over Youtube he had the system working open loop on this exact engine type, so I tried that as well Didn't work for me, as I expected.

Last on my list of possibilities is going back to 202008. From one of the people sending me their VVT data I got the remark the VVT seemed to work better before he updated to 202012. So I will throw away yesterday's new project, do a full eeprom clear and fresh install again with 202008 next. I hope that will bring something.


Simple diagram for 2ch Bosch 200 ignitor

CLT sensor wrong reading

Once again as above. You need to find and fix you[…]

Kawasaki Concours 2.0

Going bonkers trying to wire up a Bosch LSU4.9 to […]

3 cylinder 2 stroke controller

Quick update. New 0.5 ohm coils and the Bosch 211[…]

Still can't find what you're looking for?