General > Frequently Asked Questions
How to scale an analog input data
(1/1)
support:
The built-in analog ports on all the M-series PLC return data in the range of 0 to 4092 which corresponds to the full range of voltage input presented at the analog pin. However, very often a user needs a formula to translate this numeric data into units meaningful to the process (e.g. degree C or F, psi etc). To do so, you need to know at least two reference points of how the native unit map to the PLC's ADC reading.
Reference Point ADC Reading
=========== ==========
x1 a1
x2 a2
Hence, for any reading A = ADC(1), the corresponding X is derived from:
X - x1 A - a1
--------- = -----------
x2 - x1 a2 - a1
==> X = (x2 - x1)*(A - a1)/(a2 - a1) + x1
Note that since x1,x2,a1, and a2 are all constants the actual formula is much simpler then it appears above.
E.g. Temperature measurement
========================
Temp ADC(n)
30 200
100 3000
So for any ADC readings A, the temperature is:
X = 70*(A - 200)/2800 + 30
Note: To get better resolution , you can represent 30 degree as 300 and 100 degree as 1000 so if X = 123 it means 12.3 degree.
[Edit 2014/7]: If you are using Fx PLC or the SmartTILE-Fx then you can use floating point operation directly without having to use integer to emulate the decimal point. So the formula could be:
X# = 70.0*(A-200.0)/2800.0 + 30.0
Fernandz:
I just posted in "Technical" about a sensor that has a 32 to 200 Deg. F range. This is what I know about scaling I hope it helps.
We know that our ADC is 0-5volts and will send a count of 0 to 4092
So a 5 volt signal will be counted as 4092, and 0 volts will be a count of 0. Lets say our sensor outputs a signal thats proportional to temp. say .010v per'F and at 32 DegF we have an output of .32 volts.......... (.32 / .010v)=32'F and 200'F is an output, from the sensor, as 2 volts.......(2/.010v)=200'F
|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 .32v 2v 5v ' ADC volts
| |
0 261 1637 4092 ' Converter count
[-- Our Sensor--]
In order to get the Converter count of 261 and 1637 I use the formula
count=4092/5*ADC(voltage)
So count=4092/5*.32
count=818*.32
count=261
Once you have your converter counts then use the above formulas to read temps. EG. temp=168*(ADC(n)-261)/1376+32
This is how I do it, keep in mind I'm no engineer and self taught.
DAlgie:
I have a nice Excel program for doing just this, scaling an analog input. I'll send it to anyone who wants it.
Ruaidhri:
@DAlgie
could you send me a copy of this im starting to struggle with these adc's
thanks in advance
Ruaidhri
Navigation
[0] Message Index
Go to full version