Project

General

Profile

LAOS I2C Panel v03 » History » Version 9

pieterb, 2012-07-18 13:57

1 1 Anonymous
h1. LAOS I2C Panel v0.3
2
3
{{>toc}}
4
5 3 Anonymous
!>Panel-rev0.3.jpg!
6 1 Anonymous
7 6 Anonymous
%{color:red}This page needs to be cleaned up!%
8
9 1 Anonymous
h2. Basics
10
11
We designed a panel with a 2x16 LCD, 4 buttons and a joystick. The heart of the panel is a ATMEGA168-20PU running a small Arduino program. The panel uses I2C communication to the MBED board, but there is also a connection for a standard USB->TTL cable. You can use such a cable to upgrade the program in the Arduino chip.
12
13
h2. Functionality
14
15
_The functionality is not implemented in this board, but in the program on the MBED. The Arduino only receives data for the screen and sends keys via I2C. The functionality is stated here just to show what it will do_
16
17
While no job is running:
18
19
* manual focus, using up and down buttons (for some machines this will mean that the Z-axis is moving, others will move the lens-holder up and down)
20
* moving the head to a specific location (X-Y axis)
21
* select the current location and make that the origin (x=0, y=0, z=0)
22
* select print job
23
24
while job is printing:
25
26
* pause printing / continue / cancel
27
28
h2. Electronics
29
30
We designed our own board and software (arduino based) to connect the display board to the mainboard (via I2C). The schematics (in KiCAD) are located ["here":https://tuxic.nl/laos/hardware/panel/]. Most important parts:
31
32 4 Anonymous
"Full part list is available in SVN":https://tuxic.nl/laos/hardware/panel/pcb/bom.ods
33 1 Anonymous
34
* "16x2 LCD Display, RS stocknummer 532-6408, € 5,71":https://laoslaser.org/laos/hardware/panel/Datasheets/0900766b806dda16.pdf
35
* ATMega168P-20PU, RS stocknummer 696-2430
36
* 4 pushbuttons
37
* 1 joystick button
38
* and of course, the board
39
40 4 Anonymous
!173px-Panel-rev0.3front.jpg!
41 1 Anonymous
42
h3. Bill of Materials
43
44
|_.Number|_.Component|_.RS Part No.|_.RS Price|_.Farnell Part No.|_.Farnell Price|_.Comment|
45
|1|LCD display, 16x2 characters|532-6408|€ 4,62| | ||
46
|1|ATMega168P-20PU|738-0375|€ 5,22|1636933|€ 4,81||
47
|4|Thru hole tactileswitch12x12x7.3mm|378-6763|€ 0,46| | ||
48
|1|PCB Stick switch, 4 dir + centre push|516-316|€ 2,46|1435775|€ 2,47||
49
|1|Ceramic resonator THT CSTLS 16.00MHz|526-6154|€ 0,56|1448129|€ 0,46||
50
|1|28way low profile DIL socket,0.3in pitch|801-768|€ 0,24| | ||
51
|1|100uF capacitor|711-0703|€ 0,03| | ||
52
|2|100nF capacitor|721-5240|€ 0,07| | ||
53
|1|680R resistor|707-7656|€ 0,02| | ||
54
|1|10K resistor|707-7745|€ 0,02| | ||
55
|1|36 way straight header,7mm top 3mm below|251-8632|€ 0,31| | ||
56
|1|NPN transistor,BC547C|545-2248|€ 0,07| | ||
57
|3|plastic buttoncap black|378-6943|€ 0,11| | ||
58
|1|plastic buttoncap red|378-6937|€ 0,11| | ||
59
|1|Eurocircuits PCB E412106| |€ 7,50| | |Available from LaOS (see [[WebShop]])|
60
61
h2. Mechanical construction
62
63
* printboard is directly under the display
64
* i2c through a 4-pin flatcable with pin-header
65
* 6-pin USB->TTL connector for easy updates on the Arduino
66
* 4 standard pushbuttons
67
* 1 3D-printed joystick button
68
69
The design files for the frontpanel and buttons can be found here: ["Frontplates":https://tuxic.nl/laos/hardware/panel/frontplates/]
70
71
h2. Implementation
72
73
The software on the arduino chip is "available in SVN":https://tuxic.nl/laos/hardware/panel/firmware.
74
75
The electronics are based on "John Crouchley's ATTiny2313":http://john.crouchley.com/blog/archives/612 implementation. The Arduino (or Ottantotto) electronics come from "Edwin Dertien":http://wiki.edwindertien.nl/doku.php?id=boards:ottantotto:start#pin_description.
76
77
Relevant Arduino libraries:
78
79
* LCD driver: "http://www.arduino.cc/en/Reference/LiquidCrystal":http://www.arduino.cc/en/Reference/LiquidCrystal
80
* i2c: "http://www.arduino.cc/en/Reference/Wire":http://www.arduino.cc/en/Reference/Wire
81
* Keypad: "http://www.arduino.cc/playground/Code/Keypad":http://www.arduino.cc/playground/Code/Keypad
82
83
I2C on the Mbed: "http://mbed.org/handbook/I2C":http://mbed.org/handbook/I2C <em>"Have a look at this very enlightning drawing!":http://mbed.org/media/uploads/ColonelPewter/i2c_001004.gif</em>
84
85
For debugging, you can use any PC with a home-made I2C adapter:
86
87 5 Anonymous
p(((. http://www.instructables.com/id/Worlds-Cheapest-I2C-I-Squared-C-Adapter/
88 1 Anonymous
http://www.paintyourdragon.com/?p=43
89
90
91
h2. Building your own
92
93
To make life easier, we sell premade PCB's and this panel as a kit. See the "WebShop":/index.php/WebShop.
94
95
The kit contains:
96
97
* PCB
98
* ATMEGA168-20PU, pre-programmed with the Arduino bootloader and this I2C program (so you can install it even if you do not own a USB-&gt;TTL cable).
99
* LCD
100
* other electronic parts
101
* Buttons
102
* I2C wire to motherboard
103
104
Parts it does not contain:
105
106
* laser cut panel. You can make one on your laser, maybe? Probably you want one to fit into your machine, anyway. See below for the panel the MiniFabLab made for its HPC LS3020
107
* 3D printed joystick button. When I design one I'm really proud of, I might include it.
108
109
Feel free to make the panel yourself if you prefer. No need to buy stuff if you have an Arduino lying around with LCD and some buttons!
110
111
h2. Soldering
112
113
* Solder the foot for the Arduino first, making sure the notch is on the same side as the one on the print.
114
* Place the two resistors. The print says 680 for Resistor 1, which means 680 ohm. Put another one of 10k Ohm in the place marked R2.
115
* Solder the two 100nF capacitors
116
* Solder the 100uF capacitor with the plus in the square hole
117
* Bend the wires of the BC547C so it's flat on the print
118
* Place the ceramic filter
119
* Place a 2-pin header in P7, a 4-pin header for I2C and a 6-pin header in P1 (TTL).
120
* Now take a 16-pin header and push it with the long side in the board from the back of the board. The long pins will stick out on the top side of the board. On the back is the black plastic of the header. Measure with the display module to see if the pins are long enough to go just through the module. Solder the 16-pin header to the board on the TOP side of the board (where the rest of the components is).
121
* Place a strong piece of tape on the back side of the board, covering the part of the board that will be under the display module, so that there cannot be any shortcut between the board and the display module. You can use electric shielding tape or gaffer tape.
122
* Solder the display module on the back side board, with the black blocks of the 16-pin header in between.
123
* Solder the 4 buttons in the board (not the joystick yet!) with the buttons on the side of the display. This is confusing: the buttons go on the side where it does NOT say button! See photos.
124
* The joystick has a very small dent in the top metal layer. If you put the joystick in, this dent should be on the right side. Solder it in.
125
* The holes you have left are for making wire-bridges on a single sided board. You don't need them.
126
127
h2. Software installation
128
129
h3. Installing a bootloader
130
131
These instructions are for ATMEGA168P-PU only!
132
133 5 Anonymous
    cd arduino-1.0.1/hardware/arduino/bootloaders/atmega
134 1 Anonymous
avrdude -p m168p -c usbasp -F -U flash:w:ATmegaBOOT_168_diecimila.hex -U hfuse:w:0xdd:m -U lfuse:w:0xff:m -U efuse:w:0xf8:m
135
136
137
Note that the Debian version of avrdude does not support m168p yet, you can use the avrdude version shipped with Arduino.
138
139
Error message while installing:
140
141 5 Anonymous
    avrdude: safemode: efuse changed! Was f8, and is now 0
142 1 Anonymous
Would you like this fuse to be changed back? [y/n]
143
144
145
Answer n !
146
147
h3. Arduino Sketch
148
149
Use a USB=&gt;TTL cable to connect the board to your computer. Install "Arduino":http://www.arduino.cc software. Get "lasercutterpanelv0&#95;3.pde from SVN":https://tuxic.nl/laos/hardware/panel/firmware/lasercutterpanelv0_3.pde. To test your panel, change:
150
151 5 Anonymous
    #define DEBUG 0 
152 1 Anonymous
153
154
to
155
156 5 Anonymous
    #define DEBUG 1
157 1 Anonymous
158
159
Arduino settings: Board: Arduino NG or older with Atmega168
160
161
Upload the file to the board. This will give you a welcome text. After the text has disappeared, all buttons should show a number on the screen. The joystick should show 5 different values for each direction and middle push.
162
163
If it works, upload the code again with *DEBUG 0*. The panel is now ready to be connected to the mainboard.
164
165
h2. Control Panel on the HPC LS3020
166
167 7 bartb
168
To accomodate the display you can cut a replacement for the control panel. 
169
170
!greenpanel-bart.jpg!
171
172
The button laser switch was replaced by a toggle for better on/off reference. So the right serial test button could be omitted. Also the lighting switch was removed, now the light is always on. No modifications are required for the cabletree, just connect the wires from the removed switches. The air pump switch was kept as a compressor can be noisy. It is advised to use a shielded cable between the I2C panel and the board. A cutting file (.svg) of this panel is available on "miniFabLab":http://minifablab.nl/uploads/LaOS3020panel.svg.
173 1 Anonymous
174
h2. Design competition
175
176
I couldn't find a fitting existing joystick button for the joystick in this design, so I made one on the 3D printer. But I'm not entirely happy with it yet. If you design a better one, please upload it here!
177
178 2 Anonymous
h2. Enhancements
179 1 Anonymous
180
Possible enhancements to the display:
181
182
* Make (I2C) connector holes slightly larger to be able to mount JST connector (also, some more clearance to micro controller is required)
183
* larger holes also for USB-&gt;TTL cable and display
184
* move capacitor U4 to a safer place, near micro controller
185
* holes for R2 are too big and texts for resistors are strange
186
* mark clearly on the board that the buttons go on the back side!
187
* Add status LED(s)
188
* buzzer?
189
* Rotary encoder for (power) settings
190
* Graphical touch-screen display?
191
192
h2. More
193
194
More ideas about I2C panels? See "display-alternatives":/index.php/Display-alternatives.