Hi guys,
I have found in the old forum a guy that had the same problem as mine: control a device that is 0-10V controlled with the 0-5V from the Arduino.
One of the users answered this solution, but was not sure about the resistors values :
Assuming my device needs 200mA and using a 2n2222 transistor (beta=300), I found that R1 needs to be of 8.3k Ohm.
Now I am stuck for the value of R2. Can anyone give some help?
Thank you (and sorry if I made some spelling mistakes, english is my second language)
The normal Arduino's do NOT have a 0-5V It's PWM. Is you device fine with PWM?
If so, the schematic is kind of fine. Use something like 1k for R1 and you're safe. BUT the circuit can only sink the 200mA, NOT source it. R2 is just to pull up the output but will limit the voltage.
If the device does need real 0-10V but no significant current (<1mA) you can just use a RC filter on the output of this circuit. Or a RC filter and an opamp circuit.
If the device does need real 0-10V and indeed 200mA, start looking for a proper heat sink...
As always, devil is in the details, WHAT do you want to drive?
Real as in not PWM Like I said, ATmega based have no 0-5V (aka DAC) output although analogWrite() suggests it. analogWrite() is PWM (Google it ;)).
That E908A001 expects real 0-10V. It doesnn't specify the current but it's a control signal so it's probably low. Increase PWM frequency, add amplification (transistor like above or opamp etc) and a RC filter
I used 3kHz PWM, an opamp* with gain 2x and an RC filter (1k and 100nF if I recall correctly) on the input of the opamp.
Btw, it's a bit ironic. The E908A001 will translate the 0-10V to PWM again :
*Remember you need more supply voltage then the max desirable output voltage. The opamp can only reach like 90% (see datasheet) of it's supply voltage. Aka 12V supply if you want 10V out. OR you can use a rail-to-rail opamp.
I have used something similar to the following circuit for driving a 0-10v analogue input for speed control of variable frequency drives. I just use an lm358 op-amp (but most use a rail-to-rail type) and replace the R2/R4 combination with a trim pot. its accurate and works well in noisy environments.
That first circuit is useless for this task. The valve requires an analog value between 0 and 10V.
Put an RC smoothing (lowpass) filter direct from the Arduino. Use at least 10k to swamp the difference in the Arduino output's source and sink impedance. That should give you 0 to 5V analog voltage from the Arduino's 0 to 100% PWM signal.
Put that in an Op Amp with a gain of 2, with a V+ of 12V and a V- of -2V or more.
TouchTheFishy:
Assuming my device needs 200mA and using a 2n2222 transistor (beta=300), I found that R1 needs to be of 8.3k Ohm.
Now I am stuck for the value of R2.
Not that it matters for this, but R1 needs to be 220 ohms or so if using a transistor as a switch. beta is not
relevant.