Uncategorized

Drawbot update: easier to configure, redux!

The Drawbot GUI has had a signifigant update this morning.

  • Menu items are disabled until the GUI confirms it is connected to the robot
  • GUI can now read & write robot config settings
  • Files are removed from “recent files” if they could not be opened.
  • Log tab is cleared when connection is reset
  • File tab is cleared when file is changed/fails to load
Uncategorized

Drawbot update: easier to configure!

It used to be to configure the drawbot you had to look for and change some pretty cryptic things in the code: X_SEPARATION, LIMYMIN, and LIMYMAX.  Worse, if you ever changed these values you had to re-flash your robot.  Maybe not a lot of work for an engineer, but too much for someone who wants it to just work.  So the latest version throws out all that and adds a new command.

CONFIG [Tx.xx] [Bx.xx] [Rx.xx] [Lx.xx];

Description: Sets the limits in the robot.

Input: the Top, Bottom, Right, and Left limits in the robot.  All measurements are in the current mode – you can switch to inches before calling config and it will compensate.  By default it expects centimeters (cm).  You can leave out any of the [values] and it will assume these numbers are unchanged.  You can rearrange them so long as the command starts with CONFIG and ends with a semi-colon.  You can leave out all options and get the current state of the limits.

Ouptut: The newest limits, the current feed rate, and the current acceleration.

Note: This command replaces LIMITS; as the output is the same.  The name has been changed because CONFIG; can be expanded on to add more features later.

Uncategorized

Drawbot G-Code Tutorial

When you first turn on the drawbot in Arduino, you should see text similar to this:

== HELLO WORLD ==
(-14.00,-30.00) - {14.00,21.50)
F8.90
A5.00
== DRAWBOT - 2012 Feb 28 - [email protected] ==
All commands end with a semi-colon.
HELP; - display this message
WHERE; - display current virtual coordinates
LIMITS; - display maximum distance plotter can move
DEMO; - draw a test pattern
TELEPORT [Xx.xx] [Yx.xx]; - move the virtual plotter.
As well as the following G-codes (http://en.wikipedia.org/wiki/G-code):
G01-G04,G20,G21,G90,G91
>

Let’s take a look at each of these commands and what they do in detail.

HELP;

Type in this command and you’ll see the help message again.

WHERE;

When you first turn on the robot it assumes that it is at (0,0) and WHERE; would return exactly that.  If you moved X+10 and typed WHERE; again it would say (10,0).  X+ is to the right, Y+ is up just like on graphs you’d draw in class.

LIMITS;

limits are the maximum distance the robot will move the plotter.  This

(-14.00,-30.00) - (14.00,21.50)
F8.90
A5.00

is the part of the message when you turn it on.  the first parenthesis are the bottom left corner, the second parenthesis are the top right corner, F is the “feed rate” (maximum speed) and A is the maximum acceleration.

DEMO;

You’ve seen the youtube drawbot video with the test pattern and halftones?  This is how you draw that test pattern.  It’s a great place to start to check if your steppers are backwards or your speeds are too high.  More on that in a future post.

TELEPORT [Xx.xx] [Yx.xx];

When you first turn on the robot it assumes that it is at (0,0).  Let’s say the actual position on the wall is (3,-5).  You need an easy way to correct this.  TELEPORT X3 Y-5; will tell the robot “no no, you’re actually over here.”  After that you could say G00 X0 Y0; and it would move to the actual (0,0).  If you don’t specify an X or Y, the current value will be used.

G00 [Xx.xx] [Yx.xx] [Fx.xx];

G01 [Xx.xx] [Yx.xx] [Fx.xx];

Draw a straight line from the current position to (X,Y) with a maximum speed of F.  If you don’t specify an X,Y, or F, the current value will used.

G02 [Xx.xx] [Yx.xx] [Fx.xx] [Ix.xx] [Jx.xx];

G03 [Xx.xx] [Yx.xx] [Fx.xx] [Ix.xx] [Jx.xx];

Draw a circular arc to from the starting point here to (X,Y).  The center of the circle is (I,J) away from the starting point.  G02 draws a clockwise arcs.  G03 draws a counter-clockwise arc.

G04 [Px.xx];

Dwell, aka wait P milliseconds.  Remember that you need 1000 milliseconds to pause for one second.

G20;

Programming in inches (in).  The robot works internally in centimeters (cm), so it will divide all coordinates you give it by 2.54 (cm/in).

G21;

Programming in millimeters (mm).  The robot works internally in centimeters (cm), so it will divide all coordinates you give it by 0.1 (cm/mm).  This is the default.

G90;

Absolute mode.  In this mode, a G00 X1 Y0; will move to (1,0).  This is the default.

G91;

Relative mode.  In this mode, a G00 X1 Y0; will move 1 cm to the right.

Uncategorized

Drawbot update: new GUI for ease of use

  • Remembers the last ten files you opened and the last serial port you selected.
  • Start/Stop/Pause
  • Popup for tool changes
  • Logging event message
  • % completed in the status bar

Post your feedback below!

Uncategorized

What kind of physical tools do you use most often to build robots?

Everyone will give you different advice on this subject, so here’s what it boils down to: You need the tools you need. Acquire them as they become necessary. If, however, you want to save a few trips to the store here are the top 7 tools I would get if I had to start from scratch.

  • wire stripper None of that pre-gauged hole business. You can strip wire by feel after very little practice.
  • soldering iron Don’t skimp here, and take care of it! It doesn’t take much to learn to use a soldering iron.
  • multimeter These things are awesome. I have a $100 VICTOR VC890C+ that has saved me money. It’s great for checking voltage, amperage, resistance, or just touching two ends of a wire to see if there’s a break in the middle. It can even tell you the temperature.
  • screwdrivers I have a small screwdriver and big screwdriver, both with interchangeble bits.
  • needle nosed pliers I have two, but only because I tend to leave each one on a different desk. Sloppy!
  • imperial and metric hex keys Every time I think I have all the hex keys I need, someone puts out a set screw in a size I don’t have.
  • helping hands I use the metal kind that hold my soldering wires and the girlfriend kind that can reach where my fat fingers can’t.

I also find it handy to have two really big breadboards, a few meter long pieces of heat shrink, and some spools of red, blue, green, and black solid-core wire.

You don’t need smaller or better boards until you have reached the limits of the Arduino, and then it will probably be project specific – you’ll come back to Arduino.

The most useful tool is between your ears. Be very specific about your goals and be brutally efficient getting to them. Having said that, playing is a great way to familiarize yourself with the tools at hand. Make an LED blink, make it fade with PWM, make a servo move, get a stepper going. Read a potentiometer, build your own encoder, and now you’re starting to cook because your Arduino can sense itself and move itself. Throw in some more sensors and it can start to react to the world and SHAZAM! You are now building intelligent, responsive robots.

The single best place to get great advice and access to all these tools and more is your local Hackspace. Find your local spaces @ http://hackerspaces.org/wiki/