Hi,
I need to control via de arduino a speed drives for asynchronous motors.
To control the speed of the motor i need to send a signal between 0 and 5 volts to the analog input of this controller. This input has the following characteristics:
Analog input 0 + 5 V or 0 + 10 V (max. voltage 30 V)
? impedance 40 k[ch937]
? resolution 0.4%
? precision, linearity: ± 5 %
? sampling time 20 ms max.
My question is: How can i output this signal from the arduino?
If i understand well to produce this signal i need to use a pwm output and covert it to DC with a low past filter and an opamp?
Any Schematics?
Thanks
Felix
I could be wrong, but if it has the ability to do 0-5v, you may not need the OP amp.
One thing to keep in mind though, and make sure you check, be careful about the mA or Amps it's going to take. You can only output 40ma (max) per pin, up to 5pins for a total of 200ma for the chip. You could look into MOSFETS (I have almost no experience with them, just heard they require very low amounts of MA)
PWM Output may work, but it depends alot on your setup, if you're using an H-BRIDGE, or creating your own with MOSFETS.
But as far as the low-pass bridge filter goes.. I have never even touched one (that I'm aware of) so hopefully somebody else can give some insight. ![]()
Best of luck!
To me you want a real dac (digital to analogue converter)
Or from my memory feed the pwm output into a capacitor with a resistor short.
Or a variable resistor in the from of a voltage divider driven by a servo.
The fact that your signal only has to drive a 40k ohm impedance indeed means you may not need an op-amp to buffer the analog voltage after low pass filtering.
To create a low pass filter wire a resistor from the Arduino PWM output pin to the positive side of a electrolytic capacitor. Wire the the negative lead of the capacitor to ground. Run a wire from the junction of the resistor/cap to your analog input terminal of your motor controller. Also run a ground wire from the Arduino gnd pin to a ground terminal on your controller. Set your motor controller to accept a 0-5vdc analog command signal.
As to the values to use for the resistor and cap, it would help if you had a scope to see how much ripple remains after the filter. I've had pretty good luck using a 5k ohm resistor and a 10mfd cap.
You can kind of measure the effectiveness of the low pass filter with just a DVM meter. First verify you get 0 vdc with the PWM command at 0 counts and 5vdc with the PWM command at 255 counts. While still at 255 counts, switch the meter to read AC volts and the resulting AC voltage reading is a reflection of the amount of ripple voltage.
This works better with DVM meters that have wide frequency response in their AC mode, some do some don't. A scope is the best why to measure/see the effectiveness of the low pass filter. Adding higher resistance and/or more capacitance will increase the ripple rejection. But too much will slow the response to change. And of course the final test is how smooth and responsive does the motor controller work with changing AnalogWrite output values.
Good luck
PS: If you do rather go with an external D/A converter, here is one that uses I2C to communicate with the Arduino and has 8 bit precision just like the Arduino's PWM signal.
Lefty