guidonetto ha scritto:Ciao, ho trovato interessante il tuo articolo: una tecnica per misurare la tensione della batteria con un PIC, per cortesia mi spieghi e midifichi il codice per far accendere un led al calare della tensione in modo che mi avverta quando la batteria è quasi scarica?Perche capisca mi spieghi anche le varie strighe di codice?
- Codice: Seleziona tutto
char BatteryChargeMeasure (void)
{
ADCON0bits.ADON = 1;
ADCON0bits.GO = 1;
while (ADCON0bits.DONE);
ADCON0bits.ADON = 0;
if (ADRESL>=0xA0)
{
return TRUE;
} else {
return FALSE;
}
}
Per rispondere non solo a
Lo schema di partenza è questo:
Dunque, parto dalla spiegazione delle righe di codice, che sono veramente poche e banali. Per meglio capire, ho commentato le rughe di codice.
- Codice: Seleziona tutto
char BatteryChargeMeasure (void)
{
/* Registro ADCON0: attivazione del modulo A/D */
ADCON0bits.ADON = 1;
/* Registro ADCON0: avvio della conversione A/D */
ADCON0bits.GO = 1;
/* Attesa che la conversione A/D sia ultimata */
while (ADCON0bits.DONE);
/* Registro ADCON0: spegnimento del modulo A/D */
ADCON0bits.ADON = 0;
/* Controllo del valore letto dal modulo A/D, lettura del solo
registro ADRSEL (parte bassa del registro di conversione)
e confronto con un valore di soglia "arbitrario (0xA0):
se il valore letto supera la soglia, la funzione
restituisce TRUE, viceversa restituisce FALSE */
if (ADRESL>=0xA0)
{
return TRUE;
} else {
return FALSE;
}
}
Ora, per accendere un LED se la batteria è scarica, si suppone che il LED sia collegato a RB0:
un possibile approccio potrebbe essere il seguente:
- Codice: Seleziona tutto
#define LED_LOW_BATTERY LATBbits.LATB0
main ()
{
/* Configurazione valore di TRISTATE per pin RB0 */
TRISBbits.TRISB0 = 0;
/* ... */
/* Controllo tensione batteria ed eventuale accensione LED */
if (BatteryChargeMeasure == TRUE)
{
LED_LOW_BATTERY = 1;
} else {
LED_LOW_BATTERY = 0;
}
/* ... */
}
Ciao.
Paolo.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)





, è opportuno fare in modo che tale resistore abbia un valore abbastanza elevato. Facciamo quattro conti.

),si ha che R1 e D1 sono in serie:
vale:
[1]
[2]
: con questo valore, la corrente effettiva è minore e vale circa 

