New Machine Progress

I have been hard working on the new stepper based machine. My last post mentioned that I did succeed in making a prototype of a stepper based machine that can be easily and cheaply built with stock components. A few custom parts will improve the performance but are not necessary.

I have now succeeded in writing control code that simulates a conventional machine such as the Shockspot. A simple three knob control (consisting of three inexpensive rotary potentiometers and a few passive components) allows for the control of stroke, speed and penetration offset. The controller accelerates the stroking smoothly but can run amazingly fast for a stepper motor. Acceleration control or speed ramping produces a smoother motion which is gentler on the machine as well as the user. I can increase the acceleration to make a “damn the torpedoes, full speed ahead” mode. Might add a switch to do this.

The machine can be built to use either the encoder “joystick” controller (my favorite )but for passive, just want to get fucked mode, you can plug in the three knob controller and the machine will recognize it and turn off the encoder. You can also build a machine that uses just the three knob control if you don’t want the joystick or if you want to minimize cost and possibly add it later.

There is just one bug I am aware of right now. I can’t seem to figure out how to get the stroke limit correct if the penetration offset is extreme. Just need to stop thinking about it and either figure it out or fake it some way. Since this machine is completely open loop with  no limit switches nor limit to stroke I need to figure out the best way to work without these. It might be a good idea to add another control to set the maximum stroke so you could change it without updating the firmware. I can think of several ways to do that but need to decide which is best.

This entry was posted in Uncategorized. Bookmark the permalink.

4 Responses to New Machine Progress

  1. Willie says:

    My machine uses a Home Limit to establish a Motor_At position.
    I then count step pulses to know where machine is at.

    I use a 250 step ramp table that has the time between steps calculated based on traverse speed.
    Changing the number of steps in the table can make for faster acceleration to speed times and crisper response.

    • shagmatic says:

      Interesting machine. I like the complex motions it produces. How does the user select various motions? I built a machine once that played files from an SD card. It has a touch screen graphical display that lets you select files based on name. Of course this is a much more complicated project and I wanted to offer plans for something simple first.

      I was initially going to use a ramp table but then stumbled on the Accel::stepper library. I decided to try that instead of the table so thee user could turn acceleration on and off or change the degree of acceleration. I am still undecided as to what is the best approach. I am currently using a rather slow accelerations to protect the mechanics and the user but of course that limits the terminal speed on short strokes.

      I usually start with a simple and safe design and then add features until everyone is confused and then simplify again.

  2. SPL says:

    Sounding pretty awesome. Can’t wait until there is a parts list 🙂

    • shagmatic says:

      I have a few more better parts on order to test with and will then make a parts list and make pictures. Once I get comments and suggestions, I’ll make drawings and write instructions. Have a pretty busy next couple of months but will try to fit it in.

Leave a Reply

Your email address will not be published. Required fields are marked *