Sorry, must have missed that bit!
Thanks
Mitch
Printable View
Here is a source code that has retard limit removed. Now you can command up to 60 degrees of retard and test all kind of scenarios.
Beware of possible engine stall if you go too far with the retard.
Thanks! Does this require patches to the bin / a reflash of PCM?
With as much overlap as my cam has I suspect even 1 degree ATDC spark would cause an almost immediate stall. But I can log the controller and tell if it's firing the coils correctly - if it doesn't it will probably blow the coil fuse after four coils are energized simultaneously.
You have a PM from me BTW.
No need to apply a patch. Just removed the spark control safety feature of +-15 degrees.
Thanks, I figured it out when I started compiling and noticed bin_file.cpp was dated from October. Will try to test tonight. Nice work on the edit: C/L tuning controls - kind of a shame I won't be able to test that any time soon.
Update - very useful, thank you. No blown fuses and engine operation was sustained through short bursts of negative timing so no critical problems. It also offered a handy single-button stall trigger for testing stall recovery (as well as pedal clearing the subsequent flood condition).
Turned up a slightly confusing scenario however.
Not sure how that can be happening. I initially thought of a possible race condition caused by either the high or low res interrupt handlers, but global interrupts are supposed to be disabled inside of ISRs. Copying the (global) degree count to a local variable didn't help either. It'll give me a puzzle to solve tomorrow.Code:R1064:A27:D0.51:C7:M372:V14.35:T23:E1:L0:S16
R1058:A27:D0.51:C2:M365:V14.40:T24:E1:L0:S16
R1045:A0:D0.51:C1:M360:V13.05:T25:E1:L0:S16
R1036:A0:D0.24:C8:M362:V13.10:T26:E1:L0:S16
R1014:A0:D0.24:C4:M364:V13.07:T27:E1:L0:S16
R1003:A0:D0.24:C3:M369:V13.05:T28:E1:L0:S16
R989:A0:D0.24:C6:M371:V13.03:T29:E1:L0:S16
R978:A0:D0.24:C5:M369:V13.03:T30:E1:L0:S16
R963:A0:D0.24:C7:M376:V13.09:T31:E1:L0:S16
R947:A0:D0.24:C2:M383:V13.05:T32:E1:L0:S16
R918:A1:D0.24:C1:M379:V13.61:T33:E1:L0:S16
R890:A0:D0.25:C8:M394:V13.10:T34:E1:L0:S16
R866:A0:D0.24:C4:M396:V13.05:T35:E1:L0:S16
R851:A0:D0.24:C3:M405:V13.05:T36:E1:L0:S16
R835:A0:D0.24:C6:M417:V13.09:T37:E1:L0:S17
R818:A0:D0.24:C5:M425:V13.05:T38:E1:L0:S17
R805:A0:D0.24:C7:M426:V13.40:T39:E1:L0:S17
R786:A0:D0.24:C2:M440:V13.03:T40:E1:L0:S17
R761:A1:D0.14:C1:M461:V14.03:T1:E0:L0:S17
R731:A1:D0.15:C8:M471:V13.72:T2:E0:L0:S17
R714:A-1:D0.15:C4:M472:V13.14:T3:E0:L0:S17
R708:A-1:D0.13:C3:M482:V13.21:T4:E0:L0:S17
R700:A-1:D0.13:C6:M498:V13.19:T5:E0:L0:S17
R685:A-1:D0.13:C5:M506:V13.17:T6:E0:L0:S17
R666:A-1:D0.13:C7:M519:V13.10:T7:E0:L0:S17
R643:A-1:D0.13:C2:M532:V13.12:T8:E0:L0:S17
R633:A-91:D0.13:C1:M539:V13.09:T9:E0:L0:S17 < these two lines are troubling
R614:A8:D215.29:C8:M545:V13.10:T10:E0:L0:S17 < note the 215 tdc counts in the subsequent dwell lookup
R580:A17:D0.22:C4:M563:V13.10:T11:E0:L0:S17
R563:A25:D0.31:C3:M581:V13.16:T12:E0:L0:S17
R579:A26:D0.39:C6:M587:V13.21:T13:E0:L0:S17
R603:A26:D0.42:C5:M593:V13.21:T14:E0:L0:S17
R639:A25:D0.42:C7:M609:V14.42:T15:E1:L0:S17
R662:A27:D0.40:C2:M609:V14.37:T16:E1:L0:S17
Think I've found all the sources of the weirdness with ATDC timing tests. Couple logs attached (both controller and eehack logs). If you take a look at them, the one named 1107-3.log is the controller output in raw format (i.e. rpm and voltage not converted to human-readable). You'll notice an asterisk getting pumped out in the negative timing test sections - this is the stall detection coming in.
EDIT: No, it's not, duh. In cleaning up the code I realized I added the asterisk to pinpoint the one race condition I hadn't accounted for between the low res, est and high res interrupts that was happening at ~0 spark advance.
What I was somewhat baffled by is that regardless of how many degrees I removed in the eehack control UI, the least spark advance aldl data reported was 0, and the least the controller detected was -1 which is around the average error (+ / - 1 degree) I've been seeing across the board on the controller side. So perhaps there's another limiter in the calibration that's preventing ATDC timing. For the purposes of testing what the controller does, I'm happy with it's behavior at this point.Quote:
Originally Posted by irrelevant_info_im_dumb
If I can get my powered usb hub wired into a decent power source and working reliably I'll try to take a short drive tomorrow before I start dismantling it to pull the engine. I'd really like to know if the intermittent miss I was feeling is resolved.
Wanted to drop in an update that the test drive was mostly a bust. Same hesitation was happening, apparently in the places where dwell begins near a TDC / low res signal (i.e. around 90, 180, 270 degrees of dwell). 0.9.12 exhibited similar stumbling but it was much less pronounced. If you accelerate past that range it runs great. So more work is needed there.
Hope to have it back together and running before the end of the year but I might try building a test rig out of my spare opti so I can at least attempt to make some progress while the car's out of commission.
i got my parts kit to build one of these things, no time to do it right now but our winters are long and boring so i'll be sure to get 'er done soon.. that'll inspire me to help with the coding end of things.
Good to know your parts made it through customs. I shipped another one to Canada on Thursday and it should be arriving soon with any luck.
If you're serious about making a general purpose controller out of one you might want to take a look at where I'm at with 0.9.14 and try to gain an understanding of what tools are available to work with to add time based logic. I'll try to upload 0.9.15 to github tonight - it will be labeled as wip (work in progress) but it's effectively the same as .14. I think time based would actually be better in in many aspects. I have the feeling the 24x reluctor wheel setup on-crank was the next logical progression of the opti with it's 360 degree high res side ripe for causing routine starvation due to the large number of interrupts generated.
I think the adc section can easily accommodate a coolant temperature sensor if you wanted to create entire timing tables. There should be plenty of flash available also - currently it needs 5.7k of 32k available. There's probably enough cpu bandwidth to handle a knock sensor input as well.
I was just getting the bellhousing separated from the transmission yesterday when it occurred to me exactly how and why the hesitation was happening at the transitions where dwell needs to begin right around the TDC low-res signal. It should be super easy to fix by using a fifo type queue for dwell requirements.
Super off-topic, but then again my mechanical issues have hindered this project immensely so I'm happy to report that I'm 99.999% confident I found the source of my noise. I'm still in disbelief, but when I pulled the #7 connecting rod loose I saw out of the corner of my eye and then heard something hit the bottom of the catch pan. Digging around the oil and coolant stew I found this piece of what appears to be weld spatter.
http://www.pfautsch.com/wp-content/u...1111181717.jpg
Apparently it's been floating around in the oil feed in the crank for a while, and would get hung up in the bearing babbit and cause the rod to tap the crank. This was a strange one because the noise did seem to be louder at the bottom of the engine, but it was a very high pitched noise that sounded more like a valve clapping shut than a rod end. It also didn't go away completely when I disabled any cylinders, although #8 made the biggest difference.
When I first saw this I thought it was a piece of spatter from my welding the adjustable guideplates together, but it's too big to get through the oil pump pickup screen. Outside of that route, I have no idea how it could have gotten into the oil feed system, much less make it's way into the 4th main journal feed - it would have had to make a left turn around the camshaft to boot (and that cam journal shows no signs of distress). So I'm guessing this had to be stuck inside the crank since the shop welded material back in my counterweights when I had it balanced in 2016.
The toughest part of this is that I expected to find a broken hard part that required replacement. This would have given me a thoroughly plausible excuse to buy a stroker kit. It looks like the crank has sustained very little damage so I could probably get it back together with a set of gaskets and bearings. Decisions, decisions...
Now, that is the strangest crank story I have seen so far. I have never seen a piston skirt split, but I was thinking that a piston pin got bent, and it was thrusting on its side, scuffing the cylinder wall from not pivoting properly. On any other day, I would have been right. Today? Today is a very different day, indeed.
That is just crazy.
Anyways, I managed to get a board mostly soldered together, despite a my hyper 4 year old squab pestering me throughout. Not tested yet......someone is now stealing my chickens, so I have to let a BBQ owner 1 block away know I am onto him with a wildlife camera. <insert profanity here>
Attachment 13438
I know, right? I want to blame myself for welding the pushrod guides with flux wire on the engine, but I just can't see how a piece that big got past the screen, filter, into the main gallery and so forth. So it must have been sitting inside the crank like a time bomb since 2016.
Once I had all the slugs out it was apparent the scuffing on the cylinder wall was no more or less than any of the other cylinders so I guess it was exaggerated by the poor lighting of the inspection camera.
A quick + easy test is to apply 12v power between the two pads near the power supply section. Obviously the green power led should light, but if the yellow status comes on shortly thereafter that's a good sign the microcontroller is booting.
Now that's crossing the line. If you need backup I'm only 3 hours away. ;-)
Hey guys, I am back after a super long time, things have been super busy, and it looks like I have some reading to do!
So all the coding is way over my head, and I am sorry I didn't contribute much past opening up some cases, but I do have a decent running engine that I can test on, and it sees high RPM all the time.
If you need a case designed, I can do that and get it printed, or I can weld up a metal one. Please let me know if I can help. Also I would like to buy the components from someone if possible
kur4o can you PM me your email address or some alternative means of contacting you privately please.
Aroberson! You tricked us into building it! So.......THAT was your evil plan all along! We're just going to have to put the leaches on you......it's standard procedure, you know.
Heh.