View previous topic :: View next topic |
Author |
Message |
ihsanbu
Joined: 14 Oct 2006 Posts: 27 Location: islamabad,pakistan
|
measuring 60VDC to 0V DC using PIC18f87k22 |
Posted: Tue Aug 27, 2013 12:11 am |
|
|
hi
How to measure the 60V DC to 0V DC and with threshold of 47.5V DC Lower limit and there no check on upper limit.
Using ADC, from 0v to 5v dc. range.
regard
ihsan
>>>>>>>>>>>>>>>>>>>>>> |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
|
Posted: Tue Aug 27, 2013 4:16 am |
|
|
I'm confused as to what you really want.
Do you want to:-
1) Measure 0 to 60V DC.
OR
2) Only test for being above or below the 47.5V threshold?
Mike |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9241 Location: Greensville,Ontario
|
|
Posted: Tue Aug 27, 2013 5:19 am |
|
|
Sounds like he's got to 'test' a Telco battery feed or POE system.
One way is to have a voltage divider feeding one of the ADC pins.Then simple read adc..some math( >47.5VDC)...carry on
Easy to implement, just design/tets using say 3.5V as the 47.5 and cut code to work for you, then design a voltage divider to use on the 47.5 value.
hth
jay |
|
|
ihsanbu
Joined: 14 Oct 2006 Posts: 27 Location: islamabad,pakistan
|
|
Posted: Tue Aug 27, 2013 5:57 am |
|
|
thank you for response .... _________________ ihsan ullah khan
Embedded Designer Since 2003 |
|
|
gpsmikey
Joined: 16 Nov 2010 Posts: 588 Location: Kirkland, WA
|
|
Posted: Tue Aug 27, 2013 7:17 am |
|
|
Also need to address what, if any, isolation is required between the measurement system and where the results go or are displayed. Is this some sort of floating supply or what? Isolation is often a very important question that seems to be overlooked until the test circuit lets the magic smoke out
mikey _________________ mikey
-- you can't have too many gadgets or too much disk space !
old engineering saying: 1+1 = 3 for sufficiently large values of 1 or small values of 3 |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19535
|
|
Posted: Tue Aug 27, 2013 7:50 am |
|
|
and (of course), even if no isolation is needed, add an external trap diode, so that the PIC pin will never be taken over 5v. |
|
|
ihsanbu
Joined: 14 Oct 2006 Posts: 27 Location: islamabad,pakistan
|
I got help... PIC18F87K22 & ADC 16bit, for telecom volta |
Posted: Wed Aug 28, 2013 1:06 am |
|
|
Dear all
Thank all 4 guidance
>> Special Thanks to PCM Programmer code samples at forum
I did calculation for my telecom Voltage controlling project.....
may be helpful for some one ...
I am doing a work on Telecom voltage controlling using PIC18F87K22 & ADC 16-bit, with 16MHZ crystal, using EasyPIC ProV7, i did modify the flex_lcd driver for it by masking its RW and its second line comment and PCW 4.130V
Code: |
Input Voltage Selected = from 5VDC---->100VDC
i am using Voltage divider for it,
////////////////////////////////////////////////////////////////////////////
Vin R1 =100K Va R2 =5K
o---^^^^^^^^^^---0-----^^^^^^^^^-----||~
////////////////////////////////////////////////////////
// Voltage Divider circuit produce :
Va =(0.04761904761904761904761904761905)* Vin
// Also
>>Vin = 1/(0.04761904761904761904761904761905)* Vin
=>
>>>Vin = Va * 21<<<< // useful to get Vin Value
// Resolution =Va/digital Counter > Resolution: 5V/65536 = 0.0000762939453125
/////////////////////////////////////////////////////////////////////////////////////////
#include <adctest02.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "flex_lcd.c"
int16 value;
float volts;
float vin;
void main()
{
lcd_init();
//lcd_gotoxy(1,1);
//printf(lcd_putc,"\nBISMILLAH !");
//delay_ms(1000);
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4);
setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_16);
//setup_adc_ports(AN0);
//setup_adc(ADC_CLOCK_DIV_8);
set_adc_channel(0);
delay_us(20);
while(TRUE)
{
// Voltage Divider circuit produce :
// Va = (0.04761904761904761904761904761905)* Vin
// Also Vin = 1/(0.04761904761904761904761904761905)* Vin
// => Vin = Va * 21
// Resolution =Va/digital Counter >
//Resolution: 5V/65536 = 0.0000762939453125
////////////////////////////////////////////////////////////////////
value = read_adc();
lcd_putc('\f');
lcd_gotoxy(12,2);
printf(lcd_putc,"%ld",value);
lcd_gotoxy(7,2);
volts = (float)(value * 4.999999999)/65536.0000;
printf(lcd_putc,"%3.2f", volts);
///// Vin = 21 * Va///////////////
vin = (float)volts * 21;
lcd_gotoxy(1,2);
printf(lcd_putc,"%3.2f",vin);
delay_ms(1000);
}
} |
The Voltage i require at 2.09=46.32,208,and son on..
but i require its stable state value at 47.7 at 2.13V at ADC value 29504 ...
can any one suggest me ... regard to ADC..... _________________ ihsan ullah khan
Embedded Designer Since 2003 |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19535
|
|
Posted: Wed Aug 28, 2013 2:23 am |
|
|
Where are you getting a 16bit ADC from?....
The 87K22, has a _12bit_ ADC. If you select the output to be '16bit', it is just justified to be the top 12bits of the value. You don't miraculously gain resolution.
Then accuracies will be dependant on the resistors in the divider. Unless you are paying a huge amount for calibrated resistors, the 'best' you are likely to have is 0.2%.
Then you have the Vref. You are using the power supply. You'll be lucky to get even close to 7bits using this, let alone 12bit. Every spike and ripple on the rail, will degrade the ADC performance.
You need to learn that the best accuracy you can get is limited by the worst component in the entire circuit.
To get even close to 12bit, you need to be using low noise design throughout. Good ground planes with power routing away from the analog circuit. Low noise components, high accuracy separate Vref, then probably oversample the ADC. |
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
|
Posted: Wed Aug 28, 2013 2:37 am |
|
|
Why not replace this Quote: | Va = (0.04761904761904761904761904761905)* Vin | With Va = Vin/21
I don't understand this Quote: | >>Vin = 1/(0.04761904761904761904761904761905)* Vin |
Is this telling us you're not getting stable readings? Quote: | The Voltage i require at 2.09=46.32,208,and son on..
but i require its stable state value at 47.7 at 2.13V at ADC value 29504 ...
can any one suggest me ... regard to ADC..... |
My copy of the data sheet shows the PIC you're using has a 12bit ADC.
Where have you got your 16bit ADC device from?
Mike |
|
|
ihsanbu
Joined: 14 Oct 2006 Posts: 27 Location: islamabad,pakistan
|
|
Posted: Wed Aug 28, 2013 6:57 am |
|
|
hi mike Walne and ccs forum helper team
i catch my mistake which are device configured as 16 bit adc... i correct it now work OK ..
thank for great help
regard |
|
|
|