Sari la conținut
ELFORUM - Forumul electronistilor

Termostat - PIC16F877


catalin004

Postări Recomandate

Da...acum am vazut...am facut montajul, insa am pus pe alt PIC, 876A de data aceasta( sa nu il busesc pe cel de la PICKIT2).

Acum o sa ma uit in datashet dupa PCF sa vad ce trebuie modificat...revin

Link spre comentariu
REGISTER 13-1: CVRCON CONTROL REGISTER (ADDRESS 9Dh)
R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
CVREN CVROE CVRR — CVR3 CVR2 CVR1 CVR0
bit 7 bit 0
bit 7 CVREN: Comparator Voltage Reference Enable bit
1 = CVREF circuit powered on
0 = CVREF circuit powered down
bit 6 CVROE: Comparator VREF Output Enable bit
1 = CVREF voltage level is output on RA2/AN2/VREF-/CVREF pin
0 = CVREF voltage level is disconnected from RA2/AN2/VREF-/CVREF pin
bit 5 CVRR: Comparator VREF Range Selection bit
1 = 0 to 0.75 CVRSRC, with CVRSRC/24 step size
0 = 0.25 CVRSRC to 0.75 CVRSRC, with CVRSRC/32 step size
bit 4 Unimplemented: Read as ‘0’
bit 3-0 CVR3:CVR0: Comparator VREF Value Selection bits 0 ≤ VR3:VR0 ≤ 15
When CVRR = 1:
CVREF = (VR<3:0>/ 24) • (CVRSRC)
When CVRR = 0:
CVREF = 1/4 • (CVRSRC) + (VR3:VR0/ 32) • (CVRSRC)
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown 

Din ce am citit aici trebuie modificat...insa nu stiu cum sa-i spun ca are 2.5V pe vref

 

 

Link spre comentariu

Salut,

Ptr. ADC in registrul ADCON1 ai configurarea bitilor (3-0) ptr. PCFG3:PCFG0. ( DS pag 130, la ADC)

 

Ptr. orice valoare a Vref intre aprox 2v-5v, microcontrolorul stie sa citeasca singur valoarea.

 

Succes!

Link spre comentariu

Corect, conectati 2.5V pe pinul vref+ (AN3) si pe pagina 130 aveti o tabela cu configurarea PCFG3:PCFG0 din care la al 2 lea rand aveti exact ce va trebuie Vref+ conectat la pin AN3, deci valoarea pentru registrii este "0001". Dupa care recalculati functia de ADC_Read pt 2.5V sau cat obtineti din divizor.

Editat de Bandi Szasz
Link spre comentariu

PCFG3:PCFG0 = 0001;

Am scris ca mai sus si imi da eroare...am scris si 0x001; si la fel...2,49V

 

Si cred ca trebuie optiunea 5, adica raportul 2:1...cred

 

Am scris ADCON1=00000101;//am 12 grade....si ar trebui sa fie dublu

Editat de catalin004
Link spre comentariu

Da, ori trebuie scris complet registrul ADCON1 cum ati scris, ori trebuie setat separat fiecare bit ADCON1.F0=.. , ADCON1.F1=.., ADCON1 .F2=.. , cu coloana aia C/R nici eu nu prea vad care e treaba nu am mai intalnit pana acuma asa o configuratie.

 

Incercati sa apelati in functia main() ADC_Init(), si in loc de ADC_Read() sa puneti ADC_Get_Sample();

 

ADC_Read o sa configureze din nou de fiecare data modulul ADC inainte de citire, este specificat in documentatia librariei si foarte posibil sa rescrie Vref-ul la VDD.

Link spre comentariu

Pentru PI16F876A (cf. DS) ai:

Vref+ pe pinul 5 al picului, Vref- la Vss( pinul8 + pinul 19)

 

Vref+ si Vref- se folosesc numai cand sursele de ref. sunt externe.

 

Vss inseamna masa integratului.(sau 0V)

Tu treb. sa conectezi plusul iesirii sursei de referinta externa la Vref+, iar masa tensiunii de referinta

la Vss(masa montajului) si nu la Vdd, asa cum ai scris.

 

La Vdd se conecteaza plusul(+) tensiunii de alimentare a microprocesorului iar la Vss, masa.

 

Conectarea concomitenta la Vref+ si Vref- o faci NUMAI cand ai 2 surse de referinta EXTERNE distincte.

In acest caz rezultatul tensiunii de ref. = Uref+ - Uref-

Editat de tic5
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări