Troubleshooting guide for XY Plotter?


#1

Is there an XY Plotter Troubleshoting guide? I just built the kits and am impressed with the possibility, but so far I cannot get it to move. I have uploaded the code, have the app installed on my android phone and verified the connections are correct on the electronics. But nothing moves. A basic troubleshooting guide would be very useful.


#2

I agree that one would be very useful; however, I’m pretty sure there is not one. Our only course of action is to post on this forum and hope that the small community will have an answer. The folks at Makeblock seem to do their best to help, considering problems and responding quickly, but I don’t think they’re too great at speaking English, which makes the whole process a bit difficult and frustrating.
I’m trying to use g-code with my plotter, so I’m afraid I have no solution to your problem. Good luck!


#3

Thanks for the reply! I agree, the makeblock team seems to be trying, but they still have more work to do. I am still impressed with the product they delivered, but it is not a kit that is a quick build and have it working. I am looking at the gcode myself and was wondering if you tried this method of using gcode with the XY plotter:


#4

Yep! That’s what I’m using.
By the way, on your stepper motor drivers, is the little green light on? If not, they aren’t getting power. Make sure the power cable is plugged into the base shield, not the arduino, and the power switch is on


#5

@todd, thanks for your suggestion and I decided to make one today. We have start working on the troubleshoting guide of Stepper motor. And I think we will deliver it on the forum at tomorrow morning. :smile:

What about the gcode. Has there been any progress?


#6

@sammccants Thanks for your love of Makeblock! We will keep moving to deliver the best products and give you the best experience.:slight_smile:


#7

Hi @todd and @sammccants I have made a troubleshooting of stepper motor, you can click here to visit.

Wish it could help you guys.


#8

Thanks @Johnny, very nice video. Based on what you showed, I think the issue would have to be either the programming on the Arduino or the Bluetooth shield, you clearly show that the Arduino and stepper drive shield work. So, if a user is not getting any movement from the XY Plotter, where should they begin looking to review or fix? Is it possible to collect the videos and other guides you have written into one area that we can all review? It seems right now they are in bits and pieces spread across different forum comments, having a central spot for all of your guides would be a great resource.

I tried the G code @sammccants and it did work. Do you have any sample gcode that you have used with this tutorial? I tried the sample they gave and it worked, but then I tried some other gcode and it didn’t. Just trying to seeing what the limitations are, and I plan learning more about using gcode with the Arduino. Ethan, my son, and I really enjoy learning about how to use the XY Plotter, so this is a great chance at learning what we can do with this product.

Thanks to @Johnny @sammccants for the replies and my hopes is that we can show how the XY Plotter can be used in some interesting ways!


#9

Thanks for you advice. That’s really what we need to finish. I will make out a FAQ about our products which include XY. That’s could help people get out the problem which is annoying. When all the people can build and run his kits quickly, their creativity will be released.


#10

I think the FAQ is a great idea @Johnny, thanks!

@todd, do you want something simple or more complex? Once I got the hang of it, everything I’ve been trying has worked. It is a bit picky with syntax, but that’s to be expected of any code.

There are two major problems I’ve run into with it, however. @Johnny may be able to help.

  1. If you load a block of g-code in from a file and have it run, it will wait until one movement in the x- and y-dimensions is done to start the next movement (as it should) but it will not wait to lift or lower the marker (z-dimension).
    For example, say you want to draw a square. In a txt file that you import into the XYCodeGUI, you have the following lines:
    G90 (sets the positioning to absolute)
    G0 X100 Y100 Z0 (moves the marker to position (100, 100) with the marker raised)
    G1 X150 Y100 Z1 (moves the marker in a straight line to position (150, 100) with the marker lowered)
    G1 X150 Y150 Z1 (moves the marker in a straight line to position (150, 150) with the marker lowered)
    G1 X100 Y150 Z1 (moves the marker in a straight line to position (100, 150) with the marker lowered)
    G1 X100 Y100 Z1 (moves the marker in a straight line to position (100, 100) with the marker lowered)
    G0 Z0 (raises the marker)
    Syntactically, these lines are correct. In practice, however, what you’ll get is a straight, diagonal line and no square. The reason is this: the GUI sends lines one at a time to the plotter, waiting 1 second (or however long you tell it) in between. When the plotter is executing one line of code and it gets a new line of code in the middle, it will wait to do the new movement after the old, but NOT for the marker up/down (Z0/Z1). So, in the square example, the marker goes down as it is still moving from starting position (0, 0) to position (100, 100), and by the time it’s gotten to (100, 100), it’s already received the last line of code and lifted the marker again. One solution to this is to increase the wait time to more than 1000ms, but the trade-off is that it will linger in one position with the marker down waiting for code, and that leaks ink into the page, making ugly spots on the page. The inability to set a wait time for individual lines of code is therefore a problem, because most motions take different amounts of time to execute.
    I’m sorry for how wordy this explanation is!
    tl;dr: the marker goes up and down before it’s supposed to.

  2. When you’re using absolute positioning (G90, as in the above example), and you turn the system off, the positions will most likely be different when you next start it up. The reason for this is that it sets (0, 0) to the current position when you turn the system on. The solution I’ve come to is to move the drawing mechanism to the upper-left corner before turning the plotter on. This will save you some major headaches. I spent over an hour formatting code which had (0, 0) somewhere in the middle-right, and was therefore useless when I turned it off and on again. Also, make sure the stepper motor drivers are OFF before manually moving the drawing unit. I can’t say for sure, but the resistance when they are on suggests to me that you can damage them by forcing their movement.
    tl;dr: move the marker to the upper-left corner before turning the plotter on.

Also, do you know of any publishers who might be interested in this novel ^ ??
Just kidding :wink: Happy coding!


#11

Also, I’ve had a couple isolated instances of it combining x- and y-movements from multiple lines. For example, if it’s meant to move in a straight line on the x and then a straight line on the y, it would move in a diagonal. I’ve just been hoping that these were fluke cases


#12

Great explanation @sammccants, the details are great but lack that compelling plot that is needed to really sell that novel you began! :slight_smile: Seriously though, I appreciate the detail as you are further along than I am in the XY Plotter adventure. I will keep those limitations in mind when I start working with this closer. In reference to the tutorial I noted in my response above, I notice it shows how you can use Inkscape with a gcode plugin to generate the gcode for the arduino to process the movements of the motors. On that point, I wanted to ask you a question:

  • How do you get the gcode being created from the gcode plugin to just give a Z0 or Z1? It seems to assume I have a stepper motor for the Z element and wants to give more precise control on the code relating to Z. If you know of a setting to bring it down to just Z0 or Z1, that would be really appreciated.
  • I have reviewed plotters for a while now and spent a good amount of time reviewing the contraptor build that is documented and illustrated on how to build the mechanical and electronics. They have some great ideas about how to drive the plotter, they use the Arduino Due with a gcode interpreter that claims to have more advanced ways of handling the movement of the plotter in relation to the gcode. If you are interested in learning a little more on that device, I would love to collaborate with you on that as I think it could really improve our use of the XY plotter that we are using.

Thanks for your help in this enjoyable hardware we own!

Thanks, Todd


#13

Both you guys had wrote a long novel. I think I have to got a weekend to try your ideas myself and then I can make my comment.:slight_smile:

Great Job and keep moving !! If we got something cool finally we can write a guide and post it out so that more people would get involved.


#14

I hope a weekend gives us even more details @Johnny, we computer people love details. :slight_smile: Let me know if you create an area that has a collection of all your videos and documents that you have made in response to people’s questions, I would love to look at those items as I am sure you put very useful thought into them. I would enjoy learning more from you. Thank you for your product!


#15

@todd, do you mean this tutorial? I can’t find anything on it about inkscape, where do you mean? I haven’t used the tool or the plugin, so I’m really not sure. Worst case, though, you could always just go through the output and reformat it manually. I’ve only used the simple makeblock gui, and as I move along with my project, I won’t even be using that: I’ll just be sending commands from another Arduino via serial communication.

As far as the collab, I don’t know how much help I would be! This is my first time using gcode or a plotter, and I’m just learning it as I go along! Also, I’m doing this for a giant final project, and I have a long way to go and not much time. That thing looks incredibly accurate, though.


#16

Also, I don’t know if you’ve noticed, but the limit switches don’t work with the gcode version. I took me about half a month to get the answer that they don’t use them in the code, and I’m now waiting on a reason why


#17

Here is the tutorial @sammccants, I apologize about thinking it was referenced, I like the interface and it works well for what I need it for but still reviewing:


#18

Could you both tell me what you set your DIP switches to on the stepper drivers? Just trying to find the right setting for them. Thanks for the help!


#19

It looks like the tutorial says you can set the Z up and down settings in steps 11 and 13.
I have my switches set to OFF ON OFF OFF OFF OFF ON, but when my project is nearing its end I might change 5-7 to ON OFF ON or OFF ON ON to make it faster. The pulse/rev table on the side of the driver shows the possible settings for trade-off between speed and precision, with 1 being fastest and 128 being most precise.


#20

How can I upload the software to arduino board? Couldn’t connect the computer to the plotter.