I have the 3A Controller with Feedback which I’m testing.
Initially I used a joystick on the analogue input and no feedback.
There is an area at the midpoint where the motor is supplied with 0v and then, with more movement, the motor suddenly is given about a volt and moves far too rapidly for my liking.
I thought it may be the joystick so I hooked up the serial line instead and that gives me the same problem. With a speed command between 61 and 68 there are no volts, outside that it again jumps to about 1v.
Is there any way round this? I really need subtle motor moves and this doesn’t do it at the moment.
I’m not sure what you mean about the 1V since the motor controller does speed control by PWM, which modulates the full voltage with the appropriate duty cycle. If you’re getting some averaged reading using a regular meter, that does not mean all that much. Can you look at the output with an oscilloscope? Or what happens if you put on a resistor instead of a motor? The duty cycle should just change linearly with the speed command you send.
More generally, we’re replacing that motor controller with a newer one, which will have much more control over input to output mapping, so you might consider that if you need finer control than the old controller can provide.
Thanks for the reply.
Basically I was saying that in the area around ‘zero motion’ there are zero volts and that condition continues as I move the joystick away from centre until a certain point when the motor jumps into life. At the same time the voltmeter begins to read a voltage, where previously there was none.
I would expect there to be a very slow and linear increase in speed from zero but the motor suddenly jumps into life in a very non-subtle way!!
I was using 1v just to make the point.
This also occurs when I use simple serial. Anything above 61 and below 68 returns zero output volts.
Is there anything I should put across the motor?
At the moment I don’t have access to a scope so I can’t tell you about the waveform.
Any more thoughts?
I can’t tell from your post if you’ve done the test with just a resistive load, so that’s something you could still try.
I also just noticed the “above 61” aspect to your test; what happens below 61? The output should just grow linearly from speed 1 to 127, so if you’re getting something strange within a small part of that range, I wonder if you’re sending the commands you think you are. The other thing that could explain this sort of behavior is if you have a feedback mode enabled; when you say “no feedback”, you do mean that you removed the jumper for feedback, right?
Thanks for the reply.
No, I haven’t done a resistive test, tell me more. Big boy’s resistore across the output?
The ‘above 61’ is pertinent. This is what I meant by the ‘deadband’ area. By sending speed commands between 61 and, I think, 68 there was no output at all. I assume this is a design feature. However, one digit below or above these and the motor suddenly springs to life. This can be reproduced with a joystick as well.
Now, it’s true that the speed increases smoothly after that, but my whole point is that the slowest speed isn’t very slow and I need ultra slow control over the motor.
Using a scope, there are no pulses at all in this dead area, then they appear at the same time as the motor starts. I assume this is correct.
All I can think is that the resolution of 64 each way can’t provide extremely slow starts.
Any more thoughts?
The resistor just needs to handle the power it would be dissipating as V^2/R, so if you’re working from 12V and have 1/4 watt resistors, something above 576 ohms would be fine (especially since you are talking about low duty cycles).
The available speed range is 0-127 in each direction, so I don’t know what you’re talking about with 64 each way. Is that some internal resolution in your program? Otherwise, there seems to be something fundamentally wrong in your understanding of the interface.
Perhaps I’ve misunderstood how the serial input works and need to go back to that again.
In the meantime, the piece about the joystick is still valid. Moving it very slowly from the centre position produces no output at all until a certain point when the motor jumps into life at, perhaps, 300rpm. As I said before, I need a lot more subtlety than that.
The trace on the scope shows zero volts with some noise (perhaps that’s my probes). Then, as I move the joystick slowly, after a certain point the pwm signal suddenly appears and the motor runs at that 300rpm speed. Obviously, further joystick movement produces higher speeds.
Ok, if that’s normal then the unit isn’t for me, but with tacho feedback I think I should be able to achieve a slower speed.
Back to you!!!
300 RPM is really slow. That’s just 5 revolutions per second, which is about as slow as many small motors will go. Unfortunately, using the tachometer feedback won’t make things much better unless you get a fairly high-resolution encoder on the shaft since the controller will try to maintain ticks per PID cycle. If you want to update the motor at something like 50 times per second, you’ll need at least a hundred counts per rotation so the controller could try to maintain 10 counts per PID cycle.
By the way, you said earlier that your problem showed up even with no feedback, and you never definitively confirmed that you had no feedback jumper in place. Now you’re talking about tachometer feedback, so can you confirm that all this stuff you’ve been saying applies to operation with no feedback jumper in place?
I’ve done both, with and without the feedback jumper.
Initially, I simply attached a motor, battery and joystick just as a starting point. With the jumper set for no feedback. This produced the jump from zero to approx 300rpm, maybe 200 as I didn’t count.
Then, with the jumper set for feedback, I added the DC tachogenerator with a suitable resistor to bring the volts in line with those from a positional pot.
When the motor finally started, the tacho produced the right feedback and the motor ran very smoothly. However, exactly the same effect was produced, with a sudden jump to 200-300 rpm
My question still remains that there are no revs below a certain point.
I’m beginning to think that a pwm driver cannot produce a ‘thin’ enough pulse to drive the motor very slowly.
Perhaps I’m asking too much, but I really do need the motor to move very slowly indeed.
Let’s leave it here, if you want, because I think what you said about motors is true with this type of drive.
The circuit I’m trying to replace can drive motors very slowly indeed, but there’s no feedback to overcome friction errors in the gears.