Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Sziasztok!
Segítséget szeretnék kérni az alábbi Arduino-s projekttel kapcsolatban: Van egy 12V-os DC táplálású eszközöm (adatgyűjtő), mely 4 db open drain kimenettel rendelkezik. Ezt szeretném illeszteni egy Arduino-s panelhez. Úgy kellene kiviteleznem, hogy ne menjen tönkre sem az eszköz, sem pedig az Arduino. Az Arduino 5V-os táplálású. Segítenétek ebben? A szintillesztést hogyan oldanátok meg? Előre is köszönöm szépen a segítséget! A hozzászólás módosítva: Okt 27, 2017
Én így csinálnám, lásd melléklet. Igaz, nem írtad, hogy a kimenet mennyivel terhelhető és milyen gyakori aa kimeneten a kapcsolás.
A hozzászólás módosítva: Okt 27, 2017
Szia!
Köszönöm! Így már világosabb! Az adatgyűjtő kimenete sűrűn lesz kapcsolva, van, hogy másodpercenként kétszer, háromszor is. Az adatlap szerint a kimenet max 150 mA és max 28V DC-vel terhelhető. A tranzisztor milyen legyen?
A tranzisztor kék keretben a nyitott kollektoros kimenetet szimbolizálja, azt a leírásod szerint tartalmazza az adatgyűjtő. Ebben a formában kevesebb, mint 15 mA-rel lesz terhelve egy-egy kimenet. A másodpercenként három-négy kapcsolás bőven belefér az optocsatoló (szinte mindegy, hogy milyen) karakterisztikájába.
Akkor, ha jól értem a tranzisztor elhagyható, és az optocsatoló 2-es lábát ellenállás nélkül a földre kell kapcsolnom? Vagy a 2-es láb az adatgyűjtő kimenetére csatlakozik?
Bocsi az alapvető kérdésért. Inkább szoftveres vagyok, mint hardveres! A hozzászólás módosítva: Okt 27, 2017
Az optocsatoló kettes lába az adatgyűjtő kimenetére megy egy ellenálláson keresztül.
Nem érted?
A tranzisztor már BENNE VAN TE GYÁRI dobozodba ... TE írtad OPEN COLEKTOR. A szemléletesség miatt lett oda rajzolva NEKED . A dobozod kimenetére kell az ellenállás és az opto majd tápra egymás után sorba kötöd az opto másik végét ahogy a rajzon van. A hozzászólás módosítva: Okt 27, 2017
Kera_Will: Rendben, megértettem!
Köszönöm mindenkinek a segítséget!
Nem bonyolítottátok ti ezt egy kicsit túl? Ha azok a kimenetek tényleg open-drain-esek, akkor pontosan nulla darab alkatrészre van szükség az illesztéshez. Az arduino bemenetein be kell kapcsolni a felhúzó ellenállásokat, majd össze kell kötni az eszköz kimenetével, közösíteni kell a földet és kész.
A kábel volt a baja, a GPS-ével tökéletes. Végülis csak 5 munkaórát és egy ezrest dobtam ki a rossz kábelre... Ezeken mini USB van,a telefonokon pedig micro, ezért nem tudtam kipróbálni cserekábellel eddig, de így tökéletes, köszi a segítséget!
Sziasztok,
Kezdő vagyok arduino uno programozásában, ezért egy kérdéssel fordulnék hozzátok. Adott egy LED vu méter kód, amit egy weboldalon találtam 5 db LED-el. Összeraktam, működik, majd kibővítettem a programot 14 db LED-re. Eddig nem lenne gond, viszont a kezdetektől van egy furcsa működési mechanizmusa, amit szeretnék megoldani benne. A LED-ek vibrálnak működése során, ezt szeretném csillapítani egy pici késleltetéssel. Arról van szó, hogy a LED-ekre szeretnék tenni egy kis delayt, tehát az a LED ami egyszer bevillan kb. 20 ms-ig maradjon is bekapcsolva. Nekem most úgy tűnik, hogy ezt nem csinálja, a LED-ek vibrálva gyulladnak fel. Tudnátok ebben segíteni? A kód:
A hozzászólás módosítva: Nov 1, 2017
Moderátor által szerkesztve
Szia,
A kódokat illik code tag-be tenni. A 20 msec-es kérdésedre: van a loop végén egy delay, a DELAY konstans értéke pedig 5 ms. Próbáltad ezt megemelni 20-ra? A hozzászólás módosítva: Okt 31, 2017
Igen próbáltam. Ha felviszem 20 ms-ra, attól csak az egész reakcióideje, működése lesz lassabb.
Valószínűleg az a baja, hogy éppen eléri az átlag a 30-60-90-stb értékeket, utána rögtön kap egy kisebbet, és már csak 29 lesz. Elvileg a delay megemelésének meg kellene oldania, ha közben csökkentet a mintaszámot, ugyanolyan gyors lesz a reakcióideje (pl. delay 25, sample 2), vagy megemeled többszörösére a minták számát, és csökkented a delayt, (pl. delay 2, sample 25) így többszörösére nő a pontosság, ha fix jelről van szó, és pontosabb, mint az előző módszer, viszont zenénél nem biztos, hogy segít a problémán. Ugyanezt elérheted egy kisebb kondenzátorral, ami simítja a jelet. Az igazi szerintem úgy lenne, hogy gyors maradna a mérés (delay 2, sample 25), és a LED control részt csak 20ms-onként futtatnád, ehhez a BlinkWithoutDelay alappélda az IDE-ben tökéletes támpont.
A hozzászólás módosítva: Okt 31, 2017
Kicsúsztam a módosítási időből, de valahogy így csinálnám, nem teszteltem:
Sziasztok. Olvasgatok a fórumon de csak nem lelem a megoldást. Arduino mega 2560-hoz szeretnék 16LF01UA3 típusú VFD kijelzőt illeszteni de nem akar összejönni. Van neki egy 12 tűs csatlakozója, amiből a 3-as tű nincs bekötve. Gondolom ennek a vezérlőjéhez még nem készült semmilyen arduino-s mintaprogram így gondoltam magam próbálnék meg írni hozzá egyet.
Ezt már nézted:
Samsung_16LF01_VFD
Ezer hálám. Így fel tudom használni végre a kijelzőket amik itthon vannak.
Szia!
Köszi a kódot, egy hibáért szólt a fordító, azt a sort pótoltam. (const int NUMLED = 14; //number of outputs) Működik rendesen, bár még nem teljesen úgy ahogy szeretném. Most a paramétereket próbálgatom. Kipróbálgatom amit írtál.
Próbálgatom de csak nem az igazi. Az lenne jó, ha a LED ami bevillan kb. 20 ms-ig világítva is maradna. Csak fogalmam sincs ezt hogyan lehetne beleapplikálni a programba.
16f873-as pic-el parsicban korábban tök szuper kivezérlésjelzőt csináltam peakhold kijelzéssel és 2x10 LED-el. Ott is ez a 20 ms adta azt a látványt ami tetszett. Ha pirosba ért ott 500 ms-ig világított. Ezt a látványt szeretném itt is elérni.
A ciklusidőd kb. 5 msec, gondolom nagyrészt a delay határozza meg.
Ha 20 msec-en belül nem akarsz kioltást, akkor csinálj egy 4 elemű tömböt, hozzá egy ciklikusan körbemenő index változót. Abban tárold az állapotot, és ha az nagyobb mint az aktuális kivezérlési szint, akkor arra állítod be, majd a kivezérlési szintet eltárolod. Bár prózában nem biztos hogy érthető, pszeudokód:
A hozzászólás módosítva: Nov 1, 2017
Elsőnek tisztázzuk, hogy a C-ben:
A változók nevét kisbetűkkel írjuk jó: int index = 0; (rossz: int INDEX = 0 A constansok nevét csupa nagybetűvel jó: const int REFPIN = A0; (rossz: const int refPIN = A0 Ebből látjuk, hogy a csupa nagybetűs értékeket a nem változtathatjuk meg a program futása közben! A késleltetet műveletek megvalósítása:
És lehetőleg ne használj delajt a programban! A hozzászólás módosítva: Nov 1, 2017
Egyrészt: nincs semmilyen kötelező kódolási konvenció. Otthon, magának mindenki úgy csinálja, ahogy neki jó, munkahelyen pedig jellemzően van egy központi előírás amit követni kell. Ez amúgy cégenként jellemzően eltér, néha adott cégen belül csapatonként is. (Pl. a Microsoft-nál használták az ún. "Hungarian Notation"-t, de ha jól tudom ott se minden team, és nem is egyformán.)
És a delay-jel _általában_ semmi baj nincs, noha van amikor tényleg nem javasolt a használata.
A delay-el sok probléma van. Az elején hasznos, hisz hamar sikerélményeket érhet el valaki, később viszont lustává tesz és rossz hatásfokú programokat lehet csak vele írni. Ez persze igaz sok egyéb Arduino-s funkcióra is. Például a fent vázolt programnál 5ms-es késleltetésnél kevesebb mint 200Hz-en mintavételez, míg 20ms-nél már csak 50Hz alatt teszi ezt, miközben a hardver képességeit kihasználva több tíz kHz-en is lehetne, az analóg mintavételezést a szűréssel együtt leválasztva a főprogramról (autotrigger + megszakítás).
Igen otthon magának azt csinál, a mit tud!
Viszont ha már közzé teszi a művét! Akkor már csak udvariasságból is illik úgy csinálni, hogy olvasható legyen. Mert akkor elképzelhető, hogy hamarabb kap segítséget! Ha kihagyja a delajt? Akkor minden loop ciklusban tud analóg mintavételezni. Ez által gyorsabban tud reagálni a változásra. A fentebbi késleletetés logikáját, 1 delajal teljesen tönkre teszi! Máskor inkább gondolkozz, előbb mit írsz le! És illene inkább meg köszönni a segítő szándékú tanácsokat! Vagy egyáltalán ne kérjen tanácsot az olyan ember, aki nem bírja a kritikát!
A probléma főleg ott van, hogy ajánlásokat megfellebezhetetlen szabályként írtál le.
Szerintem meg, ha azon kel bosszankodnom, hogy értelmezhetetlen a kód!
És elmegy a kedvem időt szánni a segítségre! ….
A kollega az elején tart, azt vegyük figyelembe.
Másrészt sokszor nincs is szükség arra, hogy a hw képességeit kihasználjuk, vagy ha meg is tennénk akkor se lenne jobb az eredmény, csak a kód lenne bonyolultabb. Lásd az alap blink program,de a mostani kivezérlésjelzőnél is pont elég az akárhány ms-onkénti mintavételezés és LED beállítás, aztán kis delay.
No offense, de ami olvashatatlan, az a "delaj" (sic!). És a kódja olvasható, még ha _neked_ nem is tetszik. (Amúgy nekem se, de attól még tudom olvasni.)
Az pedig nagyon remek, hogy delay nélkül egységnyi idő alatt több mintavételezést is csinálhatna (mert így is "minden loop ciklusban tud analóg mintavételezni", és csinálja is), csak épp erre semmi szüksége nincs. Sőt, épp az a baja, hogy a kijelzés túl gyors. Az ilyen "egy input, egy output, nem kritikus" jellegű feladatokhoz pont jó a delay. Ha pl. valami kritikusabb szabályozást csinálna, akkor én is azt mondanám, hogy hagyja a delay-t, inkább mérjen minél gyakrabban, és ha be kell avatkozni akkor tegye. A kijelzést frissítése pedig mehet millis használatával mondjuk 100-500 msec-enként, és tényleg ne használjon delay-t. De ez egy kivezérlésjelző, semmilyen szabályozás nincs benne, ide pont tökéletes a delay, erre van kitalálva.
Sziasztok! Egy ILI9341-es vezérlővel ellátott 2,2" -s TFT kijelzőt tesztelek, arduino uno-val. Az lenne a kérdésem, hogy Adafruit GFX könyvtárat használja-e valaki, és ha igen lehet-e gyorsítani a képfrissítésen? El lehet azt érni sebességben, hogy ne látszódjon a képernyő írása? (pl: nem szeretném látni ahogy végigsöpör egy teljes fekete képernyő lentről felfele)
|
Bejelentkezés
Hirdetés |