Friday, February 23, 2007


Biollante Chained

I finally have two boards working together. On the left, is the communications controller; it doesn't do much but convert RS-232 line levels and repeat outbound packets at the moment, but I hope to have it driving synchronous movement and displaying debugging data soon enough. On the right is the stepper controller.

These modules are similar to the standard ones on the site, but differ in several important ways.
1) Packet format -- Far simpler than the SNAP the standard firmware uses, and actually human readable/writable. A serial console is enough to do testing.
2) Hardware Flow control -- Without hardware buffers, SOME way of slowing down transmission from the computer is needed. Simple CTS hardware flow control is enough -- deassert the CTS line and the computer stops transmitting.
3) Software -- SDCC now has proper support for some things it didn't back when the original RepRap firmware was written, like defining EEPROM values. Several lookup tables, and things like the chip ID, have been shoved into EEPROM to conserve code space.
3) Pin Assignment -- To use more of the pic16f628a's internal hardware, some pin assignments have been shifted around. RA4, for instance, is uniquely suited to be the SYNC input -- it can act as a direct clock source for the timer instead of watching a pin with busyloops.

cool stuff. have you talked to adrian about possibly getting this stuff intregrated with reprap core? obviously we'll need to see it working first... but you seem to know what you're talking about.

ps. how did you make those boards? do you have any pix?
Sorry, missed this comment.

I'm not sure it CAN be integrated, there's considerable differences and people are already making 'universal' control boards. I resigned myself to writing my own firmware when the reprap build scripts:

a) Tried to download and build sdcc, something I already had
b) Tried to write to root, a major no-no

...and figured, if I'm writing it from scratch, I might as well design it how I like it.
I'm using these as my base. I solder sockets, components, and wire-wrap posts where I wish, then connect signals from post to post with wire-wrap wire. It's solider than a "solderless breadboard" but still lets me rip out wiring and redesign without a soldering iron.

I also use modules. In the board on the left in the main photo, you'll see two upright boards in sockets; I plug these in when I need debugging I/O, and pull them out when debugging is done. I've got a DIP switch module, a debounced pushbutton module, and a LED display module. The connectors are just right-angle double pin headers; single pin headers would do, the "upper" pins are connected to the "lower" ones, but double pins stay in the sockets nicely.

These boards aren't perfect; the polarity of their power connector is precisely the opposite of a "standard" wall wart, some extra wiring is needed to use the unused MAX232 channel to drive the CTS line, etc. With a little work and some cutting of traces, they do what I want. Once I've got more than 2 motors working in concert I'll start thinking about designing my own board.
Post a Comment

Links to this post:

Create a Link

<< Home

This page is powered by Blogger. Isn't yours?

Subscribe to
Posts [Atom]