sandy

About sandy

Designer and builder of Polargraph machines, software etc.

Running Polargraph on RAMPS

There’s been a bit of discussion on the forum about the adaptations required to run the Polargraph firmware on RAMPS. The good news is it’s easy. I’ve just committed some changes to the polargraph_server_polarshield firmware that should make it easier to run on different hardware other than the Polarshield.

There is a little chunk of code like this in the main polargraph_server_polarshield.ino file:

#ifndef MOTHERBOARD
#define MOTHERBOARD POLARSHIELD
//#define MOTHERBOARD RAMPS14
#endif

Comment out the POLARSHIELD line and comment in the RAMPS14 line, and your machine will be rigged for RAMPS. See this Polargraph wiki article wot I wrote up.

 

Polargraph Server for Adafruit Motorshield v2

There’s been a bit of ongoing investigation about getting the polargraph firmware running with the new Adafruit Motorshield (v2). I have just got one of these shields recently, so have only just had a chance to work on it tonight.

https://github.com/euphy/polargraph_server_a1

The new Adafruit library is slightly bigger than the old one, and the polargraph_server_a1 firmware was super tight on space already, so I’ve split up the code into a set of features that can be easily enabled or disabled at compile time to save space:

  • PIXEL_DRAWING – This is pixel shading.
  • PENLIFT – Controlling a servo to lift the pen.
  • VECTOR_LINES – Drawing straight lines, aka vector plotting.

So to get this to fit on, you need to disable either PIXEL_DRAWING or VECTOR_LINES – can’t have both anymore, not with Motorshield v2.

For convenience, I’ve pre-compiled two binaries, one for Motorshield v1 (using AFMotor), and the other for Motorshield v2 (using Adafruit_MotorShield). The firmware for Motorshield v2 has pixel drawing disabled.

This is a bit of a pain, but I don’t see an acceptable alternative.

I haven’t tried this for actual drawing yet, because I haven’t got a machine made up that uses this system, but at least the motors move! Please let me know if there is any success – or otherwise.

Happy scribbling!

See also http://www.polargraph.co.uk/forum/polargraphs-group2/troubleshooting-forum5/motors-not-working-when-i-compile-but-hex-works-thread324/

This knowledge transferred to: https://github.com/euphy/polargraph/wiki/Polargraph-Server-for-Adafruit-Motorshield-v2

Polargraph at the Edinburgh Science Festival

So I’ve finally been able to step away from the new installation that I’ve been building to be presented as part of the Edinburgh Science Festival, in the Grand Gallery in the National Museum of Scotland. It’s pretty swish.

Polargraph at Edinburgh Science Festival

A little PC inside uses a webcam to detect faces in the crowd, and the faces that stay still are snapped, cropped, converted to line art and then drawn out on one of the two drawing machines either side.

The machines themselves are a new prototype breed of Polargraph, with Teensy 3s at their hearts, and Easy Drivers doing the moving. The guts of them are laid out as on an dissection table.

Polargraph at Edinburgh Science Festival

The drive chain consists of a stepper motor and an optical encoder, coupled by the beaded cord. The encoder keeps track of the true position of the cord, and so these machines are wonderfully robust. They can hop and skip, get pulled around and abused and they do not lose position.

PolargraphPro transmission

Small magnets sewn onto the cord, and reed switches above the encoder wheel make self-homing trivial.

PolargraphPro homing mechanism

The pen lift is half a lolly stick, hot-glued onto a servo motor, blu-tacked onto the gondola.

Polargraph at Edinburgh Science Festival

The controller is a Python Flask web app, publishing its interface as a web page. It is very simple at the moment, but is pretty extensible. Part of the app is a core class that encapsulates the communications, queueing and commands. Writing this in Python rather than Processing / Java has been a resoundingly positive experience (less so actually installing Python and it’s libraries on Windows – but you win some, you lose some).

IMG_20140405_160452105_HDR_c

The firmware is a stripped-back version of the standard Polargraph firmware, using a couple of nice Teensy features – namely the IntervalTimer library to deal with serial concurrent serial comms.

The Making It exhibition runs from the 5th to the 20th of April, in the Grand Gallery of the National Museum of Scotland. It is presented by the Edinburgh International Science Festival. You should go and see it!

IMG_20140409_084402602_c

 

Polargraph Pro Preview

Hello, I’m getting excited about the new Polargraph installation that’s been eating up all my time recently. IMG_20140327_160058025_HDR This is part an exhibition called Making It, itself a feature of the Edinburgh International Science Festival, and it’ll be running in the Grand Hall of the National Museum of Scotland, here in Edinburgh, for most of next month (April 2014).

IMG_20140330_112312329_HDR

I’m just putting some finishing touches to the machine and the control software.

There’ll be more of an update when it’s up and running.

Mystery of the Gappy Drawings- new controller version

I have uploaded v1.7.1 of the controller here on github. I know it’s in the wrong place, but I couldn’t figure out restructuring the projects quite yet.

So, polargraph innovator Kongorilla pointed out that he was getting gaps in his pixel shaded drawings, some 8 months ago. I was baffled, but agreed that , forsooth, they were gaps. Like him, I’d seem them, but never seemed to be able to replicate them. Like a ninja, they seemed to melt into the night, leaving me with a haunted feeling.

a40k5-IMG_20140309_19193207622

Well, thanks to his work, including the sample drawing patch above, and encouraged by code sleuthing from Nosetinker (and literally no contribution from me), a solution has been found!

While the value for grid size is displayed as integers, internally it is handled as a float. In the example above, the grid size was displayed as 41, but was actually 41.5, internally. When the positions of each pixel were calculated, and rounded to the nearest integer, 41.5 became 41. The next pixel along was put at 41.5+41.5: that is 83, and there’s no rounding there, but that means that there is 42 steps between them instead of 41.

So one pixel is 0.5 steps too high, and the next pixel is 0.5 steps too low. Simple! I had thought it would be something more tricky than that – thanks to Nosetinker and Kongorilla for shining a light on this – sorry it took me the better part of a year to get around to doing anything about it.

Note – I don’t have a machine right here to test it with, so it still might be something afoot. There are no updates to the firmware, but it is included in the zip.

(Note the first version of this, 1.7 wasn’t right, hence the extra .1)

Pre-order PolargraphSD v1.8

I’ve just made a listing for the PolargraphSD v1.8, over at the Polargraph Shop.

The price of it is likely to be the same as the last round, but if you want to pre-order at a decent discount, you can put a 25% deposit down to hold your place in the queue as well as make cash flow a little more predictable. It’s a kind of micro kickstarter. I hope to have this ready for shipping in May, but it’s more likely to be June.

I hope to enlist an extra pair of hands to help me assemble this time around, and am having this semi-formal fund-raising period so that I can buy a few critical parts in a full-sized batch (ie 50), rather than buy them piecemeal over the run of the batch. That ended awkwardly last time, with delays and malfunctions a-go-go.

Edinburgh Science Festival Project

I’ve been asked to make an installation as part of the Edinburgh Science Festival in April, so that’s the project that’s eating up my time at the moment, and the reason for the halt to PolargraphSD manufacturing.

This thing is going to be great though: Two large portrait machines, continuously drawing faces from a kinect / webcam on rolls of paper.

I’m using a Teensy rather than an Arduino for this project, EasyDrivers and optical encoders to close the loop and keep track of position. This will make for a more robust, semi-automatic machine. I hope to have endstops too, and a good presentable gondola that can take a range of fat pens.

I also hope to be taking one of my machines along to the Mini Maker Faire that closes the festival at the end of April.

 

PolargraphSD firmware update for SD card problems

SD cards are tricky beasts. I have spent the last few days trying to get better reliability out of my polargraph machines. I found a bunch of new SD cards that just wouldn’t initialise. Then I tidied up the software init routines, and some sprang into life! Hurray!

There is a new PolargraphSD firmware available in the github repo, and I’ve also rebundled it into a zip using the new releases feature in Github:

Polargraph v1.7.25

The design of the Polarshield, and the interaction between it, the arduino underneath and the SD card reader on top, the USB port and the power supply is clearly dysfunctional. Some combinations are trickier than others, it isn’t at all clear to me why.

The takeaway is hopefully that a couple of SD cards that previously did not work, now do. Please have a go with this, and let me know.

Pause for thought. And breath.

I’ve got half a dozen Polarshield PCBs left, but I’ve marked them as “sold out” in the shop.

I’m tired. I’ve had a few technical set-backs recently, that would be merely irritating if I was only make two machines a month like this time last year, but it immediately escalates into a full car-crash when I’m making a dozen a month – there’s just no room for mistakes, all the stakes are higher, and things move faster, sell out faster, need more careful management and delays cause more people at a time to be annoyed.

Not a bad problem to have? Well that’s true, poor me, boo hoo, there are worse problems, and I genuinely thank all my customers profusely, and everyone who has joined in on the forum and by email – actually by far the best bit of the project.

But I’m going to work to get this last problem sorted out (accursed SD cards and power management, I do bite my thumb at thee), and then pause my sales and manufacturing department (that’s what I’m calling my hands this week) for a bit to review the project as a whole.

I have an installation to work on in February, which will hopefully be presented as part of the Edinburgh Science Festival in April, and should be jolly exciting, and result in some neat new pieces of tech and software – encoders and a proper library at last! Right now I would not be at all disappointed if that was the last Polargraph machine to roll off the production line – the last of the V8 Interceptors, as it were.

However, let’s be realistic, I suspect the lure of the humming motors, the clattering of beaded cord and the pleasure of visiting my favourite post office lady will soon bring me back in, and … with upgrades.

External power input on Polarshield

Polarshields have always had a space for an external power input. This is so that you can have a high voltage supply to drive the motors, while letting your arduino, and all the logic chips run on a standard 5v, or USB supply.

External power jack on polarshield

I got this idea of running two power supplies from the Adafruit motorshield. In their case, the reason was that when the motors started sucking down the power, the voltage supplied to the arduino would drop below 5v for long enough to cause a reset.

I’ve never had that exact problem, but I don’t like running an arduino on a high voltage, when there’s also a high current (like when running motors). The voltage regulators get hot, and while they are within tolerances, it’s not right, and always makes me worry when I put my fingers on them.

The machines I sell are protected by the case, and I was overjoyed when I got a new batch of Freaduino Mega2560s through to use in them, because they are the only arduino compatible boards I have seen to use a high-current, switching voltage regulator rather than the hot’n’cheap linear regs used everywhere else (including the genuine Arduino). These little chips are efficient and stay cool under lots of current.

However, when you buy a Polarshield on it’s own, or in a vitamin kit, you can plug it into any old board. Because they are exposed, it is so much more obvious that something is getting hot. Again, it isn’t dangerous with the motors I use in the vitamin kits, and at low voltages, but if you want to use bigger motors or run at higher voltages, it will not do. The heat makes it clear that there is no headroom.

 

So the solution is to separate the two power circuits by removing the small blue jumper on the polarshield (just beside the power jack), and plugging your motor power supply into the polarshield power jack. The arduino should have it’s own power supply.

Historically, I’ve not soldered the external power jack in, but I have a bag of them and if anybody wants one, I’ll post one over. From now, all polarshields will include this jack, soldered in – unless you drop me a line to say otherwise.