13 червня 2014 р.

PIC16F690, Компаратор, сплячий режим

PIC 16F690, Компаратор.
Задача, визначити чи освітлюється світлочутливий елемент, з мінімальним споживанням енергії.
Живлення:  CR2032, 225mAh, 3V.
З використанням PIC16F690 можна використати сплячий режим, і пробудження за допомогою:
  • ULPWU (Ultra Low-Power Wake-up input)
  • IOC (Interrupt on change)
  • Comparator change state wake-up

Розглянемо варіант з внутрішнім компаратором і фотодіодом.

Для експерименту №1 вибраний фотодіод у режимі генерації струму при освітленні. Використано фотодіод "SFH 203P". При максимальному освітленні напруга на фотодіоді досягає 0,35 В.
Для логічної одиниці це не достатньо. Спробуємо використати компаратор (рис. 1), що порівнює вхідний сигнал з напругою ~0,25 В.  І за перериванням на екрані збільшуємо лічильник. Для тесту "гістерезис" для компаратора не використовуємо.

Рис.1. Фотодіод у режимі генерації струму, вхід для компаратора.
Ініціалізація компаратора, мова "С (XC8)".

#include <xc.h>         /* XC8 General Include File */
....
volatile struct {
        unsigned S0 : 1;
        unsigned S2 : 1;
    } sensortick; 
.... 
void interrupt isr(void) {
 if (PIR2bits.C1IF) {
        CM1CON0;
        if (CM1CON0bits.C1OUT) {
            sensortick.S0 = 1;
        }
        PIR2bits.C1IF = 0;
 } 
}
....
//Comparator #1
ANSELbits.ANS1=1;    // analog mode AN1 18 pin
TRISAbits.TRISA1=1;  // input mode AN1
CM1CON0bits.C1OE=0;  // 0 = C1OUT is internal only
CM1CON0bits.C1CH=0;  // CIN+ AN1 18 pin C12IN0-
CM1CON0bits.C1R=1;   // 1 = C1VIN+ connects to C1VREF output
CM1CON0bits.C1POL=0; // 1 = C1OUT logic is inverted
CM1CON0bits.C1OUT=1; // C1OUT = 1 when C1VIN+ > C1VIN

VRCONbits.C1VREN=1;  // enable Vref
VRCONbits.VP6EN=0;   // disable Vref=0.6V
VRCONbits.VRR=1;     // Vrr=1
VRCONbits.VR=2;      // 0.25V (VDD=3V)
CM1CON0bits.C1ON=1;  // Comparator C1 is enabled

INTCONbits.PEIE=1;   //peripheral interrupt enable
PIR2bits.C1IF=0;     //reset flag peripheral compare 1 
PIE2bits.C1IE=1;     //enable peripheral compare 1

INTCONbits.GIE=1;   //Global Interrupt ENABLE

InitLCD();
while (1) {
   CLRWDT();
   SLEEP();
   NOP(); 
   if (sensortick.S0) {
        sensortick.S0 = 0;
        device_ticked(0);
        printlcd();
   }
}
Результати при Vref=0.25V, Vrr=1:
Струм у режимі сон, без компаратора (Isleep w/o comp)  = 0.002 mA
Час роботи у такому режимі T~13 років

Струм у режимі сон, з компаратором (Isleep w/ comp) = 0.112 mA ([Cin+] < Vref)
Струм у режимі сон, з компаратором (Isleep w/ comp) = 0.120 mA ([Cin+] > Vref)
Час роботи у такому режимі T=2.5 міс.

Режим не прийнятний.

Зовнішній компаратор


Але якщо використати зовнішній компаратор, наприклад як обговорюється тут.

Так на базі MCP601/1R/2/3/4 у документації є розділ "4.8.3 PHOTO DETECTION". Де надано готове рішення. Photovoltaic Mode Detector.
Photovoltaic Mode Detector
Але споживання струму 230 µA (0.230 mA) (типове, за документацією), що більше ніж вбудований компаратор.

Режим не прийнятний.

Але у MCP65R41/6  струм проживання 2.5 μA (typical) !!!. Можна розглянути, за наявності у продажу.

The MCP6441 device is a single nanopower operational amplifier (op amp), which has low quiescent current (450 nA = 0.45μA, typical)







Надалі розгляну інші варіанти.

Немає коментарів:


Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready