Fórum témák
» Több friss téma |
Sziasztok!
Egy telepről működő eszközt csinálok TC77-es hőmérséklet érzékelővel. Az érzékelő szépen mér és kommunikál, de elemről táplált mérőről lévén szó, szeretném kihasználni a hőmérő shutdown üzemmódját, mivel ekkor csak 0,1uA az áramfelvétele (adatlap szerint) és mivel csak 1 illetve 5 percenként mérnék hőmérsékletet így felesleges lenne az idő nagy részében működve hagyni. A problémám az lenne, hogy amikor a leírás szerint beírom a konfigurációs regiszterébe a csupa 1-est, akkor le is kapcsolja magát, de nem tudom sehogyan se újra életre kelteni, hiába küldöm el neki a csupa 0-t a folyamatos mérési üzemmódhoz. Használta már valaki ezt a shutdown módot a TC77-nél? A válaszokat előre is köszönöm! Abdul
Az adatlap nem sokat foglalkozik ezzel a résszel, mert úgy tűnik nagyon egyszerű. Én is csa kannyit kérdeznék, hogy 16db 1-est és 16db 0-át küldesz el? (X-ek helyén is azt ajánlja...)
Az jutott eszembe, hogy adj neki tápot a kontroller lábáról. Ha nem kap áramot, akkor nemis fogyaszt... DS1820-al már csináltam ilyen disznóságot
Sziasztok!
A mellékelt képen látható folyamatot követtem (TC77 adatlap 10. oldal). Először elküldöm ez az üzenetet csupa 0-val a C15:C0-ban (Continuous conversion mode), várok 400 ms-ig majd újra elküldöm az üzenetet (kiolvasva a mért hőmérsékletet) csupa 1-essel a C15:C0-ban (Shutdown mode). Mindezt 2 másodperces ciklusban (a próba miatt). Nem vezetett eredményre, nem akart a shutdown módból újra feléledni. De válaszolva potyo felvetésére is: igen úgy csináltam meg a panelt, hogy a TC77 a tápot a mikrovezérlő lábáról kapja, de nem túl elegáns megoldás kapcsolgatni, másrészt azt is kipróbáltam, hogy bekapcsolom a TC77-et 2 másodpercenként, várok 400 ms-ot és utána kiolvasom a mért hőmérsékletet, aztán kikapcsolom. De ebben az esetben is rossz értéket olvastam vissza (168.375 fok). Ezért kérdetem, hogy ha valaki esetleg foglalkozott már ezzel a shutdown móddal, akkor megkérdezném tőle, hogy miként. Sziasztok! Abdul
Én használok néhány darabot ebből a TC-ből, de mivel hálózati az alkalmazás, nem használom a Shut módot. Ha használnám, akkor én is így csinálnám, ezért most azt kéne megnézned, hogy tutira jól vannak e időzítve a jelek az órajelhez, és biztosan kimegy-e minden bit.
Szia!
Már én is gondoltam arra, hogy digitális szkóppal megnézem, de még nem jutottam el oda... Mindamellett ha a sima "13 bites" hőmérséklet lekérdezést hajtom végre, akkor az tökéletesen működik. Sziasztok!
A kivitelt hogy oldod meg? szoftveresen? Biztos kimegy minden bit? Már abból kiindulva, hogy a 13bites mód műkszik, a 16-os nem....
Valaki eltudná nekem mondani hogy nézki egy TC77 es szenzor használata? Tápot adok rá, cs-t lehúzom testre és már küldi is a 16bit-et?
The TC77 is in the Continuous Temperature Conversion mode at power-up. The first valid temperature conversion will be available approximately 300 ms after power-up. Bit 2 of the Temperature register is set to a logic ‘1’ after the completion of the first temperature conversion following a powerup or voltage reset event. Bit 2 is set to logic ‘0’ during the time needed to complete the first temperature conversion. Thus, the status of bit 2 can be monitored to indicate the completion of the first temperature conversion.
A TC77-nek az SCK lábára tolom az órajelet és ő az SI/O lábon tolja vissza az adatot. Egy órajelre egy bitet ad ki. Ezt ismételem meg 16x mert akkor kapok meg egy pontos hőmérsékletet. Van még a TC77-nek egy CS lába amivel tulajdonképpen engedélyezem a tok működését ( 0: bekapcs, 1: kikapcs).
Na akkor eljutottunk oda, hogy van 16 bitünk. Most kell ebből valahogy az ember számára is érthető számot varázsolni: egyben a 16 bit: 0 00010011 1110 111 Ha az első bit 0 akkor az érték pozitiv. Pozitiv érték esetén a számolási mód: 1. Az első bitet átugorjuk (Balról!) 2. Leszámlounk 8 bitet és az az egész érték, vagyis: 00010011 =19 3. A következő 4 bit a tizedes érték, vagyis: 1110 A tizedes értéket úgy kapod meg, hogy mindegyik bit egyh elyiértéket jelent: 0,5 0,25 0,125 0,0625 1 1 1 0 = 0,5 + 0,25 + 0,125 = 0,875 Vagyis a végeredmény: 19,875 [>] Read 10, 00001010 00010100 20,3125 [>] Read 47, 00101111 0101 [>] Read 9, 00001001 00010011 19,875 [>] Read 247, 11110111 1110 [>] Read 9, 00001001 00010011 19,125 [>] Read 151, 10010111 0010 [>] Read 10, 00001010 000101000 20,625 [>] Read 87, 01010111 1010 Negativ szám: Az első bit 1! Ugyanazt tesszük mint pozitiv szám esetén a 2., 3. lépésben de ez még nem ad eredményt. Invertáljuk a kapott számokat és hozzáadunk egyet. És innen ugyanúgy működik a dolog mint a pozitiv számnál. 1 11001001 0000 111 11001001 Invertálva > 00110110 +1 00110111 = 55 0000 Invertálva > 1111 +1 10000 = 0 (ha az eredmény 5 bitre jön ki akkor is csak az utolsó 4 bitet nézzük!) 1 11110011 1100 111 11110011 Invertálva > 00001100 +1 00001101 = 13 1100 Invertálva > 0011 +1 0100 = 0,25 (Helyiértékek alapján!) Azthiszem ennyi infó elegendő a beállításához. Miután nagyon érzékeny a hőmérő és nagyon gyorsan ugrálnak az értékek ezért érdemes betenni valami átlagoló programot!
Köszi ez érthető volt!
Még egy kérdés hogy tudok 16f877A-ba SPI-n beolvasni, ki írni tudok de a beolvasás nem megy adatlapot néztem és valami ilyet hoztam össze de nem működik: RECEIVE MOVLW B'00110010' MOVWF SSPCON BCF STATUS,RP0 MOVF SSPBUF,W MOVWF PORTB Ja és még egy, lehet alap kérédés de nem tudom ha sikerül beolvasnom a 16 bitet hogy lehet azt keté osztani hogy le tudjam tárolni két regiszterbe? Remélem értehetően fogalmaztam meg a problémámat
Miközben kiviszel egy bájtot, bejön a másik. Meg kell nézni az adatlapot, hogy milyen a protokoll. Le van rajzolva és írva.
A bájtokat beérkezésükkor letárolod a nekik előkészített memória területre, aztám máris ketté vannak választva! (soha nem is voltak összeragasztva, egymás után jönnek....) Nézd meg a PIC adatlapjában az SPI kezelését, talán még példa is van. Olvasd el Topi cikkét, ha igaz beszél az SPI kezeléséről is.
Sziasztok!
Én is a TC77-tel próbálok hőmérsékletet mérni. MikroC-ben programozom a kontrollert, egy 18F2520-ast. Odáig jutottam, hogy az LCD kijelzőn megjelenik a hőmérséklet rögtön a bekapcsolás után, ami megfelel, a szobában ténlylegesen mérhetőnek. Negyed óra elteltével szépen lassan felkúszik kb. 36 fokra. Távol helyeztem mindenféle hőforrástól. Nem használom a shutdown üzemmódot, mert nem egyértelmű számomra az időzítése. Arra gyanakszom, hogy a continous conversion mint alapértelemezett üzemmód miatt saját magát fűti fel az ic. Mikor vált át olvasásról írásra hőmérő? MikroC-ben külön library van írva az SPI busz kezelésére. A parancsok: SPI_INIT, SPI_READ, SPI_ WRITE, egészen egyszerű . Úgy értelmezem, hogy a write parancshoz kellene az SDO (RC5) lábat is használni, de a hőmérőnek a SI/O lába egy és ugyanaz. Akkor nem fogom tudni MikroC alatt használni a kontroller hardveres SPI-jét? A válaszokat előre is köszönöm! Bonca
Találtam a microchip.com-on egy application note-ot AN871 számmal. A kérdésem, hogy az SDI és SDO lábak osszakötése valami logikai dolog vagy fizikailag kell érteni?
Bonca
Természetesen fizikailag kell összekötni.
Hello!
Az normális hogy egy TC77 ilyen értékeket szolgáltat: 0000101011101111 - 21.8 0000101010101111 - 21.3 0000101100000111 - 22.0 0000101011010111 - 21.6 0000101100000110 - 22.0 0000101110000100 - 23.0 0000101110100111 - 23.3 0000101101101111 - 22.8 pedig nyugalomban van a hőmérséklet és ezek 1 másodperces időközönként vett értékek. Ha beleraktam olvadó jégbe akkor is csak 9 fokig ment le kb ugyanilyen +-3 fok stabilitással. Most vagy a kiolvasással van a hiba vagy az ic vel. Mellékletben van a avr C program amivel kiolvasom (avr tiny2313). köszi Beni |
Bejelentkezés
Hirdetés |