Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Az Arduino tud PID szabályzást, bemenő jel 4-20 mA 0-5 V-ra átalakítva, kimenő jel egy gyors motoros szelepre, 0-5 V pl. Mennyire kell gyors?
Az eszközök kiválasztása is kérdéses.
Azt szeretném megvalósítani, hogy van egy tartály, amiben változik a benne levő levegő nyomása és ezt a nyomást megmérve, ha a beállítotthoz képest magas, akkor kiengedni a szabadba, ha kevesebb, akkor rátölteni. Mérőeszközzel vagyok meglőve. Nem precíziós cucc kell,de 3-4 bar-nál ne csaljon egy tizednél többet, és illeszthető legyen arduinohoz. Előtted amit ajánlottak,az érdekes lehet, de van 3000 és 20000 forintért is. Fura.
Aliexpresse-n vannak 3-4000 Ft értékben. Szerintem jók, mert a 1.5% hiba körüliek, bár a driftet nem írják le. miért kell tized pontosság? (Amúgy ez tudja)
Azért kell, mert elvi elvárás részemről, hogy jó legyen, ha már építek.
Egyébként úgy képzeltem el a dolgot, hogy, feldolgozás és a mért, beállított közti különbséget több részletben tölti, illetve üríti ki a tartályból. A szelepek nyitási idejét kell majd megadni, minél közelebb van a mért a beállítotthoz, annál rövidebb ideig van nyitva. Persze némi hiszterézissel.
A módosított hozzászólást nem küldte már el...
Az elmondott szabályzó kb. 150-200eFt között mozog... Ha rám hallgatol, akkor veszel egy natur nyomásszabályzó szelepet... letéped a kupakját majd egy kuplungon keresztül összekötöd egy áttételes dc motorral, amivel már tekergetheted is egyszerűen. Ezt megfejeled egy encoder-el és már van visszacsatolásod is. Ez egyszerű és olcsó és még működik id.
MMA7660 szeretnék arra használni, hogy ha megmozdul, vagy megérintik, az interrupt lábát magasról alacsonyra váltasa. Nem szeretnék előre megírt könyvtárakat használni (a hely miatt legfőképp, meg mert erre teljesen felesleges).
Elvileg ez a kód állítja a regisztereket erre a feladatra:
Bővebben: Link Miért nem működik? Mit rontok el?
Mit értesz a nem működik alatt?
I2C kommunikáció amúgy rendben van?
Az rendben van, a regsiztereket is átállítja, leellenőzöm induláskor.
Hiába mozgatom a modult, nem interruptol. Gondolom valamit rosszul állítok be.
Open Drain-re állítottad az /INT kimenetet (IPP=0, $07.6=0). Tettél felhúzó ellenállást?
Tettem.
Lehet 0x08-nál B000-val kéne kezdeni? Jelenleg két azonos értéket vár egymás után, ami a beállított 1 másodperces mintavételezésnél, 2 másodperces mozdulatlanság...
Az Arduinoval felhúztad az MMA7660 megfelelő lábait? Mert annak függvényében van off mode, Standby, és active mód.
A linkelt pdf-ben a 10. oldal. A leírás szerint van olyan mód, hogy az I2C megy, meg minden, de az eszköz nem megy.
5 láb van. VCC, GND, SCL, SDA, INT.
VCC - INT 10k felhúzó.
writeByte( MMA7660_ADDRESS, 0x08, B00011001);
Igy sorsabb a mintavételzés, és nincs filter, sajnos ugyanaz.
DVDD
DVSS lábak nincsenek azon amit megvettél, vagy az előző hozzászólásodban azt írtad le, amit használsz? Szerintem amit írtál az I2C-n: writeByte( MMA7660_ADDRESS, 0x06, B11111111); Csak azt állítja be, hogy az interrupt pin mely esetekre reagáljon. Te most beállítottad mindenre. Ez ok, de a gép működési módját nem a fentebb említett DVDD DVSS lábakkal kell szabályozni?
Ilyen: Bővebben: Link
Az a 103-as ellenállás, nem a GND-hez csatlakozik?
A 0x07-es címen biztos 0 kell ezekhez a regiszterekhez: IPP 0: Interrupt output INT is open-drain. 1: Interrupt output INT is push-pull NOTE: Do NOT connect pull-up resistor from INT to higher voltage than DVDD. IAH 0: Interrupt output INT is active low 1: Interrupt output INT is active high A hozzászólás módosítva: Nov 1, 2018
Activ low-ra állítom (0x07 regiszter, D7 bit, 0), szerintem akkor VVC-re kell az ellenállás, hogy alaphelyzetben magas legyen a szint, majd a 7660 lenyomja, akkor indul az interrupt. (én így értelmezem).
De átrakom, nem tart semeddig. A hozzászólás módosítva: Nov 1, 2018
Ok, akkor nem kell, mert az i2C-n is beállíthatod, amit meg is teszel:
writeByte( MMA7660_ADDRESS, 0x07, B00011000); de ez szerintem Standby mode, mert jobbról az első bit a mode, jobbról a harmadik pdig a tone. 17.oldal. Próbáld meg aktív módban! writeByte( MMA7660_ADDRESS, 0x07, B00011001); Ott van továbbá az IPP és IAH bit, amit most nem értek pontosan mire is kellene állítani. A hozzászólás módosítva: Nov 1, 2018
Benéztem az ebay-es képet.
Viszont a 0x08-as cím beállításakor mindíg aktív módbe kerül:
"MMA7660FC always enters Active Mode using the samples per second specified in AMSR[2:0] of the SR (0x08) register. When MMA7660FC enters Active Mode with [ASE:AWE] = 11, MMA7660FC operates Auto-Sleep functionality first."
Ugyanaz a felhúzó átrakására.
És az active módra is.
Akkor itt lehet valami:
IPP 0: Interrupt output INT is open-drain. 1: Interrupt output INT is push-pull NOTE: Do NOT connect pull-up resistor from INT to higher voltage than DVDD. IAH 0: Interrupt output INT is active low 1: Interrupt output INT is active high IPP-t 1 re, gondolom az húzza fel IAH-t meg 0 Az arduinoban meg raise az interrupt, már ha jól gondolom.
Egyetértek.
Ha minden kötél szakad, akkor meg kell nézni, hogy az Arduino az adatokat milyen bit sorrendben küldi. Lehet eltérnek egymástól, az MSB nem ott van mindkét esetben.
De ez csak tipp, de mindegyik helyes, nem kell minden gyártónak 1 módszert alkalmaznia.
Szerintem adjuk fel mára... Ez sem lett jó.
Azért, hogy ez is meglegyen:
"Output pins can be driven in three different modes: -open drain - a transistor connects to low and nothing else -open drain, with pull-up - a transistor connects to low, and a resistor connects to high -push-pull - a transistor connects to high, and a transistor connects to low (only one is operated at a time)"
Most találtam: "The MPR121 is a freescale device. Freescale use a different I2C method, different to most other I2C devices, which has caused quite a few problems."
"Here is some code which reads a register on a freescale accelerometer. You need to add the extra parameter "false" on the endTransmission() call, and then the extra parameter "true" on the requestFrom() call. The effect of these is not very well documented or explained." Bővebben: Link
Az ötlet nem rossz, viszont nem az nyomásszabályzó tengelyének az elmozdulásáról kell a visszacsatolás, hanem a tartály nyomásáról. Viszont lehet akár léptető motor is, ami tekergeti a szelepet...
Szerintem amit ajánlottak fentebb eszközt, azt megrendelem, aztán meglátjuk. 3000 forint, nem nagy kaland ha mégsem válik be.
Használtam szódavíz töltő géphez 0-10 bar, 4-20 mA érzékelőt, mágnesszelepeket a töltéshez és ürítéshez, nem PID-del volt szabályozva, mert ez kétállású szelep volt. Megvolt, hogy 0.1 mp nyitással kb. mennyi nyomást tud elengedni, így könnyű volt kiszámolni, meddig kell. kb a szelepet nyitni. Persze, lényeg a tartály mérete miatt a tehetetlenség vagy a kapacitás.
|
Bejelentkezés
Hirdetés |