Monday, July 29, 2013

Arizer V-tower rebuild



So my vaporizer broke and I thought I might try to fix it.  At first I thought the heating element was the cause because there was some brown discoloration on the wire side of it, but then upon inspection of the external power supply and components I discovered that almost everything was destroyed, probably from a transient.  This quickly turned into a complete rebuild.  All temperature mentioned in this article is in Fahrenheit.

So all I have to start with is a heating element.  I am surprised to see that heating elements like these are hard to find, expensive, and only come from china.  If anyone knows where I can buy small cheap ceramic elements please tell me.  

My instant thought about heat control was pulse width modulation, common to most micro-controllers.  A digital to analog module would probably work better.  This pwm signal would control a beefy transistor to control the amount of current to the element.  I am aware that the two small conductors protruding from the element are some sort of sensor.  They provided garbage when I measured them and I didn’t know if they provided a voltage or a resistance so I did not use them.  This means that there is no feedback in this project! Gasp!  If anyone can explain how those are used for temperature measurement please tell me.

I tried to do this project as cheap as possible.  I would have liked to use an old computer PSU, but I need at least 15V at 3A.  Even after bridging the +12V and -12V lines, the PSU would give out because the -12V line can only handle 800mA.  I tried the reference adjustment trick but it didn’t help that much.  So I had to buy a Mean Well rs-100-24 power supply.  If any of you are lucky enough to find old high output power supplies keep them, they are valuable and expensive, and could go in your next project.  I used the case of a computer PSU because it had the fan, AC receptacles and a switch I needed.

With the power supply solved I moved to power transistors.  I broke open a few computer PSU to find that many have power transistors inside, but some do not.  After experimenting with a few I decided to use a pair of 13009 NPN transistors.  Amazingly they were already screwed to the same heat sink.  The benefit of using these over MOSFETS is that the output is linear and it makes controlling the heat much easier.  I took other heat sinks and screwed them all above and underneath the pair until I had a heat sink that weighed about a pound.  Even with a fan on it, it reaches 140 degree F.  The main challenge in this project it seems is heat management.  The factory circuit of the vape used a pair of F7416 P-channel mosfets which have a very low effective resistance.  As you can see from the only  factory circuit board: there are no heat sinks.  It appears that buying very efficient transistors is worth the money.

Note that I use a weird Darlington-like circuit for my microprocessor interface.  These 13009 transistors needed about 30mA each through their base to fully turn on.  I was worried that PWM would harm the power supply so the 100uF capacitor smoothes the waveform to be more like DC.  I did not have an oscilloscope but that would definitely help.


I chose the 9s08 because it is cheap, the programmer is cheap, and it has an internal oscillator.  But with only 14 I/O I could not make an extravagant display, even with external ICs.  Since the selectable heat range is 250-375 I decided to make a binary display with 1 representing 250 degrees F and so on.  This way, everything can be displayed accurately.

Math time!  There is no relation between power dissipation and thermal energy.  I believe this is because power is linear but heat is volumetric.  So I had to find a relation experimentally.  I made the voltage across the heating element 10V.  From now on I will call the heating element the coil.  The coil has a DC resistance of 6.6 ohms.  So the coil current is 1.515A.  The coil was contained in its original housing with the top closed off so no air could escape.  After allowing the coil to heat for a generous 30 minutes, I took the measurement with an Extech 42505 infrared thermometer (the kind you point and shoot).  The temperature read 280 degree F.  Take 1.515A/280 and we get 5.41mA per degree F.  With this relation I can now accurately predict the temperature.

Because of my slow bus clock, and the need for high precision PWM, I struck a balance.  So each time a button is pressed the temperature will change by +/- 1.4 degrees, and the display will verify this.

With all these new electronics, I needed a new case to hold it all and be sturdy.  It’s not technical so I’m not going to talk about construction, just get ‘r done.  I made it in three pieces so it could be taken apart without tools for cleaning or repair (and you better believe it will need cleaning).  A bit bulky but solid.   I got the small amount of scrap plexiglass I needed for free from my local Lowe's!  I used that piece of pottery on top of the bowl to contain heat so I could measure it.  Enjoy!



Code:

        INCLUDE 'derivative.inc'
        XDEF _Startup, main
        XREF __SEG_END_SSTACK
MY_ZEROPAGE: SECTION  SHORT
MyCode: SECTION
_Startup:
main:   LDHX  #__SEG_END_SSTACK
        TXS
        CLI                    
        LDA   #%01110011
        STA   SOPT1
        MOV   #%01000100,ICSC1
        MOV   #000000,ICSC2
        MOV   #$FF,PTBDD
        MOV   #$F9,PTADD
        MOV   #$06,PTAD
        MOV   #001000,MTIMCLK  ; prescaler= 64
        MOV   #16,MTIMMOD      ; 15625/256=61  61/MTIMMOD=Hz
        MOV   #000000,MTIMSC   ; TOIE=0, TRST=0     
      LDHX   #312        ;10Hz
      STHX  TPMMODH
      LDHX  #220         ;300d=10.7V=70.6%  #220
      ;STHX  $0064        ;SAVE DUTY
      STHX  TPMC0VH      ;PIN 16
      MOV   #$28,TPMC0SC  
      MOV   #$08,TPMSC
      LDHX  #0
      STHX  $0062
      LDA   #49
      STA   $0060
      STA   PTBD        
LOOP  BRCLR 1,PTAD,III
      BRCLR 2,PTAD,DDD
      BRA   SK
III   JSR   III2    
      BRA   LOOP
DDD   JSR   DDD2
      BRA   LOOP
SK    JSR   TIMER
      LDHX  $0062
      AIX   #1
      STHX  $0062
      CPHX  #$5460
      BHI   P_OFF
      BRA   LOOP
P_OFF LDHX  #0   ;TURN OFF THE ELEMENT
      STHX  TPMC0VH
      MOV   #$00,PTBD
HERE  BRA   HERE              
      SWI
;*****************************************************
;      ROUTINES
;*****************************************************
III2    LDHX  TPMC0VH
        AIX   #1  ;INCREASE TEMP AND DISPLAY
        CPHX  #266   ;HIGH LIMIT=85%
        BHI   H_LIMIT
        STHX  TPMC0VH
        ;STHX  $0064
        LDA   $0060
        ADD   #1
        STA   $0060
        STA   PTBD
        JSR   TIMER  ;DEBOUNCE
H_LIMIT RTS          
DDD2    LDHX  TPMC0VH
        AIX   #-1  ;DECREASE TEMP AND DISPLAY
        CPHX  #172     ;LOW LIMIT=55%
        BLO   L_LIMIT
        STHX  TPMC0VH
        ;STHX  $0064
        LDA   $0060
        ADD   #-1
        STA   $0060
        STA   PTBD
        JSR   TIMER  ;DEBOUNCE
L_LIMIT RTS                  
TIMER   BRCLR 7,MTIMSC,TIMER      ;WAIT FOR TOF
        BCLR  7,MTIMSC            ;CLEAR TOF
        RTS