TMP275 hőmérő élesztés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Little
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2006. december 28. csütörtök, 7:00

TMP275 hőmérő élesztés

Hozzászólás Szerző: Little »

Sziasztok,

Éleszteni próbálom ezt az IC-t, de a tizedes kijelzésem nem működik, nyilván triviális hibából adódóan, de nem találom a megoldást a help-ben sem.
Megnéznétek a kódomat, és kijavítanátok ahol szükséges.

Kód: Egész kijelölése

$regfile = "m128def.dat"
$crystal = 1000000

'lcd
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portb.4 , Rs = Portb.2
Config Lcd = 16 * 2
Cursor Off
Cls

Declare Sub Kiir

'i2c config
Config Sda = Portd.1
Config Scl = Portd.0
'Config I2cdelay = 100
Const Tmp275w = &H90
Const Tmp275r = &H91
Dim Temphi As Byte
Dim Templo As Byte
Dim Templow As Long

'i2c init
I2cstart
  I2cwbyte Tmp275w
  I2cwbyte &B00000001                                       'Pointer regiszter beállítás - Configuration Register (P1-0, P0-1, WRITE)
  I2cwbyte &B01100100                                       'Felbontás 12bit(OS=0,R1=1,R0=1,F1=0,F0=0,POL=1,TM=0,SD=0)
I2cstop

Do
  I2cstart
  I2cwbyte Tmp275w
  I2cwbyte &B00000000                                       'Pointer regiszter kiválasztás - Temperature Register (P1-0, P0-0, Read Only)
  I2cstart
  I2cwbyte Tmp275r
  I2crbyte Temphi , Ack
  I2crbyte Templo , Nack
  I2cstop
                                                            '12 bites felbontásnál, 1 bit 0.0625°C-nak felel meg.
 Templow = Templo                                           'Adat áttöltése long változóba, mert csak byteba olvasható
 Templow = Templow * 625                                    'Érték * 625
 Templow = Templow / 10000                                  'Érték / 10000

  Goto Kiir

Loop
End

Kiir:
Waitms 100
Upperline
Lcd Temphi
Lowerline
Lcd Templo ; " " ; Templow                                  'Kiolvasott érték, Konvertált érték
Waitms 100
Return
Előre is köszönöm a segítséget.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: kapu48 »

Gotóval nem szabad Return-al végződő rutint meghívni! (Goto Kiir?)!
Mert a Goto nem menti el a visszatérési címet a verembe.

Ezért a Return valami meghatározhatatlan címre küldi a programodat.

A helyes rutin hívás: Gosub Kiir
:wink:
Avatar
Little
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2006. december 28. csütörtök, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Little »

kapu48 írta:Gotóval nem szabad Return-al végződő rutint meghívni! (Goto Kiir?)!
Mert a Goto nem menti el a visszatérési címet a verembe.

Ezért a Return valami meghatározhatatlan címre küldi a programodat.

A helyes rutin hívás: Gosub Kiir
:wink:
Szia,

Köszönöm a válaszod, nem emiatt a hiba miatt nem végzi el a számolást, de módosítottam.

Kód: Egész kijelölése

Dim Temphi As Byte
Dim Templo As Byte
Dim Templow As Long

Do
  I2cstart
  I2cwbyte Tmp275w
  I2cwbyte &B00000000                                       'Pointer regiszter kiválasztás - Temperature Register (P1-0, P0-0, Read Only)
  I2cstart
  I2cwbyte Tmp275r
  I2crbyte Temphi , Ack
  I2crbyte Templo , Nack
  I2cstop

                                                            '12 bites felbontásnál, 1 bit 0.0625°C-nak felel meg.
                                                            'Adat áttöltése long változóba, mert csak byteba olvasható
  Shift Templo , Right , 4
   Templow = Templo
   Templow = Templow * 625                                  'Érték * 625
   Templow = Templow / 10000                                'Érték / 10000
  Gosub Kiir

Loop
End
A többit most nem tettem bele. Az adatlapot http://www.ti.com/lit/ds/symlink/tmp275.pdf átnézve (már kb. 30. alkalommal) csak leesett hogy a hőfok második bájtjának felső 4 bitjén helyezkedik el a tizedes hőfokérték. Ezért shiftet használva máris megkaptam az állapotok bájt értékeit (ha jól mondom), vagyis 0-15 közötti értéket. 1 bit 0,0625°C, így 0 és 0.9375 között fellépő értékek vannak.
A problémám az, ami az eredendő hiba is, hogy a bit értékekből nem számolódik át a hőfokérték (tehát nekem pl. 15 van kijelezve, nem 0.9375), hiába végzem el a szorzást és osztást. (Nyilván triviális hiba, csak én nem találom a megoldást.)
Most a kijelzésnél duplán jelenítem meg tesztre a kiolvasott és az átváltott értéket, a Templo érték kiíródik (15), de a Templow (0.9375) nem, gondolom mert tizedes érték.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: kapu48 »

A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2013. május 1. szerda, 20:02-kor.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Robert »

Byte, long : egész szám!
single/double: törtszám!

Kód: Egész kijelölése

  Shift Templo , Right , 4
   Templow = Templo
Print templow
   Templow = Templow * 625                                  'Érték * 625
Print templow
   Templow = Templow / 10000                                'Érték / 10000
Print templow
  Gosub Kiir
Szóval debugolnám.
SWStack, HWStack, Frames értékekeket min. a duplájára növeld!
Avatar
Little
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2006. december 28. csütörtök, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Little »

Köszi Robi! A single volt a megoldás. Persze most még a 0. előtagot el kell tűntetnem, hogy az egész fokkal összefűzhessem, illetve hogy csak 1 tizedest jelenítsen meg (remélem a round működni fog).
Azt még nem tudom hogy az így megkapott hőfokot hogy dolgozom fel (kijelezni már ki tudom, az nem gond, de össze kell majd hasonlítanom előre eltárolt értékekkel).
Nem írtam, de keltető gép lesz, ezért lenne fontos a tizedes pontosságú hőmérséklet szabályzás/kijelzés. Tudom lesz lengése a rendszernek, és nehéz lesz jól kivitelezni, de ha analóg vezérléssel jó eredmény érhető el, akkor digitálissal is.
Amit készítek:
-Hőmérséklet mérés
-Eredmény összehasonlítás a beállított értékekkel
-Fűtés esetén, pwm kimenet, mely 2db 60W-os 24V-os izzót hajt (alapjáraton az izzó alacsony pwm értéken előfeszítve, hogy az izzószál ne legyen megterhelve hirtelen bekapcsoláskor.
-Hűtés esetén, 24V ventillátorok pwm-es fordulatszám szabályzása (alsó, felső ventillátorok)
-Párásítás (ez elmélet, remélem működik a gyakorlatban is, átfolyó rendszerű vízmelegítő, pwm szabályzással -max 40-50 °C vízfűtés az intenzívebb párolgáshoz).
-Tálcaforgatás: mivel semmi használható dolgom nincs itthon, csak egy unipoláris léptetőmotor, így gondoltam azzal lehetne megoldani a 2 óránkénti +-90°-os billentést.
Amennyiben lenne javaslat a buktatókat elkerülendő, szívesen venném. (Új topikot nem nyitnék erre, bár lehet nem ezt kéne összerondítani).
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Robert »

A single nem csak 0..1 közt jó!
A single-ban legyen minden (egész+törtrész is).
Utána Format vagy Fusing-l megformázod a kiírást...
Kész :)
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: SzLacus »

A keltetésnél egy gyenge láz környékén van a hőmérséklet. (baromfit feltételezve, krokodilt, gyíkokat, és egyéb exotikumokat most hagyjuk) Mit kezdesz a 40-50 fokos víz hőtartalmával? Fűteni fogja a teret. Vannak egyszerű párologtató felület növelésen alapuló variációk, láttunk már ultrahangos párásítót, de spriccelő porlasztós megoldást is láttam már. A fejlődő embriónak viszont oxigénre van szüksége, méghozzá egyre növekvő mennyiségben. Akkor is kell légcsere, ha nem megy a hűtés. Vagyis szabályozható légcserére és állandó légkeverésre lesz szükséged. A keltetés során a tojás hőfelvevőből hőleadóvá válik. Abból, hogy a fűtést izzókkal akarod megoldani arra következtetek, hogy nem ipari méretű lesz a keltetőd. A hőleadó időszakot is szabályoznod kell. Mivel fogod a páratartalmat mérni? Akkor is működnie kell majd, amikor a kikelt madár száradás közben jelentős mennyiségű pihét "szemetel" a légtérbe. Persze nem kell túl bonyolítani, a kotlós egyszerű bio-processzorral megoldja. :)
Ja és a legfontosabb, hogy a keltetés az biológia, vagyis a biológiai fejlődést körülményeit kell szemelőtt tartani és kiszolgálni. Érdemes ebből kiindulni, és ennek a vonalnak is utána olvasni. Van magyar nyelvű könyv(ek) is a témában.
Sok sikert.
Avatar
Little
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2006. december 28. csütörtök, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Little »

Szia
Igen keltetésnél 37.3 és 37.8°C közötti hőmérséklet kell tartanom, az adott szakaszhoz megfelelőt, a párataralommal szintén. A 40-50fokos vizet keringetném a keltető belsejében lévő tartályban, szükség esetén (így elméletileg a belső tartály vízhőmérséklete nem érné el sosem a 40 fokot sem). Tervbe volt a porlasztós párásítás is, majd talán a 2.0 verzióban (ahol lenne naptár ic is, hogy programozható legyen, és az 1-21 nap közötti szakaszoknak megfelelő legyen a szellőztetés, fűtés, párásítás. Az egész egy kisméretű hűtőgépbe épül (nem ipari méretekben gondolkodom, és nem akarok ezen meggazdagodni sem. Építek egy saját keltetőt, bár egyszerűbb lenne venni), melyen van szellőztető nyílás, ahol alapból szellőzik, szükség esetén a rászerelt ventillátorokkal meg lehet növelni a szellőzési levegő mennyiségét. A páratartalmat, páratartalom mérővel mérem (nem is értem a kérdést...). Van rá jónéhány fajta megoldás. Mikor a csibe kikelt akkor a bújtatóba kerülnek át, a keltetőnek keltető funkcót kell csak ellátni.
Nem akarom túlbonyolítani a dolgot, rengetegen építették már meg analóg és digitális vezérléssel is a keltetőt, így nekem miért ne működne?
Köszönöm az infókat. A biológia részen átrágtam már magam, nem is ezzel kapcsolatosak a kérdések.
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: SzLacus »

OK, csak a buktatókat kérdezted. Gondoltam felsorolok párat. :)
Nem a program megírás irányból, hanem a keltetés irányból megközelítve a dolgot.
Valóban sokan csináltak már keltetőt, de csak kevesen jót. Abból, hogy utókeltetőbe rakod az bújtatásra váró tojást látom, hogy rögtön két gépet akarsz készíteni. Az előkeltetőben nem lesz bajod a pihével, de az utóban foglalkoznod kell majd vele. Pára érzékelésre alapvetően két megoldás van, az egyik relatív párát érzékel, ezek a modernebbek. A másik nedves hőmérésen alapul, ezt pszichometrikus elven emlegetik. Ennek az egyszerűsége az előnye. A keltetőkben ez a megszokott elv, annyira, hogy a keltetési táblázatokban is nagyrészt száraz és nedves hő van megadva. Átszámolható a relativ, és a nedves egymásba, bár ha precíz akarsz lenni, akkor a képletben a légnyomás is szerepel.
De hogy a tényleg élvonalbeli technológiát is megemlítsem, (csak hogy legyen fejlesztési perspektíva) van olyan ahol a levegő hőmérsékletén túl a tojáshéj hőmérrségletét érintés mentes technológiával figyelik, és arra történik a szabályzás. A párát a tojás súlyvesztése alapján szabályozzák, és a szellőzést a széndioxid tartalom alapján végzik. És ez csak az elő, az utóban további trükkök vannak, hogy egyszerre bújjanak ki amennyire csak lehetséges. Csak azért, hogy a napos csibe az ne másnapos csibe legyen. :)
Az egésznek a középpontjában a felhasznált energia mennyiség van. Az a cél, hogy a legkevesebb energia bevitelével állítsanak elő egy tojásból egy csirkét.
Jó szórakozást, és sok sikert.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Robert »

Amit nagyon hiányolok:
- helyi log állomány, amiben _minden_ rendszerjellemző benne van. Így lehet reprodukálni méréseket és a minőségbiztosítás is bejátszana végre...:)
- a hőmérés több helyen kellene legyen.
A nevezett hőmérő pontossága hagy némi kivánnnivalót. Minimum több ponton, minimum 0,1 fok pontosság (reprodukálhatóan) (DS18x20 kellene)
Páraszenzorból is valami precíz (HIH-4xxx, HIH-3xxx és társai (2..5% pontosság))
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: SzLacus »

Igen, a profi cuccokon ez is profin meg van alkotva. Visszamenőlegesen lehet elemezni, és látni minden beavatkozást, és annak a hatását. A riasztások kezelése sem lesz egyszerű, nem könnyű eldönteni, hogy mikor kell kezelői beavatkozásért csörömpölni, és mikor kell hagyni aludni a kezelőt, mert ami történik az természetes és megoldja a szabályzás. A távoli elérés sem haszontalan dolog, de a távoli beavatkozást jól át kell gondolni. Ott már jogosultságokkal is foglalkozni érdemes.
Szóval szép feladat, nagy feladat, és sok-sok siker lehetőség van benne. De hazai pályán először az alapokat kell lefektetni. Ez akár a hőmérséklet szabályzás is lehet. Akik találkoztak már régebbi keltetőkkel, azok emlékezhetnek olyan megoldásra, ahol higyanyos kontakt hőmérőkkel történt a szabályzás, és működött.
Szép meló, sok sikert, és ha van eredmény, szívesen hallunk róla.
A hozzászólást 1 alkalommal szerkesztették, utoljára SzLacus 2013. május 13. hétfő, 12:34-kor.
Avatar
Little
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2006. december 28. csütörtök, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Little »

Robert írta:Amit nagyon hiányolok:
- helyi log állomány, amiben _minden_ rendszerjellemző benne van. Így lehet reprodukálni méréseket és a minőségbiztosítás is bejátszana végre...:)
- a hőmérés több helyen kellene legyen.
A nevezett hőmérő pontossága hagy némi kivánnnivalót. Minimum több ponton, minimum 0,1 fok pontosság (reprodukálhatóan) (DS18x20 kellene)
Páraszenzorból is valami precíz (HIH-4xxx, HIH-3xxx és társai (2..5% pontosság))
-Ezeket én is hiányolom, de mint írtam tervben van bővítés/fejlesztés a v1.0-nak kellene elindulnia, amiből majd következtetéseket tudok levonni, és az első keltetés tapasztalatait hozzáadni.
-Hőmérést precíziósra 3 helyen terveztem (keltető alsó,felső és középső hőmérés), bár a légtér eléggé kicsi (50L)
-A nevezett hőmérő pontosabb, mint az általad nevezett S széria (9bit felbontás, 0.5°C pontosság mellett), a B szériával pedig megegyező lehet (12bit).
-Első körben nem fektetnék nagy összeget az egész rendszerbe, így marad a low-cost megoldás http://dx.com/p/1-wire-temperature-and- ... 2cm-143515
Majd talán a v5.0 bekerül a versenybe, ha lesz idén is...
Avatar
Little
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2006. december 28. csütörtök, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Little »

SzLacus írta:Igen, a profi cuccokon ez is profin meg van alkotva. Visszamenőlegesen lehet elemezni, és látni minden beavatkozást, és annak a hatását. A riasztások kezelése sem lesz egyszerű, nem könnyű eldönteni, hogy mikor kell kezelői beavatkozásért csörömpölni, és mikor kell hagyni aludni a kezelőt, mert ami történik az természetes és megoldja a szabályzás. A távoli elérés sem haszontalan dolog, de a távoli beavatkozás
Szóval szép feladat, nagy feladat, és sok-sok siker lehetőség van benne.
Ez mind szép, és igaz is, de szeretném megtartani az egészséges egyensúlyt egy 2 tálcás (60 tojásos) keltető és az ésszerűség között. (Sokan az 1 tálcás román gyártmányú keltetőből is 95%-os kelési arányt érnek el, és ott semmi digitalizáció, logolás, webes elérés nincs.)
Általában az én fejlesztéseimmel is az a baj, hogy mindig plusz funkciókat teszek (tennék) bele, így a megadott idő helyett 3* annyi időbe telik míg elkészül (vagy sosem készül el).
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TMP275 hőmérő élesztés

Hozzászólás Szerző: Robert »

A DS18S20 12bites!
Csak nem kell előre megmondani neki, mint a B-nek.

A DHT-1010 mind hőfokban, mind páraszenzor érzékenységben kuka.
1.5V táp? 10% pontosság? 1 fok főfokpontosság?
Adatlap lasszóval, bemondásos alapon. Pótalkatrész: 0. Hosszútávú tervezés: 0.

Nn nem forszíroznám... Hobbira jó, de komoly munkára esélytelen....
Válasz küldése