View Full Version : Multiple analog inputs ?
rngd
- 25th February 2008, 07:19
Hi,
Im using a PIC 16F877A. I want to read multiple analog inputs at the same time and then compare their values. I have read somewhere that after the first ADCIN, I have to delay a few miliseconds before doing ADCIN again.
Can someone explain this please ? How long should I have to delay and where should I delay ? Anyone have an example code ?
Also, what else should I know about taking in multiple analog inputs, as in potential problems, etc ? I've read a bit about noise problems but there wasnt much explanation .. Any links will be very helpful. Thanks everyone.
edit: Ive looked at the datasheet but couldnt find any useful info.
mackrackit
- 25th February 2008, 07:24
Go here for example code and it may also answer your question.
http://www.rentron.com/PicBasic1.htm
Then scroll to:
A/D & Using The 8-Pin PIC™ Series
bullet
Click HERE for: How to build a 4-channel A/D converter using the PIC12C671.
bullet
Click HERE for: Using the 8-Pin PIC12C671 A/D Converter.
bullet
Click HERE for: Using the 8-Pin PIC12C671 with PicBasic.
bullet
Click HERE for: Using the PIC16F877 A/D Converter. This example displays 3-channels of analog input on an LCD display.
Never had any problems with more than one myself.
nomad
- 25th February 2008, 07:36
you can also see http://www.picbasic.co.uk/forum/showthread.php?t=1659 or search the forums, there's lots of good info here.
rngd
- 25th February 2008, 07:55
Go here for example code and it may also answer your question.
http://www.rentron.com/PicBasic1.htm
Then scroll to:
Never had any problems with more than one myself.
Do you have any examples which use ADCIN and put the input directly into the variable (see below) ? T
you can also see http://www.picbasic.co.uk/forum/showthread.php?t=1659 or search the forums, there's lots of good info here.
Thanks ! Just to clarify, so my code below can work without problems ?
define adc_bits 10 'define number of bits in result
define adc_clock 3 'clock source3=RC
define adc_sampleus 50 'set sampling time in microsec
adcvar1 var word
adcvar2 var word
diff var byte
start:
adcin 0, adcvar1 'read channel 0 to adcvar1
adcin 1, adcvar2 'read channel 1 to adcvar2
diff = adcvar1-adcvar2
select case diff
...
Thanks guys. Any other links will be very helpful.
Acetronics2
- 25th February 2008, 08:20
Hi,
IF you want "real same time" measurements ... simply use :
1) slow variatons : RC Low pass on ADC inputs to filter and "damp" a bit
2) quick variations : External LF398 ( i.e.) Sample and Hold circuits ...
3) Use two external ADCs
4) Use a differential OPA ...
And then use the ADC ... or read the ext ADCs.
remember The Pic can do ONE THING ONLY at a time .... but can drive many peripherals at the same time ....
Alain
rngd
- 25th February 2008, 15:13
Hi,
IF you want "real same time" measurements ... simply use :
1) slow variatons : RC Low pass on ADC inputs to filter and "damp" a bit
2) quick variations : External LF398 ( i.e.) Sample and Hold circuits ...
3) Use two external ADCs
4) Use a differential OPA ...
And then use the ADC ... or read the ext ADCs.
remember The Pic can do ONE THING ONLY at a time .... but can drive many peripherals at the same time ....
Alain
Thanks Alain, but I dont think I need 'same time' measurements.
OK, so I have read the links. If my code is like this
pair1:
adcin 0, adc1 'read channel 0 to adc1
adcin 1, adc2 'read channel 1 to adc2
diff = abs(adc1-adc2)
if diff>tolerance then
' run servo1 for x seconds
goto pair1 'recheck values
else
return
endif
meaning I repeatedly check the analog input until 'diff' is less than 'tolerance', there will be no problems as I have
DEFINE ADC_SAMPLEUS 50
at the top, and this will add the delay between each ADCIN automatically. Am I correct ? Just want to confirm.
ps. I also read that sampling at 8 bits instead of 10 will improve the speed and stability when using multiple analog inputs. Will reducing to 8 bits help a lot, or can it work just fine with 10 bits ?
Powered by vBulletin® Version 4.1.7 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.