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

16F887 Using 0.6v Vref for A/D, need help

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



Joined: 25 Mar 2009
Posts: 6

View user's profile Send private message

16F887 Using 0.6v Vref for A/D, need help
PostPosted: Fri May 21, 2010 12:59 pm     Reply with quote

Hi, I'm using a 16F887 and want to use the internal 0.6v Vref for Vref+ and I can't figure out how to have the device use it. The header file for the chip is uncommented for the most part and I am confused. I have setup the A/D to
Code:
setup_adc_ports(sAN0|sAN1|VSS_VREF);

but can't figure out how to set Vref+ to the 0.6v internal reference.

Any help would be appreciated,
Thanks
John

Compiler version 4.057
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Fri May 21, 2010 1:29 pm     Reply with quote

Quote:
I can't figure out how to set Vref+ to the 0.6v internal reference.

Look in this section of the 16F887 data sheet:
Quote:

TABLE 17-10: PIC16F883/884/886/887 A/D CONVERTER (ADC) CHARACTERISTICS

It says the absolute minimum value allowed for Vref+ is 2.2v, and the
recommended minimum is 2.7 volts.
Wohn



Joined: 25 Mar 2009
Posts: 6

View user's profile Send private message

PostPosted: Fri May 21, 2010 1:36 pm     Reply with quote

The 16f887 has a 0.6v reference on chip that can be used for the comparator or A/D module. It can be set to pin A3. I want to use that as the +Vref. The input has a max of 0.4v so even using a 2.5v refernce would limit the resolution, I need the best I can get. How would I enable the 0.6v reference. Sorry I'm not that good with setting individual bits in register.

Thanks
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Fri May 21, 2010 2:02 pm     Reply with quote

I don't think the Fixed Vref of 0.6v can be used by the A/D.
I looked at the block diagram for the A/D and there is no path for an
internal connection between the 0.6v and Vref+.

I think you could use the Comparator Voltage Reference module, and
configure it to put the CVref voltage on pin A2. Then you could put an
external jumper (a wire) between pin A2 and A3 (Vref+). Then you
could program CVref to setup your Vref+ voltage. I'm not certain that
this will work, because the 16F887 data sheet doesn't give the output
current from the CVref module when it's output on pin A2. The A/D
module requires up to 1 ma on the Vref+ pin to do the conversion.

But anyway, you still believe that you can use 0.6 volts for Vref+
even though the 16F887 data sheet says the minimum is 2.2 volts.

It's possible that you are confused by the A/D block diagram in
the data sheet. This one:
Quote:

FIGURE 9-1: ADC BLOCK DIAGRAM

In the channel selection block diagram, it shows that CVref and the 0.6v
Fixed Vref can be selected as "channels". But that just allows you to
measure them with the A/D. They are not used for Vref+.
Wohn



Joined: 25 Mar 2009
Posts: 6

View user's profile Send private message

PostPosted: Fri May 21, 2010 2:25 pm     Reply with quote

The 2.2v is the minimum to ensure 1LSB accuracy, not the minimum voltage for the input. I may be off 1 to 2 bits but better than a 2.5v refence voltage which would be equivilent to losing 3 bits.

How do I output the 0.6v reference on RA3, there isn't an option in the setup_vref(), how do I set it up in the register thru ccs without using asm code?

Thanks for your time pcm, I appreciate it.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Fri May 21, 2010 3:05 pm     Reply with quote

Quote:

The 2.2v is the minimum to ensure 1LSB accuracy

That's not what the data sheet says. It says 2.7 volts is the
mimimum to ensure 1 lsb accuracy. It says the absolute minimum
is 2.2 volts.

Quote:

How do I output the 0.6v reference on RA3

As I have said, the Fixed 0.6v does not appear to have any way to
be output on pin RA3 or RA2.


I don't think I can do anything more on this thread.
Gabriel



Joined: 03 Aug 2009
Posts: 1067
Location: Panama

View user's profile Send private message

PostPosted: Fri May 21, 2010 3:07 pm     Reply with quote

why not amplify your signal and use a "normal" reference that is within the ADCs spec?

i think that way you wont lose much precision.... at least not as much as you will with the 0.6 vref....

gabriel
_________________
CCS PCM 5.078 & CCS PCH 5.093
Wohn



Joined: 25 Mar 2009
Posts: 6

View user's profile Send private message

PostPosted: Fri May 21, 2010 3:10 pm     Reply with quote

Thats what we may wind up doing, we were trying to keep parts count to a minimum tho. I was hoping we could get away without another IC and 2 resistors.
Ttelmah



Joined: 11 Mar 2010
Posts: 19328

View user's profile Send private message

PostPosted: Fri May 21, 2010 3:15 pm     Reply with quote

The comparator Vref, is _not_ suitable to drive the ADC.
It is not rated to deliver the 1mA worst case, needed from Vref during acquisition.
You will gain nothing. The accuracy of the ADC, degrades slightly worse than linearly, as you drop Vref below 2.2v. The _best_ results, for each bit, will be with a 2.2v Vref. You may well find that going to something like 2.048v (commonly available), does not degrade the ADC significantly, and though not 'warranted', is likely to work well.
You will also find that other things start to go wrong. The ADC aquisition requirements, are based upon the minimum Vref. if you lower the Vref, you have to lengthen the acquisition time, and then leakage becomes more significant.
Realistically, the 'best' thing to do, is amplify your signal....

Best Wishes
Gabriel



Joined: 03 Aug 2009
Posts: 1067
Location: Panama

View user's profile Send private message

PostPosted: Fri May 21, 2010 3:21 pm     Reply with quote

you can use an instrumentation amplifier and set the gain with ONE resistor ;) .... you know... to save you that super expensive extra resistor.

just kidding..... but yeah... amplify, get a rail to rail single supply amp and a 4.096 Vref IC..... and 2 resistors.

Gabriel.
_________________
CCS PCM 5.078 & CCS PCH 5.093
Wohn



Joined: 25 Mar 2009
Posts: 6

View user's profile Send private message

PostPosted: Fri May 21, 2010 3:43 pm     Reply with quote

Non inverting opamp will use 2 resistors, plus a feedback cap to prevent oscillations at such high gain. Its not the cost its just parts count and greater chance for the high impedence .006v to pickup noise. It can be done for less than 20 cents but that wasnt the point. We are using this to replace LM339's and was hoping to have almost no support circuitry.

I just assumed that the 0.6v reference on chip would be able to be used for the comparator and A/D. I realize now that thats not the case, the one diagram, Figure 8-8 shows the 0.6v outputing to "To Comparators
and ADC Module". I guess I incorrectly assumed that it meant it can be used as a voltage reference since it is listed in the "COMPARATOR VOLTAGE REFERENCE BLOCK DIAGRAM" stupid me.
Gabriel



Joined: 03 Aug 2009
Posts: 1067
Location: Panama

View user's profile Send private message

PostPosted: Fri May 21, 2010 3:49 pm     Reply with quote

what is the range of you input signal? what is giving you this signal that needs such amplification?

"most" sensors are 0 - 100mv or 4 - 20mA.

just wondering..

Gabriel...
_________________
CCS PCM 5.078 & CCS PCH 5.093
Wohn



Joined: 25 Mar 2009
Posts: 6

View user's profile Send private message

PostPosted: Fri May 21, 2010 4:21 pm     Reply with quote

The input signal will be 0-.5v with about 100 steps, its a low impedence output from an opamp feeding a very high impedence fet input, we most likely will only be using about 30% of the range with a shunt diode to limit the input voltage to 5.1v. The problem is its not a sensor, its a analog control voltage for a VCA. Im using the pic as a bargraph to visually represent the amount of gain reduction via LED's. it works out to be .006v/dB and the most critical sonic diffences will be heard by the first .060v.
Gabriel



Joined: 03 Aug 2009
Posts: 1067
Location: Panama

View user's profile Send private message

PostPosted: Sat May 22, 2010 5:57 am     Reply with quote

0 - 0.5 .... amp it x10 and you can use VDD as the ref, and you can use the full range of the ADC at 10 bits and you will have plenty more than you asked for....

I'm working on a project for my company where I get a signal from 0 - 0.07 from a water pressure sensor....I get more than 1 centimeter presicion.....I amp it x70 (0.07 x 70 = 4.9)

I don't see what your problem is....
_________________
CCS PCM 5.078 & CCS PCH 5.093
vinniewryan



Joined: 29 Jul 2009
Posts: 154
Location: at work

View user's profile Send private message MSN Messenger

PostPosted: Sat May 22, 2010 8:46 pm     Reply with quote

If you're getting 0-.5v, a very simple but not very efficient fix, but one that may be all you need would be a PNP transistor where the Emitter is connected to V+, Collector is connected to the MCU ADC input pin, and the Base is connected to ground through a 2.2-10k resistor, and also to the output voltage of your output signal. This would give you a better range ADC range, but it would be backwards, which can be fixed with a simple function. Just a thought, I've been in similar situations and this method seems to do the job on some occasions.

Extra parts = 1 transistor ($0.3 cents) and 1 resistor ($0.004 cents)
_________________
Vinnie Ryan
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