Fórum témák
» Több friss téma |
Sziasztok!
Volna egy olyan nagy nagy problémám, hogy van nekem 81 db érzékelőm. Mely 130 centi hosszan el van helyezve egy csőben. Nem is az a lényeg, hogy mit érzékel, hanem az, hogy hogyan kódolom ezt be úgy,hogy értlemesen föl tudjam dolgozni a mikrokontrollerrel. És egyszerre max 1 jelez. Sajnos invez logika, tehát akkor ad 0-t mikor érzékel. Először arra gondoltam, hogy diódával mátrixot hozok létre, és a sor és oszlopot priority encoderrel 4 bitbe bekódolom. így ez szép és jó, csak minden érzékelő után invertert kell rakni, hogy a diódákkal meg lehessen csinálni a mátrixos kiválasztást. De ha már a 40-edik érzékelőnél tartok, annyira sok vezetéket kéne elvezetnem, hogy a 22 mm-es nyákon egyszerűen nem fér el. Hiába két oldalas, és hiába a 0,25mm csíkszélesség. Ez így túl bonyolult. Multiplexálnom kéne, vagy mit? Kérlek segítsetek. Tanácstalan vagyok! Előre is köszi!! dEdE
Igen, mátrixba kellene kötnöd őket. Így 9+9 kábel kell.
Az érzékelők milyen jellegűek? (sima kontaktus?)
Szia!
Tisztán digitális az érzékelők kimenete? Ha igen, akkor shiftregiszterekben gondolkodtál? Egy lehetőség párhuzamosan tölthető, sorosan olvasható shiftregiszter szerintem... Igaz blokkonként elég szűkösen lesz hely a vezetékezésre (kb 1.6cm-enként van egy érzékelő, ha jól sejtem, így egy blokk 12-13cm hosszú), de szerintem kivitelezhető... Így ami vezetéket végig kell húzni a panelen az szerintem olyan 5 db lehet (tápfesz/föld, órajel, load jel, soros kimenetek felfűzése), viszont lokálisan minden egyes érzékelőt be kell kötni a shiftregiszter párhuzamos bemeneteire. Ez a huzalozás így első blikkre megvalósíthatónak tűnik (aztán persze lehet, hogy nem). üdv: GLaszlo
Meg lehet oldani 1 vezetékkel is. Mindegyik érzékelőre más-más értékű ellenállással fesz.osztókat alkotni, és bevezetni az MCU A/D konverterébe. Így invertálni sem kellene. Ez csak akkor működik megbízhatóan, ha nincs nagy elektromos zaj a környéken.
És ha egyszerűen mindegyikhez tartozna egy ellenállásérték, és ezt méred a mikrokontroller adjével?
(pako gyorsabb volt)
Van még egy lehetőség. Egy ellenállás osztót készítesz 81 féle ellenállással a 81 érzékelőd kimeneteihez. Így a kapott feszültségből mindig tudod, melyik jelez. Ha az ellenállásokat az érzékelőkhöz teszed, elég egy szálat végigvinni és elég 1 láb a PIC-en.
Szerintem is AD átalakítóval lenne a legegyszerűbb ( kép). Csak ellenállásokat kell az érzékelőkre forrasztani és 1 vezetéken megkapod az analóg jelet.
Autórádiók klasszikus megoldása: csinálsz egy ellenállás sort ,a felső tagra rákötöd a mikrovezérlő AD bemenetét a többire meg egy egy érzékelő kimenetét. Az érzékelő testre viszi az adott osztáspontot és a feszültségosztásból be lehet azonosítani az asdott kimenetet. Autórádiókban egy vonalon 10-14 gombot is le szoktak kérdezni ily módon.
Ha nincs szenzor akkor szinte 5V , ha az utolsó akkor egy picit kisebb..... Ha a kimeneted nem nyitott kollektoros akkor esetleg egy dióda segíthet,bár csökkent az erzékelők számán.
Az analóg átvitelnek két korlátját látom én itt...
1. A kontrollerekben általában 8/10 bites AD van, ezáltal kb 2..10 LSB-nyi sáv jut 1-1 érzékelőre, ezáltal nagyon zavarérzékeny lenne. 2. 130 cm hosszan vannak elhelyezve az érzékelők. Nem hiszem, hogy ilyen távolságon keresztül ne csatolódna be kapacitív/induktív módon zajfeszültség... Shiftregiszteres átvitelnél, amit javasoltam, ott az órajel huzalozására már figyelni kell, mivel elég messzire kell elvinni a jelet...
A zavarjel csak az alkalmazott áramtól függ. Ha 20mA folyik legkevesebb, akkor nem lesz zavarérzékeny. De nagyobb áramokban is lehet gondolkodni. Valamint az is kérdés, hogy milyen sebességű változást kell detektálni, mert ha nem gyors, akkor lehet szűrni rendesen. Az egyes érzékelőkhöz tartozó feszültség lépcső 60mV lenne egyébként, ami 12 szer nagyobb, mint a legkisebb mérhető fesz(5mV), ha 5V a létra tápja!
Idézet: „Ha a kimeneted nem nyitott kollektoros akkor esetleg egy dióda segíthet,bár csökkent az erzékelők számán.” Hogy hogyan csökkenti az érzékelők számát nem tudom, de az biztos, ha nem nyitott kollektoros a kimenet, akkor a dolog sokkal bonyolultabb! Diódákkal nem lehet analog körben boldogulni, mert jelentősen hőfokfüggő a nyitófeszük, ami elrontaná a létra mérését. Ha netán nem nyitott a kimenet, akkor nyitottá kell tenni, valamint ha nem bír nagyobb áramokat, akkor szintén kell valami, amivel pufferelni lehetne a kimenetet, azaz kéne néhány tranyó még! Egyébként a legnagyobb baj megint az, hogy a megoldáshoz ismerni kéne az érzékelőket, és azt is amit érzékel(legalább is a változás dinamikáját!). A kérdező pont ezt tartotta lényegtelennek!
Jut eszembe, nem muszáj egy A/D-t használni, akár lehet 10-et is, az csak 10 vezeték még mindig és talán akkor is működik, ha nem OPC-s az érzékelő kimenete, és nem kell annyira félni a zavaroktól sem...
Én az eddigi elhangzott ötleteket kombinálnám:
1. Ellenállásokkal beállított feszültségszint mérések néhány érzékelőre (mivel kevés jelet mér - pl. 3 db érzékelőt -, nincs nagy jelentősége a zajnak). 2. Egy maroknyi 8 lábú PIC használata (esetleg SOIC tokozás) blokkonként a néhány (pl. 4db) A/D konverzióra. Erre jó pl. a 12F675 (ChipCad-ben kapható). 7-9 db elég a blokkosítástól függően. Darabja kb. 200-250 Ft. 3. Soros adattovábbítás: Egy gyakorlottabb (és bitrágásban jártas) programozó meg tudja oldani, hogy a PIC-ek egymásnak adogatják át sorosan az információt, a saját érzékelésükkel kiegészítve. Gyakorlatilag a tápot és a soros jelet kell végigvezetni, és ez 3 vezeték (esetleg egy 4. ami indítja a mérést). A többi néhány vezeték a PIC körül csak a környékbéli ellenállásokra megy. Az inverz logikának nincs különösebb jelentősége; az ellenállásokkal kialakuló feszültségeket ennek alapján kell értelmezni. Könnyebbséget jelent, ha igaz az a feltételezés, hogy: "...egyszerre max. 1 jelez". Ekkor a továbbítandó soros adat lehet a szokásos aszinkron 8 bites infó, benne 7 biten az érzékelő sorszámával. Ezt bármi könnyen fogadja (akár PC akár PIC).
Ugy gondoltam a kimenettel sorbakötni,ekkor minimum a rajta eső feszültséggel csökken a lépcső ,valamint a keletkező bizonytalanság miatt nagyobb lépcsőt kell választani.
Én első ötletben betennék 4 db 24 bites i2c io expandert.
Lehet mindegyiket kérdezgetni és kivitelezés sem túl bonyolult. Fénykapuknál működik, hátha itt is.
Sziasztok!
- Ha csak 4 db érzékelő megy egy 8 lábú pic-re, miért nem 4 digitális bemenetése kötjük. Kell még egy-egy táp - föld láb. Járjon belső órajellel. A maradék kettőn pedig valamilyen protokoll szerint - mondjuk az I2C - ki is tudja küldeni digitális formában. Az egységeket 4 vezeték köti csak össze... - Ha nem akarunk még ennyit sem programozni: 1 - használhatunk kész I2C portbővítőket: MCP23008 (8 bit / egység), MCP23016 (16 bit / egység), 2 - 74HC166 paralell tölthető shift regisztereket (8 bit / egység). Nem kell külön betöltő órajel - egyszerű R/C taggal meg lehet csinálni: Ha az adatokat léptetjük az órajalat sűrűn váltjuk, ha be szeretnénk tölteni az adatokat egy hosszabb időre nem adunk ki órajelet. A léptető órajel RC-taggal szűrt DC középérték jelet használhatjuk a párhuzamos betöltés vezérlésére. Sziasztok
Ez a I2C-s megoldás 4 érzékelőnként jó lehet.
Most már csak azt kéne tudni, hogy az érzékelők mellé lehet-e tenni elektronikát(hőmérséklet, víztartalom, stb...)!
Sziasztok!
A 81 db érzékelőhöz elég 74HC166 léptető tárolóból 10 db egység, a 81. mehet a lánc soros bemenetére.... Sziasztok.
Szia!
Nagyon jó ötlet volt a DA-s megoldás! Meg is csináltam,majd töltök föl képet. De lenne két kérdésem. 1 kOhm-onként növekednek az ellenállásosztó alsó tagjainak értékei. Minden szép és jó 20k-tól 100k-ig, de alatta nem arányosan lépked a feszültség. Nem értem. A másik,hogy nem tudjátok, hogy lehetne ezt az analóg jelet stabilizálni, mert folyamatosan libeg. És mivel 100 érzékelőt raktam be, azok nagyon közel vannak értékben egymáshoz,így néha belelengenek egymás tartományába. Tehát fars eredményt kapok. Rakjak még mindenhová plusz ellenállást, és akkor nagyobb lesz a lépés kettő között? Vagy hogyan? Köszi mégegyszer...
LM2576-ot használok. Teljesen stabil.
a referencia forrásom, pedig meg van szűrve. Stabil. De akkor is az 1024-es skálán (2 a 10-ediken) 5 egységet billeg. Raktam kondikat az érzékelőkhöz, de nem sokat segít. Valami ötlet még?
igen egy csatorna, de nem nagyon akarom megváltoztatni
Túl sok az 1k szerintem. A végefelé ha összeadódik nagyon sok lesz. PIC adc szereti ha alacsony impedancián van meghajtva.
Lidinek igaza van, túl nagy a bemeneti impedancia. Tettél az A/D bemenetre is kondit? Az segíthet, ha nem kell túl gyors változásokat detektálnod. Esetleg egy illesztő OPA még elkellhet(valami egytápos, rail to rail kimenetű(MCP6001))
|
Bejelentkezés
Hirdetés |