Návrh jednoduchého obvodu.

Problémy s návrhem, konstrukcí, zapojením, realizací elektronických zařízení

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Michal22
Příspěvky: 7655
Registrován: 28 bře 2012, 02:00
Bydliště: Brno

Návrh jednoduchého obvodu.

#1 Příspěvek od Michal22 »

Potřeboval bych následující obvod- pokud je na vstupu log.1, tak je výstup v log.0.
Pokud vstup přejde do log.0, tak výstup ještě zůstane 60s v log.0, poté přijde impuls log.1 v délce 2s, poté zase 60s log.0, zase impuls log.1 v délce 2s.
Tohle by se opakovalo dokud by se na vstupu nezměnil stav zpět na log.0.

Vlastní logické úrovně mohou být jakkoliv prohozené (třeba vstup spouštěný log.1), na tom nesejde. Podstatné je dodržet časy a také ukončení výstupní sekvence při změně stavu vstupu na klidovou hodnotu.
S
Asi by to šlo naroubovat i na jednu 555, ale já takhle ze startu nevím, jak začít.
Umím si představit dvě 555, kdy jedna by počítala těch 60s, druhá dělala puls 2s. Ale možná by to šlo realizovat i s jednou 555?
Nebo je toto výhodnější pomocí nějakého jednočipu?
Díky za návrhy.
Přílohy
555.jpg
Civilizace založená na oboustranné lepící pásce nemůže dobře skončit...
I kdyby se z tebe jednou stal král, neodsuzuj lidi, kteří ti nebudou provolávat slávu- raději se zeptej sám sebe, proč tomu tak není...

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#2 Příspěvek od Cowley »

Nasadil bych Picaxe 08M2. Ale asi mě teď ukamenujou :)

A co když se během prvního měření vrátí vstup do klidu?
Edit: asi se meření 60s hned ukončí a neprovede se ani ten první 2s impuls, že ? :)
Naposledy upravil(a) Cowley dne 16 dub 2019, 15:49, celkem upraveno 1 x.

Uživatelský avatar
forbidden
Příspěvky: 8808
Registrován: 14 úno 2005, 01:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#3 Příspěvek od forbidden »

Asi by to šlo i s jednou zapojenou jako AKO s takto malou střídou. Jak by to bylo moc přesný netuším. Určitě bych ale šel do CMOS verze kvůli možnosti menších kondů a větších odporů. Na tyto časy to bude praktičtější.

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#4 Příspěvek od Cowley »

Anebo 4060 s podporou 4093. Belza má na stránkách měření delších časů.
Vstup odblokuje a zresetuje 4060, ta napočítá do 60s a na výstupu aktivuje klopak ze zbylých hradel na 2s.
Nebo 4017 s podporou 4093.

Podobné zapojení máme v domě. Na dveřích je magnet.kontakt. Jakmile se dveře otevřou, začne měření. Pokud se dveře v určitém čase nedovřou, spustí se přerušovaná akustická signalizace.
Jakmile se dovřou, vše utichne.

Uživatelský avatar
Michal22
Příspěvky: 7655
Registrován: 28 bře 2012, 02:00
Bydliště: Brno

#5 Příspěvek od Michal22 »

Cowley- přesně na to stejné to potřebuji já :-)
Na přesnosti zas tak úplně nesejde, jde o to, aby to cca 60s počkalo, než to začne posílat impulzy, které se pak převedou na stávající elektronický zvonek.
Civilizace založená na oboustranné lepící pásce nemůže dobře skončit...
I kdyby se z tebe jednou stal král, neodsuzuj lidi, kteří ti nebudou provolávat slávu- raději se zeptej sám sebe, proč tomu tak není...

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#6 Příspěvek od Cowley »

V první verzi byla jenom jedna 555.
Mg.spinac jí vždy nastartoval, pokud se dveře včas zavřely tak nedomeřila a celé zapojení "umřelo".
Jakmile ale domeřila, sepla piezo sirenu.
V druhé verzi byla na výstupu první ještě druhá 555, co pulsovala.
Ve třetí verzi už jsme zůstali u 555 a 40106, který generuje tón do repráčku a celé je to v krabičce z GM (taková na zavěšení s prolisem pro reproduktorek).

A hlavně trimr na nastavení toho prvního času.
Je potřeba ještě chytit toho, co prošel, aby za sebou zavřel. Jinak tě lidí z přízemí rozcupujou :)

Uživatelský avatar
Michal22
Příspěvky: 7655
Registrován: 28 bře 2012, 02:00
Bydliště: Brno

#7 Příspěvek od Michal22 »

Já to potřebuju do práce, principiálně stejně, ale jde o to, že někteří si do dveří vloží předmět, který zabrání zaklapnutí. A dveře jsou potom nezavřené, mohl by jimi někdo vlézt dovnitř.
Takže pokud magnet nesepne, obvod bude periodicky spouštět signalizaci, aby to někoho přinutilo ke dveřím zajít a předmět vytáhnout pryč.

Máš někde nějaké šéma té rozšířené verze?
Ať nemusím vymýšlet vymyšlené?
Díky
Civilizace založená na oboustranné lepící pásce nemůže dobře skončit...
I kdyby se z tebe jednou stal král, neodsuzuj lidi, kteří ti nebudou provolávat slávu- raději se zeptej sám sebe, proč tomu tak není...

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#8 Příspěvek od Cowley »

Schéma nemám :(

Jen si pamatuji na atypické zapojení 555 (bez pinu 7)
Propojené piny 2 a 6 z nich rezistor 100k na plus a také "měřící" kondik na GND.
Z uzlu 2/6 je přes seriový rezistor 180R a diodu 1N4148 vyvedená katoda na svorku, na kterou se připojí magnet.detektor proti GND.
Uzel 4/8 je plus 12V
Pin 5 je 10n proti GND.
Pin 7 je nepoužit
Pin 1 je GND
Pin 3 spouštěl 40106 a ta přes tranzistor budila repro.

Uživatelský avatar
forbidden
Příspěvky: 8808
Registrován: 14 úno 2005, 01:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#9 Příspěvek od forbidden »

Jen pro porovnání, nedávno jsem dělal něco hodně podobnýho pro zákoše. Největší jsou na tom pájecí plošky, protože si to chtěl připojovat sám a pak fitry na napájení, protože to je do auta. :) Je to zalitý v laku kvůli odolnosti.
PIC10F222.
Přílohy
udělátko
udělátko

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#10 Příspěvek od ZdenekHQ »

Dost se zapomíná na CMOS 4538. Ovšem já, jelikož jsem už pokřivenej procesorama, bych to taky raději nacpal do toho procesoru... :D
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

petrfilipi
Příspěvky: 2551
Registrován: 13 zář 2005, 02:00

#11 Příspěvek od petrfilipi »

Jasně, malý 6 nebo 8 vývodový PIC, interní oscilátor, krátký prográmek, přerušení po 0,1s a v přerušení počítat buď do 600 nebo do 20.

Petr

Uživatelský avatar
mluno
Příspěvky: 227
Registrován: 18 dub 2011, 02:00
Bydliště: Benešov (u Prahy)

#12 Příspěvek od mluno »

Já bych použil attiny13 ale to je celkem jedno. Obojí stojí kolem 30 korun a na tak jednoduchý program nebude rozdíl. Ale to jen protože s AVR to umím a s picy ne. Interní oscilátor bohatě vyhoví, případně se dá podle odchylky program zkorigovat.
Použití procesoru má tu výhodu, že lze funkci obvodu lehce upravit, což se u nějaké kombinace monostabilních obvodů nedá (tam se tak maximálně dají upravit časy).

Uživatelský avatar
Michal22
Příspěvky: 7655
Registrován: 28 bře 2012, 02:00
Bydliště: Brno

#13 Příspěvek od Michal22 »

Ahoj,
v tomto problému jsme se zatím posunul k tomu, že jsem si koupil klon Arduino Nano.
Podařilo se mi rozchodit komunikaci, programy mi jdou nahrávat, dělají, co po nich chci (LED bliká :-D), jen teď nevím, jak koncipovat program.

Kdysi jsem programoval v Basicu, Pascalu, později krátká epizoda s jazykem Lua. Nic víc.

Hlavně nevím, jakým způsobem spustit běh programu pomocí vstupu, a taky jak zaimplementovat podmínku toho, aby běh sekvence byl zpožděný o těch 60 sekund.

Dokázal by mi někdo ideově pomoct?
Nejde mi o to, aby za mě někdo naťukal program, ale spíš, abych byl naveden na správný směr.

Díky
Civilizace založená na oboustranné lepící pásce nemůže dobře skončit...
I kdyby se z tebe jednou stal král, neodsuzuj lidi, kteří ti nebudou provolávat slávu- raději se zeptej sám sebe, proč tomu tak není...

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#14 Příspěvek od Cowley »

Třeba nějak takhle :)

Kód: Vybrat vše

int vstup = 2;
int vystup = 13;

boolean otevreno = 0;
boolean mereni = 0;


unsigned long zacatek;
unsigned long cekacka = 60000; // 60000 je 60s

void setup() {

 Serial.begin(9600);
 
  pinMode (vstup, INPUT);
  pinMode (vystup, OUTPUT);
  digitalWrite(vstup, HIGH);  // nastaveni vstupu na PULL UP
  digitalWrite(vystup, LOW);  // vystup po zapnuti nebude aktivni
  
}

void loop() {

if (digitalRead(vstup) == LOW)  // je vstup aktivni, dvere jsou otevreny
{otevreno = 1;
}

if (digitalRead(vstup) == HIGH)  // neni vstup aktivni, dvere jsou zavreny
{otevreno = 0;
mereni = 0;
}

if ((otevreno == 1) && (mereni == 0))  //  je otevreno a jeste si nezacal stopovat ?
{mereni = 1;                           //  zapis si, ze stopujeme
zacatek = millis();                    //  nastav si do parametru zacatek aktualni systemovy cas
Serial.println("Zacinam merit cekaci dobu");
}

if (otevreno == 1)                      // je stale otevreno ?
{if ((millis() - zacatek) > cekacka)    // a je rozdil aktualniho systemoveho casu a casu v parametru zacatek vetsi nez cekaci doba?
{Serial.println("Nastal cas dat impuls na sirenu");
digitalWrite(vystup, HIGH);              //  sepni vystup
delay(2000);                              // na dve sekundy
digitalWrite(vystup, LOW);                 // vypni vystup
mereni = 0;                                 // nastav, ze budeme merit znovu cekaci dobu
}
}

}

Uživatelský avatar
Michal22
Příspěvky: 7655
Registrován: 28 bře 2012, 02:00
Bydliště: Brno

#15 Příspěvek od Michal22 »

Tak moc děkuji Cowley (Kaulimu) za prográmek.
Funguje zcela bezchybně.

A protože jsem opravdu lama, zkusím se ptát (moje otázky jsou vyznačeny ////):
int vstup = 2;
int vystup = 13;
////tohle je inicializace vstupů/výstupů? Co jsme zkoušel nějaké blikání LED, tak ve vzorových programech tyhle řádky nebyly. Jsou nutné, nebo spíš doporučené?////

boolean otevreno = 0;
boolean mereni = 0;
////funkce boolean je pro mě velkou neznámou. Zkoušel jsem nastudovat například na wikipedii, ale pořád to vůbec nechápu.////

unsigned long zacatek;
unsigned long cekacka = 60000; // 60000 je 60s
////k čemu prosím slouží tyto dva řádky?////

void setup() {

Serial.begin(9600);
////Je vždy nutné zadat rychlost sériového portu?////

pinMode (vstup, INPUT);
pinMode (vystup, OUTPUT);
digitalWrite(vstup, HIGH); // nastaveni vstupu na PULL UP
digitalWrite(vystup, LOW); // vystup po zapnuti nebude aktivni

}

void loop() {

if (digitalRead(vstup) == LOW) // je vstup aktivni, dvere jsou otevreny
{otevreno = 1;
}

if (digitalRead(vstup) == HIGH) // neni vstup aktivni, dvere jsou zavreny
{otevreno = 0;
mereni = 0;
}

if ((otevreno == 1) && (mereni == 0)) // je otevreno a jeste si nezacal stopovat ?
{mereni = 1; // zapis si, ze stopujeme
zacatek = millis(); // nastav si do parametru zacatek aktualni systemovy cas
////k čemu složí přesně funkce „millis“ bez číselné hodnoty?Co je zde myšleno systémovým časem?////

Serial.println("Zacinam merit cekaci dobu");
}

if (otevreno == 1) // je stale otevreno ?
{if ((millis() - zacatek) > cekacka) // a je rozdil aktualniho systemoveho casu a casu v parametru zacatek vetsi nez cekaci doba?
{Serial.println("Nastal cas dat impuls na sirenu");
digitalWrite(vystup, HIGH); // sepni vystup
delay(2000); // na dve sekundy
digitalWrite(vystup, LOW); // vypni vystup
mereni = 0; // nastav, ze budeme merit znovu cekaci dobu
}
}

}
A obecně- existuje nějaké ucelené povídání k programování těhle malých potvůrek?
Co jsem zatím procházel, tak mi informace připadnou buď dost rozbité, nekompletní, nebo mi tam zase schází vysvětlení (nejlépe na nějakých příkladech).
Díky za případné nasměrování.
Civilizace založená na oboustranné lepící pásce nemůže dobře skončit...
I kdyby se z tebe jednou stal král, neodsuzuj lidi, kteří ti nebudou provolávat slávu- raději se zeptej sám sebe, proč tomu tak není...

Odpovědět

Zpět na „Řešení problémů s různými konstrukcemi“