vlad_2770 Postat Noiembrie 30, 2009 Partajează Postat Noiembrie 30, 2009 As dori va rog o informatie de la cei care au folosit senzorul de temperatura DS18S20 sau DS18B20 sau DS1820. MA intereseaza care este abaterea reala a unui astfel de senzor. Cind este intr-o camera din 5 valori afisate macar 3 sunt la fel? Sau tot oscileaza in jurul unei valori? Daca il apropii de o sursa de caldura cam dupa cit timp reuseste sa afiseze noua temperatura? Tot asa in timpul inclazirii de la o sursa de caldura oscileaza? (adica mai mult, apoi mai putin, apoi media celor doua valori si tot asa?)Eu am folosit un senzor TC74 dar sunt total dezamagit. Desi in camera este cam 24-25 de grade el imi arata si 18 si 29 de grade. Apoi dupa un timp se stabilizeaza si imi arata cam intre 23 si 26. Cind pun mana pe el junge si la 37 de grade ca apoi in secunda urmatoare sa arate 32. Oscilatiile mi se par greu de suportat. Am folosit si o dioda pe post de senzor, care tot oscileaza (este adevarat ca doar plus minus 2 grade , deci la inceput nu porneste cu oscilatii foarte mari) dar ce ma enerveaza nu reuseste sa-mi arate nici macar in 32 de grade desi tin degetul pe ea chiar 3-4 minute. Link spre comentariu
XAN77 Postat Noiembrie 30, 2009 Partajează Postat Noiembrie 30, 2009 eu cel mai prost senzor digital cu care am lucrat a fost LM75. Pe cand 18B20 cel mai bun, abaterea reala e de maxim 1 grad, eu am 2 senzori la acelasi controler, amandoi au abatere de vreo 0,7 aproximativ, care am corectato soft, in catalog zicea +\-0,5 probabil asa o fi eu am comparat fata de termometru clasic cu alcool. Stabilitatea insa e foarte buna, nu jongleaza zecimala ca nebuna, si raspunsul e rapid la modificarea temperaturii. Pentru mine sunt cei mai buni senzori cu care am lucrat. Link spre comentariu
cirip Postat Noiembrie 30, 2009 Partajează Postat Noiembrie 30, 2009 Eu am lucrat cu 18B20 si am fost foarte multumit. Variatiile de +/-1LSB sunt normale, dar daca e mai mult, ceva e in neregula. Totusi, ca o masura suplimentara de netezire, eu am trecut datele printr-un filtru trece jos digital si merge laser, frate. Link spre comentariu
vlad_2770 Postat Decembrie 1, 2009 Autor Partajează Postat Decembrie 1, 2009 nu prea imi dau seama ce inseamna filtru trece jos digital. Daca ai facut prin soft sa nu-ti ia in calcul o anumita valoare daca este mai mare cu x fata de medie este ok, dar cum te descurci cind ai nevoie sa masori variatii rapide ale temperaturii? TC74 deja scoate marimea digitala la pinii lui. Nu este senzor analogic ci digital deci nu prea am ce sa-i fac si am incercat doi senzori si ambii cam cu acelasi comportament. Eu inteleg abaterea de +/- 1 sau 2 grade prin aceea ca senzorul sa arate cu 1sau 2 grade in plus sau in minus fata de temperatura reala tot timpul nu sa oscileze in jurul temperaturii cu 1 sau 2 grade. Asa ii pot aduna sau scadea o valoare din valoarea indicata dar cind oscileaza ce sa-i fac? Si mai ales cind il apuca sa oscileze si cu +/- 3 sau 4 grade si apoi iar se calmeaza. Nu gasesc nici un factor perturbator care sa-i pricinuiasca un asemenea comportament. Nici linga laptop nu sta deci nu stiu ce sa cred. Link spre comentariu
XAN77 Postat Decembrie 1, 2009 Partajează Postat Decembrie 1, 2009 18B20 din cate am observat eu nu are acel grad oscilant, e liniar in plaja la care il folosesc eu, si adun acel grad in soft sau il scad, dupa caz. Nu aplic nici o filtrare digitala soft, afisarea o fac cu 0,1 rezolutie si este foarte stabil, daca se afla intre doua valori se schimba zecimala 2-3-2-3-2 de exemplu dar nu cu mai mult de o unitate si nu foarte des. Link spre comentariu
vlad_2770 Postat Decembrie 1, 2009 Autor Partajează Postat Decembrie 1, 2009 mdea, deci se pare ca isi face toti banii. Daca de exemplu pui mana pe el , in cit timp reuseste sa iti indice temperatura de 34-35 de grade pornind de la temperatura camerei sa zicem de 25 de grade. Deci in cit timp resueste el sa arate o crestere cu 10 grade? Link spre comentariu
XAN77 Postat Decembrie 1, 2009 Partajează Postat Decembrie 1, 2009 era la 23 grade, l-am prins intre degetul aratator si cel mare si a inceput sa creasca repejor si dupa 27grade mai greoi astfel dupa 18 secunde erau 30 grade, iar dupa 31 secunde 31 grade, dupa care crestea foarte greu, iti dai seama ca nu puteam avea intre degetele alea 37 de grade, chiar daca aia e temperatura corpului, nu e valabil si in varfu degetelor. Link spre comentariu
cirip Postat Decembrie 1, 2009 Partajează Postat Decembrie 1, 2009 nu prea imi dau seama ce inseamna filtru trece jos digital.Este o relatie recursiva pe care o re-evaluezi la fiecare citire (esantionare) a temperaturii. Relatia e ceva de genul y[k]=(1-a)*y[k-1]+a*x[k] , unde a<0.5 ... sper ca imi amintesc corect. Eu lucram cu a=0.1 ... 0.001. Daca il faci pe a ceva inrudit cu o putere a lui 2, inmultirile se fac shiftari si cresti zdravan viteza de calcul a expresiei. Cred ca am pe undeva un excel care ilustreaza principul. Daca il vrei, il postez. Daca ai facut prin soft sa nu-ti ia in calcul o anumita valoare daca este mai mare cu x fata de medie este ok, dar cum te descurci cind ai nevoie sa masori variatii rapide ale temperaturii?Nu, nu fac decizie logica. Este pur si simplu filtrare digitala, desepeala. E convolutie, de fapt. Ca sa poti "sa vezi" variatiile rapide, trebuie sa indeplinesti doua conditii: 1)Teorema esantionarii, ca sa nu il suparam pe taica Nyquist si 2)Banda FTJului digital sa fie suficient de mare ca sa lase sa treaca banda semnalului, dar suficient de mica pentru a filtra zgomotul. De fapt prin supraesantionare, filtrare trece jos si decimare se poate mari artificial nr de biti ai ADului. Este principul convertoarelor A/D sigma-delta. TC74 deja scoate marimea digitala la pinii lui. Nu este senzor analogic ci digital deci nu prea am ce sa-i facAm aratat mai sus ca ai ce sa-i faci. Nu poti sa-i pui un filtru RC fizic, din piese, dar il poti face soft foarte usor. Efectul este acelasi. dar cind oscileaza ce sa-i fac? Rutinele de comunicatie sunt facute de tine? Esti sigur ca timingul este corect? Sunt blocate intreruperile in timp ce comunici cu DSul? Mie mi-a luat ceva timp pana cand am cazut pe specificatie cu timingul. Este foarte sensibil la timing pentru ca pe asta se bazeaza toata codarea bitilor 1/0. Si mai ales cind il apuca sa oscileze si cu +/- 3 sau 4 gradeMi se pare mult. Te-ai uitat cu osciloscopul la semnale? Eu am mai facut o smecherie. In momentul in care procesorul citea DSul, generam un impuls foarte ingust pe un alt pin, ca sa vad in ce moment se face esantionarea datelor si am umblat la intarzieri pana cand semnalul era esantionat in punctul cel mai curat cu putinta. Inca o data subliniez necesitatea blocarii intreruperilor cand comunici cu DSul, ptr ca iti pot altera timingul. Cirip Link spre comentariu
vlad_2770 Postat Decembrie 2, 2009 Autor Partajează Postat Decembrie 2, 2009 XAN77 multumesc mult pentru precizari. Mie imi sunt foarte importante pentru ca mi-am dat seama ca pentru ce vreau eu nu pot folosi un senzor DS. Multumesc inca o data. cirip pe tine te-am lasat la urma . Multumesc pentru raspuns, dar as vrea niste detalii despre aceasta filtrare digitala. Mi-ai scris o formula: y[k]=(1-a)*y[k-1]+a*x[k], si eu banuiesc ca y[k] este temperatura la momentul k, y[k-1] este temperatura la momentul anterior lui k, a este un coeficient care mi-ai zis ca este in intervalul [0.1 0.001] dar nu stiu cine este x[k]. La fel nu am inteles cum as putea creste viteza de calcul, dar nu cred ca este o problema pentru ca eu citesc valoarea din secunda in secunda. Daca mi-ai putea da mai multe detalii, m-ai scoate din ceata. Multumesc mult!!! Link spre comentariu
cirip Postat Decembrie 2, 2009 Partajează Postat Decembrie 2, 2009 x[k] este valoarea curenta citita de la senzor. Este variabila de intrare a filtrului.Viteza de calcul o cresti prin faptul ca o siftare "costa" in general mai putini cicli de procesor, in comparatie cu o inmultire. Afirmatia este valabila daca nu ai multiplicator hardware, cum e cazul picurilor din seria F16. Daca ai multiplicator sau instructiune MAC (Multiply ACcumulate) de 1-2 cicli, atunci nu mai conteaza.Cirip Link spre comentariu
vlad_2770 Postat Decembrie 2, 2009 Autor Partajează Postat Decembrie 2, 2009 daca x[k] este valoarea citita de la senzor inseamna ca dupa un numar destul de mare de citiri voi reusi sa afisez valoarea reala a temperaturii si variatia rapida a temperaturii nu o voi putea detecta. Cum pot totusi sa impac si capra si varza? Macar varza adica sa detectez variatia rapida a temperaturii , ca asta m-ar interesa mai mult.Multumesc Link spre comentariu
cirip Postat Decembrie 2, 2009 Partajează Postat Decembrie 2, 2009 Cum adica sa detectezi variatia rapida? Adica sa nu ti-o inghita filtrul sau sa primesti un semnal la variatii rapide? Link spre comentariu
vlad_2770 Postat Decembrie 2, 2009 Autor Partajează Postat Decembrie 2, 2009 da, sa nu mi-o inghita filtrul. Daca temperatura incepe sa creasca, sa pot detecta cit mai repede asta si sa nu fie tratata ca oscilatie. Link spre comentariu
cirip Postat Decembrie 2, 2009 Partajează Postat Decembrie 2, 2009 Asta o rezolvi din parametrul a. El este cel care da banda de trecere a filtrului. Daca a este mare, filtru are frecventa de trecere scazuta si nu raspunde la variatii rapide. Daca a este mai mic, banda creste, filtrul raspunde mai repede, tranzitiile rapide trec, dar trece si mai mult zgomot.Uite, am facut un excel in care graficul albastru este semnalul de intrare, iar cel mov este cel de iesire. Modifica valoarea lui a si vezi ce se intampla. Sper sa fie mai clar.Am impresia ca am cam amestecat formula din primul post; am scris din memorie, nu am verificat, dar asta din excel este garantat corecta ptr ca o vezi pe grafic ca merge.Filtrul are un singur pol, ceea ce inseamna ca panta de atenuare in zona de tranzitie este de 6dB/octava. Daca vrei flanc mai abrupt, poti conecta mai multe module din astea in serie. Frecventa de taiere (la -3dB) va fi mai mica decat frecventa individuala, dar le aranjezi sa-ti placa. Link spre comentariu
vlad_2770 Postat Decembrie 2, 2009 Autor Partajează Postat Decembrie 2, 2009 multumesc foarte mult!!! Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum