Those of you who follow ShamWerks on Facebook already got a peek of this thing back in January 2015! Well, it was high time I finally write an article about it, right?
I stumbled upon a picture of a camshaft control bench on Vince/Panelvan's blog (here)...
As I had just bought the high-performance camshaft for my Ghia, the idea of being able to check its actual features (and verify what's given by the part's constructor) made its way ; I was pretty sure I could find a way to make it happen on a budget. And, let's put it mildly, I'm kinda stubborn.
Thinking about it, there must be a way to put together a stepper motor, a digital caliper (cheap chinese models have a serial output), and an Arduino to control all of the above and push measures to a PC through USB... Amarite?
For those of you who don't like reading (aka "TL ; DR Team")
Long story short, after a couple of hours tinkering around, I got myself a functioning bench : here's the result in video :
(watch it in full screen HD 720p to be able to read the results)
Sorry for the less-than-average quality of the video, which in addition doesn't show the latest version of the software... I'll try to shoot another one with a better lighting!
And now, for those who aren't afraid of reading ... Keep scrolling!
I use an arduino as an interface between the bench and the PC, but it can not control the stepper motor directly, it needs a driver ; I found a chinese one, based on a L298, for less than 5€ on dx.com (here).
Beware, if you use the same driver as I did, do not trust the allegedly regulated 5V output on it ; I wanted to use it, but it blew the very first time I tried to ; I ended up with a blown condenser on my arduino...
Speaking of made-in-China, I also buy a 15€ digital caliper... Well, TBH, if I had to redo it all over again, I'd probably go with a slightly more expensive version : the electronics are identical between versions, but the "mechanical" part can be better. The entry-price ones tend to grip/jam a little bit, which can lead to measure inaccuracies.
Since I don't wanna have a battery that dies on me in the caliper, I use a LM317 to feed it 1.64V, generated from the 5V of the arduino (the original battery on those calipers is 1.5V).
I also add two transistors to step up the signals from the caliper (clock and data) to levels the arduino can read (2.5V minimum). That's kinda overkill, just feeding the caliper with a higher tension may have done the trick, but it didn't look nice to me...
I take appart the caliper in order to solder in the output cable (I use an old land-line phone cable, perfect for that use) ; you can find specific cables that will "plug" into your caliper, but they are more expensive than the caliper itself, to solder it is! I than tie-rap the cable to the caliper to avoid mechanical constraints that would for sure rip the solder apart.
After I validated the circuit on a breadboard (it worked like a charm on the first try, I would have never guessed so!), I transfer it onto a veroboard/strip board.
You'll find down here the schematics of my circuit. Mind you, I have no such pretension to say that this is the right/best way to do it, electronics is by no mean into my comfort zone... But it does work great, feel free to modify/enhance it as you like!
The Sketchup model is available here (4Mo).
Bill of materials :
Reg : LM317 Voltage Regulator
T1, T2 : Transistor NPN - BC547B - BC171
C1 : condenser 100 nF - 50 V
C2 : polarized tantale condenser - 1 µF - 35 V
R1: 240 Ω
R3: 75 Ω
R2, R4, R5, R6: 10 kΩ
Resistors are all 1/2W 5% metal film ones. For your information, R1 and R3 are the ones that "tune" the tension regulator (Reg) so that it outputs 1.64V...
The following web sites helped me a lot while designing my circuit :
Now for the bench : I need something sturdy enough to get somewhat reliable measures.
I start with a Bosch Rexroth 45x45mm profil, bought on eBay, but in the future I'll buy from Motedis, they are much cheaper and have all the useful accessories...
The grooves let me easily move the mounts/brackets, and the caliper stand, making the whole bench adaptable to camshafts other that Aircooled VW ones.
For the stepper motor, since I've pulled appart my fair share of printers and photocopiers in the past, I've got a stash of spares... So I picked one ; a nice 200 steps motors, that comes with a 1/3 ratio gear/belt set, for a final 600 steps output ; that's 0.6° increments on a full 360° rotation... Not bad!
I lathe down an aluminium adapter for my stepper motor, and another one for the camshaft (with a nylon screw in order not to dent the camshaft), linked through a flexible coupler. This means I'll need a new camshaft adapter for each and every camshaft diameter... I can live with that, but I can imagine a system using a small chuck instead to avoid that.
Then with some aluminium angle scraps, and a few skateboard bearings, I make supports for the camshaft on one side, and for the motor adapter on the other.
Finally, the caliper is fixed on some aluminium angle ; I angle-grind a VW lift (with some finishing done on the lathe) to put it on the jaw of the caliper, in order to have the same kinematics as in the actual engine.
The stepper motor output is connected to the camshaft adapter through an aluminium flexible coupler (5€ in Chine, agian...), which forgives the alignment errors. It's a 10mm-10mm coupler, that I bored on the lathe up to 12mm to make it fit my already lathed parts.
Finally, to give the electronics some much needed protection, I fashion a box out of some perspex scrap ; I cut it with a jigsaw, then use a heat gun to bend it... The result might not be aesthetically perfect, but it does the job.
I lathe some plastic stands out of a bit of PVC round to attache the electronics... Yeah, I know, plastic screws would have been a better choice, but I did with what was available in my drawers, ok?
There, the whole system runs now, even though some points will need attention.
On these pictures you can see the caliper movement return movement powered by rubber bands : it actually did not work that great, the caliper tends to jam, which creates mistakes in the measures.
In the video at the beginning of the article, you can see I now use a weight (a ratchet wrench extension, stuck on a neodyme magnet) ; it works much better like that!
So, it works, but can be improved... As I was writing this article, a freidn o'mine gave me a good idea to make the caliper movement more user-friendly (thanks aSa!), so here's already a first evolution of the bench!
The idea is to use an eccentric cam clamping lever to lock the caliper in place ; you can find these levers in bike shops, as they are use to lock saddle seats(I got mine from "Decathlon" for 5€ : see here).
So, I order a few more pieces of the same 45x45mm Rexroth profile from Motedis : I ordered 10cm, 15cm and 25cm lengths (for an affordable 1.27€, 1.64€, and 2.38€), as I wasn't sure yet how I'd use it yet. I also ordered a few of those tapped blocks that go into the grooves ; at 0.30€ a piece, I wasn't going to go through the hassle of makin'em myself.
As I modify the caliper's brackets, I make it stronger by using two aluminium angles, to prevent it from bending from side to side.
The result is perfect (see video) : moving the caliper is now done in a matter of seconds, no need to use a wrench to adjust it... Great!
I go back to my lathe to make a new camshaft adapter : it wasn't perfectly fit on the camshaft, fit created a small cyclic error in the measures.
And since I got myself some POM (PolyOxyMethylene), stock, I make 2 adapters : one for Type 1 camshafts (ID 25 mm), and another for 36hp ones (ID 24 mm). Both have an identical 34mm OD, so I can swap'em without having to adjust the height of the bearing support below.
On the feeler side, the one lift I had modified to install on the caliper's sliding jaw broke on me : that's a very hard steel, without any elasticity ; I did tighten a bit too much and it broke like glass.
So I made a new one, and this time I added ttwo MIG welding spots to prevent any "opening" when tightening the screw. No mo'problems!
I also make another feeler with an old 36HP lift ; same method, angle grinder, MIG weld, drilling/tapping. With this one I'll be able to measure my "Okrasa" 36HP camshaft (Joe Ruiz) : the Type 1 lift would not work on a 36HP camshaft, the cam is too small and the lift ends up touching foundry high spots... Many thanks to Eric "Underdog" Simon who sent me a sacrificial 36HP lift to make this one!
I also added a length of profile with a "needle" to precisely align the camshafts on the pulley spot, this way the curves in the software will precisely align too, allowing me to accurately compare camshafts.
Now on the computer side, I needed a bit of software to pilot the bench, receive the data back from it and smartly display the results...
So I dove in and wrote CamWerks.
If you're interested, here's the soft, GPL open source license, you can download it and use it for free. Limited support on the other hand... I like you guys, but I ain't got much spare time!
This is a Java application, you'll need at least Java 1.7 on your computer to run it.
Just unzip the archive, and launch "CamWerks.jar", it should run first try...
If you just wanna have a look at the output from my tests :
The Zip archive will be enough : it contains the files I generated from the different camshafts I had at hand (".cam" files, in the folder "Cam Files") ; even if you don't have a bench connected, you'll still be able to visualize them in the application.
If you wan't to build a bench like mine :
It's a tiny bit more complex, you'll have to :
Flash your arduino :
install the Arduino Serial Command library on your IDE (download here - it's just a handy USB communication library)
Flash your arduino with the "sketch_CamWerks.ino" file (in the Zip archive, in the "Arduino" folder)
Install the RXTX parallel communication library to enable PC/arduino communication (the original website rxtx.qbang.org is down, but I've made the library available here : binary / source).
edit 20210819 : Paulo from afrautotecnica pointed out that the RXTX library was not compatible with Windows 10 64bits, but a compatible version was available here : fizzed.com/oss/rxtx-for-java. Thank you Paulo for sharing!
To make sure these libraries remain available in the future, I've put them here for download as well :
Validation : once your Arduino connected and flashed, from the "Serial Monitor" tool of the IDE, you can try and send the following commands to check the behavior of the Arduino :
PING : the Arduino replies PING_ACK.
STEP : the Arduino replies STEP_ACK, and the stepper motor turns by one step.
MEASURE : the Arduino replies the value of the measure done by the calliper.
For any other command sent, the Arduino should laconically reply "What?".
For those of you who'd like to dive into the code itself, I've put the project on Github : spoiler alert, I wrote a pretty ugly code, just bits and pieces thrown together. Does the work though.
The project is available here : https://github.com/ShamWerks/camwerks
Measuring cycles :
Sometimes, there are inaccuracies when measuring : the caliper may seize up a little, or a grain of dust on the cam, whatever... The result being a notch into the curve ; usually not much, a few hundredth at most... But to avoid that I implemented a N-rotations measuring cycle : I do the full-rotation measurements N times, and then take the average of each measure point. It smooths inaccuracies, while making the whole measuring process N times longer. But hey, no hurry, I can wait longer for a better result!
Cams profile view, as seen from the camshaft's axis :
Deducing the profile shape from the measures was tricky, I've had to ask for help to a math researcher friend of mine! Thank you JB for the tea-biscuits-and-math afternoon!
The result is not perfect, and can only be correct using a flat faced lifter ; it'd be incorrect with a round one (as they are on 36hp), or roller-type lifter.
I also added a curve smoothing algorithm (a simple sliding window average) so that the cams shape would look nice ; long story short, remember this view is provided "as is", don't look too much into it.
2019-11-27 : version 0.2 : update to fix a bug that made the measuring process crash after just 1 step of the motor (when trying to round a double variable that turned out to have value set to "infinity" for some reason - gotta have to find out the root cause at some point)
Following are the resulting data out of the different camshafts I had laying around...
As you can see, the first tab presents a Detailed Report giving different informations : duration re. lift, maximum lift, valve lift re. rocker ratio, lobe center and overlap.
The second tab show the lift curves of each cam ; the third and last tab is an axis view of the cams profiles.
Last but not least, I've added an option in the software to compare two camshafts. It allows to surimpose the curves from two different camshafts in order to visualize their differences.
L&G R280 Lobe 108°
Here we go, let's put my brand new L&G R280 Lobe 108 camshaft to the bench, and compare the output with the datasheet provided with it!
Here's what I measured with my bench :
And now, let's compare this with the camshaft datasheet provided by L&G (the intake durations are given by L&G for a 1.27mm lift). Here's how my measures compare with the datasheet :
Datasheet Value from L&G
CamWerks measured value
1.25 rockers lift
1.4 rockers lift
Not that bad huh??
The biggest delta I found is about exhaust duration : -2.91° / +1.19°, that's a bit much... I'm gonna double check the way I reckon the angle of the "peak" on the cam. Sylvain from Classic-Store (whom did not hesitate spending 20 minutes on the phone with me, while I only sent them a quick technical question... Fantastic customer service, thanks!) told me that it's not uncommon to have 1 to 2 degrees of difference on a camshaft, due to the original pattern/jig wearing off. So, not such a bad result in the end.
I've not yet managed to calculate the opening advance and closing retard... This information depends on the position of the camshaft in relation to the crankshaft (well, actually, the TDC and BDC), and I've not yet managed to integrate this into my formulas! (for now!)
I also do not have the "commercial duration" : well, this value is of no real interest actually, the lift at which it is measured is arbitrarily chosen by manufacturers. Only the durations at 1mm and 1.27mm loft are relevant to compare camshafts to one another... On mine, the advertised 280° duration is reached around 0.48mm lift.
Stock 1600cc camshaft :
Below is a comparison of my measures against the stock VW camshaft specs.
By the way : the stock values shown here are from VW forums (Flat4Ever and TheSamba), I'm not absolutely sure of the source... If you have any better figures, I'd gladly update my table!
Stock VW value
CamWerks measured value
Intake duration @0.50
Exhaust duration @0.50
Intake duration @1.27
Exhaust duration @1.27
Anyway, I'm still within the stock specs!
Please note that the measured camshat is a used one, therefore the result may somewhat vary.
Comparing stock 1600 with the LG R280 Lobe 108°
The cams views doesn't look great towaards the peaks... My original measures probably weren't clean.
36 hp "Okrasa" / Joe Ruiz :
Comparing stock 36hp and Okrasa version
Conclusion and future evolutions...
I'm not completely satisfied with the lifters I modified to mount on the caliper... They're not exactly parallel to the camshaft (wel, the angle grinder isn't know to be an accurate tool, right?), so they do not rest perfectly flat on the cam... Gotta do somethin'bout it.
And on the software side, I'd like to add the durations on the cams view...
The results are consistent and can be reproduced (I gaet only up to 3 hundredth of a millimeter difference between to measures) : for a prototype I threw together on the side of my workbench, I'mm really happy with the result! Yet I've no way to know how accurate my measures are : for that I'd need the output of an actual, professional bench, and compare the output with wine... I may have a solution to do just that, I'll let you know.
Anyway : keep in mind you should see this bench as a prototype, a "proof of concept", not a finalized project... But it already does the job ; hopefully it will give ideas to some of you!
FAQ / Questions & Answers
1. can you provide support for your software? / Can I use a L298xxx driver? / Why do I get an XYZ error when running your software? I can't get to communicate with the arduino?
I am sorry, I can only provide a very, very limited support. Between my job and my family duties, I have very limited left free time. Several people have tried to make their own CamWerks bench, but failed due to a lack of any previous experience with electronics, software or arduino... And I have not been able to help them.
It is not such a complicated project, but you'll need some previous arduino experience if you don't want to end up in a dead end with the PC communication part. I highly suggest you first spend some time on Youtube learning the basics of arduino programming before you start this project.
2. Do you sell parts / complete kits to build a CamWerks bench?
No, I do not sell kits, nor parts. I mainly built this bench as a prototype, using parts laying around my workshop. If you wanna build your own, you'll have to adapt.
Elvira : Rebuilding the 36hp, episode 8 : cooler, tinware and shroud
episode 8 : cooler, tinware and shroud
I start by sprucing up my oil cooler. I put it under pressure to ensure it is still air tight, using a bicycle tire valve (same method I recently used for my intake manifold). It holds at 5.5 bars : we're good here.
Thorough cleaning using brake cleaning fluid and compressed air, giving the whole damn thing a good shake to make sure I get rid of any muck sitting in all the nooks and crannies inside...
Then I give it a light sandblast to remove the flaking off original paint (I obviously first taped shut the oil in/out holes), and then a thin coat of high temperature spray paint, just to prevent rust. Just to make sure the sandblasting did not affect the oil cooler, I give it another pressure test ; still holds at 6bars, we're still good (#paranoid).
It then goes back on the engine with a couple of brand new gaskets. Next !
Fan shroud and tinware
Again, because of my modified cylinder heads, I gotta touch up the tinware to make it fit the new engine width.
Since I'd rather keep my original tinware untouched, I managed to get my hands on a new set of tinware and fan shroud to modify them. That new shroud is slightly different than my original one, it doesn't feature the top recess (which makes room for the oil bath air cleaner)... Prolly an older shroud ; well, since I wanna move later to a two carbs setup...
For the two over-cylinder tins , it's pretty straight forward : I just Dremel-cut 3.2mm at their base. Done.
For the shroud, well, it's a bit more tricky. I make two triangular relief cuts on each side, which I then bend inward and weld back shut... And there you go, a 6.4mm narrower shroud.
Well, it did take a few hours to weld/grind!
The two tins get sandblasted ; the shroud is too big for my sandblasting cabinet, so I sand it down to bare metal with an electric file.
Then, the usual ; anti-rust primer, some bondo finition (the shroud looked like a mine field), filler primer, sanding, and then finally painting with a two-component polyurethane spray can.
I wanted to give a shot to this product for a while now, as a friend recommended it to me... Not exactly cheap (25€ the spray can at Vernicispray), but I gotta say, the result has NOTHING to do with that of a standard spray can! Shiny! Well, sure, as I used it in my dusty garage, it's not perfect by any means, but way good enough for engine tinware as far as I'm concerned.
In order to use these spray cans, you first have to hit the bottom cartridge, that holds the hardening component, then shake the damn thing a couple of minutes. You than have 6 to 7 hours to use the product before it hardens... So you need a bit of organization if you want to spray more to one coat!
Just one drawback I experienced : it might be because the temperature in my garage was too low, but by the end of the can, it spitted droplets instead of a nice even spray (even though I did heat the can before use by putting it above a radiator, and made sure the nozzle remained clean)... Just be careful.
The oil filler, small tin below fuel pump, and front/back half-moon tins all get their lick of paint as well... I did not originally planned to do so, but they looked dull next to the other shiny parts...
About a dozen years ago, I converted my circuit to 12V, using a rare 90mm generator (ref. VW 113903031E, ref. Bosch 0101206116), and a fitting Bosch 14V 25A regulator (ref. Bosch 0190350049).
But that regulator only held by one single screw on top of the generator, and since it was a bit too long, it had to be set askew... And, well, you know my OCD.
So i took a deep breath, a drill press, and drilled a 4.2mm hole in the generator body (making sure I wouldn't drill into a coil inside, obviously), which I proceeded to tap at 5x80 like the other one. Done! I then gave a lick of paint to the regulator, cut 3mm from its back stand, and now it ssits aligned with the generator. Much better!
As usual, since nothing is ever simple, while putting back together the fan assembly, torquing the nut at 6mkg, the expansible washer broke on me... Argh. Ordered a new one from VW Classic Parts (ref. 111119135), yet another week to wait... Damn, restoring these machines requires infinite patience!
To put everything back together, I ordered a set of stainless steel tinware screws identical to the original ones (mine weren't looking good). The cardboard "seal" between the generator and its stand is glued in place using Gasgacinch.
I also give a coat of satin black on the coil (an actual, real blue Bosch one), the generator's pulley, and the oil pump plate (which I had forgotten, and already showed rust spots).
The coil also receives a sticker reproduction to make it look like an old 6V one... That'll make the trick!
After a bit more of fiddling... TADAAAAA!!
It seriously starts to look like an actual engine, right??
OK, almost there now... If the pain in my shoulder gives me some slack, this baby should run pretty soon!
My Golf came equipped as standard with a Pierburg 2E2 carburetor. When this one works fine, it's a great ride...
But in the other hand, when it starts acting, it's a PITA : it's full of vacuum modules, dilatation elements,wax component, in which the cooling liquid goes through... Kind of a Rube-Goldberg machine, next to impossible to fix.
And you guessed it, mine started acting weird, it did not like last April's engine swap (I did write about it at the time already).
Around a decade ago, I had found on eBay Germany a rebuilt 2E2 for a fair price, but unfortunately the vendor doesn't exist any longer. There's a specialist in the UK (Bromyard) that offers complete Pierburg 2E2 rebuilding services, but for a hefty 395 £ + S&H (that's over 500 €), I wasn't too keen on going again with that same Hell-of-a-carb (that being said, looks like that company does a great job).
I also had the option of buying a brand spanking new Chinese reproduction of the Pierburg 2E2 : you can find them on AliExpress, and they will set you back around 100 €. I have to admit, I'm a bit skeptical on the quality of these...
Long story short, I finally bought a Weber DMTL 32/34 conversion kit from EuroCarb via eBay. It's cheaper this way than from national french re-sellers, 324.50 £ w/ S&H (which is 380 €, would have been 455 € w/o S&H at local stores).
It's a beautiful kit, very well engineered. Installation instructions are clear, it's almost plug'n'play... Even thought the french traduction is a bit sketchy (and the fuel line clamps are a bit small, but I'm nit-picking).
So now, no more faulty automatic choke, which functioning is a matter of voodoo sorcery, back to basics with a good'ol manual choke!
Installation note : the small bit at the end of the throttle cable cameinto contact with the vaccum element at the back of the carb, preventing the throttle from coming back to idle. I snapped it with a pair of pliers : fixed (on the middle picture below, you can still see the contact point before the modification).
I installed the bloody thing on 01/29/2017 and since then : pure HAPPINESS! Starts neatly, acceleration is linear, the engine doesn't die on me any more when cold, more torque at low revs... I definitely should have done this a long time ago!
Happy New Year * 2017 *Bonne Année * 2017 *Feliz Año Nuevo * 2017 *Buon Ano * 2017 *Gutes Neues Jahr * 2017 *
OK, simply put, I for one will not miss 2016 a bit, it's been a tough year for many reasons. Good riddance!
In the other hand, 2017 will be a great year, full of changes, at least for me! (edit 20170720 : told ya! )
I wish you all a very Happy New Year, Health-Money-Happiness-Oh-But-You-Know-As-Long-As-You're-Healthy blah blah blah.