It might not look like from the title, but one would ask, why we don't use big data on automotive as well?
I'm trying to get my 4425 going with the provided example ps4000.xlsm.
All dlls from SDK PicoSDK_32_10.7.21.227 are in the C:\Windows\System 32.
Windows 7 x64 laptop, with usb 2.0.
I can't seem to get a connection with the oscilloscope and running any macro will freeze excel. See also print screen, where scope details are not shown before freezing.
Debug seems to show cycling of:
While IsReady(handle) = 0
Sleep (5)
Wend
Need someone to kick my butt so I can move forward.
Now at version 564 and a covid later, update log shows:
- added channel B to include ignition coil cylinder 1 (not live tested yet)
- collect from channel B, ignition time when voltage crosses threshold of 100V on rising edge
- mark cylinders 1 to 4 by dividing the time equally (I know, not 100% accurate but for what I need, close enough)
- graph engine speed and cylinders marking (excel error bars), as per photo, note again, ignition is not live tested, I just used some points in order to make the VBA working
- added cylinder labels to ignition marks (don't look left side of graph, I selected timing points too close just to see how VBA works).
Its all a pain to do in excel vba also while learning it, but figuring out the basics, I want to learn python and do this live visualization.
It's finally done. Code is rough, excel is slow, but hey, it's working.
Did a test with all cylinders running normal, and another test with injector 1 disabled.
Just two buttons, one Get Data and one Process Data and all the magic is done by Visual Basic code.
Few more corrections done in VB for the following:
- correct time stamp collection at 0 crossing, it was 3 rows too early done
- reduce voltage threshold detection for ignition coil to 70V, as sometimes misses if threshold set to 100V. Attenuation 10:1 is used.
- improve processing data time by 50% by looking into the actual number of rows with data and not the entire 65000
Found that if I don't adjust the time base to match the rpm somehow, I get VB errors. Something to think about how to select time base based on user input of expected rpm. Should be possible.
Tested with cyl 4 injector wiring removed, with the automatic gearbox in D, and rpm raised to about 1400 rpm.
Another update to cover the followings:
- collect rpm at ignition time
- collect rpm at 90 degrees after TDC
- compare the two values and determine if there was a misfire
- add the misfire to the respective cylinder misfire counter
- display which cylinder misfired and how many times.
Limitations: misfire detection is very simple, does not take into account transient conditions, like rpm going down or even up, I simply have no room in 65000 rows to account for an speed average 720 degrees before ignition time. Real time applications in ecus do that, such that no false misfires are noted.