2017 Apr 06
#electronics  #elecFab 

I am using a Lumex 16*2 character LCD Module. This LCD only requires 5v and six data pins to get up and running. I do not have a PCB with the free pins or proper configuration to use with this LCD. Not a problem however, because I have learned my way around designing, milling and stuffing PCBs. Get it.

I started by inspecting Neil Gershenfeld's example LCD board. I posted a low resolution copy of the image here for convenient reference. The linked version is better. While following this is great for a beginner like me, I quickly became aware of other methods that I probably would have preferred to use. That is the point of the exercise and the liberation of literacy.

This LCD uses an Hitachi HD44780 LCD controller, and this is the block diagram. I will be using the LCD in 4-bit operation; therefore not connecting to data bus 0-3. You can count the input pins. Answer: ten.

From his image I was able to develop a list of electronic components I would need to build my own board. In this schematic, there are two free pins on the ATtiny44, so I added an LED, for future fun. While building the list, I added the components from the Fablab common inventory Eagle library. You can just dump the contents into the schematic window and organize your efforts later.

  1. IC1 : 1x ATtiny44
  2. R1 : 1x 10kΩ resistor
  3. R2 : 1x 100kΩ resistor
  4. R3 : 1x 1kΩ resistor
  5. XTAL : 1x Panasonic ceramic resonator
  6. CAP1 : 1x 1UF capacitor
  7. ISP : 1x 2x3 pin header
  8. LCD : 1x 2x5 pin header
  9. Power : 2x2 pin header
  10. IC2 : 1x 5V regulator
  11. R4 : 1x 499Ω resistor
  12. LED : 1x red LED (directional)

I duplicated my efforts from prior boards in terms of connecting the resonator to the ATtiny44, setting the ISP pins, capacitor, resistor on the reset pin and LED/ resistor combination. Then went about making connections to the 10 pin header for the LCD outputs. And finally, setup a regulator on a the power input. The LM3480 linear voltage has a maximium recommnded input of 30 volts. It will take what I give it and return 5 volts. Thank you.

Develop the schematic to a nice level. It does not need to be complete because the board window communicates with the schematic graph. For instance, I completed a board layout with traces and after decided to add the LED.

In the beginning, the PCB graph is a mess. Begin organizing your components on the board.

After roughly organizing the electronic compoonents on the PCB graph window, use Eagle's autorouter feature for some quick traces. If autorouter develops some 100% functioning layouts, you know you are on your way to the mill soon. This is my initial organization of the components and one of autorouter's trace layout.

While the autorouter traces technically work, there were some inefficiencies that could be ironed out. For instance, the Mosi connection from the ISP to the MCU was odd. And, after getting the board organized, I saw a way I could squeeze in an LED. I could use the extra practice at the soldering table.

This time when I exported the PNG and opened in Photoshop for some small edits the size did not double. Other than using a new file, Eagle was recently updated. Perhaps one of those two changes effected the PNG coordination between the two applications.

Again, the outline and trace files can be converted to tool paths in the Fab Modules. Double check all the settings before exporting the machine code.

Tomorrow, I will mill the board, stuff it, and program this LCD. You can do that too. Download these files.

Download project files

I will post links to resources I have found helpful here.

  • Fab Modules
  • HD44780U (LCD-II) controller : Hitachi LCD controller datasheet.
  • Octopart : Search by part number or keyword, find retailers and informations, ie datasheets.
  • LCM-S01602DTR/M datasheet : LCM-S01602DTR/M LCD by Lumex datasheet.
  • LMs480 regulator : LM3480 linear voltage regulator by Texas Instruments datasheet.
  • Hitachi HD44780 LCD controller : Wikipedia.
  • Share this post...

    « Previous post :: Programming "Hello to the World" with C

    I tested the effectiveness of my build with a C program written by Neil Gershenfeld. The contents of the make file are mostly the same as my previous ATtiny44 board. Because I used the same resonator, the timing fuses are the same. Only the name of the C accompaning C file has changed. Create the hex and out files. make -f hello.LCD.44.make Using my FabISP... make -f hello.LCD.44.make program-usbtiny-fuses and then send the program... make -f hello.LCD.44.make program-usbtiny This feels good. Download project files

    Next post :: LCD x Arduino »

    Arduino has a built in libary, "LiquidCrystal.h", for programming this type of LCD. I thought it would be fun to imagine a prototype of HAL 9000 prior to artificial intelligence using the LCD display to communicate and the LED to hint life. Arduino IDE is packaged with many sketches of LCD functions. Browse to File > Examples > LiquidCrystal and you can check those out. First, write in the sketch the command to send the library for the LCD. #include <LiquidCrystal.h> Then, you need to dictate which MCU pins are connected to the RS, E, DB4-7 pins of the LCD...