English  Deutsch
Biosolar Forum  =>  Mérésadatgyűjtés  =>  Single Board Computer - 1Wirelapozz: « előző   1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34   következő »
Mielőtt kérdezel olvasd el a témához tartozó KIEMELT CIKKEKET!
2013-04-23
20:19:23
Előzmény: szocsmarci #40386#40390
Nem én terveztem a gépészeti részét, én csak a vezérlést és a képet :)

- meleg: az elmenő csövön, hideg a visszatérő csövön, a belső a kollektor belsejében.
- 90 fok: normál kollektorról beszélünk és mivel vizet keringetek benne nem gőzt :)
- az 5 perc a diagrammok alapján jól működik. Látok működni gyári vezérlést ami fél percenként kapcsolgat össze vissza eredmény nélkül. Szerintem kell egy kis idő amíg megfordul a víz a rendszerben. Természetesen ez sokmindentől függ. (távolság, csőátmérő, keringető sebesség, stb.)

szocsmarciVálasz erre
2013-04-23
16:31:04
Előzmény: pinyo #40362#40386
Köszi. A kapcsolásból látom hogy inkább villamos szakember vagy, mint épületgépész :) - nem rossz indulatból mondom, csak a stílus elárul.

Amit kérdéznék:
- "3db érzékelővel, egy belső hőmérséklet, meleg ág, hideg ág." Ezek az érzékelők hol vannak?
- Miért van maximálva 90°-ra a kollektor hőmérséklet?
- Az 5 perc nem túl hosszú idő a következő vezérlésig?


2013-04-23
08:38:05
Előzmény: szocsmarci #40345#40362
Nos nem csak emiatt működik a szerver, aminek a fogyasztása 100-140W.
Úgy látom csak a napkollektor vezérlés része érdekel, ezt leírom:

-hőmérsékletek lekérdezése és adatbázisba írása
-vezérlési adatok lekérdezése adatbázisból /van egy beállító felület, így nem kell érteni a programozáshoz, ha valamit módosítani szeretnél./
-Adatok feldolgozása, számolás.
Itt jegyzem meg, jelenleg saját készítésű napkollektor van feltéve, ami forog a nap után. 3db érzékelővel, egy belső hőmérséklet, meleg ág, hideg ág.
-ha a meleg ág magasabb mint a HMV akkor bekapcsol, VAGY a belső hőmérséklet magasabb mint HMV + hiszterézis (nálam ez 20 fok)
-védelem: ha a napkollektor meleg eléri a 90 fokot akkor kapcsolja a keringetőt, illetve elforgatja a nap felől.
Ha ezek nem teljesülnek akkor nem kapcsol be. 5 perces időközzel van leolvasás és vezérlés.

Én PHP-ben oldottam meg, de a forráskódot nem hozom nyilvánosságra.

Az itthoni rendszer így néz ki, ezt mind a gép irányítja.




szocsmarciVálasz erre
2013-04-22
17:19:39
Előzmény: pinyo #40321#40345
Köszi a választ.
Engem elsősorban a konkrét program érdekel, jobban mondva az, hogy milyen logika alapján dolgozik a vezérlő.

http://biosolar.hu/forum/show/40253#40253



- valahogy így. Szerintem egy PC-t fenntartani csak erre a célra luxus. Nem a bekerülési költség miatt, mert gondolom erre a célra egy levetett régi gépet használsz, hanem a fogyasztás miatt.
Megadnád a vezérlő program forrás kódját? Nem tudom milyen nyelvben dolgozol, de ha nem valami extrém fajta, akkor megértem. Általában a nyelvek a C-re vagy a Basicre hasonlítanak :) .
2013-04-22
08:26:44
Előzmény: szocsmarci #40227#40321
Látom nehezen érkezik a válasz. Leírom az enyémet, hátha segít :)
Én általában 5 perces időközzel kérdezem le a hőfokokat. Általában ennyi idő alatt nem változik hatalmasat.
Nekem egy komplett PC van erre a célra alkalmazva, aminél van egy beállító képernyő, ahol tudom az értékeket módosítani.
Normál relével dolgozok, nincs vele gond évek óta.
szocsmarciVálasz erre
2013-04-13
17:27:36
Előzmény: bigmafa #38201#40227
Megadnád a program diagramját? Arra vagyok kíváncsi, hogy milyen feltételek alapján mozog a program, pontosan mit mérsz, mik a várakozási idők, milyen késleltetések vannak benne.
Lehet a helyszínen, gombokkal állítani a működést, vagy csak programozható?
Milyen a relésor? Olcsó vagy solid-state?
szocsmarciVálasz erre
2013-03-18
18:55:53
Előzmény: medig #39608#39615
Tévedtem, az OR utasításban láttam a hibát, de az byte szintű, és nincs benne előjel. De örülök, hogy átjuttattalak a holtponton, hiszen Te is érzeted, hogy hol a hiba - mindjárt az első sorban amit fontosnak tartottál megadni :).
Mentségemre legyen mondva, azt sem tudom milyen nyelvben írsz, vagy milyen eszközben!

Az SAR jelenti az előjeles osztást, az SHR az előjel nélkülit. Ha megtalálod az SHR operátor jelét, akkor nem kell a &0x0f a végére (int8_t te = (data[0]>>4)&0x0f;)
2013-03-18
17:42:20
Előzmény: szocsmarci #39603#39609
szocsmarci
nem is tudtam, hogy ebben a temaban is otthon vagy:)
2013-03-18
17:40:47
Előzmény: szocsmarci #39603#39608
BINGO!!!
Azt hiszen meg van a hiba. Még nem próbáltam ki, de leginkább magamban találtam meg, mint sem a DS18B20-ban. Egy rossz feltételezés.

Én azt gondoltam(tévesen), hogy ha SHIFT operátorral jobbra shiftelek, akkor is van 0 átvitel MSB-be, avagy a legmagasabb bitbe egy 0-t shiftel be.
De NEEEEM. Az MSB marad a helyén, és csak a többi bit tolódik el.

Assemblyben SHIFT jobbra két utasítás is van:
Egyszer a 'sar' utasítás, ami a C-s shift megfelelője(MSB a helyén marad).
Illetve a 'shr' ami mindig 0-t hoz be az MSB-be.

www.en.wikipedia.org/wiki/Arithmetic_shift

Magyarán, ha a data[0]-ban 1000XXXX van, és >>4-el, eltolom jobbra, akkor a következő lesz az eredmény: 11111000 :) 248

Asszem ma is sikerült valamit tanulnom. Illetve felfrissíteni egy picit csekély, ám de, annál kopottabb programozástechnikai ismereteimet.

helyesen:
...
int8_t te = (data[0]>>4)&0x0f;
te |= data[1]<<4;
...

ui: köszi, hogy próbáltál segíteni!
szocsmarciVálasz erre
2013-03-18
13:43:42
Előzmény: medig #39598#39603
int8_t te = data[0]>>4;
- Deklarálod a te-t, majd eltolod a data[0] értékeit jobbra (osztod 16-tal), és berakod te-be.

te |= data[1]<<4; // egeszresz (signed integer)
-data[1] értékét megszorzod 16-tal (miért is lenne ugye egy bájton az egész rész ?), majd egy OR utasítással átadod az eredeti értékhez.

Valószínű itt a hiba, mert egy sima (unsigned) integert hozol össze egy előjeles (signed) integerrel. Próbáld meg először kivenni a hőmérsékletet egy sima integerbe, majd azt átkonvertálni előjelesbe.

23 0001-0111 - eddig jó, mert a 0111 pozitív (byte alsó - data[0]-ból eredeztetve)
24 0001-1000 - ez már nem jó, mert az 1000 negatív szám, ha ehhez rendelsz egy OR műveletet, akkor ez lesz belőle.
248 1111-1000

Az nem értem, hogy miért nem a 0000-0111 számtól (dx7) mutatott rossz értékeket, ezen gondolatmenet alapján ez lenne a logikus.
2013-03-18
10:41:15
Előzmény: szocsmarci #39592#39598
Szia,

Milyen tartományokra gondolsz?

Úgy áll össze a mért érték, hogy:

data[0]: 3.bit, 2.bit, 1.bit, 0.bit, -1.bit, -2.bit, -3.bit, -4.bit
data[1]: S.bit, S.bit, S.bit, S.bit, S.bit, 6.bit, 5.bit, 4.bit

...
int8_t te = data[0]>>4;
te |= data[1]<<4; // egeszresz (signed integer)
uint8_t tt = data[0]&0x0f; // tortresz
...

Tehát a fentiek alapján átszámolom, de ettől függetlenül az ugrás benne van.
Kénytelen vagyok byteban gondolkodni, de már binárisban sem jó a dolog...

szocsmarciVálasz erre
2013-03-18
08:41:28
Előzmény: medig #39588#39592
A 248 az 11111000 bináris alakban. Valahol a tartományok beállításában lehet a hiba; lehet akár a mérésben, akár a kiírásban is. Integernek vedd fel a változót, ne byte-ban gondolkodj!
2013-03-17
21:56:24
#39588
Sziasztok!

Olyan problémám vagyon, hogy DS18B20-al szeretnék hőmérsékletet mérni.
Elméletileg tök egyszerűen, és jól kéne müködnie, de...
DE a lekérdezett hőmérsékletben fura és értelmetlen ugrások vannak.
Konkrétan, hogy miről hablatyolok.
Mérem a hőmérsékletet, átalakíttatom, lekérem az első 2 db byte-nyi adatot, ahogyan az a doksiban le is van írva átszámoltatom, majd visszairatom lcd-re.
Tesztelésnek megtappolom ujbeggyel a DS-t, majd elkezd emelkedni a hőmérséklet és ez történk:
21, 22, 23, 248, 249, 250, 251, 252, 253, 254, 255, 32, 33,...
aminek ugye helyesen valahogy így kellene hogy kinézzen:
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,...

Tizedeseket tekintve azok jól növekszenek..

Valamelyikőtök találkozott már ezzel vagy hasonló jelenséggel?
Mit ronthatok el?
(Másrészről, a DS18S20-asokkal jól tudok mérni, igaz másképpen is kell átszámolni a kapott adatokat. Atmega328p kérdezi le a ds18x20-akat. Szinte nulla kábelhossz, tesztpanelban.)

Van ötletetek mitől lehet ez?
Megoldás?

(Ugye nem kell át lookup-olnom?)

köszi,
medig
2013-03-06
22:24:25
Előzmény: zsezse #39179#39246
Szia!
Hát nekem SY-HS-220 (www.hestore.hu/prod_10026606.html) érzékelőm van, ami azt hiszem 0,3V és 3,3V között ad ki feszültséget. Ezt ADC méri, és az AVR átszámolja %-ba. De nem túl pontos, mivel pl. nem lehet tudni a hőfokfüggőségét. Ilyet ne vegyél.
Én is inkább a DHT11-et javaslom. (Ez is jónak tűnik, csak kicsit drágább: www.hestore.hu/prod_10025443.html)
2013-03-06
21:42:26
Előzmény: Jesu #39227#39245
Jólvanna tévedtem. Négy sor! :-)
Szóval a dht11-et egy lábra kell kötni, mint az 1W-s eszközöket. (de nem kompatibilisek!)
A példában legyen mondjuk a 2-es digitális ki-bemenet.

#include <dht11.h>
dht11 DHT11;
...
DHT11.read(2);
float paratartalom=(float)DHT11.humidity;

A "paratartalom" változóban ott fog vigyorogni a mért érték.
Ennyi.

Zsezse,
Adatlap szerint 20m-ig működik.

T.
2013-03-06
21:09:40
Előzmény: szocsmarci #39207#39241
az a gaz, nekem 1wirehooz kellene:( az arduinom meg valahol pekingben lehet:) es nem is ott lesz elhelyezve, ahol merni kellene
2013-03-06
18:55:22
Előzmény: takyka #39223#39227
"3 sor+egy láb és páratarzalom beolvasva"

Ezt kifejtenéd a gyengébbek kedvéért? (magamra gondolva!)
:)
2013-03-06
18:27:25
Előzmény: szocsmarci #39207#39223
Én is ilyet használok, 3 sor+egy láb és páratarzalom beolvasva.

T.
2013-02-22
15:51:51
#38715
Sziasztok!

Én is lakásvezérlést csinálgatok. Most úgy áll, hogy 3 DS18S20 hőmérő meg egy páratartalom mérő rá van kötve egy AVR mikrokontrollerre, ami UART-on össze van kötve egy openwrt-s routerrel. A router menti az adatokat egy adatbázisba, amiket webes felületen grafikonon megjelenít (hasonlóan macko003 megoldásához).

Még egy böngészőből irányítható (motoros) webkamera készítését tervezem.

Ha valakit érdekel, lehet, hogy tudok segíteni.
Üdv: Boti7
2013-02-01
14:40:31
#38201
végre, elkészült az 1.0-s szolár vezérlőm.

A hardver:
-RPi
-1-wire hőmérők a tartály alján és tetején, plusz a szolárkör lejövőjén (DS18B20, nem csak a szolárkört mérik hanem a fűtést is loggolják)
-PT1000 a kollektorban, ezt egy MCP3008-al olvasom ki
-8-as relétábla

Funkciók:
-alap deltaT kapcsolás
-kollektor megforrás védelem (DB, simán inkább lekapcsol vagy el sem indul)
-Tartály túlmelegedés védelem (HMV cirkulációt fixre veszi szükség esetén)
-Manuális (nyomógombra indított) HMV cirkuláció
-Grafikonrajzolás

Jelenleg ugyanazt tudja mint a kínai szolárvezérlőm, annyi különbséggel hogy áramvesztéskor nem áll be alapállapotba, és loggol.

Tervezett funkciók:
-dinamikus deltaT (hogy optimális legyen mindig, és ne is hűljön ki a víz mire leér (esetleg éppenhogy hűljön ki))
-Időzített cirkuláció meglevő feltételek (hőmérsékletek) esetén
-Vezérlőpanel (egyelőre csak log file van)
-Tartály túlmelegedés védelem éjszakai kollektorhűtéssel
-Tartály túlmelegedés védelem szivattyú megfelelő vezérlésével (ezt ki kell kisérletezni erősen)
-Vészlekapcsolás (1-wire végleges elvesztésekor, vagy ha bármi miatt kritikus felé megy a hőmérséklet, lelövi magát a RPi. Ez védene programhibák ellen is.
-beforrasztani az elektronikát egy NYÁK-ba (jelenleg breadboardon van), és biztonságos dobozt csinálni neki.



A programját python-ban írtam. Sok szenvedés után átírtam multi-threadingbe, egy szálon nagyon macerás (különösen nagyon átláthatatlan!) volt, s a fejlesztést még nehezebbé tette volna. Több szálon nagyon egyszerű, átlátható és megbízható.

Az egész program 15% CPU-t fogyaszt, szerintem túl sok a szál (kb 8 párhuzamos szál fut), esetleg ezen is lehetne optimalizálni (de minek...)
2013-01-25
16:40:13
Előzmény: zsezse #37982#37984
Nem régiben ismerkedtem kicsit AVR-el, mondván hogy jó lenne összerakni egy jól bővíthető kis vezérlőt...
Ahol is pont a korlátozott számú port miatt port bővítésre kényszerűltem.
Hálistennek vannak tök profi és félprofi áramkörök erre a problémára.

I2C IO Expander 16 bit, 2 vezérlő bit (3 biten címezhető, avagy egy I2C sinen 8db)
www.hestore.hu/files/mcp23017.pdf

Kaszkádosítva 8xn kimenet számig bővíthető, soros bevitel, 3 vezérlő bit
www.hestore.hu/files/74HC_HCT595_4.pdf

Akit esetleg érdekel...
2013-01-25
16:29:03
Előzmény: zsezse #37982#37983
Portonként 8+4 et tudsz, ha kihasználod a control biteket is. Amúgymeg multiplex megoldás van. Könnyedén lehet egy portról 32 kimenetet megoldani. (8*4) A maximum 4db LPT / PC, tehát 8*(3*12+4)=320 és még lehet tovább bonyolítani a multiplex megoldását.
2013-01-25
15:02:18
Előzmény: pinyo #37980#37982
a parhuzamos porton max 8 bitet tudsz vezerelgetni direktben.

multiplexalod vagy cimzed valahogy az eszkozokhoz tartozo releket?

az en regi rendszerem is LPTn futott, en multiplexaltam 4x6 csatornat.
2013-01-25
12:39:05
Előzmény: zsezse #37973#37980
Mivel nagyobb vezérlésekről van szó, így mindig alap egy PC. Linux alapon, párhuzamos portról reléket vezérelek. Egyszerű, stabil kapcsolás.

2013-01-24
23:24:27
Előzmény: pinyo #37968#37973
pinyo
a 230Vos eszkozok vezerleset mivel valositod meg?
Biosolar Forum  =>  Mérésadatgyűjtés  =>  Single Board Computer - 1Wirelapozz: « előző   1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34   következő »
Copyright © 2005-2017 Bernáth Róbert
Minden jog fenntartva