Thursday, 27 December 2012

Huxley Panelolu display and heated bed...

Ever since I saw the Panelolu LCD display for a RepRap printer, I just had to have one for Huxley #710. Unfortunately the original implementation used most of the I/O pins available and meant that one had to loose the heated bed and possibility of self setting bed height (not in a release yet as far as I know). Additionally any further developments that RepRap Pro might choose to implement might be blocked.

HD44780 Compatible display
With this in mind I have been working on an I2C implementation of Panelolu type display system. A couple of weeks ago I managed to implement the software based on Marlin release 97fa2a9c30 28 November 2012.

There are a number of advantages of an I2C implementation:
  • Only two I/O pins are required.
  • More i/o can be added on the same two wires.
  • The lines can be longer than a parallel implementation and readily screened.
  • The Atmel part has a native I2C port
  • Lots of support in Arduino libraries
  • Could be bit banged if necessary
The principle disadvantage is the speed limitation associated with a serial communications interface. Polling is also not a good idea due to the speed limitation. Although it might be possible to implement an interrupt feature to support better responsiveness on the proviso it does not interfere with the printer software.

The implementation was based on the LiquidCrystal_I2C for the Arduino using a Phillips (NXP) I2C chip PCF8574P as described in the libraries associated documentation. Using this device a serial communication can be achieved to a parallel I/O port.  This essentially allows for a serial to parallel conversion and thus control of a HD44780 compatible LCD display device as used in the Panelolu design. The chip also has bi-directional i/o ports. Thus supporting input as well as output. So the plan was to use two devices one for the display and one for the switches etc.

The good, the bad and the ugly...
The great thing about open sources is that you get to benefit from lots of people working on projects thus 'standing on the shoulders of giant's'. Simultaneously of course you can find yourself working in parallel on a blind alley. In this case I selected the chip as the library seemed well supported and the chip is low cost, with alternates out there that would not lock a solution into one device.

LiquidCrystal_I2C implementation from the notes
After finishing the code, I was looking around the internet and came across an update from Think3DPrint3d who designed the Panelolu. Tony has also been working on an I2C implementation and has elected to work with a Microchip I2C part MCP23017. This beast has twice the I/O capability of the Philips part and the Microchip MCP23008 I2C part.

So I have decided to junk the Philips part and switch to the Microchip part as one part will support both the LCD and the keboard.

Whilst doing this, I also developed a CAD model to allow me to implement a neat box for my display and keyboard. If you would like a copy of the HD44780 STEP model for the 20 x 4 model, you can download it from here. You can get the software configured for Huxley #710 here. I have no intention of taking this software forward in this form at the moment. I have ordered the Microchip part so that I am hardware compatible with the upcoming Panelolu implementation.

Either way, I will have Huxley #710 running with the Microchip part by the end of January at the latest. Until then, the LCD panel with the Philips part is fantastic. The temperature updates are rapid and the status updates on the display are very handy.
RS 720-0226 Fordata FDCC2004B-FLYYBW-51SE

I may yet implement the Nokia 5110 display with Huxley #710, a graphic of the part being printed would be cool on a progress style screen. At the moment though we are just having too much fun printing and working with our new glass table!

Sparkfun Nokia 5110 LCD Display CAD mode




No comments:

Post a Comment