Ik tracht met een 16F628 een voedingsspanning tussen de 10 en 13V te bewaken waarbij zo min mogelijk resources (pennen \ interrupts) van de pic worden gebruikt. Nauwkeurigheid en snelheid van de meting is niet zo heeeel belangrijk.
mijn idee was om een C te laten ontladen en een tellertje te laten lopen totdat een rb poort van 1 naar 0 gaat. Vervolgens de waarde vastleggen voor een aantal bekende spanningen om zo de tussenliggende waarden te kunnen berekenen met event. aanpassen vd RC waarde.
De tellerwaarden fluctueren per ingestelde spanning echter zodanig dat ik er niets mee kan. Gedachte fout of is dit een kansloze methode?
schema
.....Ub---\ (10V - 13V)
.............|
............R1=12k
..(max....|
.ca 4.7V)+--------\
............|............|
............|............C1= 2.2uF
............|............|
............R2=6k8....+----- R4=330---- PORTB.4
............|............|
............|............R3=56K
............|............|
.......---+---------+-----------------------
code
// geen interrupt en gebruik van uitsluitend rb4
volatile bit rc_pin@PORTB.4;
volatile bit rc_io@TRISB.4;
unsigned char GetPwrVoltage() {
unsigned int rcTmr; // 16 bits 'timer'
unsigned char volts; // moet ouput worden 
rc_io= 0; // set rc pin for output
rc_pin= 1; // pin hoog -> ontladen C
delay_ms( 100 ); // even tijd geven
rc_io= 1; // pin -> input -> ontladen C
for( rcTmr= 0; rc_pin ; rcTmr++ ); // tellen totdat C onder treshold komt
waarden rcTmr fluctueren bv 11411 - 11429 voor 12.3 V
maar ik meet ook wel de waarde van bv 11424 bij 10V
Ze overlappen elkaar over bijna de hele range van voedingsspanning.
Iemand een idee?
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Mij lijkt een VCO handiger. Je hebt ook maar één pin nodig, als je de spanning wil weten meet je gewoon de tijd tussen 2 pulsen, nauwkeurigheid is voldoende voor de toepassing.
met je huidige systeem zal je zeker geen lineaire grafiek bekomen, mij lijkt het ook dat je gewoon meet wanneer de stroom boven de zoveel µA komt.
LaStei
carpe cerevisi
Mee eens, simpel 555 schakelingetje als VCO, tijd meten die er tussen twee pulsen zit en je hebt de spanning te pakken.