Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Nem is csak a sebességveszteség volt a gond. Az igazi gond az volt, hogy lebegőpontos számokkal végzett több ezer műveletet és ezek összege volt a végeredmény. Minden lebegőpontos művelet eredendően veszteséges (hibája van). Gyakorlatilag összegzett rengeteg hibát is a végeredménnyel. Ráadásul, olyan módon tette ezt, hogy sok pici értéket adott hozzá egy nagyhoz. Extrém esetben már nem is változik a nagy érték ha elég kicsit adsz hozzá, akkora a hiba! Tehát tisztán a kódja felépítésével 20%-40% hibája lehetett a végeredménynél.
Idézet: Nem kell hozzá trafó. A lentebb belinkelt rajzon az induktivitás pont arra való (minden kikapcsoláskor rúg egy nagyot - csak bírja a tranzisztor...). „De ha csak alap 5 voltról járatod akkor érdemes lenne tekerni hozzá egy trafót ami megemeli a kimeneti feszültséget 30V körülre.”
Sziasztok!
Ismeretes, hogy az eeprom írási száma véges. Viszont az is írásnak számít, ha az értéke nem változott? Vagyis ha pl. 100 az értéke és ugyanazt a 100-as értéket kéne írnia, akkor az is beleszámít a 100.000 írásba? Köszi.
Természetesen. A te feladatod, hogy ellenőrizd tényleg írni kell-e az adott cellát. Tehát olvasd be a cella tartalmát írás előtt, majd írd ha szükséges (különböző).
A 100000 egyébként a "garantált" írásmennyiség. A tesztek szerint ennél jóval többet is kibír (többszörösét is).
Ebben a "környezetben" szeretném megoldani valahogyan. Gondolom egy feltételt kell írni, de a tudásom itt megakad...
Hát igen. Ez a kód tökéletes EEPROM gyilkos. Egyrészt elég lenne csak akkor írni a területet (egyszer), amikor jóváhagyod a hőmérséklet beállítást. Másrészt a gombok kezelését érdemes lenne fel vagy lefutó élkor kezelni (ha már jobban megy, lehet időnkénti impulzussal [ami akár gyorsulhat is ahogy nyomva tartod] is). A fűtés be/ki kapcsolásánál én betennék egy fél fokos hiszterézist is. A kapcsolási hőmérsékletnél teljesen megkergülhet majd a reléd (vagy amit kapcsolgatsz) különben (ahogy billeg ott a hőmérséklet a két érték között).
Csináltam egy olyan módosítást, hogy akkor írja csak az eeprom-ot, ha valamelyik gomb le van nyomva.
Hiszterézisre még keresnem kell megoldást.
Sziasztok.
Lenne egy kérdésem. Mit jelent a " expected unqualified-id before numeric constant" hiba fordítás közben. Ha valaki tudna segíteni megköszönném.
Nagyon köszönöm a hozzászólásokat !!!
A csatolt adatlapon nem szerepel, de a leírásban amit a hangszóróhoz kaptam, meg webshopokban, ahol lehet ilyen hangszórót venni, ott 2,5kHz - 60kHz tartomány szerepel, úgy hogy remélem jó lesz. http://www.conrad.hu/conrad.php?name=Products&pid=710991 Kicsit kínai amit írtál Kera_Will......nem tudom mi az az ellenfázisú vezérlés, meg H-híd. A lényeg az, hogy az a rajz amit mellékeltem az jó? Mondjuk te inverterekről meg tranyókról irtál, az meg azon a rajzon nincs. a közel dupla feszültség, ami majdnem 10V, az elég lehet megszólaltatni akár a pl. 40kHz-s frekvenciát? Vagy ez úgy van, hogy minél magasabb hangot akarok, annál több feszültség kell hozzá? A hozzászólás módosítva: Máj 2, 2015
Felfutó él még mindig hiányzik. Tárold el a loop végén a gombok állapotát és csak akkor futtasd az if-en belüli kódot, ha a gomb lenyomott állapotban van és az előző ciklusban még nem volt (pici várakozást is illik beiktatni a ciklusba ha lehetséges, hogy a prellezést kiküszöböld).
A hiszterézis szintén egyszerű. Az 1-be billentés feltétele, ha a hőmérséklet kisebb, mint a beállított mínusz a hiszterézis értéke (pl. fél fok). A 0-ba billentésé pedig, ha a hőmérséklet nagyobb mint a beállított plusz a hiszterézis értéke.
Hiszterézisre ezt találtam ki:
Viszont csinálok egy "simítást", ami 20 mérés átlagát veszi, a soron következő értéket hozzáadja a 20 méréshez és a utolsót elveszi. A felfutó él dolgot nem igazán értem
Nem úgy szokás simítani. Egyszerű ageing algoritmus a legjobb erre a célra (hívják még elsőrendű szűrőnek is).
y(t) = a * x + (1-a) * y(t-1) ahol y(t): az új szűrt érték y(t-1): az előző szűrt érték a: a szűrő konstansa 0 és 1 közötti érték (minél nagyobb annál gyorsabban reagál a szűrő és annál kisebb a simítás) x: pedig a mért érték (amit szűrni/simítani szeretnél) A hiszterézised nem jó. Ez akkor fogja csak bekapcsolni a led-et ha a hőmérséklet 0,3 fokra megközelítette a kívánt hőmérsékletet.
Van megadva a setupban. Így működik nálam.
Oké, de ez hogy jön ide? Ezzel csak a pin típusát definiálod (kimenet, bemenet).
Bővebben: Link A felfutó és lefutó él látszik itt. Igaz, ez egy Siemens PLC-s cikk, de a lényeg látszik.
Azt gondoltam ezért működik, mert te azt írtad, hogy nem működik a bekapcsolás, csak ha 0.3 fokra megközelíti a beállítottat.
Nem tudom miért működhet. Ha jóval messzebb van a beállított érték a mérttől, akkor is bekapcsol...
Ja benéztem (késő van már). Egyszerűen csak rosszak a feltételek ebben a formában (nincs hiszterézis).
Idézet: „majdnem 10V, az elég lehet megszólaltatni akár a pl. 40kHz-s” A feszültség amplitudójának semmi köze a frekvenciához ... mindkettő egymástól független jellemzője a váltakozó jeleknek. Amit írtam azoknak nézzél utána működésüknek. Némi analóg és digitális alap elektronikai ismereteket el kell sajátítani , anélkül eléggé nehéz mozogni a uC világban. Persze azzal az 1 tekercses elvi rajzzal is működhet a dolog. Amiben a kritikus eleme az a nagy CB zárófeszültségű tranzisztor aminek el kell viselni a negatív feszültség visszarúgásokat amit a tekercs állít elő. Így a trafóval talán kézben tarthatóbbak a jelszintek.Persze kicsit több kézi munka kell az elkészítéséhez. Ellen fázisú vagy ellen ütemű : Mindig ellenkező irányú jelek kerülnek a terhelésre.
Tessek, egy mukodo hysteresis megoldas
Nekem bevalt. A "tempHys" mindig el van maradva a mert ertektol, vagy nem mozdul amig a mert ertek meg nem haladja vagy nem csokken a tempHys +/- hyst erteke fole/ala. A hozzászólás módosítva: Máj 3, 2015
Bocsi "atus1981"-nek kellett azt hiszem, nem neked.
Köszi, délután leszek arduino közelbe, ki fogom próbálni, de szerintem a szenzor is elég vacak, mert nagyságrendi különbségek vannak a valós és a mért között. Nem tudtok valami jobb ampermérő szenzort?
sajnos most nem tudom kipróbálni, de így szerintem működik:
az int settemp -et átírod float settemp -re és settemp ++ ..... settemp=settemp+0.5
Itt ebbe a 10-edik sor utan "else { }" ez irando be, sajni elmaradt.
A hozzászólás módosítva: Máj 3, 2015
Jónak tűnik a megoldás, hamarosan kipróbálom.
Köszi!
Hát nem tudom, lehet, hogy én csinálok valamit rosszul, de azzal a kóddal, amit linkeltél, azzal próbáltam, csak a másik hozzászólás szerint azt a számot átírtam, de így is a valóstól nagyon eltérő érték jön ki.
En ugy vettem eszre, vagyis ugy jartam hogy a mert ertek csak akkor lett stabil ha beiktattam egy-egy kis varakozasi idot az olvasasok koze.
Az ADC-nek valóban kell kis idő mire észhez tér egy mérés után.
|
Bejelentkezés
Hirdetés |