Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Igen, ez kissé bonyolulttá teszi, de ha elfelejtjük a digitalread-eket és a portregiszterek állapotát bankonként tároljuk és vizsgáljuk, akkor gyors és rövid lehet a hozzávaló program.
Valahogy így?
A hozzászólás módosítva: Dec 26, 2021
Igen, valahogy így. Ezzel a kóddal csak 1 lábon fogsz megszakítást kapni és minden változáskor. Azt neked kell kilogikázni programban, hogy föl, vagy lefutó volt-e.
Igen, értem.
Nekem csak annyi kell, hogyha X bemeneten változás történik, akkor egy Y kimeneten vátozás legyen. Tehát durván így :
Persze ez így nagyon durva...
Én az ISR-en belül nem használnék digitalWrite-ot. (Mondjuk máshol sem...) Direktben írnám a port regisztert.
Felesleges tárolni az értéket, ésszerűbb "másolni". Ebben az a pláne, hogy így "idempotens" lesz a művelet, biztosan mindig jó kimenetet ad, nem tud eltévedni.
Példa, amiben az A port 3 indexű bitjét kell a B port 5 indexű bitjére másolni:
Egyébként feljebb lapozva láttam, hogy írtad, hogy bemenetként reléről van szó. Ennél várható hogy lesz oda-vissza urgáló tranziens, és ez az interruptos megoldás ezt elég gyorsan hűen követi, a kimeneten is lehet hogy lesz egy csomó felesleges oda-vissza átmenet. Ezért ésszerűbb lehet szoftveres "debouncing"-ot csinálni, és csak egy késleltetés után másolni a bemenetet. Eleve fura, hogy a bemenet relé, de mégis ilyen szintű gyors reakcióra van szükség, amit az interrupt ad. A hozzászólás módosítva: Dec 27, 2021
Köszi a tippet.
Idézet: „de mégis ilyen szintű gyors reakcióra van szükség” Nem a gyorsaságon van a hangsúly. A procinak van elég "sok", más feladata. A prellt megpróbálom hardveresen kiküszöbölni.
Interrupttal is ki lehet küszöbölni a prellt könnyen:
Konfigurálsz egy timert, hogy mondjuk 50 milliszekundumonként fusson le (nagyjából, nem kell pontosnak lennie). Ezt írod az interruptba:
Azért is jó ez a megoldás, mert a CPU terhelése állandó lesz, a másik elvben "éheztetheti" a többi taszkot, ha a bemenet sokáig prellezik. A hozzászólás módosítva: Dec 27, 2021
Ez jó megoldás, de rendesen végig kell gondoljam.
Tudom, hogy az analóg prell sokkal lassabb, de jelen esetben az idő nem releváns és a relék "csak" 5V 0,2- max. 0,4mA kapcsolnak.
A millis() függvénnyel mért prell idő semmiben sem befolyásolja a program futását, minden ugyanúgy zajlik, akárhányszor történik a prell.
Remélem jól értettem a kérdést.
És ez tud hosszú megnyomást is, de kivehető belőle.
Ja, én csak azért javasoltam timer interruptos megoldást, mert szitko arra utalt, hogy a fő szálon nem akar a gombokkal foglalkozni valami ismeretlen okból. Egyébként többnyire valóban felesleges a gombokat interruptban kezelni.
Sziasztok. A problémám a következő. Elkészítettem ezt a kapcsolást, programmal együtt.
A problémám az hogy (jelenleg egy optikai érzékelő van rajta) viszont a ledek hol mennek, hol nem de biztos hogy nem fordulatszám függvényében. A Ledsor WS2812B eddig működött mindennel ezzel a programmal furcsáskodik. 20 led van rajta és ugye fordulatszám függvényében kéne "emelje" a led oszlopot és változtatná annak színét még végül elérve a végfordulatot villogna.
Az az optikai szenzor biztosan jól van rákötve?
Igen, ez a kapható infravörös szenzor, ezzel most sikerült összehoznom, viszont amit majd szeretnék elérni az az lenne hogy autó gyújtásjeléről vegyem le a jelet hozzá, ezt az egyik gyertya vezetékre tekert néhány menet huzallal szeretném megoldani és ezzel az áramkörrel. Ennyi elegendő lehet a "jelátalakításhoz"?
Mod: Esetleg R2 helyett gondoltam egy 5V1-es zénerre is így nem tudnám ellőni a tranzisztor bemenetét. A hozzászólás módosítva: Dec 29, 2021
A jelformálás nem erősségem, gondolom majd hozzáértőbbek nyilatkoznak róla. Szerintem egy schmitt-trigger még kellhet utána. Ez a megoldás amúgy engem is érdekel, követni fogom az eseményeket
Azért kérdeztem az optikai szenzor bekötését, nem-e az van hogy nem hajtja meg rendesen a vezérlő bemenetét. Érdemes lenne szerintem valami jelgenerátorral kihajtani próbából a programot, hogy az biztosan azt csinálja-e amit kell. Most leginkább a jelszintekre gondolok. Nyilván nyomógombbal nem fogsz 7000rpm-et szimulálni, de egy állítható négyszöggenerátort összedobni nem tart sokból. Szerintem itt lesz a gubanc. Másik ötlet, hogy a tápod rendben van? Nagy mennyiségű led meg tudja rángatni rendesen ha nem elég combos, ami meg viszi magával a programot is. A hozzászólás módosítva: Dec 29, 2021
Most reggel meghajtottam egy 555-ösről, ott szépen ment 8hz-enként felfelé a szallag.
Most megépítem ezt a "jelformázót" utána gondolkoztam én is egy TTL ic-n (mondjuk 74LS04) úgy szebb lenne a kimeneti jelalakom.
Az utólag hozzáadott könyvtárat hogy lehet törölni? Nekem nincs telepitve az IDE csak portable fut. Examples mappába nincs benne csak az alap.
Éles próba megvolt, csak nem megfelelően működik. Nagy gázadásnál világít 3 ledem ( ami ugye 25hz elvileg az 3000-es fordulatszám) de nagyon nem annyinak hallani.....
Valószínűleg szerintem szenzor hiba lehet vagy nemtudom, most átírtam a programot 1Hz-től de nem működik és kicsit "fel...." a dolog mert a lakásban meg működik a szenzor....
A program jó az arduino jó, a jellevétellel vannak bajok. Csináltam több menetes tekercset, alakítottam az áramkörön, bent működik az autón nem. Várom a segítséget hátha valaki tud valami egyszerűbb megoldás kábelről való jel levételre.
Hát pedig ha a táp erős, a program úgy működik ahogy kell, akkor csak a bemenet marad..
Szűrő kondik vannak mindenütt ahol kell? A jármű elektronika picit másabb azért mint az asztali.
Milyen autó ez? Nem lehet hogy elektronikus a gyújtótrafó? Lehet hogy csak az indító jelet méred, nem magát a szikrát.
A táp stabil erős. Néztem nem-e ott a hiba de az rendben van kapott elég nagy puffert is, zavarszűréssel. Szenzorhiba lesz mert idebent működik a szenzor (most ugye arról beszélek ami a nagyfesz kábelről szedi a jelet) , odakint nem megy. Valószínűleg a szikra energia lesz a probléma hogy idebent én egy kínai sokkoló áramkörrel teszteltem ott igen nagy a szikraenergia, ellenben arról tű pontosan veszi a jelet. Autóról viszont csak nagyon magas fordulaton lép közben ott is csak picit jelez.
Mod.: Renault twingo, a trafóban nincs elektronika TCI gyújtású a kocsi és rotoros elosztású. Próbáltam a rotor után 1-es hengertől, meg próbáltam a trafó főkábelétől is de egyik se vált be. A hozzászólás módosítva: Dec 29, 2021
Akkor egy kis erősítőt tegyél az érzékelőbe, és mindjárt jó lesz!
Kb. 5 féle szenzorral és 11 elb**** óra után feladom. Nem lehet értelmes jelet levenni a gyújtógyertya kábeléről. Se sima tranzisztoros "jelformázó" , se 555, se schmitt trigger, se komplett műveleti erősítős, sehogy. Egyszerűen a kijövő jel hasonlít a lóból kijövő jelre.....
Az nem mûködik hogy a terecsre egy LED van kötve, tehát az indukált fesztôl felvillan a LED?
Próbáltam leddel jelezni a kimenetet is de nem ment. Az arduino-s kütyü működik mert ott szépen fut minden (idebent frekigenerátorral tesztelve 5V TTL-el), autón semmi se akart menni. 1,7mm a szikraköz gyárilag tehát még csak nem is kicsi gyenge szikrát kellene "nézni", azért abból már elég erőnek kéne átjönni. Ötletem sincs hogy tudom leszedni úgy a jelet hogy tényleges értékelhető adat legyen belőle fordulatszám függvényében. Gondolkoztam hogy megfúrom a gyújtáselosztóm és teszek oda valami optikai vagy hall érzékelőt de ott a nagyfeszültség meg a rengeteg zavar miatt nem merem.
A hozzászólás módosítva: Dec 29, 2021
Az a tranzisztoros jelformázó az hogyan nézett ki? Nekem egy kéttranzisztoros mikrofonerôsítôvel már sok csodát sikerült érzékelnem, aminek a hanghoz semmi köze.
Majdnem ugyan az volt lényegében mint egy elektret kapszula erősítője. 2db BC547-es mindössze, de talán az volt a 2. amivel próbálkoztam. Gondolkoztam a trafó "primeréről" a jellevétellel, de kétséges mit kapok onnét vissza, pláne hogy a program úgy van megírva hogy 1 gyertya jelét figyelje ne a trafóról jövőt.
|
Bejelentkezés
Hirdetés |