MCD2230 actuator with potentiometer to control differential steering.

6 years 1 month ago #29529641 by RichLindquist
I am building a four wheel drive off-road capable power wheelchair for my friend. It must be able to drive out his front door, down the sidewalk, over the beach/trails/park and return home. I am using heavy duty mountain bike style wheels and tires to get him over the bumps/holes that stop his current chair. You can see more at https://facebook.com/adventurechair .

It uses fairly standard 24 volt power wheelchair motors (5 amps no load, unknown stall load) for locomotion and a linear actuator to operate the articulated steering. I need this to be controlled by a two axis joystick, where the steering is only controlled by the linear actuator (no tank style steering) BUT, I would like to have the speed of the left/right pair of motors (in parallel) be controlled by the angle of the turn. This would give me a differential capability so that the wheels do not have to scrub in a turn. Will the MCD2230 do this?

Will a linear actuator with potentiometer provide the signal to cause the the inside (of the turn) wheels to progressively reduce speed as the angle gets sharper? Just eyeballing it, at full articulation, the inside wheels need to turn at 50% of the outside wheels. The steering actuation must work even if there is no wheel speed, as you sometimes need to shift the chair from side to side to clear doorways, etc.

This is a "learn as I go" project, with a very limited budget, so I have been trying to use existing powerchair controllers, joysticks, etc. but I think that it's time to bite the bullet and purchase what will do the best job.

Any words of wisdom, questions or things I may not have thought of will be appreciated.

Please Log in or Create an account to join the conversation.

6 years 1 month ago #29529644 by RichLindquist
I see that people have read this, but no one has responded. Did I put this in the wrong section?

Please Log in or Create an account to join the conversation.

6 years 1 month ago - 6 years 1 month ago #29529645 by Griffin Baker
So let me see if I read this correctly.

You want to use a pair of spinning motors and an actuator. You are looking to use 1 channel for the steering via the actuator, and then put 2 motors in parallel on the other channel. Is this correct?

Then you want to control via a 2 axis joystick, but will not be using tank steering. A potentiometer is going to provide the steering for the actuator and you want the other motors to control speed via the turning of the actuator?

Please Log in or Create an account to join the conversation.

6 years 1 month ago #29529646 by RichLindquist

Griffin Baker wrote: So let me see if I read this correctly.

You want to use a pair of spinning motors and an actuator. You are looking to use 1 channel for the steering via the actuator, and then put 2 motors in parallel on the other channel. Is this correct?

Then you want to control via a 2 axis joystick, but will not be using tank steering. A potentiometer is going to provide the steering for the actuator and you want the other motors to control speed via the turning of the actuator?


Thank you for the reply.

I have 4 motors that will be treated as 2 motors; left side pair and right side pair. The actuator will do the steering. It can be controlled indipendently from this system if needed. What I want the Roboteq equipment to do is provide normal forward/stop/reverse with speed control of those motors. In addition, I would like to have feedback from the actuator to tell the computer how sharp of a turn the chair is making (this is a bend in the middle style of steering), so that it can reduce the wheel speed on the inside of the turn. For example, going straight both wheels are at 100:100. As the chair turns sharper and sharper, the wheel speed would be 99:100, 98:100, 97:100, etc. down to a maximum reduction of 50:100. This should happen at any speed, so if the joystick says to go at 70% of max forward speed, the chair will do just that, and then adjusts the side to side ratio to slow the inside pair of wheels to compensate for the smaller turning radius.

The controller will have one analog input from the joystick for forward/reverse and speed. It will also have one analog input from the potentiometer on the actuator to tell it how much to adjust the side to side wheel speed ratio. The actual control of the actuator may be through another controller or just a simple DPDT switch. The big question is whether the MCD2230 can do the side to side ratio adjustments.

If you go to my Facebook page about this chair , you may have a better understanding of what I am attempting to do.

Rich

Please Log in or Create an account to join the conversation.

6 years 1 month ago #29529647 by Griffin Baker
If you are looking to make it do things in a specific manner, then it would need to be done via a microbasic script. I will need to do some more thinking to see how this would be done.

Please Log in or Create an account to join the conversation.

6 years 1 month ago - 6 years 1 month ago #29529648 by Griffin Baker
I did something similar to what you are asking and it seem to be possible with 2 controllers.

If you are looking to make it do things in a specific manner, then it would need to be done via a microbasic script and can bus networking(add a 120 ohm resistor on the can lines). As far as interfacing the 2 together that it would most likely need to be done via a can bus.

2 controllers. controller A is for the actuator (master), controller B (slave), is for the 4 for/rev motors.

can mode master: minican
Node: 1
listen node 1

can mode slave: minican
Node: 2
listen node 1

You set up both controller for minican. Assign each one a node and make one of them the master.

In the script for the master, the actuator is going to look at the pot. As it makes changes, you can send a can VAR value change on the can line. The slave controller needs to have in a script how it responds those VAR value changes.

Example, actuator is turning left. The pot value is say 3V. It changes Var1 to = 10. As it changes to increment a bigger change at 4V at the input, you can change the Var1 to become 20. The slave controller will need to listen in from the master and then look at the var1 to then take an action.

So in terms of scripting the master would be set up in the following if pot was wired into analog input 1.

example for master unit with actuator for steering.

dim a1 as integer
dim turn as integer
top:
a1 = getvalue(_ai,1) ' Queries analog voltage value mV
turn = getvalue(_aic, 1) 'queries the analog input after conversion
setcommand(_G, 1, turn) ' tells the actuator to turn based on input of pot

'forward
if a1 > 3000 and a1 < 3500 then setcommand(_var, 1, 10)
if a1 > 3500 and a1 < 4000 then setcommand(_var, 1, 20)
if a1 > 4000 and a1 < 4500 then setcommand(_var, 1, 30)

'reverse
if a1 < 2500 and a1 > 2000 then setcommand(_var, 1, -10)
if a1 < 2000 and a1 > 1500 then setcommand(_var, 1, -20)
if a1 < 4000 and a1 > 1000 then setcommand(_var, 1, -30)
wait(1)
goto top



the slave would look like this:

dim receive as integer
top:
receive = getvalue(_var,9)
'limit max power forward %
if receive = 10 then setconfig(_mxpf, 1, 90) '90%
if receive = 20 then setconfig(_mxpf, 1, 80) '80%
if receive = 30 then setconfig(_mxpf, 1, 70) '70%
if receive = 10 then setconfig(_mxpf, 2, 90)
if receive = 20 then setconfig(_mxpf, 2, 80)
if receive = 30 then setconfig(_mxpf, 2, 70)


'limit max power reverse %
if receive = -10 then setconfig(_mxpr, 1, 90)
if receive = -20 then setconfig(_mxpr, 1, 80)
if receive = -30 then setconfig(_mxpr, 1, 70)
if receive = -10 then setconfig(_mxpr, 2, 90)
if receive = -20 then setconfig(_mxpr, 2, 80)
if receive = -30 then setconfig(_mxpr, 2, 70)

wait(1)
goto top


So the way this works is that the pot will drive the actuator and also provide a can var change when it goes into a certain voltage value.

The receiving unit will receive the can var1 message and then limits the forward or reverse output of the motor 1 and 2 outputs.

I didn't use an actuator on my set up, but just 2 simple fan motors. One that works in place of the actuator, and one for the speed forward and reverse.

You'll probably want to modify the above script.

Please Log in or Create an account to join the conversation.

6 years 1 month ago #29529649 by Griffin Baker
I forgot to point out that I simplified my test for the slave unit by not using a joystick, but using the run tab of the Roborun+ utility to give the forward and reverse command.

Please Log in or Create an account to join the conversation.

6 years 1 month ago #29529650 by RichLindquist
Griffin, thank you for all of your information and thought.

In your example, will the steering actuator move to a certain position, based upon how far the joystick is moved off of center? For example, move the joystick to 15% off of center and the actuator will power until it reaches 15% off of center; let go and it will return to center.

What if the actuator was controlled independently (simple DPDT switch, power out to turn left and must power in to get back to center/right), would one motor controller be able to adjust the wheel speed ratio according to value coming from the actuator's potentiometer? In essence, using the actuator potentiometer as the second axis on the joystick.

Rich

Please Log in or Create an account to join the conversation.

6 years 1 month ago #29529651 by LROBBINS
Here's another scheme to consider since you don't want proportional control of the actuator.

(1) To avoid running lots of high-current wires, you could use an SPDT switch connected to two SPDT relays in an H-bridge configuration. The advantage of using two relays in H-bridge, aside from simpler and lower current wiring, is that they can short the actuator motor winding when off giving braking of the actuator.

(2) Then, for motor control you can use your position sensor on the actuator as a Steering input and the X axis of a joystick as Throttle and use a mixing algorithm in the Roboteq. With a micro-basic script you can "tune" those two inputs to get the best balance between Throttle and Steering.

Ciao,
Lenny (Siena, Italy)

Please Log in or Create an account to join the conversation.

Moderators: tonysantoni
Time to create page: 0.135 seconds