I've got a plan for an aircraft that can fly in various orientations (I.e Rotate to face upwards in flight but carry on flying forward) by dynamically changing its Center Of Gravity (COG) along a rail. Before anyone asks, I've ran it through a computer simulation and it works.

The next thing I need to do if find some way of moving the majority mass of the aircraft (The electronics and batteries) along a rail quickly and precisely. So I've come up with the idea of using the cartridge and rail from an old inject printer (the part that moves from left to right and applies the ink). The issue is, I don't currently have an old inject printer to hand, and I want to know if this'll work before buying an old one off ebay.

Has anyone hacked the carriage on a printer before with an arduino and been able to control it and make it move to a specific position on the rail? If yes, how did they do it, and what kind of interface is it? Is it a simple stepper motor or something a bit more complicated? And is it capable of moving and holding in place 500 grams against gravity? I.e: Can it lift 500g?

Thanks to anyone who can help. If this isn't a practical way of doing it, can anyone suggest an alternative (has to be electric though. No hydraulics/pneumatics or anything like that.)?

One type uses a stepper motor and as you can imagine, by counting the steps it knows what area of the page it is printing at.

Another way is to use a regular motor and a pulse wheel. By counting the pulses generated by the pulse wheel and an optical sensor it knows its position on the page.

Most times there is a home position sensor at the capping assembly and it counts the steps from that position. It checks home position once in a while depending on the model. More expesive units may have an optical sensor and a patch on the platen for it to find home position and time the ink drops. The more expensive the device, the more precise the carriage position and ink drop sensors. Really expensive printers even track the curvature of the platen roller and the curl to the paper and adjust the head height to compensate.

Also did some searches for Linear or Quadrature Encoders and found more good info. This would be the 'pulse wheel' or strip like mentioned above. I did however run into an issue with the accuracy, which is my next goal - to figure out how to make it more accurate.