NOTICE:
When first posting this answer, the story was in most respects exactly the same, but a CircuitLab/Stack interaction or glitch effectively removed the middle bit. I have now completely rewritten and redrawn that. I hope the story line is still sufficiently there, since there was a 2 hour gap between the moments I had time to write.
No, you cannot connect them directly.
As you can see in your table all the signals go from 0 to 10V. Your Arduino (or, better: the Atmel inside it) can only work with signals up to a maximum of its supply voltage. Anything higher can damage it.
So, you need to attenuate the signal, so to speak, into something suitable. I am assuming you are using an Arduino on 5V, so take that into account if you are using it at a different voltage. (I will try to "show my workings" as much as possible).
The simplest way would be:
simulate this circuit – Schematic created using CircuitLab
Here the resistors stack up to 20kOhm together, so if the input is 10V (maximum) the resistors will pull I = V / R = 10V / 20000Ohm = 0.5mA
out of the measuring device. The I = V/R
is called Ohm's law. Also written as V = I*R
and R = V/I
.
Now that current, if the device can supply it will go through the bottom resistor, where we are measuring and it will induce a voltage: V = I*R = 0.5mA * 10kOhm = 5V
, which is exactly what we want.
I leave it to the reader to verify that as drawn, the output will be exactly half the input voltage for each voltage applied.
There is two important things though:
- The ADC that you use should have a high input impedance (>100kOhm, preferably >1MOhm), for the Atmel/Arduino, that is satisfied. - But if you switch ADC channels quickly with the Atmel, give it a few microseconds time between changing channels and assuming the data is right.
- You need to be sure the voltage is never more than 10V.
If you aren't sure about that last one, or you think "better safe than sorry", you can make this modification:
simulate this circuit
Now there is a zener diode on the output, if the input tries to go to 12V, in stead of the output just becomming 6V, the zener will drain some current, to try and keep it at its specified voltage.
If the zener diode is a perfect zener diode, that would be great. In theory a perfect zener exists and starts conducting at 5.10000000001V and then also conducts infinite current, but conducts nothing at 5.09999999999V. Of course, reality is different.
A zener diode will start conducting a little bit below its specified voltage, stealing some of the current away that should make the measurement voltage across the bottom resistor. So at higher output voltages (say above 4V) the response will no longer be exactly divide by two, but it will be a very slightly bent curve.
The effect can be negligible if you use a small-signal zener, with its zener voltage defined at 1mA or 2mA.
End of the power-less (and very simple) designs, start of some more fancy tricks to be added on
((if nothing of the conditions above worries you, you can stop reading here if you fear you might fall asleep reading all this))
Now, there could be another question: What if the measurement device can't source 0.5mA? Or what if I don't know if it can? What if the device has a high output impedance, effectively adding another 2k or even 10k resistor, completely messing up the maths?
You could add an op-amp, if you also have a higher voltage supply, such as a 12V driving the Arduino (since that automatically also shares the ground with its internal 5V). Or a separate 15V adaptor, as long as it is a couple of volts above your input signal's maximum voltage. Only make sure that the supply voltage is below the maximum specified for your op-amp:
simulate this circuit
The op-amp I added just buffers the signal, nothing else. It tries to get the same voltage on its - input as on its + input, when there is negative feedback, which connecting the output back to - is. So if the +input becomes 6V, the op-amp wants to get 6V on the - input as well, the only way it can do that is by making the output 6V. So too for any other voltage in its range.
I have decreased the resistors, because we can expect a modern op-amp to be able to source 1mA with a 2V higher supply than its desired output or input levels. If the supply is at least 4V higher (in this case >= 14VDC) it should always be able to source that in mid to low frequencies and most still at quite high frequencies (that the Atmel can't capture anyway).
1mA gives a better response with the same zener than 0.5mA, because the Zener will still try to steal almost the same current as before, but the effect across the bottom resistor will be only half as bad.
For this to work nearly perfectly at the 0V end you would need a rail-to-rail Op-Amp (they can be found by that name easy enough). But if you don't mind the lower 1V input range (lowest 10%) being distorted you can easily try with a normal one, like the LM358 and see if it can handle your requirements well enough.
The extra resistor (R1) isn't absolutely necessary, I just added it as a "in case the device at switch-on does something silly". If it does very silly stuff the op-amp might still not like it, but at least in this set-up it's much more likely your Arduino will survive it.
More ways to protect input and output
((yet more blabber))
Of course there are many other ways to handle input safety, you could add another zener diode valued at 12V on the op-amp's + pin, if you like, for example, but I suspect that's moving into the overkill domain.
You can also protect your output by adding a diode to VCC (the Arduino's internal power supply), which has one big advantage: If the Arduino's voltage falls, at turn off or because of a heavy load, the protection voltage will fall with it. The best diode would be one with a low forward voltage, such as a Schottky.
Schottky diodes aren't always the best choice, by the way, because they usually have a higher reverse leak current. But since we are working with a 1mA signal in the last schematic, the leakage would have to be more than 10uA to be really noticeable and most diodes rated for 20V or more, when blocking only 5V fall well below that. But if your signal current through the resistors is very small, this is something to watch out for.
It would look like this:
simulate this circuit
I left out the op-amp, because I'm starting to get a bit lazy. I suspect it's still clear enough though.
You can use the Diode and the Zener both, but it should be sufficient to choose one.
More buffering
((With two op-amps you get twice the cool, easily!))
If your op-amp (final drawing/option) comes with two amps in one box, like with the 358, you could put the second one to good use to get your signal more accurate, especially in the case of the zener diode:
simulate this circuit
I have left out the power supply to the amps, but again, laziness sets in.
Now the first amp, again buffers the incoming signal, then the resistors divide that neatly by two, but that signal is then fed into another buffering op-amp. Because the input of the op-amp leaks nearly no current, in this case we can assume it to be zero, even for the adjusted resistors. That is why I made them larger: Wastes littler power. The second amp is again just a buffer, doesn't do anything else, so the signal stays the same, but "gets stronger".
Because the zener will try to clamp the output, we do need a protection resistor to keep the op-amp from melting. But, since this resistor can be very small compared to earlier designs you will notice much less of the little leak below it's rated voltage.
Why else is this a cooler design?
Because the resistance between a decent source of voltage and current (the op-amp) and the Atmel/Arduino input is now much smaller, which means that if you change channels, you can wait only a microsecond or less for the signal to "arrive as is" at the internal ADC system. So you can switch a channel and start the measurement just about right away. The way Arduino will compile your functions it's very likely a 2us delay is already there, so definitely no worrying about that!
One problem though: Now the lower 1V of your 5V signal might get somewhat distorted, so while this helps the higher end stay neater, it will influence the lower end, because before it was the lower 1V of the input, which is 0.5V in the 5V output, or 10%. Now it has become 1V in your 5V output, which is the lower 20%, because there's also an op-amp in the 5V signal path that might not be perfect all the way at its lower supply voltage.
(I re-itterate, a rail-to-rail op-amp has those problems much less. If the signal isn't way too quick, you will probably not notice it. But with a normal LM358 or similar, which is not designed for rail-to-rail, you may notice some weirdness in the lower volt.)
If you want the op-amps to be as perfect as possible from 0V to 5V output signal, you will always have to power them with -2V to -5V on their negative power supply, in stead of the GND of the system, but that requires a whole extra supply voltage.
Conclusion:
All the solutions in the drawings can be used in your situation, each has its own set of drawbacks (extra supply wires, more components, less safety, more distortion, etc) and advantages and what you think you can build and feel sufficient is up to you.