CCM Digitizing Arm - 5 axis Faro Arm

When measuring physical objects sometimes calipers, squares, rulers and height gauges feel inadequate and accuracy is questionable depending on what you are measuring. I wanted a tool that can pick up any point in a 3 dimensional space and easily import into my CAD software of choice. I found an design by Nikolaj Møbius from FabLab RUC that got me pointed in the right direction for a cheap alternative to a $3000 want to have “problem”. A few other makers have made arms of various “quality” but there was no definitive guide that I could find. I started out modeling various methods of mounting the encoders and 3D printed 3 or 4 variations before coming up with a suitable setup that was ridged and repetitive in positioning.

The finished 4 axis arm below is a repeatable and accurate (~0.2mm). Worked well, but did not give me the freedom that I want to have with the tip (end effector). The arm uses an Arduino to read the encoders with a serial connection to a computer where you can run a Processing sketch that gives you a visual representation of the 3d space and the ability to export point cloud and DXF model (both 3d and 2d). I have modified the original proof of concept Nikolaj produced.
If your interested in the arduino code, I have a GitHub repository with the 4 axis software if anyone wants to build their own.

I am currently working on a modification to the arm shown above, and have incorporated a 5th axis to give me the ability to reach far more than the 4th axis. In order to implement this additional encoder I have had to completely re-program the arduino from effectively a trig solution to a forward kinematics method. Talk about a HUGE learning curve!

I have some discussions ongoing over at the processing forum as the group there is obviously able to answer some specific questions pertaining to the software platform. I have the arm working off of a Raspberry Pi with a touch screen with the goal of having a wireless platform I can move around the shop or take on the road. So far so good.

Will update on future progress and images of the 5th axis soon as I have hit a bit of a snag. I need to remake a part and my CNC decided to eat a spindle bearing. Should have it up and running in a week(ish) and I can get back to the arm.


That is extremely cool. I like it a lot!

Very cool. Thanks for sharing.

Wow, nice job! Looking forward to seeing the 5-axis variant too, in progress and complete. :slight_smile:

What do you do to record a point? Do you have a button for your other hand, or foot switch, or is it embedded somehow in the effector?

I can’t count the number of times I’ve thought about — and yet never started — making some sort of CMM, though I was thinking of a cartesian CMM using DRO scales for X/Y/Z because it seemed like it might be more hobbyist-friendly. My idea would be more bulky and less flexible than your elegant arm.

The URL to the discourse forum didn’t work for me; said it didn’t exist or was private. Here’s what I found:

Are you running Processing on the Raspberry Pi or on an attached arduino?

1 Like

The arduino does the heavy lifting as it were. It reads the encoders and does the forward kinematics math. It then outputs Cartesian X,Y, Z coordinates via serial. The Pi runs processing and takes the coordinates and displays the point in digital 3D space. Right now either a button on the Pi touch screen or keyboard keys can be used to record a point. Once I have the arm finalized I will put a button on the end effector to trigger a point capture. Likely put two or three buttons on it as there is also a feature where you can capture a surface as well as points.

There are a few things that are exciting about the setup in my mind. With the advancement of arduino variants, it would be easy to have the arduino wireless.

Here is the processing forum link again, hopefully it works, it should be public as its just a forum post:


Really nice concept - thought about a similar idea… I own a license of Rhinoceros3d and wanted to build a arm for interfacing with that. But the calculation of the possible miss measurement asked for optical high resolution encoders with more then 3000 slots per revolution, or very precise magnetic encoders. But both just gave me the precision of about 0.8mm in position on a 0.75m ranging 5 bone setup. Would you share which encoder you found. ( the encoders I found were about 360 Euro each for the optical variant… so I simply parked the project until I find a cheaper sensor setup…)
Thanks in advance… MechaMind

1 Like

@Mechamind Have you seen this?

I think they have an EU shop as well. Currently sold out, but it’s the first time I’ve seen it sold out so I’m guessing it’s temporary.


Not yet, but I’ll take a look! …More then 8000 CPR sounds nice! Last time I endet up with USDigital quadrature… only 3600 counts (optical) and more then quadrupled price. But that was more the a year ago.

Thank you for that hint!


Seems to be magnetic principle (cheaper) but the symmetry seems to be rather good for that.

1 Like

I also expected magnetic, but it’s apparently capacitive according to the datasheet:

That says max 2048 PPR, and I don’t see supply houses offering a higher-resolution model:

Looking at that, I see a related 14-bit single-turn absolute encoder for $50

However, the datasheet says typical accuracy 0.2⁰ — which would be equivalent to 360/0.2 = 1800 PPR, which doesn’t seem better. Why would they use 14 bits to deliver absolute position with an order of magnitude less accuracy than precision?

The AS5048A (14-bit magnetic) datasheet doesn’t claim typical accuracy at all, which makes sense when it’s only the chip and accuracy would depend on the application.

Here’s an encoder package built around it:
though that doesn’t seem to include the magnet, which must be diametrically magnetized.

Here’s another interesting one:

It demonstrates that the sensor doesn’t need to be at the end of a shaft. They have a hollow diametrical magnet which goes over a sensor that is located at the periphery of a shaft. It’s only 10 bit, but you can buy just the magnet and run it over a more precise 14-bit (16384 PPR or .02⁰) sensor; the concept doesn’t change.

1 Like

2048 multiplied by 4 due to the quadrature (see spec foot note)
I also read the capacitive thingy but in the spec they mentioned magnetic influence (saturated stepper stator) so I’m not sure what to believe. Perhaps it is a kind of hybrid.


Right now I am using 600P/R incremental Rotary encoders. Primarily because that was what Nikolaj had used in his project and I took the approach of standing on the shoulders of giants rather than starting from scratch.
Accuracy was well below 0.5mm with the first arm construction, I found the biggest error was not in the encoder precision, rather the arm having flex. Any deflection is amplified up until you get to the end effector.

I will be re-assembling my CNC over the holidays (finally got all the bearings) and can re-make a critical part that was causing problems. At that point I can share the end effector accuracy with the 5th axis. For me, I am looking for something in the neighborhood of ±0.3mm accuracy and repeat-ability. If I need better accuracy than I will start shopping for a used Faro arm. You can get them for ~$3,000.


That’s the problem with me not noticing CPR vs. PPR while trying to read it before my morning coffee. :roll_eyes:

1 Like

Fortunately my systems are running independently from coffee… :grin:

@ beakers: I was able to get a faro from the job, but it seems that they have a time out within the software which requires recalibration + update at faro. So I dropped the idea.


Sounds like you need to setup your own software interface. If your interested in selling the Faro let me know :slight_smile: Seems kind of dickish for a company to tie your hardware to an annual software update / payment. I firmly believe that once you bought it, its yours. If they want to charge for updates, thats ok. But a fee for keeping the hardware running?.. Grrrrr

There was a discussion when our quality dept was moving, to keep it in business or not. But the softwareupdate including calibration would have been 2200 Euro, so I had the chance but did not take it due to the cost / benefit balance. At that time I built myself a cheapish tactile head for my CNC and Im rather happy with that until now… afterwards they additionally decided to update and to keep the device, so its gone.
This is the result of the tactile head… looking closer you can see the printmarks of thr carbide needle I use as a probe… (right side of the coin)


CNC is back in business with new Spindle Bearings! And a week later I found time to get back into the shop and re-make a few parts to finish off the 5th Axis. I also received an enclosure for the Raspberry-Pi and touch screen. Should be a nice package. Still chasing some software calibration items but getting close to having a respectable arm in terms of accuracy.


A bit more progress today. Mostly working on the Processing sketch to make troubleshooting easier. I increased the serial communication message to include the locations of each joint. Then in Processing I included each point and arm. Now I can see each movement of the arm in real time on the screen, not just the end point.


Well I have the arm complete and in use in my shop now. Been radio silent the past month getting allot of things sorted out. I have updated the GitHub repository with the latest code for both the 4 DOF and 5 DOF arms though I have not progressed much on the 4-DOF version as its no longer applicable for my application. I abandoned the Raspberry Pi portion as it was a pain to move DXF files and PtCloud files to my desktop for work in CAD. 99% of the time it will be on my work bench anyway and if I want/need to go remote it can work on my laptop just without any extra work. I do wish the graphical interface was better though.

GitHub Link
Build log/narrative LINK


This is fantastic, thank you for sharing. As a result of finding Nikolaj’s project, I order encoders in order to reproduce the project, then found yours, I’ll be duplicating this effort.

Have you considered using some kind of standard for calibration that offset or account for any measurement error? Is it not necessary or potentially too difficult on the equation side?

I hope you’re planning on making a kit to sell.
I made a 3D printed version just to see how far I could go.
It worked but I’m not able to get a 5th axis.
My accurace was directly proportianal to how slow i could go…curse you 3D plastic parts!

But I am interested in a kit if anyone makes an all metal version with good accuracy/repeatability.