Sunday, March 24, 2013

Mounting Kill Switch

On 21st Feb 2013, Sudirman mounted a kill-switch on the bike front panel.



Yellow kill-switch mounted.

The bike already equipped with push-start button, which made easy for us to test our system. 
To kill the bike, we had to keep turning the ignition-key; a hassle to us. 
We decided to mount the kill-switch so that our experiment go smoother.

From Bike to Barebone

On 18th Feb 2013, Sudirman disassemble our bike completely.
The picture pretty much explain everything, nothing I could add.

Our bike is now resting, cold outside, covered with blanket, waiting for us to finish our system...

Modified Sine Wave Inverter Attempts

On 13th Feb 2013, Sudirman build an enclosure for our DC-DC converter.

Drilling for power connector.


Fastening double sided tape to dampen vibration.

 Fixing any minor misalignment.

 Tightening the bolts.

End result.

On 15th Feb 2013, I tinkered with modified sine wave inverter design, playing with the popular TL494.

Built on breadboard.

Yellow and Blue is the output, purple is the sum of both.

I want the running frequency close to 50Hz, spending like two days tweaking components, I can't get it to work lower than 1kHz. I know the appnote confirmed this, it quotes "The oscillator is programmable over a range of 1 kHz to 300 kHz.", I just can't help myself to try my luck... :)

On 16th Feb 2013, the next day, demotivated by the specs. of TL494, I decided to give pure square wave inverter a try. It's also a good chance for me to test out the HCl and H2O2 solution. 

Using discarded PCB to test the reaction time.

Cutting PCB layout.

Zoom in.

Toner transfered.

The reaction time is too slow, so...

I heated up the solution by submerging it in boiling water.

We're done...

Holes drilled.

Top view.

Layout compared.

Silkscreen transferred.

Sadly enough, due some careless mistake, after the PCB was done, silkscreen was transferred,when my soldering iron heated up, I just noticed, the layout were mirrored... :(
So, we had to redo it. Here we go again...

On 17th Feb 2013, we redo the PCB again. :) 

Changing cutting disk.

Cutting the PCB.

Close up.


Removing oxide layer.

Toner transferring.


Accelerating reaction time by heat.

Done drilling.

Test drilled holes.

Applying thermal compound.

Attaching IRFZ44N MOSFET.

Done soldering.

The circuit above is very close to this circuit. It's CD4047 based. The modification that I made is the utilization of TC4429 inverting MOSFET driver. This is to force the FET fully-on and fully-off; avoiding the FET's linear region, reducing power loss, minimizing waste heat.

Voltage output about 1116VDC, as indicated by the red UNI-T multimeter. 

We intended to place a voltage display on our inverter (the red 7-segment, just above the multimeter), I formed a x10 voltage divider, but, the internal-impedance of the meter is way too low, thus altering the displayed value; it shows 992VDC in the picture. We had to cancel our plan.

Above, the circuit performance is tested, loaded with 40W light bulb. The oscilloscope shows the output waveform. Notice the high harmonic content, even with filter cap. The output is quite harsh, I can hear the transformer humming, it also gets warm, even without load, maybe caused by eddy-losses, and harsh switching.

On 23rd Feb 2013, the poor efficiency of square wave inverter leads us to modified sine wave design. At first, I thought I just want to use CD4017 based circuit, like this, but, inspired by this webpage, I thought why not just utilize a PIC mcu? :)

Using PIC10F220, with internal oscillator, I make the program in assembly language, using this tool for precise timing, pin GP0 and GP1 as the output.

2:  ; PIC10F220 Configuration Bit Settings  
4:  #include ""  
6:  ; CONFIG  
7:  ; __config 0xFFEB  
10:        CBLOCK   H'10'  
11:        RAM1  
12:        RAM2  
13:        RAM3  
14:        ENDC  
16:        ORG     H'00'  
17:        CLRF    GPIO  
18:        COMF    GPIO, F  
19:        MOVLW    H'FC'  
20:        TRIS    GPIO  
21:        CLRF    ADCON0  
22:        BCF     OSCCAL, 0        
23:        MOVLW    H'CF'  
24:        OPTION  
26:        movlw     0x23 ;turn on delay (2SEC)  
27:        movwf     RAM1  
28:        movlw     0xB9  
29:        movwf     RAM2  
30:        movlw     0x09  
31:        movwf     RAM3  
32:        decfsz     RAM1, f  
33:        goto     $+2  
34:        decfsz     RAM2, f  
35:        goto     $+2  
36:        decfsz     RAM3, f  
37:        goto     $-5  
38:        goto     $+1  
39:        goto     $+1  
40:        goto     $+1  
41:        GOTO  START100  
42:        ;GOTO  START62.5  
44:  START62.5  movlw    H'1F' ;DELAY 4MS/2  
45:        movwf    RAM1  
46:        movlw    H'04'  
47:        movwf    RAM2  
48:        decfsz   RAM1, f  
49:        goto    $+2  
50:        decfsz   RAM2, f  
51:        goto    $-3  
52:        goto    $+1  
54:        BCF     GPIO, 0  
56:        movlw    H'3F' ;DELAY 4MS  
57:        movwf    RAM1  
58:        movlw    H'07'  
59:        movwf    RAM2  
60:        decfsz   RAM1, f  
61:        goto    $+2  
62:        decfsz   RAM2, f  
63:        goto    $-3  
64:        goto    $+1  
66:        BSF     GPIO, 0  
68:        movlw    H'1F'  
69:        movwf    RAM1  
70:        movlw    H'04'  
71:        movwf    RAM2  
72:        decfsz   RAM1, f  
73:        goto    $+2  
74:        decfsz   RAM2, f  
75:        goto    $-3  
76:        goto    $+1  
78:  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
80:        movlw    H'1F' ;DELAY 4MS/2  
81:        movwf    RAM1  
82:        movlw    H'04'  
83:        movwf    RAM2  
84:        decfsz   RAM1, f  
85:        goto    $+2  
86:        decfsz   RAM2, f  
87:        goto    $-3  
88:        goto    $+1  
90:        BCF     GPIO, 1  
92:        movlw    H'3F' ;DELAY 4MS  
93:        movwf    RAM1  
94:        movlw    H'07'  
95:        movwf    RAM2  
96:        decfsz   RAM1, f  
97:        goto    $+2  
98:        decfsz   RAM2, f  
99:        goto    $-3  
100:        goto    $+1  
102:        BSF     GPIO, 1  
104:        movlw    H'1F'  ;DELAY 4MS/2, MINUS ONE CYCLE  
105:        movwf    RAM1  
106:        movlw    H'04'  
107:        movwf    RAM2  
108:        decfsz   RAM1, f  
109:        goto    $+2  
110:        decfsz   RAM2, f  
111:        goto    $-3  
112:        GOTO    START62.5  
114:  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
115:  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
117:  START100  movlw     0xF3 ;DELAY 2.5MS/2  
118:        movwf     RAM1  
119:        movlw     0x02  
120:        movwf     RAM2  
121:        decfsz     RAM1, f  
122:        goto     $+2  
123:        decfsz     RAM2, f  
124:        goto     $-3  
125:        goto     $+1  
127:        BCF     GPIO, 0  
129:        movlw     0xE7 ;DELAY 2.5MS  
130:        movwf     RAM1  
131:        movlw     0x04  
132:        movwf     RAM2  
133:        decfsz     RAM1, f  
134:        goto     $+2  
135:        decfsz     RAM2, f  
136:        goto     $-3  
137:        goto     $+1  
139:        BSF     GPIO, 0  
141:        movlw     0xF3 ;DELAY 2.5MS/2  
142:        movwf     RAM1  
143:        movlw     0x02  
144:        movwf     RAM2  
145:        decfsz     RAM1, f  
146:        goto     $+2  
147:        decfsz     RAM2, f  
148:        goto     $-3  
149:        goto     $+1  
151:  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
153:        movlw     0xF3 ;DELAY 2.5MS/2  
154:        movwf     RAM1  
155:        movlw     0x02  
156:        movwf     RAM2  
157:        decfsz     RAM1, f  
158:        goto     $+2  
159:        decfsz     RAM2, f  
160:        goto     $-3  
161:        goto     $+1  
163:        BCF     GPIO, 1  
165:        movlw     0xE7 ;DELAY 2.5MS  
166:        movwf     RAM1  
167:        movlw     0x04  
168:        movwf     RAM2  
169:        decfsz     RAM1, f  
170:        goto     $+2  
171:        decfsz     RAM2, f  
172:        goto     $-3  
173:        goto     $+1  
175:        BSF     GPIO, 1  
177:        movlw     0xF3 ;DELAY 2.5MS/2, MINUS ONE CYCLE  
178:        movwf     RAM1  
179:        movlw     0x02  
180:        movwf     RAM2  
181:        decfsz     RAM1, f  
182:        goto     $+2  
183:        decfsz     RAM2, f  
184:        goto     $-3  
185:        GOTO    START100  
187:        END  

The code mostly consumed by delay functions, I might make it simpler, maybe that's for the next time. :)

PCB layout done in ExpressPCB.

Done soldering. 

Rev1 and Rev2 compared side by side. Notice the smaller heatsink used, because we're targetting high efficiency, with minimal heat loss.

This is the original intended output, but...

Since we're using inverting driver, the signal also need to be inverted.

This is the rise time of the driver. About 31ns. The output from the PIC was about 4ns, which's far better, but I have no logic-level MOSFET come in handy at that time. 

Sudirman working on it.

Making steps.

Getting closer...

Ready to test.

Since the output voltage is too high, I solder two 25W 240V light bulb in series to compensate for it.

Test set-up. The calculator (right side) shows the efficiency of 68%. Maybe because I push the transformer to work at 100Hz (it was designed for 50Hz).
We need the high frequency because 100Hz translate to 6000RPM engine speed.
Notice the ripple in the oscilloscope, it was caused by battery charger being connected. 

Here's the output ripple, about 8Vpp.

The inverter seems happy, nothing seems hot to touch, no more humming, the idle current was 200mA at 12V, which is better than before (1.2A).

The hottest component is the transformer, which is rated at 12VA each, I'm loading it with close to 35W, so the efficiency losses could be caused by copper resistance in the windings.
The MOSFETs was barely warm to touch. I guess I'm better off with higher frequency SMPS transformer, but, it's too expensive for us.

Higher frequency means smaller transformer, lower turn which also means lower copper loss, which would translate to better efficiency.