Jump to content
ELFORUM - Forumul electronistilor
danpin

Nixie termometru si higrometru cu PIC16F876 si SHT21

Recommended Posts

Salut,

Vreau sa fac term. si higr. cu PIC16F876 si SHT21 dupa schema gasita in revista Elektor din iunie 2012.

Am gasit aici HEX-ul, am incercat o simulare in Proteus dar se pare ca nu merge...ori poate nu merge la mine... nu stiu.

https://www.elektormagazine.com/magazine/elektor-201206/19884

M-am uitat putin in codul sursa si nu inteleg tot din el, de exemplu ce cauta liniile astea de cod acolo, la ce bun?

int8 Year=0,Month=0,Days=0,Hours=0,Minutes=0; astea care se refera la RTC

Schema se gaseste aici:

https://translate.google.ro/translate?hl=en&sl=ru&u=http://robocua.blogspot.com/&prev=search

rog, daca are cineva timp sa faca o simulare sa-mi confirme daca este bun hexul de pe site-ul Elektor.

Apropo, are cineva librarii (sau cum s-o fi chemand) pt. Proteus pt. tuburi Nixie?

Vreau sa modific codul pentru compilare in MikroC dar cum nu ma pricep prea bine, merge greu.... am sa mai apelez la ajutor!

Toate cele bune!

Share this post


Link to post
Share on other sites

Salut,

Incerc sa convertesc codul pt. termometru/higrometru

https://www.elektormagazine.com/magazine/elektor-201206/19884

care cred ca e scris pt. compilerul CCS in cod pt. mikroc.

Am linia de cod

printf("%lu,%lurn",sT.u16,sRH.u16);

Pt. functia "printf" care ar fi echivalentul in mikroc?

Mai sunt si linii de cod ca aceasta:

sprintf(hum_str,"%04.1f",humidityRH);

dar imi dau eroare la compilare "131 324 Undeclared identifier 'sprintf' in expression"

In helpul mikroc gasesc functia "sprintf" dar totusi nu o gasesc in lista din "library manager", la generarea proiectului am selectionat toate librariile.

Rog, un pic de ajutor pt. rezolvarea problemelor....

Edited by danpin

Share this post


Link to post
Share on other sites

Functia sprintf in mikroC este doar pentru seria 18F sau mai sus. Banuiesc ca pic-ul este din seria 16F de aici si eroarea.

Share this post


Link to post
Share on other sites

Probabil e cum spune djvas, odata am si mirat cate resurse ocupa sprintf-ul.Iar printf este doar pentru debug deci poti sa scoti complet.

Share this post


Link to post
Share on other sites
void SHT21_measure(){    // --- measure temperature with "Hold Master Mode (HM)"  ---    error |= SHT2x_MeasureHM(TEMP, &sT);    // --- measure humidity with "Hold Master Mode (HM)"  ---    error |= SHT2x_MeasureHM(HUMIDITY, &sRH);    printf("%lu,%lurn",sT.u16,sRH.u16);    //-- calculate humidity and temperature --    temperatureC = SHT2x_CalcTemperatureC(sT.u16);    humidityRH   = SHT2x_CalcRH(sRH.u16);    //-- write humidity and temperature values into string buffer --    sprintf(temp_str,"%04.1f",temperatureC);    sprintf(hum_str,"%04.1f",humidityRH);}

Asta este bucata de cod pe care trebuie sa o transform.

Am gasit pe forum la mikroe niste postari din 2009-2011, pare ca aveti dreptate, sprintf nu merge pt. PIC16Fxxx.

Trebuie sa mai studiez codul, oricum nu ma pricep prea bine, chestii simple le pot face, dar la "fineturi" mai greu..

Pot sa inlocuiesc sprintf cu sprintl dar nu accepta float numbers, nu stiu exact daca codul opereaza cu float.

Share this post


Link to post
Share on other sites

Prima data incearca sa compilezi fara sprintf si vezi daca incape, deoarece libraria float ocupa o gramada de loc,daca mai ramane loc faci o inmultire cu 10, apoi o conversie la int si inaite de afisare muti ultimul digit mai in spate si pui un locul lui un punct. (ex. 23.5 * 10 = 235 asfisat 23.5)

Share this post


Link to post
Share on other sites

Hexul original are 17KB.

Asta pe care vreau sa-l modific, fara sprintf, are 9KB.

 

Am linia de cod:

char bcdtab[10] = {8,0,9,1,14,6,10,2,12,4};

nu-mi dau seama de unde vin numerele din arie.

Afisajul este tip Nixie comandat de decodoare BCD tip 74141. Ceva idei?

Share this post


Link to post
Share on other sites

Dupa vreo ora de scarpinat in cap.... am deschis schema si s-a facut lumina....  Autorul a cablat RB7->A ( 74141) RB6->B si tot asha. Ca sa functioneze trebuie generata valoarea de 4 biti in oglinda. Asta face acest array. Ce nu inteleg este ordinea din array.

Edited by djvas

Share this post


Link to post
Share on other sites

Probabil trebuie luat in considerare cum a legat tuburile, decodorul activeaza doar o iesire pentru o combinatie iar pe tub afiseaza un numar. Daca nu a legat in ordine trebuie modificat ordinea din soft. Nu vad ce tip de tub foloseste ca sa verific.

Edited by tes2000

Share this post


Link to post
Share on other sites

Tuburile IN 14 pentru cifre si IN 19 A pentru simboluri :grade C si % pentru umiditate. Fiecare tub este comandat individual de cate un driver 74141, care are un singur mod de conexiune, nu se pot inversa conexiunile. Modificarea banuiesc, trebuie facuta din soft.

 

"M-am uitat putin in codul sursa si nu inteleg tot din el, de exemplu ce cauta liniile astea de cod acolo, la ce bun?

int8 Year=0,Month=0,Days=0,Hours=0,Minutes=0; astea care se refera la RTC" . Da, la RTC se refera. Inseamna ca este gresit codul sursa sau ai copiat gresit respectivul cod.

Edited by albasete

Share this post


Link to post
Share on other sites

"M-am uitat putin in codul sursa si nu inteleg tot din el, de exemplu ce cauta liniile astea de cod acolo, la ce bun?

int8 Year=0,Month=0,Days=0,Hours=0,Minutes=0; astea care se refera la RTC" . Da, la RTC se refera. Inseamna ca este gresit codul sursa sau ai copiat gresit respectivul cod.

Zip-ul cu codul sursa l-am descarcat de pe site-ul Elektor, probabil l-au folosit la vreun ceas cu Nixie si l-au adaptat si pt. termo/higrometer apoi lasand unele bucati din cod din neatentie sau chiar intentionat, sa cumperi circuitul deja programat de la ei. Asta e mai putin important, eu incerc sa-l transform in cod mikroc si am sa elimin tot ce nu este necesar, daca voi reusi ramane de vazut....

 

Anozii tuburilor sunt alimentati de la sursa cu +170Vcc, catozii sunt legati la iesirile 74141 deci pt. a aprinde un digit aceste iesiri trebuie sa fie "zero", corect? In acest caz codul BCD pe intrari trebuie sa fie ceva "complementat" sau modificat ...ceva de genul... corect?

Edited by danpin

Share this post


Link to post
Share on other sites

 

 

Anozii tuburilor sunt alimentate de la sursa cu +170Vcc, catozii sunt legati la iesirile 74141 deci pt. a aprinde un digit aceste iesiri trebuie sa fie "zero", corect? In acest caz codul BCD pe intrari trebuie sa fie ceva "complementat" sau modificat ...ceva de genul... corect?

 

De aprinsul tubului se ocupa 74141. Conform tabelei de adevar din datasheet informatia este directa nu complementata. Adica daca la intarea ai a=b=c=d=0 atunci se aprinde cifra 0 la tub si tot asha. 

Acel array ( am scris si mai sus) este folosit datorita schemei proiectate deficitar. O legare mai logica ar fi RB4 la A(74141) RB5 la B si tot asha. In felul asta scrii direct valoarea de 4 biti dorita.

Share this post


Link to post
Share on other sites

Are cineva librarii cu tuburi Nixie pt. Proteus 8? Eu le-am simulat cu digiti de 7 seg. dar iese cam mare schema...

Share this post


Link to post
Share on other sites

Poti simula cu afisaj de 7 segmente care are decodor binar incorporat. Il gasesti sub numele de 7SEG-BCD. In felul asta nu mai ai nevoie nici de 74141 si scema se simplifica mult.

Share this post


Link to post
Share on other sites

Multumesc tuturor pt. ajutor.

Momentan am renuntat la "portarea" codului original scris, cred, in CCS in cod mikroc, e cam complicat pt. cat ma pricep eu, ca sa inteleg ce trebuie sa fac ar trebui sa studiez si CCS-ul...

Am inceput sa incropesc un alt software....

Intrebare: ca sa "sting" un digit, adica sa nu afiseze zero, portul la care este conectat 74141 trebuie declarat ca intrare (TRIS 1)?

Edited by danpin

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines