X
Forum

Forum

Jak při napětí vyge...
 
Notifications
Clear all

Jak při napětí vygenerovat impulz?

14 Posts
4 Users
0 Likes
1,860 Views
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3073
Topic starter  

A druhá otázka se týka generování impulzu.

Potřebuju, aby v okamžiku, kdy se na daném vodiči ověví napětí, tak se mi povedlo vygenerovat impulz zapnout-vypnout pevné délky.

Jde o to, že potřebuju resetovat (probudit) arduino v přípdaě, kdy se na čidle oběví signál. Jenže, signál je vždy reprezentovaný nějakým napětím, ale reset arduina se děje na sestupné hraně signálu RST.

Tzn reset/probuzení není při přechodu 0->xV, ale až při 0->xV->0.

Díky


   
Quote
msk
 msk
(@dusanmsk)
Member
Joined: 7 years ago
Posts: 1880
 

Co chces presne dosiahnut?


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3073
Topic starter  

Hoj, sem si rikal, ze to nebudu popisovat cele, ale asi jo 😉

Vyrabim vlastni VirtualWall pro Rumbu. Uz umim vysilat pulsy a ovladat ji a ted resim usporny rezim.

Jde o to, ze chci nechat zarizeni pustene nonstop na baterii. A vim, ze rumba ma v prednim narazniku nekolik IR cidel, co pred sebou sviti.

Takze plan je takovy, ze Arduino (zatim wemos, pozdeji Arduino Mini) bude vetsinu casu spat, nez se roomba s IR priblizi. Sejmu IR, probudim arduino a zacnu posliat pulsy tak, abych ji rekl, ze tam nema jet a po treba 20min zase arduino uspim.

Takze nejdrive potrebuju detekovat IR.Na to mam IR fotodiodu, u ktere vim, ze pri dennim svetle ma nejakou hodnotu, ale kdyz na ni sviti roomba, ma jinou (0.25V vs 0.5V). Tzn pri vyssim nez 0.25V potrebuju otevrit tranzistor, pomoci ktereho vyresetuju (probudim) Arduino (wemos to ma tak, ze se sepne RST pin).

A druhy problem je, ze nestaci jen spojit zem na RST, ale je potreba se i vratit zpet do stavu HIGH. Tzn druhy problem je, ze potrebuju vygenerovat pulz 1-0-1, aby Wemos detekoval reset.

Takze sem premyslel treba o kondenzatoru a pulz generovat tak, ze nez se nabije, bude tranzistor otevreny a po nabiti se tranzistor uzavre. Ale to mi taky uplne nefunguje.


   
ReplyQuote
msk
 msk
(@dusanmsk)
Member
Joined: 7 years ago
Posts: 1880
 

Ja by som to videl na nejaku variantu klopneho obvodu, ale samozrejme zapuzdreneho do nejakej diskretnej suciastky. Ak na nic neprides, opytam sa v praci.


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3073
Topic starter  

to uz mne taky napadlo, ale nevim jak to hledat. Neexistuje nejaky katalog, kde pujde vyhledavat dle funkci obvodu a u toho pak budou cisla/typy svabu?

 

Zkousel jsem hledat treba na GME.cz, jenze tam to maji jen dle tech vyrobnich cisel a znamena to projit tisice polozek.


   
ReplyQuote
msk
 msk
(@dusanmsk)
Member
Joined: 7 years ago
Posts: 1880
 

Ja prehladavam na rs a tme, ale ci to pojde nejak rozumne filtrovat ze by si nasiel nieco ked nevies co, netusim ...


   
ReplyQuote
Cousma
(@cousma)
Trusted Member
Joined: 7 years ago
Posts: 59
 

@L máš to už nějak vyřešeno? Možná budu psát, co už víš, ale kdybych dělal já, snažil bych se využít sleep módu Arduina a budit přes interrupt pin. Tzn. nemusíš generovat pulz, ale stačí jen zesílit signál od fotodiody (možná nízkoúrovňový klopný obvod, operákem nebo asi nejlíp přes komparátor). Ale nevím, jestli ti to vyřeší signál do Wemosu (nemám zkušenosti). Co jsem teď narychlo načetl, tak Wemos umí DeepSleep mód, který se dá nastavit na periodické buzení. První myšlenka - nastavit uspání na řádově třeba 1-5s a po probuzení jen rychle vyčíst ADčko se vstupem od fotodiody a rozhodnout se, jestli zase hned spát nebo je Rumba v provozu...

Kdyby se jevilo, že pomáhám, můžu se na to mrknout detailněji...


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3073
Topic starter  

Vyreseno jeste nemam, nebyl cas. Prave ze ten impulz potrebuju na to zbuzeni. Problem je, ze se wemos (ale obecne arduino) nebudi tim, ze se propoji zem s RST, ale az po te, co se propoji a zase odpoji.

Takze pokud mi z diody zacne lezt nejake napeti, tak pomoci nej otevru tranzistor a tim spojim zem a RST. jenze k samotnemu probuzeni dojde az po tom, co se tranzistor uzavre, tzn az po tom, co napriklad prestane IR svitit.

Pravidelne budeni a zjistovani hodnoty je urcite cesta, ale spotrebuju na to radove vic baterky nez kdyz budu budit az pri dane udalosti (spotreba tusim 200 mikro vs 20 mili).

Urcite budu rad za jakoukoli dalsi info. 

Ja jsem nakonec na zaklade nejakych clanku dosel k tomu, ze by to chtelo komparator, a porovnavat napeti z fotorezistoru a nejake referencni. At uz fixni, nebo treba z druheho fotorezistoru otoceneho na druhou stranu. A pokud bude napeti vyrazne vyssi (to by se muselo zkusit o kolik), tak otevrit tranzistor. Ale ten otevrit treba jen na 1s a hned zase zavrit. 

Problemu tohodle reseni je vsak vic. Zaprve komparator s nejakym offsetem, zadruhe signal a zatreti, neresetovat wemos neustale dokola jakmile pak na nej zasviti znovu. A to je nejvetsi problem (nevim, jestli treba pres nejaky condenzator udelat to, ze se po prvnim otevreni tranzistor dalsich 10min treba uz neotevre).

Dalsi cesta co mne pak napadla je budit wemos jednou za 10minut, zeptat se ppres wifi jestli roomba jede a kdyz ne, zase usnout. Kdyz jo, bezet treba 1h uz bez wifi, protoze ta zere nejvic) a pak zase usnout. Ale je to taky energeticky drazsi cesta.


   
ReplyQuote
Cousma
(@cousma)
Trusted Member
Joined: 7 years ago
Posts: 59
 

Pulz na RST není jediná cesta jak budit Arduino, mrkni sem:

http://playground.arduino.cc/Learning/ArduinoSleepCode

Právě ten interrupt pin/signál by ti mohl zjednodušit život. Nepotřebuješ pak offset komparátoru, protože při běhu (mimo sleep mód) prostě tento vstup ignoruješ...

Takže už opravdu jen udělat energeticky úsporný budící obvod z komparátoru 🙂

Jinak ty dva fotorezistory proti sobě je dobrý nápad - můžeš pak jednoduše přiohnout odporem ten "zastíněný" tak, aby dával vždy o něco vyšší signál komparátoru a tím si ladit prahovou úroveň.


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3073
Topic starter  

Vcera jsem si s tim hral a nakonec mam udelanou verzi tak, ze se program spusti, pripoji se na wifi a zjisti jestli roomba pracuje (to zere 0.080A), kdyz pracuje, tak vypne wifi a zacne svitit diodou (to zere 0.015A) a kdyz nepracuje, tak usne deepsleep na nejakou dobu (tam je to 0.18 uA mam pocit, defakto nula nula nic).

Zkusim to zatim takto, protoze tomu rozumi a vim jak na to ;-). Zkusim jak dlouho to na dve AA baterky vydrzi. A kdyz bude cas, budu zkouset ten HW komparator

 

Ty interrupty jsou jinak urcite dobra vec, ale co jsem nekde cet tusim, tak Wemos D1 to nema, muselo by se pouzit primo Arduino


   
ReplyQuote
Cousma
(@cousma)
Trusted Member
Joined: 7 years ago
Posts: 59
 

Jo...ono to vypadá i jako jistější řešení, než čekat na osvětlení Rumbou...mezitím ti může zeď projet...

Kdybys měl problém s výdrží na baterky, tak mám ve firmě přístup k Li-ion článkům formátu 18650 celkem za pár korun...kdyžtak probereme zítra...


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3073
Topic starter  

Jojo, jedine proc to resim je vydrz. Protoze check pres wifi je urcite "drazi" nez pasivni cekani. 

Rad se o tom zitra pobavim, jen se mi tam nejak pripomen, at vim ze jsi to ty ;-)). Lepsi baterie by to urcite vyresili.


   
ReplyQuote
Cousma
(@cousma)
Trusted Member
Joined: 7 years ago
Posts: 59
 

Jasně 😉


   
ReplyQuote
(@kimot)
Trusted Member
Joined: 7 years ago
Posts: 80
 

Dobrý den.

Koukněte na časovač 555 ( NE555, NA555 ).

Na generování různých pulsů nebo frekvencí ideální a najdete spoustu zapojení.

Další možnosti něco jako 74121, 74123 nebo alternativy v CMOS.


   
ReplyQuote
Share: