Sari la conținut
ELFORUM - Forumul electronistilor

proiect nokia 3310 +LM35


wolfei

Postări Recomandate

@wolfei: felicitari si spor in continuare.@nana: tu ai vazut schema cu 2 diode de pe paginile anterioare (aia la care potentialul punctului dintre LM si diode e ~850 mV)? :nas: Diferenta intre cele 2 scheme e ca cea cu atmel masoara referinta LM-ului si o scade din rezultatul masuratorii normale, nu scade un offset din burta (masurat extern, cu multimetrul si trecut in program), ca mine. E mai eleganta solutia respectiva, da' principiul e acelasi.

Link spre comentariu
  • 3 săptămâni mai târziu...
  • Răspunsuri 140
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Liviu M

    67

  • wolfei

    54

  • A_L_E_X

    6

  • nana

    3

Top autori în acest subiect

Asadar..sensorul SHT11..umiditate si presiune..Sensirion are pe site un exemplu de cod pt utilizarea lui...am cautat pe net si am gasit un proiect in care codul e modificat pt 18f...vreau sa adaug si SHT11 in main meu, dar am niste erori pe care nu le inteleg..Acesta e proiectul gasit...dar nu reusesc sa il rulez...imi tot spune ca nu gaseste librariile stdio stdlib, desi inainte eu am dat locate missing file si m-am dus in MCC18 si am setat sa fie cele de acolo...Si inca o intrebare...ce face Version Control din Mplab? :limb:

Link spre comentariu

Tu nu foloseai picc de la HiTech?

Ca daca da, nu-s sigur ca poti/ca e bine sa amesteci codurile; cred ca cel mai "cinstit" ar fi sa "adaptezi" codul la picc.

In rest, n-am mcc18, asa ca nu pot sa te ajut.

Version Controlul ar trebui sa fie ceva in genul CVS - o scula care sa-ti tina evidenta modificarilor intr-un proiect. In principiu compara sursele dintr-un director si, daca gaseste surse modificate, genereaza un nou director cu versiunea incrementata. Toate astea intr-o structura oarecum arborescenta (adica in orice punct poti "desprinde" ramuri noi).

Sper ca n-am aberat prea tare, asta-i ce am inteles eu despre CVS, da' doar teoretic, n-am folosit sistemul.

Link spre comentariu

Aaaaaaaa...deci asta era :limb: Eu am mai facut vreo 2 proiecte si pe un 18f4550...si nu am avut probleme de asta am crezut ca o sa mearga fara sa ii fac modificari.Am facut rost de un alt proiect care merge si trebuie doar sa il integrez in proiectul meu.Merge si pe SHT 75 si pe SHT11...si acum nu stiu pe care sa continui.As merge pe 11 deoarece e mai ieftin, dar talentul meu in lipirea componentelor lasa mult de dorit...si mi-e sa nu il stric cand il lipesc.SHT75 are picioruse dar e aproape dublu ca pret...AS vrea un exemplu de functie cu pointeri deoarece functia care calculeaza umiditatea si temp e cu pointeri si nu prea am inteles eu cum sa fac afisarea cu pointeriMUltumesc pentru raspunsuri si astept altele :limb:

Link spre comentariu

Pai nu faci afisarea cu pointeri, faci afisarea normal. Numai apelarea functiei o faci cu pointeri/vectori, pentru ca altfel functia modifica parametrii locali, nu parametrii de apel.

In main() o sa trebuiasca sa definesti variabile vector/pointeri in care sa salvezi rezultatele masuratorii umiditatii/temperaturii si pe care le folosesti mai departe la afisare:

 

//extern void sht75(int *temp, float *rhlin, float *rhtrue); //functia din "biblioteca", pentru paarmetriint *temperatura; sau int temperaturav[1];float *umid;  sau float umidv[1];float *rht; sau float rhtv[1];void main(void){     sht75(&temperatura, &umid, &rht);  sau sht75(temperaturav, umidv, rhtv);}

Mai departe ai valorile de afisat in *x sau in xv[0] si le afisezi cum ai facut cu valorile de la LM35.

Desi am senzatia ca varianta cu pointeri e ceva mai rapida/economica, daca ti se pare mai intuitiva varianta cu vectori poti s-o utilizezi pe aia.

Link spre comentariu

SHT11 este senzor de umiditate si de temperatura, are chiar rezolutie de 14 biti pe temperatura. Nu inteleg de ce te-ai mai legat la cap cu LM75 ala care este analog.

Link spre comentariu

Pentru ca vreau sa fac transmisie wireless si sht sa il folosesc pentru afara si LM35 pentru temperatura interioara.E mai mult ca sa arat ca pot sa lucrez cu ADC-ul.

Link spre comentariu

Pai nu faci afisarea cu pointeri, faci afisarea normal. Numai apelarea functiei o faci cu pointeri/vectori, pentru ca altfel functia modifica parametrii locali, nu parametrii de apel.In main() o sa trebuiasca sa definesti variabile vector/pointeri in care sa salvezi rezultatele masuratorii umiditatii/temperaturii si pe care le folosesti mai departe la afisare:

//extern void sht75(int *temp, float *rhlin, float *rhtrue); //functia din "biblioteca", pentru paarmetriint *temperatura; sau int temperaturav[1];float *umid;  sau float umidv[1];float *rht; sau float rhtv[1];void main(void){     sht75(&temperatura, &umid, &rht);  sau sht75(temperaturav, umidv, rhtv);}
Mai departe ai valorile de afisat in *x sau in xv[0] si le afisezi cum ai facut cu valorile de la LM35.Desi am senzatia ca varianta cu pointeri e ceva mai rapida/economica, daca ti se pare mai intuitiva varianta cu vectori poti s-o utilizezi pe aia.
Am incercat sa implementez cum mi-ai spus tu, dar nu iese...nu inteleg de ce..Am facut un mic proiectel separat pt SHT75/11...Am facut si o functie de afisare...si a mers sa afisez un pointer oarecare...
Link spre comentariu

Ce merge din bucata asta? Sau merge ceva?

	t=&i;	afisare(*t, 4, 30);	sht75(&temperatura, &umid, &rht);// 	DelayMs(250);	afisare(*temperatura, 1, 30);
Link spre comentariu

Ce merge din bucata asta? Sau merge ceva?

	t=&i;	afisare(*t, 4, 30);	sht75(&temperatura, &umid, &rht);// 	DelayMs(250);	afisare(*temperatura, 1, 30);
Am pus testu ala cu t si I ca sa vad daca merge afisarea...merge...nu afiseaza in schimb temperatura
Link spre comentariu

Daca esti sigur ca iti functioneaza corect comunicatia intre pic si senzor, poti incerca varianta cu vectori; nu folosesc prea des poinetrii, asa ca sunt sigur de ce nu-ti merge (memorie nealocata/nerezervata - malloc()?).

void main(void){		int temperatura[1];        int t[1];        int i;	float umid[1];  	float rht[1];	initialize();//	DelayMs(250);	i=10;	t[0]=i;	afisare(t[0], 4, 30);	sht75(temperatura, umid, rht);// 	DelayMs(250);	afisare(temperatura[0], 1, 30);//	afisare(umid[0], 3, 30);         //asta n-are cum sa mearga bine, afisare() asteapta int, primeste float//	afisare(rht[0], 5, 30);          //asta n-are cum sa mearga bine, afisare() asteapta int, primeste float     //	DelayMs(250);
Desi, de ce ma gandesc mai mult, de-aia sunt mai convins ca sht75() nu "intoarce" ce astepti tu de la ea. Poti folosi breakpointi in Proteus? Ce ai in temperatura (*temperatura/temperatura[0], depinde de varianta de program) cand iesi din sht75()?
Link spre comentariu

AM facut si cu vectori...acelasi rezultat...am atasat main-ul...dar nu inteleg ce ar putea fi gresit.M-am uitat prin celelalte proiecte cu sht11 pe care le am si in afara de diferentele de stiluri de scriere arata ok...

Am pus inainte de aceste un alt proiect care nu era facut pt pickit 2.

L-am refacut de la inceput.Am scapat de majoritatea erorilor din fisierul cu librariile pt sht11 , in afara de acestea:

Posted Image

Si m-am uitat in proiectul care merge si nici in ala nu este nicaieri definit sht75_data sau sht75_sck...unde trebuie sa le definesc?

Link spre comentariu

Din ce am vazut eu rapid (intr-un editor de texte, ca nu pot deschide mplab acum):- in SHT.c folosesti SHT11_DATA si SHT11_CLK da' nu le definesti nicaieri in proiect; daca sunt definite altundeva extern, include header-ul necesar (nu incluzi decat bibliotecile "standard" - "math.h", - si "delay.h").- in mainsht11.c - linia 38 folosesti functia s_connectionreset() care nu-i nicaieri definita. Iarasi, daca e definita extern, asigutra-te ca incluzi headerele necesare.Probabil acelasi tip de erori ai si in continuare.

Link spre comentariu

Am refacut tot proiectul...nu mai am nici o eroare...dar nici nu merge... :cry: ...exact ca si la SHT75...M-am saturat de facut simulari azi...nu inteleg ce e gresit...sau ce am sarit...Am 2 proiecte...si la nici unul nu stiu ce nu merge...super..Ar fi ok daca ar vrea cineva de pe forum sa le verifice un pic in proteus..

Link spre comentariu

Dupa cum ziceam, nu te pot ajuta cu simularea propriuzisa.Da' nici tu n-ai zis daca, de exemplu, merge comunicatia cu senzorul.Inainte sa faci tot felul de socoteli cu pointeri/vectori, incearca sa vezi daca senzorul iti raspunde. Pentru asta, ar trebui sa poti folosi break-points, sa opresti executia dupa ce citesti date de la senzor (in sht11_read_byte) si sa verifici valoarea din val. Daca e ce te astepti sa fie, atunci ai probleme la salvatul/prelucratul ulterior al datelor. Daca e altceva, verifici comunicatia.A propos, unde/cum sunt definite functiile alea input(), output_low(), output_high()?

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