Fórum témák
» Több friss téma |
Ha nem azt írod, hogy hőmérséklet szabályzást akarsz (még akkor is, ha a hűtés is az), akkor nem írom azt amit. Nekem a hőmérséklet szabályzás fűtést jelent, de ez munkahelyi ártalom...
Szóval egy egyszerű ventilátoros hűtésnek talán elég egy arányos szabályzás is(P). Ez meg nem más, mint egy lineáris függvény (y=P*hiba+korrekció), aminek a bemenő tagja a hiba, amit az SP(beállított hőfok) és a PV(mért hőfok) különbsége ad (előjelet helyesen kezelve). Az erősítéssel (P) be tudod állítani, hogy mekkora hibára adjon 100%-ot. Ami alatta van az arányosan kisebb. És valóban lehet egy alsó határt szabni, ami alatt leállítja a ventit és a hiszterézis is hasznos, hogy ne kapkodjon összevissza a venti motorja a határon billegve. A programod, talán pont ezt csinálja, ha minden igaz...
Lehet én kavarodtam bele a sok feltételbe, de szerintem helyettesíts de néhány értéket és úgy ellenőrizd végig (pl. diff=25 vagy 250). Nem tudom a Pwm2_Set.....-ben van-e maximum vizsgálat diff*SLOPE-ra, bár nem tudjuk a SLOPE milyen érték lehet. Alapból pl. az látszik. hogy -20-nál nagyobb különbségnél lekapcsolod a ventit (ami nem tudom ildomos-e mondjuk 80 fokos cél és 60 fokos borda hőmérsékletnél). A különbséggel inkább a változtatás mértékét kellene szabályozni, tehát az eddigi pwm állást is figyelembe kell venni (ha magasabb az elvártnál növelem a kitöltést, ha alacsonyabb csökkentem).
Szia!
Ez a sor lenne a maximum vizsgálat:
A SLOPE értéke jelenleg 1. A -20-nál nagyobb különbség nem fokot jelent, hanem az ADC 12bites értéke. Esetemben ez a 20 megközelítőleg 0.5°C. Ez lenne a hiszterézis.
Hiszterezis nincs folyamatos szabalyzasnal. Hiszterezis akkor van, ha ki-/bekapcsolgat valami, pl. egy mechanikus szobatermosztat. 20 fokon bekapcsol, 21-en ki. 1 fok a hiszterezis. Inkabb szabalyzasi tartomanynak neveznem a 20 LSB-t.
Egy adott hőmérséklet alatt esetemben is kikapcsol a venti. Ha jól gondolom, ide kellene hiszterézis, mivel ha pont határon van, akkor ki-be kapcsolgat a venti. A bekapcsolási határérték fölött viszont már arányosan szabályoz, ez a rész rendben van, szimulációban működik is.
(Lehetséges, hogy kicsit érthetetlenül írom le, amit szeretnék)
A hiszterezis lenyege, hogy a billenesi kuszob valtozik a komparator kimenetetol fuggoen. Ez igazabol egy pozitiv visszacsatolas az analog technikaban. Sw-bol egy allapotvaltozoval tudod megcsinalni. Ez a kod eloszor elengedi temp-et 200-ig, ott kapcsol at "hutes"-be. 190 alatt lekapcsolja a hutest. Ha hutes=0, akkor nem megy a venti. Ha hutes=1, akkor 190-hez 0 pwm ertek tartozk, es linearisan no egeszen 255-ig. A STEP adja meg, hogy mekkora a teljes szabalyzasi tartomany. Ha STEP 10, akkor 216-nal megy a venti 100%-on.
Köszönöm, pontosan erre van szükségem. Ez nagy segítség most.
![]() Közben már nagyon közel jártam a megoldáshoz, viszont az én kódom kb. kétszer ilyen hosszú. ![]() Üdv, Ati ![]()
Nincs mit. De van benne egy hiba. A 11. sorbol a pwm = 0; sort tedd at az elso if ele.
vagy inkabb igy:
A hozzászólás módosítva: Szept 29, 2015
Uraim, van egy ilyen bit léptetésem:
Azt szeretném, hogy a léptetést követően balról ne nullák lépjenek be hanem 1-esek. Tehát 10000000 ha léptetem jobbra akkor nem így 01000000 hanem így töltődjön fel: 11000000, 111000000, 11110000...stb Előre is köszi. A hozzászólás módosítva: Okt 6, 2015
Igen, sajnos fontos, ezért vagyok bajba.
Ha nem lehet egyszerűen akkor nyilván fel kell vennem külön egy táblába az eseteket és hozzáadni, de jobb lenne egy igen egyszerű megoldás.
Ennél kellene egyszerűbb, ha van. A hozzászólás módosítva: Okt 6, 2015
helyett:
Avag C18 -ban van Rlcf(var, dest, access) makro.
A hozzászólás módosítva: Okt 6, 2015
Idézet: „0x80 >> x” Változó számú bittel való léptetést sugall..
Köszi, de ez bonyolultabb mint amit megírtam. Nem akarom még egy ciklust így is van bőven..
Ez egy ST7920-as GLCD pixelenkénti vonalhúzása lesz majd egyszer, ha végre ki tudom kényszeríteni belőle amit akarok. Az a sok feltétel az elején és a sok változó, majd a pozicionálás miatt kell, egyelőre még nem működik, csak mutatom mibe kellett a léptetés. Elég ocsmány egy kijelző.. A hozzászólás módosítva: Okt 6, 2015
No ez akár lehet jó is.. Köszi, kipróbálom..
Ennek az eredmenye int lesz, es az osszes felso bit is 1-ben lesz. Ha char-kent vagy unsigned char-kent hasznalod fel az eredmenyt, akkor mindegy, de ha zavar, akkor le tudod vagni a tetejerol a felesleges egyeseket:
A dolog lenyege, hogy a signed tipusoknal a jobbra shifteles az elojel bitet masolja. A signed char tipusnal a 7-es bit (0x80) az elojel bit. A hozzászólás módosítva: Okt 7, 2015
Köszönöm a fentebbi segítséget.
Most egy elvileg egyszerű esetben kérném a segítségeteket. Nem jövök rá, hogy egy több dimenziós tömböt, hogy hozhatok létre a következő esetre:
A lényege az lenne, hogy "A" tömb tartama alá tartozna a mögötte lévő 5 byte-nyi adat. Vagy ezt így nem lehet? ui: plusz sorokkal meg tudom oldani, de én erre az egyszerű megoldásra gondolnék. A hozzászólás módosítva: Okt 17, 2015
Így kellene:
ekkor xx[0][3]=4; és xx[1][4]=8; A tömbök 0. elemmel kezdődnek. üdv.:Foxi A hozzászólás módosítva: Okt 17, 2015
Köszi, ezt tudom, de ez még nem egyértelmű azzal amit keresek.
A lényege az lenne, hogy "A" tömb tartama alá tartozna a mögötte lévő 5 byte-nyi adat. Ez önmagában így nekem nem jó. Valójában amit keresek az azt hiszem az Asszociatív tömb lesz. Nem tudom hogy C18-ban lehet e ezt alkalmazni. A hozzászólás módosítva: Okt 17, 2015
Amit ki tudsz használni: a betűknek van egy ASCII értéke. Tehát ha azt írod, 15+'A', akkor a 15-höz hozzáadja az A betű ASCII értékét, ami egy decimális szám. Függvényhíváskor ezt tudod használni.
Pl. write_char('D'); a függvényben pedig kivonod mindig az 'A' ASCII értékét, így mindig 0-tól fog sorszámozódni minden betű. A tömbödben tárolhatod egymás után a betűk képeit, ami ha 5byte, akkor amennyi betű, annyiszor 5byte-ot használsz fel.
Szia!
Esetleg készítesz egy felsorolt típust enum a,b,c,e,f,g,h,j,i,k, ezekután használhatod a hozzátartozó tömb elemeit. pl.: fonts [a][0]
Gondolom karakter készletet akarsz csinálni GLCD-hez, szerintem ez a feladat nagyon hasonló a 8x8 led matrix karakter készletéhet. Ne úgy képzeld el, hogy minden tömb elé be írod, hogy melyik karakterről van szó, hanem a tömböt ascii karakter sorban kéne elkészíteni, és így mikor a tömböt olvasod a karakter értéke - 0x30 az adott karakter tömbjének kezdőcíme és ezt egy for ciklusba rakva olvasod végig, ha gondold nekem erre szövegmozgatással van programom, de az MAX7219-hez készült.
Végül úgy oldottam meg, hogy létrehoztam az azonosítás miatt egy másik tömböt:
És kikeresem melyik betű melyik tömbhöz tartozik és elmentem a számát.
Majd ezzel a számmal már is megvan a karakter.
A balra 2bit eltolassál ne foglalkozzatok, az szükséges a mostani karakterkódom miatt. (00111111) Jelen pillanatban a karakter kiírás működik szépen de nagyon béna az elosztása. Itt van egy 128x64-es GLCD kijelző és normál alakban 4x16 karakter kiírására alkalmas. Vicces. Vannak olyan programok amivel képes a 8x16 karakter kiírására. Én most egy olyant írtam amivel képes a 10x16 karakter kiírására is. Ezek már majdnem jók lennének, ha nem lenne óriási űr két karakter közt. Ezt akarom csökkenteni 1pixel-re. Amin most dolgozom az a számításaim szerint 10x21 karaktert lesz képes kiírni egy sorba. Ehhez viszont kellene egy 128bit-es változóra amit valszeg struktúrába fogok létrehozni és a teljes szélességben fogom elhelyezni a karakterek egymásutáni pixeleit. 24bit-el már megoldottam, hogy az első 4karakter szépen rendezetten 1pixel kihagyással egymás után kezdődjön, de a nagyobb része még hátra van... ST7920 kijelzőről van szó.. Baromi ratyi..
Uraim, van valakinek DS1820-hoz való C18-as kódja megírva?
Nem találnám fel még egyszer a spanyol viaszt. Köszi előre is.
Kéerdezd meg Gooooogle -t.
A hozzászólás módosítva: Okt 18, 2015
Minden karakternek van saját kódja, miért kell külön keresgélni, mikor csak ki kell vonni a kódból egy egész számot és megvan a tömb címe...
Kivétel lehet ez alól az ékezetes karakterek, de azokat is könnyű konvertálni a tömb végére... A változó szélességű karakterekhez pedig le lehet tárolni a karakter szélességét a karakter bitkép bájtjai elé plusz két bájtra, hogy a kiíró rutin tudja, mennyi oszlopot kell kirakni, hányadiktól.
Minden karaktert én írok meg külön és teszek be egy tömbbe.
Nem minden karakter oda esik a tömbbe ahol az alapértelmezett karakterek lennének. De nyilván ha az angol ABC-t követve kerül be a tömbbe az elkészített karakter bitképe, akkor egy kivonásos, vagy hozzáadásos módszerrel meg lehet határozni a keresett karaktert. Ez még rugalmas szóval köszönöm a tanácsot, átgondolom és módosítani fogom, úgy, hogy minél rugalmasabb és gyorsabb legyen a kód. Hp41C: köszi, gondoltam ez emberibb, ha itt kérdezem meg, hisz szeretünk segíteni egymásnak.. ![]() Ettől független a goggle-t is kérdezgetem, hátha nem kell újra feltalálnom valamit ![]()
Az ascii kódrendszerben való elhelyezéshez egy kis segítség ez MAX7219-re van de szerintem nagyon jó alapot nyújthat mint írtam, Bővebben: Link itt a harmadik nagyobb programban látsz egy karakterkészletet ez sor multiplexeléses megoldás, Bővebben: Link ez oszlop multiplexes, mindkettő arduino-ra készült de révén, hogy C-ről van szó könnyen átvehető/átdolgozható.
Sziasztok!
Nem tudom, hogy van-e sok értelem amit csinálok, de azért gondoltam megkérdezem hátha sikerül megcsinálni. Szóval arról lenne szó, hogy a printf függvény szeretném elkészíteni kicsit másképp ezt a függvény sikerült helyette csinálni:
a C++ refernce oldalról származik valamit sok microchipes és egyéb fórum bújása után jutottam ide, de ezzel az a baj, hogy a fordító ezt dobja a vprintf-re warning: (1404) unsupported: vprintf() is not supported by this compiler, de szimulációba mégis megnyit egy vprintf.c fájlt így nem értem, hogy mért mondja, hogy nem támogatott. A string kiírás még működik de ha a pirntf-hez hasonlóan egy formázott adatot szeretnék kiírni először a %-jel el tér vissza aztán a formázást jelölő karakterrel. Ezt meglehet valahogyan oldani? |
Bejelentkezés
Hirdetés |