130VDC Motor control with Arduino

Thread Starter

ilijamt

Joined Dec 24, 2013
10
Hi,

I have the following motor available, and I would like to be able to control it pretty accurately.

This is the motor that I have and I want to control.

Can anyone give me suggestions on how to proceed, as this is my first time, trying to control something this powerful, as I don't have experience with this, this is my initial thoughts, and can someone help me to see if I'm on the right track.

My resistor values are a little low, but they can be adjusted later

I want to be able to control the motor for up to +- 0.5 RPM , if it can be done +- 0.01 even better.

My initial thoughts about controlling the motor was using an Full MOSFET H Bridge with back EMF Diodes.



I'm planing to use PID controller on the Arduino to control the RPM of the motor, also I know that the PWM pins on the arduino is from 0 to 255, is to use a dual PWM circuit for a finer RPM control.

Thanks for any help you can give me.
 

strantor

Joined Oct 3, 2010
6,798
Im assuming the purpose of the middle 2 optos is armature feedback for speed regulation? Not sure thats going to cut it. Youre probably going to need encoder feedback.
 

MaxHeadRoom

Joined Jul 18, 2013
28,702
The two middle opto functions are a mystery, the output side is only rated for 100ma and there does not appear to be anything to restrict the current, particularly with the 130vdc version of motor?
Max.
 

bertus

Joined Apr 5, 2008
22,278
Hello,

It looks like the middle optocouplers are used to switch the back-EMF diodes.
As stated there is no current limiting on them.

Bertus
 

Thread Starter

ilijamt

Joined Dec 24, 2013
10
The two diodes are used to prevent a back-EMF diodes from the motors when we switch them on and off at high frequencies, on both sides to short out the back EMF in one direction.

The SG ( Signal Ground ), and PG ( Power Ground ) are used to separate the grounding between the Motor and the Arduino, because of the interference caused by the high voltage on the ground wire.

The middle opto-isolators are used to control which diode is on.

The other opto-isolators are used to control the motor, and protect the low voltage systems from high voltage.

As this motor doesn't have an encoder on the motor, so reading the speed will have to be done somehow.

The purpose of this motor is to control ladles for mixing liquids, the motor is gonna spin several ladles connected with a belt.

If the motor is not rotating the ladles, we should be able to calculate what is the current RPM based on the power and load the motor is drawing from the system, but if there something, there are other parameters that need to be adjusted.

The circuit was adapted from a book from my university.

If there is another way to do this, I'm open to suggestions, as I said I'm kinda new when it comes to designs like this, so I'm open to suggestions.

Ilija
 

MaxHeadRoom

Joined Jul 18, 2013
28,702
The way I interpret it there will be full voltage across the output of the opto in one motor direction with no current limit for the opto output?
Max.
 

Thread Starter

ilijamt

Joined Dec 24, 2013
10
The Lines 1, 2, 3, 4 are controlled by a logic circuit.



The power will be controlled by a PWM pin on the Arduino, and the Lines 1, 2, 3, 4 are generated from the circuit on the picture.

The PWM will be attached to base of the H11D3M, which should limit the power flowing to the motor, and thus control the rotation of the motor.
 

Thread Starter

ilijamt

Joined Dec 24, 2013
10
Turns out the motor has an encoder, that can measure revolutions, by counting gears, every 6 gears = 1 revolution.

That should be enough to achieve at least +- 0.5
 

MaxHeadRoom

Joined Jul 18, 2013
28,702
If the output of the gear detection is a square wave pulse, you can detect the rising and falling edge to increase the resolution x2 if needed.
Max.
 

Thread Starter

ilijamt

Joined Dec 24, 2013
10
Any ideas on how to improve this?
Or even a better design for motor control like this?

If the output of the gear detection is a square wave pulse, you can detect the rising and falling edge to increase the resolution x2 if needed.
Max.
I will see soon, I won't be home for the next week, so I can't check what's the signal.
 

THE_RB

Joined Feb 11, 2008
5,438
Why aren't you using the 24v model? The driving electronics is much easier to make and much safer, and it only requires 24v DC at 2.6 Amps so the 24v DC PSU can be any cheap 24v SMPS.

Also a 2.6A 24v DC motor driver can be bought fairly cheaply as a complete module.

Secondly what is the motor driving and how accurate does the RPM need to be?

I did a DC motor algorithm here;
http://www.romanblack.com/onesec/DCmotor_xtal.htm
which will lock the motor speed to xtal speed, ie "clock" accuracy of average speed.

That algorithm will work very well if your motor is driving a reasonably constant load, or if you are driving a highly variable load we can suggest other systems of speed regulation (but we need to know what it is driving and why the speed accuracy is important!).
 

Thread Starter

ilijamt

Joined Dec 24, 2013
10
As I said in the beginning that is the motor I have, I don't want to buy a new one.

As for what is it gonna drive, there is gonna be belt connected to the motor, and with a mechanism spinning 8 ladles, all of them will spin together, and all of them will be in water, so the spinning of the ladles will happen while they are under water.

I would like it to be accurate up to +-0.1 RPM, max RPM is 465, but it usually wont go over 120 RPM.

To achieve finer control I plan to use two PWN pins together for 10-12 bit resolution which should give me between 1023-2047 states to control.
 

Alec_t

Joined Sep 17, 2013
14,337
What on earth are you mixing with ladles which demands such great accuracy (1 part in 1000)? Won't belt tension variations and liquid turbulence cause greater error than that?
Why do you need a reverse option for ladles? The circuit could be simplified for one direction of rotation.
 
Last edited:

Thread Starter

ilijamt

Joined Dec 24, 2013
10
Actually what I wanted to know is, how does the control circuit look ?
Is it a proper design for the circuit?

Do I need to add some other elements in the design to have a better or more stable circuit?

It was mentioned I don't have anything to limit the current.
For the middle opto-isolators there is no need to limit it, is there ?
What about the others ?

What on earth are you mixing with ladles which demands such great accuracy (1 part in 1000)? Won't belt tension variations and liquid turbulence cause greater error than that?
Not really necessary but since I'm doing it why not do it like that, even +-0.5 RPM is more than enough.

I'm only interested in the RPM of the motor not in the actual RPM of the ladles (but it's a nice idea, first I want to be able to control the motor then maybe we will see about monitoring the actual RPM of the ladles).

Using a DC motor you are going to need some feedback device of some kind and PID type of loop to get that accurate a control.
Max.
I know it will be implemented using a PID control loop, as I said the motor has an encoder that counts gears (6 gears = 1 revolution).
 
Top