negative voltage signal?

I have a motor that is at its minimum angle when signal is -5V and at its max angle when the voltage is 5V.
The motor is a galvo scanner used for steering laser beams.
As I understand the analog signal pins on arduino go from 0 to 5V, not -5 to 5V.

Whats the quickest/best way to overcome this limitation?

Voltage divider (to bring the signal down to <5V peak to peak) + 2.5V voltage off-set via an OpAmp.

Maybe try an opto coupler to convert 0 to 5 to -5 to +5.


OK - is this the Arduino driving the motor or the Arduino reading the signal from the motor? I assumed the second, larryd the first.

Do you need a digital (on/off) signal for that motor (then the optocoupler solution may work), or an analog signal?

Good point.

The motor is powered externally.
Arduino (or another device originally) sends a -5 to 5V analog signal to control the angle of the motor (and therefore the mirror angle, and therefore the laser beam angle) between negative 45 to 45 degrees. The angle defaults to 0 when signal voltage is 0.

You are saying analog.
There is no analog out on the Arduino, only digital.
You can only get 0 or 5 volts.

If you need -5 thru +5 you will need a D/A converter, see the Adafruit.

Example MCP4725 Breakout Board - 12-Bit DAC w/I2C Interface : ID 935 : $4.95 : Adafruit Industries, Unique & fun DIY electronics and kits


Since it controls mechanical something (heavily) filtered PWM should be sufficient - or not? I guess it will take many long ms for the mirror to move from -45 to 45 anyway.

It sounds like this motor is some kind of servo to me - but as OP didn't provide any specifications other than that he basically wants an analog -5 to +5 output which is not powering the motor as such, I'm not going to guess whether PWM can work for this particular application.

The DAC as linked to above should work to provide the 0-5V signal.

That should then go to the positive input of a rail to rail OpAmp, with a +2.5V off-set to the negative side, 2x gain and dual power supply, for a +5/-5V signal.

Like I said the motor is a galvo scanner. It's a chinese galvo, those don't really have any specs, they are copies of US or European galvos, such as this one.

Like I said the motor is a galvo scanner. It's a chinese galvo, those don't really have any specs,

Of course they have specs, they're just not always that wel documented. This one, on the other hand, actually has a datasheet available.

Ok this is bit confusing after I reread the topic so please let me reprhase my question, in short:

I need Arduino to be able to send an analog signal ranging from -5V to 5V. What do I need?

Google translate;

product manual
15K rate SC17 scanning galvanometer system consists of scanning and scanning part of the scanning motor.
The system is simple and efficient circuit, mature and stable, the device layout structure is clear, nice, alignment is reasonable and rigorous. Motor from sophisticated equipment and the use of complex manufacturing process made of high security, continuous work hundreds of hours without hot.
Servo drive board parameters
Power supply voltage: + 12V / 1.0A, -12V / 0.5A (optional ± 15V)
 analog signal input impedance: 100K ± 1% Ω (single-ended input)
 Analog position input range: ± 10 V, ± 5 V (optional)
 working temperature: 0 ~ 50 ℃
 Scan angle: factory setting ± 20 ° (optional ± 30 °)
 Scan speed:> 10Kpps (30k ILDA standard test chart)
 lens size: 7mm * 11mm * 0.6mm
 lens reflectivity:> 99% @ 45 ° incidence (covering wavelength: 380nm-700nm)
Drive board size: 74mm × 45mm × 26mm

1, unpacking inspection. According to the packaging carton on the label shown in the product name, model specifications and accessories type
With the number, one by one check, with or without errors. Check for signs of damage due to shipping, especially for mirrors
Whether the tablet is loose, damaged traces.
2, before the work must drive plate and motor base fixed in a large area of the metal plate, taking care to keep good
The air convection, in order to heat.
3, the factory when the scanning system is equipped with a variety of cable, the user if you use other lines to connect, please note
Refer to the driver board wiring diagram. The serial number of the motor must be consistent with the serial number of the scanner plate, and the pair of X and Y drive plates and the motor respectively
Should, otherwise there will be asymmetric patterns, such as rounding oval.
4, the scan board has been adjusted factory, in addition to IS potentiometer, the user may not adjust other potentiometers, or
Can damage the galvanometer. According to the use requirements, the size of the pattern can be adjusted potentiometer IS, reverse rotation will increase
Pattern, but can not be unlimited up, or it may damage the galvanometer. And to X plate and Y plate at the same time adjust the symmetry,
Otherwise, the deformation of the pattern printed, such as a round oval.

5, do not live plug all kinds of cable live, or damage to galvanometer.
6, pay attention to protect the lens. Lens fragile, careful not to touch the lens during installation, can not have any
Material contact lens reflective surface, or dirty lens or scratch the lens, affecting the reflectivity of the lens, and even burn
Off the lens. Laser dimming, pay attention to the laser beam do not hit the lens glue Department, due to glue heat, easy to create
Into the lens blown. When the lens is dirty, use cotton sponge lightly rubbed with acetone.
7, when the boot abnormal sound or other abnormal phenomenon, please shut down immediately, troubleshooting and then boot to avoid damage

Tom… :slight_smile:

Thank you. The galvanometer is quite standard.
Issue is this:

I need Arduino to be able to send an analog signal ranging from -5V to 5V. What do I need?

A DAC with the appropriate output.

Easiest would be a 0-10V DAC and then split the signal into a -5 to +5V signal.

Can you recommend any 0-10V DAC?
Im aware of 0-5V one.

And then what to use for 0-10 to -5-+5V?

Don't know, never used a DAC myself, just know how they work.

If you can't find a 0-10V you can also use a simple OpAmp circuit - get a dual power (+5/-5V), rail to rail OpAmp.
2.5V (voltage divider or use a reference diode for better accuracy) on one input, 0-5V signal on the other input, 2x gain, and you have your -5 to +5 signal.

get a dual power (+5/-5V)

how would you recommend to get that from a single 12V or 5V DC PSU?

2.5V (voltage divider or use a reference diode for better accuracy) on one input, 0-5V signal on the other input, 2x gain, and you have your -5 to +5 signal.

wont this cut the resolution in half?

Are you going to use that driver board that comes with the galvo motors.
I think you must, because you need a lot of drive power to get them quickly into position.

If you use that board, then you have a dual rail supply available for a 0-5volt DAC to +10/-10 volt converter.
That voltage converter can be made with a common opamp and three resistors.

DAC to the + input via ~2k2 resistor.
5volt DAC supply to the (-)input with R.
2R resistor from (-)input to ground.
2R resistor from (-)input to opamp output.

R could be 1-5k, so 2R could be 2-10k.

I have done this to power servo controllers. I tried several things before I found something that was consistent enough to not drift.

I started with PWM and capacitor and resistor. It was close, but wasn’t stable enough for the accuracy I needed. I don’t remember what all I used in between, but I remember that I ended up using 2 DAC chips, because it needed all the grounds to be connected. Otherwise, the calibration was affected by strange things. Humidity in the air, proximity of large metal objects, other machinery using large currents on the same circuit…

But those I2C DAC chips are remarkable. I had one for 0 to +5V and one for 0 to -5V. Once I got all the grounds connected and the supply voltages stable, they were very accurate.