Sari la conținut
ELFORUM - Forumul electronistilor

pic 16f84a - termometru


dorelb

Postări Recomandate

Pentru - fratello - . In cinci ore cam -3 secunde, dar mai astept. Si pentru marik2500, leduri la tehnoelectric.ro.

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

Link spre comentariu
  • Răspunsuri 859
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • dorelb

    246

  • marik2500

    97

  • GeoMar

    84

  • fratello

    69

Top autori în acest subiect

Imagini postate

Am si eu o intrebare... Am facut un termometru, dar cu 16f628 si afisaj LCD 2x16. Termometrul este cu 2 senzori, si vreau sa il pun in masina, alimentat doar cand pun contactul. Am urmatoarea problema. De fiecare data cand alimentez montajul (in casa, pe bancul de proba, de la 12V), ba merge, ba nu merge.. in sensul ca atunci cand nu merge apare pe afisaj caractere ciudate, cateodata si un cursor :d. A mai intalnit cineva aceasta problema?Multumesc

Link spre comentariu

In codul scris de mine, precizia ceasului este afectata de timpul (setarile) alocat citirii senzorilor de temperatura. NU CRED ca pot obtine un compromis acceptabil intre aceste doua "sarcini" alocate PIC-ului. Cum am mai spus, cunostintele mele sunt limitate :jytuiyu ... Numai un BUN programator, eventual care foloseste limbaj de asamblare, poate rezolva aceasta problema. Eu, unul, renunt, pentru motivul de mai sus. Numai bine !

Link spre comentariu

.... Eu, unul, renunt, pentru motivul de mai sus. ...

Imi pare rau sa aud asta. Daca insisti o sa gasesti solutia. Cum masori timpul? Nu pe intreruperi? Adica numeri intreruperi care apar la un interval stabilit.Trebuie sa vezi pe simulator ca intervalul pe care l-ai stabilit se mentine, simuland vreo 100 de intreruperi. Asta una.Daca testul asta e OK trebuie sa mai perii putin rutinele de citire a DS-ului.De exemplu la transmisia catre DS, pe perioada transmiterii unui bit trebuie inhibate intreruperile. Asta va genera o mica intarziere, este adevarat, dar doar de cateva microsecunde la fiecare transmisie. Si cum citirea senzorilor o faci cel mai des la o secunda (asa fac eu), desi pentru aplicatia asta o poti face si la un minut, precizia nu se afecteaza cu mult.O corectie in soft pentru ajustarea ceasului se poate face. Altfel, o precizi nativa de 2-3 secunde pe zi este maximumul pe care l-am obtinut, pe LCD.Spor!
Link spre comentariu

Si cum citirea senzorilor o faci cel mai des la o secunda...

Asa as fi sugerat si eu - citirea la o secunda si eventual un singur senzor o data (adica fiecare senzor o data la 2 secunde).Si reimprospatarea afisorului ar trebui facuta tot cel mai des la o secunda (nu m-am prins daca se intampla mai des sau nu) si eventual reimprospatat numai ce se schimba (ora si temperatura); data se poate reimprospata o data pe zi.
Link spre comentariu

Fiind vorba de RTC trebuie pus accent pe precizia ceasului. Cum am recomandat si vad ca sa implementat trebuie o rutina optimizata pentru tratarea intreruperilor TMR0. Sub nici o forma nu trebuie dezactivate intreruperile pentru a face altceva. In cazul senzorilor ce solutie vad eu. Tiind cont ca trebuie trimisa comanda de incepere a conversie temperaturi si abia dupa 94-750 ms trebuie citita valoarea. Eu asi incerca ca in cadrul subrutinei de intreruperi sa folosesc o variabila care sa conditioneze ulterior startul conversiei sau citirea valorilor. Ca idee daca secunda e para start conversion, daca impar read temp, sau facuta din 5 in 5 sec ori te folosesti de valoarea Ticks cum este in programul tau. In programul tau vad ca la fiecare 16,38 ms ai o intrerupere. Este o problema ca 61*16,38 ms =994,3 ms<1s. Intervalul dintre doua intreruperi trebuie facut in asa fel incat sa nu afecteze citirea sau trimiterea comenzilor la DS18XXX. Cuartul de 4,000 Mhz complica rutina de intreruperi.LE. Este vreo problema ca citirea senzorilor se face alternativ? Ce are daca temperatura afisata este veche de cateva sec?

Link spre comentariu

Sub nici o forma nu trebuie dezactivate intreruperile pentru a face altceva.

Ba daca se lucreaza cu mai multe surse de intreruperi, la intrarea in rutina de tratare a intreruperilor se dezactiveaza intreruperile pentru a evita problemele (o noua intrerupere venita in timpul tratarii unei intreruperi).De aia, pentru a minimiza riscurile, in rutina de tratare a intreruperilor trebuie facute cat mai putin operatii (gen setare flaguri pentru programul normal).In rest, de acord cu tine; de altfel aceleasi lucruri s-au mai spus anterior. Ba eu chiar am dat o solutie de "reglare" a ceasului pentru care nu conteaza ca frecventa e 4MHz, prin incarcarea in TMR0 a unui "inceput de numarat".De acum conteaza cat de interesat e fratello de stabilitatea ceasului. Ca daca e in principiu un termometru care arata din cand in cand si ora, poate nu-l intereseaza mai mult.
Link spre comentariu

Lui - fratello -. Ramane cam 11 secunde in urma. Am avut o cadere mare de curent si nu pot sa spun precis cat a ramas in urma.

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

Link spre comentariu

Pentru gr1ph0n. Este acelasi proiect sau ceva nou, (adica - fratello -) inbunatatit.

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

Link spre comentariu

Incarcat la ora 23:45:00. Asteptam pana maine seara. O mica problema la start. Arata 55:00:00.

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

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