View previous topic :: View next topic |
Author |
Message |
Barney
Joined: 18 Oct 2004 Posts: 41 Location: Newark, CA
|
ADC, want more noise |
Posted: Tue Jun 06, 2006 1:30 pm |
|
|
I have an unusual request, anybody know of a good and simple way to add Gaussian noise to my ADC input?
I am using an 18F6627 and want to turn the 10 bit ADC into a 12 bit ADC using oversampling and decimation. I need +/- 1 bit of gaussian noise to make this work and my noise level right now is well below that.
I need to dither the signal and am thinking of adding a resistor to add thermal noise. The extra time needed for the sampling capacitor to charge is not a problem, my signal is very slowly varying DC. Running some quick thermal noise calculations suggests trying to use just a resistor to add thermal noise is a losing proposition since the resistance and the circuit bandwidth tend to cancel each other. (ie as the resistance goes up the bandwidth goes down)
I know I can add a 12 bit external ADC, but would prefer to avoid the expense and trouble if there is a simple way to dither the signal.
Any suggestions?
Muchos,
Barney |
|
|
Guest
|
|
Posted: Tue Jun 06, 2006 2:06 pm |
|
|
If i could, i would give you some from my circuits!
Sorry, i couldnīt resist
Maybe you could make a circuit to amplify the thermal noise and use an amp op to sum both... It would be silly, but iīm just trying to be forgiven by the joke |
|
|
kender
Joined: 09 Aug 2004 Posts: 768 Location: Silicon Valley
|
|
|
SherpaDoug
Joined: 07 Sep 2003 Posts: 1640 Location: Cape Cod Mass USA
|
|
Posted: Tue Jun 06, 2006 7:49 pm |
|
|
Rather than just adding noise, how about adding an offset of 1/4, 1/2, or 3/4 LSB to the A/D input? Use two output pins and a few resistors as a cheap DAC. You can step through the four combinations in four A/D readings, which is a whole lots faster than the 16 readings you would need with Gaussian noise to get the same 4X resolution. _________________ The search for better is endless. Instead simply find very good and get the job done. |
|
|
Ttelmah Guest
|
|
Posted: Wed Jun 07, 2006 2:06 am |
|
|
The problem with making Gaussian noise, is that producing the required spread, involves fairly complex maths. You can generate 'simple' noise (with a flat distribution, rather than the Gaussian spread), by just reading timer0, and provided the code is not synchronous to this clock, adding the last few bits of this to the incoming signal. You could in fact use this to access a look-up table, containing data to give the required spread, and this would probably be a good solution.
Using this in combination with the DAC solution suggested by SherpaDog, and altering the weightings of the resistors selected, or running the outputs through a ROM to produce this spread, could also be used with good effect.
Best Wishes |
|
|
Barney
Joined: 18 Oct 2004 Posts: 41 Location: Newark, CA
|
|
Posted: Wed Jun 07, 2006 1:31 pm |
|
|
Looks like the cure is worse than the disease, so I guess I have to bite the bullet and add a MCP3208.
Thanks for the suggestions.
Barney |
|
|
Guest
|
|
Posted: Wed Jun 07, 2006 3:03 pm |
|
|
Will putting your pic into the microwave and turn on the microwave gives it guassian noise? |
|
|
Neutone
Joined: 08 Sep 2003 Posts: 839 Location: Houston
|
|
Posted: Wed Jun 07, 2006 3:40 pm |
|
|
In theory you have to add noise to a perfect signal. In practice your signal probably already has noise. The actual noise may not be gaussian but the results are probably close enough to not matter.
In practice with oversampeling, if you hook up a 10 turn pot as a signal it will probably have enough noise to hit every bit value from 0 to 4095. That can be tested very easily. |
|
|
|