Controlling position of linear actuator

Agreed and I could probably just use a multiturn pot on the output shaft as well. However, I do not want to modify the stock design. I am shooting for plug and play. This will not be a one-off thing or I would just replace everything with RC servos and call it done. And even with the potentiometer, I still will have the problem with overshooting if I just run full-speed.

Tracking the position of these encoders is not really the problem. I have already written pretty robust code to do that. It will provide a value between 0 and 32 (or 0 and 64 for the longer movement) which will correspond to the actual position of the linear actuator. That part is nailed down and solid. Since it is not an absolute position (meaning it won't know where it is on power-up) I have to run an initial routine to move to a home position at first power up. Not really a problem, though and the position is accurate from then on.

Getting them to reliably run to a position and stop on that position without using PWM and and an integral (speeding up, constant speed, and slowing as it approaches) is the problem I am having now. While experimenting, I did find that I could somewhat reliably move them to a desired position by using delays (and the motor would basically coast into position.) To do it that way, I would need to calculate the delay on the fly based on the amount of change from the current position to the desired position. Some overshoot is just fine for this particular application. But again, it is a hack way to do it.

I guess I am really answering my own question here, aren't I? I really need to use PWM and PID to do it properly. The only reason I am stuck on doing it without PWM and PID is that the original circuitry obviously did without it. I guess I need to hook up a scope or logic analyzer to the output of one of the motor control signals to see what it is really doing. But, I suspect that it is simply running full speed for an amount of time, ocassionally coming back and checking on the position (probably every 1ms or so) to limit overshoot. The H-bridges use selective resistors to control the current through the motors for a constant speed. The h-bridges don't seem to respond well to PWM signals either. Each h-bridge has a forward and reverse signal, btw. 10 is forward, 01 is reverse, 00 is off, and 11 is a no-no (no braking.)

So, this topic is basically done, I guess. Unless someone can think of an ingenious way to do this without PWM and without being a complete hack. I realize it is going to need some form of PID-like control and even just doing with delays is a form of PD control (the D being calculating the amount of time to be on based on the amount of change) at least. I am only just learning about PID theory, however.