Move old linear modules with Arduino?

I upgraded my linear modules, and now find myself with a need for linear modules for a non-sm model railroad project. I’m wondering if there is a way to control the old modules with an Arduino or such sending PWM to them? I’m kinda ready to just start testing but don’t want to fry anything unnecessarily!

Thanks for any thoughts/help - FAS

I was actually wondering the same; partially because I wanted to create an adapter from standard pin headers to the proprietary connector so they could be run off 3rd party main boards. However, I don’t have any extras and don’t want to void my warranty just yet :slight_smile:

I picked up this logic analyzer a while back and still haven’t found a good excuse to use it, but using one of those to reverse engineer the pinouts and signals being sent by the official board would be the place to start.

There have been discussions about analyzing the CAN BUS protocol the toolheads use. The linear modules use the same protocol. So you should be able to repurpose some of that knowledge?

So I saw the CAN Bus discussions, and I’m wondering where that logic happens. Since the signal goes thru the splitter/controller first I figured that’s where the CB commands are translated into PWM(?) power that then moves the LA a specific amount. But maybe the CB signal is processed in the LA itself? I suppose I could measure the power coming out of the splitter controller when a LA moves and see if it is variable.

the use of the CAN bus in this case is not necessary. In this way, linear modules only send their parameters and information about the limit sensor status. The internal stepper motor is controlled by STEP, DIR, EN signals and of course a 24 V DC supply is required. Logic for STEP, DIR, En is 5V DC.

PWM (Pulse Width Modulation) will do nothing here. It is enough to generate only pulses (rectangular signal): 400 pulses will make the movement of the linear module by 1 mm.

The meaning of the signals in the socket and the colors of the wires in the cable:


You will find more information by searching posts written by @Streupfeffer & @Ronin.

Well, alright. I burrowed into their posts and I’ve now learned way more about the SM2 and CAN bus than I really ever wanted to. So, as I see it, I can either learn to program a CAN bus and do it that way, or I can open up the module, see what’s in there, and maybe bypass the controller in the module and power directly from an Arduino.

I’ll have to mull that one over.

On the CANbus you get a ping on ID 21 (not sure if HEX or DEC) which switches from 0 to 1 or form 1 to 0 (not sure either, its been a while) if the limit switch triggers.
Thats it.
If you have your own way to tell the arduino to stop pulsing as a position is reached you dont have to talk to the module over CAN at all. if you dont know if the arduino is going to lose potential steps, make sure to check both extreme limits to stop the arduino from breaking things.

At startup there is some “who is connected to the network” going on to know how big the rails are (not sure how they figure out whats what axis) and what Tool is attached.
movement and tool have the same CANbus network and the addon slots for the housing have a seperate one. didnt find much more on there motion related.

Also check the pinout before you start gogin full send. I had a calbe type which had Black beeing 24V and Red Ground. Not sure if thats the same thing for the Motion rig.