» Poradna » Programy

Citani pulzu s ESP8266-01

 |   |  Linux Firefox 62.0

Ahoj vsichni. Snazim se citat pulzy z Anemometru do ESP8266-01. Program je nasledujici:#define pinAnemo 2#define pinPreruseni 0volatile byte pocetPulzu = 0;unsigned long staryCas = 0;void setup() { Serial.begin(9600); pinMode(pinAnemo, INPUT); attachInterrupt(pinPreruseni, prictiPulz, FALLING);}void loop() { if ((millis() - staryCas) > 10000) { detachInterrupt(pinPreruseni); Serial.print("Pocet pulzu: "); Serial.println(pocetPulzu); pocetPulzu = 0; staryCas = millis(); attachInterrupt(pinPreruseni, prictiPulz, FALLING); }}void prictiPulz() { // tady si myslim, ze filtruji zakmity, ale pri 3 a vice pulzech se program zastavi. Bez "delay" bezi OK, ale pocita i zakmity delay(250); pocetPulzu++;}Nemate nekdo tuseni, co je spatne?Diky fest.

Odpovědi na otázku

 |   |  Microsoft Windows 10 Chrome 69.0.3497.92

Problém je právě v tom Delay, takto ti to nebude počítat nějaké rychlé pulzy. Zákmity se filtrují jinak, rychle číst vstup a pokud se po dobu třeba 10ms jeho stav nezmění, tak si nastavit příznak korektního stavu vstupu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 69.0.3497.92

Nebo když přijde 1 (kontakt sepnutý), tak další 1 brát jako korektní až po nějaké době, třeba těch 10-20ms.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 62.0

No to jsem se snazil udelat prave tim cekanim 250. Zkousel jsem i jine hodnoty. S hodnotou 250, mi to funguje az nejlepe (filtruje to zakmity), ale kdyz dam treba 3 pulzy, zamrzne to.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 69.0.3497.92

250ms ke hodně, to máš jen frekvenci 4Hz, nic moc. Ten anemometr určitě může spínat daleko rychleji. Nebo do toho anemometru dát nějaký jiný spínač, třeba optický (přerušování paprsku), indukční a ten aktivovat nějakým kovovým plíškem, upevněným na kolečku...nebo třeba delay(20) nefunguje?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 69.0.3497.92

Jo ještě jedna věc. To přerušení je vyvolané stavem 1 na pinu, nebo změnou stavu? Nevím jak to ESP, ale třeba PICy umí obojí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 62.0

ESP umi take oboji. Nabeznou, sestupnou i reakci na zmenu. Tohle by melo chodit na sestupnou, ale je to v podstate jedno.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 69.0.3497.92

Jo že to mrzne...možná se to přerušení snaží vyvolat redundantně, tedy přijde přerušení, v něm to čeká 250ms, ale během té doby se spínač opět sepne a přerušení se znova vyvolá, i když jeho obsluha ještě nebyla dokončená.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 62.0

jj presne tak mi to pripada. Jenze nevim, jak se to pak ma zachovat. Predstavoval jsem si to tak, ze v te dobe (cekani) bude kazde dalsi zatazeni za preruseni zahozeno. Pokousel jsem se i tvarovat signal MKO postavenym z 555, ale kdyz mi na zahrade sepne cerpadlo, pocitalo to jako divy :D. Nejaky ruseni asi. Osciloskopu nemaje se to blbe hleda. Tak jsem vsadil na SW filtrovani. To s pouzitim FW ESP Easy chodi 100%, Ale jen pri odesilani jednoho cidla na server. Jak mam dve (anemometr a rad bych i srazkomer), chodi to jak chce. Proto se s tim pisu. U ostatnich cidel vlastni soft neni problem, ale tady ... :(

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 69.0.3497.92

Preruseni musi byt obsloužené co nejrychleji, jinak dělá neplechu. 250ms čekání je opravdu moc. Co všechno ten ESP dělá, jedna možnost by byla ten vstup nesledovat v přerušení, ale cyklicky a po nějakou dobu jej sledovat, třeba 5000x, pokdu nedochází ke změně stavu, tak přičítat +1 do nějaké proměnné "filtr". Pokud dojde během jednoho cyklu "loop" ke změně stavu vstupu, tak ten čítač vynulovat. A pokud se dočítá třeba do 5000, tak to brát jako korektní stav bez zákmitu. Ale stejně...těch 250ms máš jen ty 4Hz...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 62.0

Bude delat jenom sledovani tech dvou vstupu (vitr a dest) a odesilani dat na nadrazeny system.ThingSpeak, nebo Domoticz. Ohledne te frekvence, zatim si s tim jen hraju, tak jsem se s tim nepocital, ale jak byl ten velky vitr, krivka nedorazila na strop. Graf nebyl uriznut, ze by jako nestacil rozsah a dochazelo k vypusteni pulzu. To bych ale vse zkalibroval... az budu umet ty pulzy chytat :). Ten test za bourky byl s ESPEasy, ale jen s anemometrem.Zatim diky za snahu poradit. Dneska to uz balim. Zitra zkusim kratsi cekani. Vim, ze preruseni ma byt co nejrychleji obslouzeno a cekani v nem je prasecina, ale uz nevim jak na to :(

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 62.0

Tak jsem se k tomu jeste vratil a v cizim kodu jsem nasel: void inter() { if((long)(micros() - last_micros) >= (debouncing_time * 1000)) { i++; last_micros = micros(); }Choti to s tim lip. Nemrzne, jen si musim pohrat s hodnotama, aby to lepe filtrovalo. Pak se budu snazit vyhodnocovat dva GPIO piny a kdyz to dobre dopadne, pochlubim se tu necim chodivym :)

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Sidewinder, Void, #define, Delay, Serial begin, Serial println, Loop, Fest, Long


Určitě si přečtěte

Na měsíc jsem opustil Google a potupně se zase vrátil zpět (komentář)

Na měsíc jsem opustil Google a potupně se zase vrátil zpět (komentář)

** Zkusil jsem se zbavit závislosti na vyhledávači od Googlu ** Jako alternativy posloužily Bing, Seznam a DuckDuckGo ** Mají své silné stránky, ale i nepřekonatelná negativa

Lukáš Václavík | 70

20 let nám vědci slibují revoluční baterie, ale revoluce se pořád nekoná

20 let nám vědci slibují revoluční baterie, ale revoluce se pořád nekoná

** Technologie baterií se stále zlepšuje, ale žádné revoluce se nekonají ** Nejpopulárnějším typem baterií je Li-ion ** Efektivní baterie se stávají důležitější s příchodem elektromobilů

Karel Javůrek | 96

Podívejte se, co dokáže vyrobit jedna z nejexotičtějších 3D tiskáren v Česku

Podívejte se, co dokáže vyrobit jedna z nejexotičtějších 3D tiskáren v Česku

** Na jaře tiskla unikátní české respirátory ** Používá ji třeba Škoda Auto, a.s. ** Zajeli jsme se podívat do pražského showroomu 3Dees

Jakub Čížek | 11

WindowsFX: Nainstalujte to mamce a taťkovi. Ani nepoznají, že to je Linux

WindowsFX: Nainstalujte to mamce a taťkovi. Ani nepoznají, že to je Linux

** Po dvou měsících tu máme další linuxovou kopii ** Tentokrát jde o imitaci Desítek ** Sestavili ji brazilští geekové nad Ubuntu

Jakub Čížek | 143

Filmové pirátství asi jen tak nezmizí. Když už musíte, stahujte bezpečně v Seedru

Filmové pirátství asi jen tak nezmizí. Když už musíte, stahujte bezpečně v Seedru

** Máme HBO Go, máme Netflix... ** Ale stejně krademe filmy a seriály ** Když už musíte, stahujte torrenty bezpečně v Seedru

Jakub Čížek | 140


Aktuální číslo časopisu Computer

Megatest mobilů do 8 000 Kč

Test bezdrátových headsetů

Linux i pro začátečníky

Jak surfovat anonymně