CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

AD resolution expand

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
dongseong



Joined: 15 May 2005
Posts: 11

View user's profile Send private message

AD resolution expand
PostPosted: Wed Dec 21, 2005 12:57 pm     Reply with quote

Hello?

Someone tells me that A/D resolution can be easily explanded with software algorithm and small change of hardware.

For example, in order to expand 10 bits to 14 bits,

1) A/D original
2) A/D origianl + LSB/N
3) A/D origiabl + 2 x LSB/N
4) A/D origanl + 3 x LSB/N

then sum all above.

where LSB = voltage of LSB, N = expand times

Could someone explain me how to apply LSB voltage accurately?

Regards
Dong
SherpaDoug



Joined: 07 Sep 2003
Posts: 1640
Location: Cape Cod Mass USA

View user's profile Send private message

PostPosted: Wed Dec 21, 2005 2:35 pm     Reply with quote

You might expand 10 bits to 12 with some care, but 10 bits to 14 is not really parctical. Are you looking for true accuracy or only resolution?

I think what your friend is describing is summing a small controlled voltage with your signal. To go from 10 bits to 14 you would need to create a 4 bit DAC with some resistors on 4 port pins. Then you need to scale the signal to equal 1 lsb of the 10 bit A/D and add that signal to your real signal. This all assumes that your 10 bit A/D is accurate (linear, monotonic, etc.) to 14 bits, which is unlikely.

This is not a good idea. Tell us about your application and we can try to come up with better alternatives.
_________________
The search for better is endless. Instead simply find very good and get the job done.
dongseong



Joined: 15 May 2005
Posts: 11

View user's profile Send private message

PostPosted: Wed Dec 21, 2005 3:00 pm     Reply with quote

Thanks for qucik reply!

I am trying to A/D for pressure sensor with PIC12F675, and expanding 10 bits to 12bits will be OK for me.

Since signal changes slowly, I do not need fast speed either.

Then, is there any good way to get 12 bits resolution with 10 bits A/D?

Thanks
Dong
SherpaDoug



Joined: 07 Sep 2003
Posts: 1640
Location: Cape Cod Mass USA

View user's profile Send private message

PostPosted: Wed Dec 21, 2005 3:20 pm     Reply with quote

First question: Is your signal noisy? If you take sucessive readings do you almost always get the same value, or is it +/- one bit? If it is noisy about the best you can do is take many readings and average them. To get some good ideas on averaging noisy data do a search on this forum for "olympic".

If the signal is not noisy you need to make a 2 bit D/A to generate a "dither" signal. Do you know how to make an D/A from a couple of port pins and resistors? You will set these pins in the four possible configurations to generate four small voltages. Then you need to add this dither voltage to your sensor output somehow. If you are using an "instrumentation amplifier" chip that has a ground reference pin you may be able to drive the ground reference with the dither voltage.

Is there some way you could send us a schematic?
_________________
The search for better is endless. Instead simply find very good and get the job done.
Ttelmah
Guest







PostPosted: Wed Dec 21, 2005 3:25 pm     Reply with quote

Whether you can get any expansion, without extra hardware, depends on the nature of your source, and the errors present. If the errors are uniformly distributed, then you can oversample to get somewhat improved resolution. There have been discussions here in the past, when dealing with some types of averaging filter, about this. You have to oversample by at least improvement^2, so to get a *4 expansion (two extra bits), requires a minimum of sixteen samples. However this process only works if the noise is uniform. On the PIC, it is common, unless sleep mode is used for the ADC, for the largest noise source to be the program itself, and this may well not produce uniform noise (you typically have peaks in the noise spectrum, as the code takes different routes). Try the simple sum and divide filter, either using it 'simply', by adding sixteen readings, and dividing by four, or using the 'rolling' version, that has been posted here many times in the past. I suspect with 'luck', you may well see 11+ bits of repeatable resolution.

Best Wishes
dongseong



Joined: 15 May 2005
Posts: 11

View user's profile Send private message

PostPosted: Wed Dec 21, 2005 3:41 pm     Reply with quote

Thanks for a nice advice.

Since my signal is clean, let me try with "dither", and actaully I was looking for this method.

My pressure sensor is MPX4115, and it is directly conected to PIC.

I do not know how to make a D/A, and need to learn.

Once successful, I will post the result.

Thanks
Dong
kender



Joined: 09 Aug 2004
Posts: 768
Location: Silicon Valley

View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger

Technical notes
PostPosted: Wed Dec 21, 2005 10:48 pm     Reply with quote

These technical notes give a good overview of dithering and oversampling.

http://archive.chipcenter.com/TestandMeasurement/tn033.html
http://archive.chipcenter.com/TestandMeasurement/tn034.html
http://archive.chipcenter.com/TestandMeasurement/tn035.html
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group