Main Site Documentation

1 Bit ADC


I just read about 1 BIT ADC. Basically it’s an op amp plus a PWM generator and a counter. Would gadgeteer support something like this? If it does then that would be EPIC!


Why would you need this where we have real analog outputs? 10bit or 12bits :slight_smile:


From what I can tell it’s useful for approximating analog output from digital pins?

I don’t know why you COULDN’T “support” it in Gadgeteer (“implement” is a better word probably), after a fashion. You have access to the tools, PWM, GPIO, what you don’t have is jitter-free output.

As Gus said, why, though? You have a real live DAC…


Cuz I want 16 bit resolution.


Out of curiosity, what do you need 16 bits of resolution for?


@ Andre.m Haha… That’s funny. I need to obtain linear position feedback across 9 feet. 12 bit isn’t high enough.


Linear encoder, probably easier. Rotary encoder on the motor shaft also a possibility.


Yes, Linear encoder, but it must have absolute position encoding not that dead reckoning stuff. Over 2.3 meters (9 feet) feet to represent a resolution of 1 mm I would need 2300 values. I need .1mm resolution; 23,000 values.


If you start at “home” and count up/down from there, that gives you absolute position, no?


Increasing the ADC resolution will not neccesarily solve the problem.
Often the analog part can not provide a signal of the neccesary quality.
It’s like with digital cameras: 16 MegaPixels does not bring more resolution if you use a lens that was made for 3 MegaPixels. You just get more pixels of the ‘same’ color, or a lot of noise…

btw. there are 16 bit ADC you can read via SPI.


It is my understanding, however, that even a 16-bit ADC won’t give you 16-bits of absolute accuracy. To get anything like that, you would need extremely low-noise references, precise calibration, and extremely accurate temperature compensation.


kurtnelle, when you say 1-bit ADC do you really mean delta-sigma ADC?


@ godefroi, Yes I do mean delta-sigma, but 1-bit sounds cooler; also I need to know the position at power up. Also I can’t do rotary encoding because the stepper drivers do 1/128th step (which gives 25600 possible positions that I would need to track)


@ andre, :frowning: I think it sounds cooler and less scary than “delta-sigma”. Also, yes it’s a legit name.


Google almost never lies:

The above description shows why the impulse is called delta. The integral of an impulse is a step. A one bit DAC may be expected to produce a step and so must be a conflation of an impulse and an integration. The analysis which treats the impulse as the output of a 1-bit DAC hides the structure behind the name (sigma delta) and cause confusion and difficulty interpreting the name as an indication of function. This analysis is very widespread but is deprecated.


Rotary encoding doesn’t mean “count the steps of your stepper motor”, it is an actual thing where shaft position is “sensed”. You’re still counting pulses, but they’re not related to stepper motor steps.

There’s a reason why existing CNC setups use linear or rotary encoders; it’s because it’s the cheapest, easiest, most reliable, and simplest way to implement motion control.

As to the original question, now clarified, “does Gadgeteer support delta-sigma ADCs”, yes, of course, Gadgeteer doesn’t care what kind of ADC is in use, it’s just a module.

As to whether an ADC of any sort is a suitable solution to the position sensing problem, well, that’s a whole other question.

Why do you need to know the position on power up? Could you not store the position before power down, and thus know the position on power up?


Basically all modern ADCs used in high end audio applications and many high resolution industrial ADCs use a sigma delta architecture. Sigma delta converters start out digitizing the input signal with 1 bit resolution, they just do it really, really fast. Typically 64 to 256 times the actual final sample output rate. Then they apply some very sophisticated noise shaping filters to the 1 bit data that smooth and decimate to get much higher resolution at the final, lower output sample rate. 24 bits at 192 kSamples/second isn’t unusual now a-days. TI actualy has a 32 bit ADC that runs at about 8000 samples/second. However, none of these devices in a real world system can achieve the full resolution theoretically possible with that number of bits but they come close. To get one part in 23000 resolution, you’d need a complete system including whatever position transducer you’re using, the power supplies, the analog front end, the ADC and all the other bits and pieces with an effective resolution of 15 bits. Nearly impossible with a 16 bit ADC. However there are lots of 24 bit converters that could do the job if you apply them carefully (very, very carefully). You may want to look at the TI 1281 24 bit ADC ( It has an economical evaluation board with a USB interface for easy testing. The device itself has a SPI-like interface ( that may work with some Gadgeteer boards.

Without knowing anything about your application, I’d guess that the biggest problem you may be facing is finding a 2.3 meter position transducer with 0.1 mm accuracy I don’t think any linear potentiometer type device will have the required linearity but I’m not all that familiar with linear pots. It kind of depends on whether you need repeatability, resolution or absolute accuracy. There are plenty of fancy magneto-restrictive linear position transducers with resolution in the 0.01 (10 micron) and better range but you’ll need a truck load of cash. Here is one Here is something that comes close and might only need a small SUV full of cash If you’re driving your actuator with a lead screw or similar gizmo, then like the previous post mentioned you may be able to find a mult-turn absolute position encoder. I’ve used all of these devices but never over that long a range.

What you’re trying to do is actually pretty darn hard if you really need to know where you are repeatably with 0.1mm accuracy over a 2.3m range. If you describe your actuator in a little more detail, it might help.


I forgot to mention the cream of the crop for optical linear position transducers These guys and the high end MTS stuff I mentioned earlier actually have much better resolution than you need. I’ve used their high end stuff for lengths up to 0.5 meter or so and it may be that they have slightly lower resolution stuff that is more affordable for the length you need Both the MTS and Heidenhain transducers have digital interfaces like SPI and SSI. The Gadgeteer hardware may not be able to read them fast enough depending on how fast you’re moving and how fast you have to update your control loop (or whatever you’re trying to update)…

Good luck


And last but not least, here is a range of high resolution multi turn absolute encoder with various kinds of digital outputs. Again I’m guessing, but my guess is that a digital output type device, rotary or linear, will get you were you need to be if you can afford it.

Edit Whoops, looks like I didn’t actually put in the link. Here you go:


We are using an AS5132 in our system. It needs one diametric magnet on the shaft and can then give you 360 counts per revolution, and can count 512 revolutions, at up to 72000 RPM. It interfaces over SPI or two quad encoder outputs.

They have other chips like NSE5310 which uses a linier strip magnet that has North South poles every 2mm. This chip has an I2C interface and gives you 0.002mm repeatability.

But none of these gives you an absolute value at startup. This is why all such machines, including big CNC machines go to a “Home” possition at startup. This Home possision is sensed using limit switches.