Upgrades to XY Plotter v2


#1

Just wanted to share some upgrades I’ve done to the XY Plotter v2.

Added emergency laser shutoff switch and some shielding around edges.

Upgraded laser to a 2.8W from J Tech Photonics This is controlled from Port 4 and runs as a TTL signal to the new laser driver. The driver allows me to manually set what current I want to run, or I can modulate the TTL signal in firmware to turn it on/off. (According to J Tech, the driver will pulse up to about 5khz.)

Custom shielding was cut with the new laser!

Moved the X-Axis stepper and pully to the front of the head so I could place the laser directly in the middle of the head. This makes the head smaller and provides a lot more drawing area inside the frame. Limit switches were moved to the sides of the X-Axis rails.

The head now allows the laser to be directly in the middle with plenty of room for the fan also.


#2

Wow – what a sweet setup. Just curious — was this your first laser cutter project? Is the overall cost of this (makeblock + the costs you added to upgrade) in line with an "off the shelf purchase. Obviously, there is value in the build it and learn that cant be factored in — but wondering if this is also an econimical way to get into this.


#3

It was my first laser cutter. There appears to be a few kickstarter projects for laser stuff that should be out soon and I’d wager they’ll be a lot easier to setup and probably cheaper than this kit.

The kit was helpful with regards to getting me familiarized with a lot of stuff that I had no clue about but now that I’m comfortable with firmware updates, I’m finding too many limitations in this design.

I’ve upgraded the kit some more with two rotary encoders because during long/complex draw operations, the machine drifts pretty substantially. The firmware does not account for acceleration/deceleration so the stepper motor (on the Y axis mostly) will miss steps whenever changing direction. After only a few direction changes, the head can be out by 2-3 mm. On a long single cut, this could show up as being almost 1cm off. With rotary encoders, you can track the actual position of the head rather than assuming the steppers are exactly where you put them.

I’ve started building one that’s about twice as big, sourcing out all my own parts from China and using an Arduino Mega.

For a first kit, this thing is an OK start but dont expect to get it working right out of the box. If you have time to poke around and learn about the firmware, mDraw (learn python!) then it might be a solution. Its probably not the most economical considering the laser upgrade was more than the entire kit, but it was a good learning experience.


#4

I’m also pretty impressed by the setup!

In your comment you wrote that you added two rotary encoders to the plotter. Out of curiosity:
What kind of rotary encorders did you use and where did you place them? Did you modify mdraw in order to read the values from the encoders?

Even if I don’t want to use the plotter as a laser cutter I would be interested in improving the drawings which seem to be “out of sync” after a while.

Regards,
Mike


#5

I attached them at the opposite end of the drive belts by drilling out two stepper mounts (the encoders are a three-bolt pattern) and attaching to the existing shafts with some couplings.

Encoders: Sparkfun

Encoder breakout boards: SuperDroid Robotics

Shaft Couplings: Phidgets (Buy a 6mm for the encoder end, a 4mm for the existing makeblock shaft, and the red grommets go in between both halves.)

I haven’t made changes to mDraw because It still doesn’t work with the Makeblock hardware. In future, it should be completely handled in firmware when the machine needs to be ‘re-calibrated’ since the encoders can be queried at any time to see if it has drifted. Once it has been discovered, the firmware can just step the motors until the head is actually in the place that it has reported to the host computer with the last “OK” command. I’m not too sure how fast the i2c commands will be if I just use the encoder position after each motor step to see if it was successful but at worst, I can do it at the beginning/end of each Gcode command which would still likely be good enough for my purposes.

The unfortunate problem is that the Orion is so conspicuously wired, I haven’t had any luck using it directly with my encoder breakout board. My original plan was just to wire the encoders directly to the Orion and use interrupts to count the position but found the Orion board impossible to work with. (Could only get one pin on any particular available port to actually function?!)

I got a breakout board to read the encoders and attempted to use the SPI bus on the board to talk to it. Since I was able to get one pin on each port to work, I used port 7 and port 8 as my slave select pins to control the breakout board. This worked fine in tests without the stepper controllers connected but once I tried it with steppers, I found that Port 1 was using some of the SPI bus pins and thus rendered the bus unusable when trying to run the steppers.

I’ve thus completely given up on the Makeblock electronics. I’ve already fried one of the stepper drivers by trying to run it with an Arduino. The original laser I got with this kit was garbage (makeblock replaced it after no small amount of whining on my part.) My experience with all of the electronics is, so far, not great. The hardware is awesome and I love it but now that there appears to be no PayPal support on their site, I’ll probably have to get that somewhere else too.

So I’m going to use an Arduino as soon as I receive some stepper drivers (with documentation!) Makeblock’s lack of support and documentation is mystifying. Great learning experience but would have been a lot better if it wasn’t so frustrating. Learning already is frustrating, but when there is a brick wall of no support/documentation and the only resource (this forum?) is full of people who are asking the same questions, it can be tiresome.

This is the one I’m building from scratch…


#6

Wow, thank you very much! That looks incredible. Also your new frame looks already very promising. I wish I would have these mechanical skills…

But may be I can help you a little bit with the encoders.I had a look at the Orion schematics here:
http://learn.makeblock.cc/learn/resources/Makeblock_Orion_Schematic_V1.0.PDF

As you can see in the schematics, the pins you need for SPI go to a 6 pin header called ICSP1. If I’m right that’s the header on the bottom of the Orion board. So you probably need a 3x2 header to connect the SPI device to the Orion board. Unfortunately I currently don’t have the hardware here to test if this connector on the Orion board really works and especially together with the stepper motors. (The ports 7 and 8 from my perspective only have some digital, analog and I2C ports. For me it looks that SPI over digital ports might work as long as this is the microcontrollers only work).

Anyhow, for your new project an Arduino Mega is probably a good solution, plenty of space to put the program (firmware) in. Although you need some motor drivers extra which come already included in the Orion board.

So thank you very much again for your feedback and sharing your experience. Your work is really impressive!

Regards,
Mike


#7

Oops! I meant to say SPI rather than i2c (different project I’m working on)

The SPI pins are all duplicated elsewhere - Port 1 which uses D11/MOSI and D10/Slave Select (which is not on the ISP header but) And port 3 uses D12/MISO and D13/Clock so it would probably interfere with the limit switches plugged into that port.

I think the Uno has 14 in/out and an additional 6 which are input only, so I’m not sure why the pins have been distributed this way because they could easily have left the ISP pins as a separate header. Just an unfortunate limitation of the board anyway. The RJ-11 connectors are so handy, I’d like to make my own Arduino shield for the mega to interfaces with sensors using the same plugs.


#8

Nice job. I also bought the plotter just to get my feet wet in the CAD/CNC world, but the software is not intuitive and some just will not open. Hope this project will not turn me off from learning code because my frustration level is high from the poor support and bad software. Would you happen to know where I can get proper info and tutorials to accelerate my learning curve.

Thanks


#9