Low Battery

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
78L05
Pravo sam se raspisao :)
Pravo sam se raspisao :)
Posts: 1402
Joined: 28-05-2009, 13:22
Location: Hrvatska

Low Battery

Post by 78L05 »

Pozdrav svima,

zna li netko kako da napravim detekciju slabe baterije pomoću PIC-a 16F876.
Dakle predpostavljam da mi treba naponsko djeliko sa dva otpornika, radi se o bateriji od 9V, samo me zanima rutina s kojom se provjerava napon na nekom pinu.

Hvala unaprijed
Ne vjeruj u čuda - računaj na njih!
bonn
Posts: 23
Joined: 21-03-2011, 16:20
Location: Sarajevo

Re: Low Battery

Post by bonn »

Primjer od 0 do 5v. Lako je prepraviti za bilo koji napon.

' PICBASIC PRO program to measure voltage (0-5VDC)
' and display on LCD with 2 decimal places
'
' This program uses the */ operator to scale the
' ADC result from 0-1023 to 0-500. The */ performs
' a divide by 256 automatically, allowing math which
' would normally exceed the limit of a word variable.
'
' Connect analog input to channel-0 (RA0)

' Define LOADER_USED to allow use of the boot loader.
' This will not affect normal program operation.
DEFINE LCD_DREG PORTD ' I/O port na kome se nalazi LCD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2 ' Register select pin
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3 ' Enable pin
DEFINE LCD_BITS 4 ' 4-bitni data bus
DEFINE LCD_LINES 2 ' LCD ima dva reda karaktera
Define OSC 20 ' Kristal je 20 MHz

' Define ADCIN parameters
DEFINE ADC_BITS 10 ' Set number of bits in result
DEFINE ADC_CLOCK 3 ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS
adval Var Word ' Create adval to store result
TRISA = %11111111 ' Set PORTA to all input
ADCON1 = %10000010 ' Set PORTA analog and right justify result
Low PORTE.2 ' LCD R/W line low (W)
Pause 500 ' Wait .5 second

mainloop:
Adcin 0, adval ' Read channel 0 to adval (0-1023)
adval = (adval */ 500)>>2 ' Equates to: (adval * 500)/1024
LCDOut $fe, 1 ' Clear LCD
LCDOut "DC Volts= ",Dec (adval/100),".", DEC2 adval ' Display the decimal value
Pause 100 ' Wait .1 second
GoTo mainloop ' Do it forever

End
Post Reply