This document describes a short test of different Brownout Circuits.
The testprogram pulses the Bit 0 of Port B (U1[6]). It is a simple loop for checking the alivennes of the pic.
; TTEST.ASM (C) 1998 Martin Pischky (martin@pischky.de) PROCESSOR PIC16F84 RADIX DEC LIST C=132, N=66 NOEXPAND INCLUDE P16F84.INC ; register definitions __CONFIG _CP_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC ; ports: #DEFINE ALIVE PORTB,0 org 0 clrf PORTA clrf PORTB bsf STATUS,RP0 ; page 1 begin movlw B'11111110' movwf TRISB ; portb all outputs except RB4 movlw B'11111111' movwf TRISA ; porta all outputs bcf STATUS,RP0 ; page 0 loop bsf ALIVE goto cont cont bcf ALIVE goto loop END
For the Hexfile download:
ttest.txt (rename to "ttest.hex")
This ist the "less accurate" brown-out ciruit from Microchips PIC16C84 / PIC16F8X Databook.
The voltage levels are show below:
U2 (green) is the base of Q1 and U3 (blue) is the *MCLR input of the pic. Microchip assumed that Q1 turns off at UBE[ON]=0.7V which seems a litle bit to high. This sample circuit shows that the Pic stops programm execution if U1 dropps below 3.58V and resumes it if U1 crosses 3.71V again. From the arithmetic mean value of 3.645V follows that UBE[ON]=12/(12+68)*3.645V=0.55V.
This ist the "better" brown-out ciruit from Microchips PIC16C84 / PIC16F8X Databook.
The voltage levels are show below:
The value of 33K Microchip gives for R1 seems to be wrong. To get some current throu D1 I have taken R1=470 Ohm. Even with this value (and a 4.7V Zehner) the Pic is reseted at U1=4.60V and restarted at U1=4.62V.
This circuit takes a left over LM339 for monitoring the supply voltage. (See SLNTHR) A simple 1N4148 is used as reference.
The voltage levels are show below:
This circuit resets the Pic at U1=4.37V. It is restarted at U1=4.56V. This hysteresis depends on the value of R4. Below 1V the voltage at *MCLR is pulled to VDD again. I hope this is not a real problem, because the oscillator of the pic stops at approx. 1.6V. (The simple test program ttest.asm is excuted by the pic down to approx. 2.2V)
Note: Turning off the supply of U1 (as done in SLNTHR while IC-Programming) puts the Output of U1 in high impedance state. (so ICP should work in SLNTHR)
Same circuit as BROUT3 but the LM339 is replaced by his CMOS replacement: TLC374C. The voltage levels are:
This circuit avoids the faktor (18+2.7)/2.7 = 7.66 of BROUT4 which makes BROUT3/4 drifting away on any larger Temperatur change.
I have checked the turn on and turn off voltages with three different D1:
T | U1(on) | U1(off) | average U1 | delta U1 |
---|---|---|---|---|
Sample 1 (U3=2.70V @ U1=4.50V) | ||||
25°C | 4.75V | 4.54V | 4.64V | 0.21V |
67°C | 4.69V | 4.48V | 4.59V | 0.21V |
Sample 2 (U3=.2.68V @ U1=4.50V) | ||||
26°C | 4.71V | 4.51V | 4.61V | 0.20V |
68°C | 4.60V | 4.38V | 4.49V | 0.22V |
Sample 3 (U3=2.74V @ U1=4.50V) | ||||
27°C | 4.82V | 4.61V | 4.72V | 0.21V |
66°C | 4.75V | 4.53V | 4.64V | 0.22V |
This circuit resets the Pic at U1=4.36V. It is restarted at U1=4.44V.
Assuming a drift of the zenervoltage of D1 of 5mV/K and a hysteresis of 100mV, this circuit should work from 0 to 70 degree celsius if the zehnervoltage of D1 is selected to +-3%. To test this use a voltage source of 4.50V and a current limiting resistor of 560R. If 2.63V<Uz<2.77V then the device is ok for D1.