Printer to Plotter Conversion

Posted By Cantareus on January 31, 2010

This is my latest project. Converting a broken Brother MFC-425CN into a small plotter. I used the paper feed mechanism and the printer head with the optical encoders and stripped everything else out of the printer. There are a lot of gears and stuff that are used for cleaning the print heads and pumping away ink. There’s also a second paper feed for picking up the next sheet of paper from the paper tray these prevent the motor from running the same speed both ways.

The up/down movement of the pen is controlled with a small solenoid. Black tape and copper wire are used to hold everything together. The rubber band is to stop the pen jiggling.

A PIC18F2550 decodes the optical encoders to detect which way they are moving and keeps a track of the absolute position of the head and paper feed. The origin is the position everything is in when the usb plug is inserted. There’s a IR and photo diode underneath the print head that the printer uses to detect the paper.  I should write a routine to find the position of the corner of the paper and set this to the origin every time a new program is run.

One of the optical encoder was acting up. Based on the PCB from the printer I should have been able to use a pair of 10K pull-ups and put the outputs directly into the microcontroller. I should have measured the voltage at a few points on the original PCB while it was running before I destroyed it. I’m always too quick to destroy stuff. Another problem with the encoders is quickly decoding the position. When things are moving too quickly the microcontroller can’t keep up.

Driving the motors is done with a pair of h-bridges I built for a different project. These aren’t shown in the schematic because they aren’t very good. I’m might get a pair of motor driver ICs.

The computer software loads a G-Code file and sends movement commands to the plotter. The plotter sends back it’s new position at the end of each command. This lets the computer know when it can send the next command. The software uses the RS274NGC G-code interpreter.  This can be downloaded from http://code.google.com/p/rs274ngc/, it makes using G-Code a lot easier. I wasn’t sure how to handle the Z-Axis because the solenoid only has two positions, up and down. So it takes positive values as down and negative or zero values as up.

There’s a bit of pixelation in the drawings. It’s really difficult to keep the speed of the motors constant. If I try to use PWM on them they whine and wont move.

Printers are a great source for parts. This printer had

  • 2 DC motors
  • 2 stepper motors
  • A rotary and a linear optical encoder
  • ~10 photo gap detector thingies
  • A 350×6mm stainless steel rod
  • Lots and lots of springs
  • Nylon gears
  • 2 belts
  • A 30v DC power supply
  • A phone keypad that shouldn’t be two hard to separate from the rest of the electronics

All for $1.

I’ve got another two almost identical Epson printers. I want to use the parts from those to make a simple CNC machine for my next project. Next up for this project though is creating a PCB and tiding everything up.


Comments

2 Responses to “Printer to Plotter Conversion”

  1. Hugo Herrero says:

    I like the blog, but could not find how to subscribe to receive the updates by email. Can you please let me know?

  2. cyrus says:

    Hi
    Could you share your C source file? Or maybe the encoder aquisition algorith?
    Thank you

Leave a Reply