|
|
View previous topic :: View next topic |
Author |
Message |
pklein
Joined: 14 Nov 2007 Posts: 7
|
HOW TO SYNCHRONISE 2 DC MOTORS |
Posted: Tue Dec 04, 2007 8:06 am |
|
|
Hi,
I have a project that requires for me to synchronise the positions of two DC motor shafts. Does anyone have any advice on the best way to achieve this. I am considering having an optical encoder on each shaft. A disk that passes through the encoder has only one hole. When the hole passes through the encoder I will set a timer in the interrupt and when the other hole passes through I will get the value of the timer. I will then play with the motors pwm until the time error is within a certain limit.
Is there an easier way to synchronise two shafts?
Am I on the right track?
I appreciate any feedback (excuse the pun :-) ) |
|
|
Humberto
Joined: 08 Sep 2003 Posts: 1215 Location: Buenos Aires, La Reina del Plata
|
|
Posted: Tue Dec 04, 2007 10:24 am |
|
|
To get a better help, it would be nice to know:
1) The size (power) of the involved motors.
2) The inertia of the mechanical load.
3) The expected working speed.
4) The synchronizing should be dynamic or static.
5) How do you control the brake procedure and stop position.
6) How do you control the steady position.
Did you thought in using a stepper motor?
Humberto
Last edited by Humberto on Tue Dec 04, 2007 10:27 am; edited 1 time in total |
|
|
SherpaDoug
Joined: 07 Sep 2003 Posts: 1640 Location: Cape Cod Mass USA
|
|
Posted: Tue Dec 04, 2007 10:27 am |
|
|
Is there any chance you can use brushless motors? They would be much easier than brush motors.
Tell us more about the application. _________________ The search for better is endless. Instead simply find very good and get the job done. |
|
|
Guest
|
|
Posted: Wed Dec 05, 2007 3:15 am |
|
|
Hay guys. Thanks for the responses.
At present I cannot use a stepper motor. I am using the tamiya TMG. I probably have to put the encoders on the output shaft, which will run at around 50RPM at max speed. I cannot really fit the encoders in the gearbox.
The motors drive the legs for a Jansen Walking robot. Basically the idea is to try create a walking machine that will only require two motors instead of one on each leg. It is planned to be able to turn the robot, one motor will be driven faster than the other, then to walk straight again the motors should be synchronised in order to get the robot to walk straight properly.
This is my plan of action so far to get the positions synchronised for forward motion.
Assume shaft one is ahead of shaft two.
1. Determine the speed of 1.
2. Get time difference between 1 and 2. (delta t)
3. Intgrate 1's velocity over delta t to get angular distance between 1 and 2.
4. Get controller to estimate how the pwm of 1 and 2 should be varied so that angular distance would be decreased by next revolution. |
|
|
Ttelmah Guest
|
|
Posted: Wed Dec 05, 2007 4:29 am |
|
|
I'd suspect your biggest problem will be the relatively long time between the pulses. I have done similar things in the past, but always had two sensors. A quadrature encoder on the motor itself, and an 'index' pulse from the output. You reset the count on the index pulse, and implement a standard PIR servo algorithm, from the quadrature data. The motors are just told where to move to, and the speed required, and each is adjusting itself continuoulsy all the time through the motion. They are not trying to synchronise to each other, but both try to follow the same motion curve, as accurately as possible. Since the curve defines exactly where the motor shaft should be at any time, the motors remain in sysnc.
The problem is that with the long delay that will be present, and the varying loads (leg motions impose significant variations through the cycle), if one motor sees an increased load, and lags, power is then increased, the other motor hits the same load increase a moment latter, and slows, by the time the next pulse is detected, the error between the two will have got larger, rather than smaller...
I would suggest that you need detection at the motor shaft, rather than any latter in the system, or you will be fighting a losing battle. There are small DC motors available with encoders built in.
Best Wishes |
|
|
Guest
|
|
Posted: Wed Dec 05, 2007 8:37 am |
|
|
Thanks Ttelmah.
You make an excellent point. I have looked carefully at the motor and gearbox, and with some filling a think a can fit an encoder on a gear that spins around 44 times faster than the output shaft. I cannot get an encoder anywhere near the motor shaft and I dont have any dc motors with encoders on available. Will this shaft be feasable?
If i put encoders on this gear - will my timer plan not be valid anymore. - will i simply be interested in the number of counts that the disk has given.
If possible can you give me a hint on how best to proceed with counts rather than using timing.
I really appreciate everyones input |
|
|
SherpaDoug
Joined: 07 Sep 2003 Posts: 1640 Location: Cape Cod Mass USA
|
|
Posted: Wed Dec 05, 2007 9:01 am |
|
|
You might look into using "back EMF" to measure the motor speed. It is a technique used with permanent magnet brush motors running under PWM control, especially on model trains. While the motor is in the OFF part of the PWM cycle you measure the voltage the motor produces as the rotor spins as a generator. The voltage produced is proportional to speed. It is not really accurate but doesn't require any change to the motor and you can get a velocity reading every PWM cycle. _________________ The search for better is endless. Instead simply find very good and get the job done. |
|
|
Ttelmah Guest
|
|
Posted: Wed Dec 05, 2007 9:42 am |
|
|
I'd really suggest heavily, that you start with one motor, and try implementing a PWM servo algorithm, based on the standard PID approach (you may need to tweak this latter...). Prove to yourself, that you can control the motor to move 'to' a specific count on the motor shaft, adjusting it's speed, so it accelerates and decelerates, arriving where required. Once you have this working, what you then do is use this to control one motor, and have the other using the same algorithm, but adjusting it's targets based on where the other motor is.
The back-emf suggestion, is a good one. This approach allows much faster speed measurements, without added mechanical hardware.
Seriously, you may well find it is better to use a single small PIC to control each motor. Handling a movement algorithm well, needs fast adjustments. If you look at the Microchip application notes, there are a couple of servo designs there, and these can be modified to provide the basic algorithms needed.
Best Wishes |
|
|
pklein
Joined: 14 Nov 2007 Posts: 7
|
|
Posted: Thu Dec 06, 2007 2:51 am |
|
|
Thanks I will start reading up on PID. Another short question? When I run PWM output to the tamiya motors I get some sort of a surging problem. The motors are speeding up and slowing down slightly all the time. I checked on the scope and I am getting a variation in PWM from my output. The signal gets slightly longer and shorter.
I do not get this problem using any other dc motors. I am using a PICDEM Mechatronics board to drive the motors. The motors are very small dc motors that run up to around 10 000RPm. I dont think back emf is the problem because it does it even at very low speed.
Is there an easy fix to this problem? I dont think my pic is resetting. Not sure where the problem has come from.
Can anyone help |
|
|
Ttelmah Guest
|
|
Posted: Thu Dec 06, 2007 7:42 am |
|
|
What controls your PWM?.
Properly wired, there is no way for a load to affect the PWM. If it is changing, it implies:
1) The motor load is changing one of the source signals controlling the PWM.
2) The motor load is affecting the supply to the processor.
3) The motor load is changing the clock to the processor.
Look particularly at how currents flow between the supply, and the motor/drivers. Imagine these as a water source and drain. Visualise wate flowing between these points. Is there anything connected to the PIC, which comes from different points 'along' the flow. If so, you have a potential problem.
Best Wishes |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|