Reguliuojamo uždelsimo signalas 2025.06.27 at 15:56
Idėja tokia – reikia, kad padavus signalą į „juodos dėžės” įėjimą, išėjime signalas atsirastų po norimo laiko. Reiks man tokios schemos integravimui į didesnė schemą. Taigi, pabandome apsirašyti tikslus:
- Atsiradus signalui įėjime, išėjime signalas turi atsirasti po norimo laiko (0-5 sekundės, be didelio tikslumo, nes mano schemai jo nereikės.);
- Aktualus, t. y. reikalingas yra kylantis frontas, valdančio impulso trukmė apie 6 s.
- Išėjimo ir įėjimo signalų įtampa turi būti vienoda ir lygi maitinimo įtampai (13,6 V);
- Išėjimo signalas turi sugebėti uždegti LEDą.
Tokio tipo taimeriams labiausiai tinka 555 šeimos mikroschemos, jie ir daryti kaip reguliuojamo laiko taimeriai. Bet su 555 jau žaidžiau, tai norisi pabandyti kažką naujo. Ir čia į galvą ateina kiek primirštos mintys apie filtrus, jeigu tiksliau – RC filtrus, apie operacinukus, komparatorius ir visus kitus protingus žodžius. Tuo pačiu noriu pasižaisti su Analog Devices LTspice grandinių simuliatoriumi, patikrinti, kiek simuliavimas atitinka tikrovę. Pagrindinis darbinis arkliukas bus koks nors operacinis stiprintuvas, dirbantis kaip komparatorius. Komparatorius – nes „compare” (angl. palyginti), palygina signalus savo įėjimuose ir pagal tai įjungia arba išjungia savo išėjimą. Ir nereikia čia įsivaizduoti didelio, tai yra mažo, kompiuteriuko mikroschemoje, sukančio galvą kaip čia tą išėjimą sureguliuoti, nes veikimas maksimaliai paprastas:
- Kai įtampa neinvertuojamame įėjime didesnė nei įtampa invertuojamame įėjime – išėjime loginis 1.
- kai įtampa neinvertuojamame įėjime mažesnė nei įtampa invertuojamame įėjime – išėjime loginis 0.
Jeigu trumpai, tai galima būtų parašyti va taip:
- U+ > U– = 1;
- U+ < U– = 0.
Čia U+ – įtampa neinvertuojančiame įėjime, U– – įtampa invertuojančiame įėjime, atsakymas – loginis lygis išėjime. Taigi, tarkime, kad turime paprastutį operacinuką:
Pradžiai galima būtų nustatyti V2 arba, mūsų formulėje, tai būtų U–. Įprastai invertuojančiame įėjime nustatoma stabili įtampa, kurią galime vadinti slenkstine. Ją galima nustatyti įvairiais būdais – stabilitronu, atskiru maitinimo šaltiniu arba, jeigu nereikia didelio tikslumo ir atrišimo nuo maitinimo įtampos svyravimo – varžiniu dalikliu. Tą pastovaus slenksčio lygį galima pasirinkti savo nuožiūra (beveik). Riboja tik operacinuko įėjimo įtampos maksimali vertė. Kadangi noriu simuliacijai naudoti LTspice programą, joje yra tikrai daug operacinukų modelių pasirinkimų. Pasiėmiau vos ne pirmą pasitaikiusį, mokantį maitintis ir nuo dvipolio, ir nuo vienpolio maitinimo, svarbiausia rail-to-rail išėjimas, t. y. išėjimo įtampa gali būti tokia pati, kaip maitinimo įtampa – ADA4620. Vienpolio maitinimo maksimali įtampa 36 V – OK, precizinis – sueis, mažai triukšmaujantis – nelabai aktualu, 16 MHz – stipriai per daug, tiek tikrai nereiks, dažnis bus Hz vienetų eilės, bet sueis, o įdomus pasirodė dėl to, kad panaudoti JFET tranzistoriai. FET tranzistoriai nėra labai mėgstami audio stiprintuvuose, bet mūsų poreikiams bus net labiau tinkami nei paprasti BJT. Ir plius, kad naujas produktas, tai dar ne greitai bus „obsolete” ar „discontinued”. Taigi, invertuojantis išėjimas turėtų atrodyti va taip:
Varžiniu dalikliu R1, R2 nustatysime įtampą, žemiau kurios operacinuko išėjime bus 0, o įtampai neinvertuojamame įėjime pakilus virš to nustatyto lygio – išėjime bus 1. Kokia tą įtampą nustatyti ? Mano logika paprasta – kuo aukštesnė įtampa bus, tuo ilgiau krausis kondensatorius prie neinvertuojamo įėjimo, tai galima bus naudoti mažesnės talpos kondensatorių. Žiūrim mikroschemos aprašymą:
Kadangi maitinimas vienpolis, tai V- yra 0V, o V+ mano atveju bus 13,6 V, tai minimali galima įtampa -0,1 V, maksimali įtampa 13,6-4,4=9,2 V. Kad nebūtų jau visai arti ribinės, maksimalią įtampą bandysiu pataikyti kokia puse volto mažesnę, bet naudosiu standartinius 5 % tikslumo rezistorius (nes tokių užteks, o stipriai pigiau nei 1% ar 0,5%), tai vertės bus kažkokios irgi standartinės.
Pasirenku R2 = 22 kΩ, standartinė, niekuo neypatinga varža. O kokia turi būti R1 ? Iš tos pačios formulės:
Jau turime – R2 = 22 kΩ, Vin = 13,6 V, Vout = 8,5 V (nes maksimali galima 9,2 V, paėmiau dar puse volto mažiau ir suapvalinau iki 8,5 V). Dabar jau galima suskaičiuoti.
Standartinė vertė yra 13 kΩ, taigi, perskaičiuojam Vout su Vin = 13,6 V, R1 = 13 kΩ ir R2 = 22 kΩ.
Taigi, mūsų slenkstinė įtampa bus 8,54 V. Papildome schemą:
Dar kartelį, kad užsifiksuoti – kai įėjime su pliuso ženklu įtampa bus mažesnė nei 8,54 V – išėjime bus 0, kai įėjime su pliuso ženklu įtampa bus didesnė nei 8,54 V – išėjime bus 1 (maitinimo įtampa). Dabar reikia sugalvoti schemą tam įėjimui su pliuso ženklu. Kadangi reikia išėjimo atidėjimo, tai logiška būtų per rezistorių užkraudinėti kondensatorių, parenkant rezistorių ir/arba kondensatorių tokius, kad įtampa ant kondensatoriaus perliptų mūsų slenkstinę po mums reikiamo laiko. Papildome schemą kondensatoriaus įsikrovimo greitį ribojančiu rezistoriumi, aišku, kondensatoriumi ir prijungiam kondensatorių prie įėjimo su pliuso ženklu (neinvertuojantis įėjimas):
Dar pridėjau iš 13,6 V stačiakampio impulso generatorių, kurio signalą vėlinsim. Kai atsiranda 13,6 V impulsas, kondensatorius C1 pradeda įsikraudinėti, bet rezistorius R3 tam procesui trukdo, todėl įsikrovimas vyksta lėtai/lėčiau. O komparatoriaus neinvertuojantis įėjimas pastoviai čiupinėja kondensatoriaus įtampą ir vis tikrina, ar jau pasiektas slenkstinis lygis. Šitą vietą galima panaudoti vėlinimo laiko reguliavimui, tereikia keisti arba varžą arba talpą. Rezistoriaus varžą keisti žymiai lengviau, negu kondensatoriaus talpą, todėl kondensatorių pasirenkame nekintamą, tarkim 10 µF, o rezistorių bandysime skaičiuoti, kai maksimalus uždelsimo laikas, tarkim, 5 s.
Standartinė rezistoriaus vertė būtų 510 kΩ. O kokia varža turėtų būti, norint turėti 1s vėlinimą?
Suma summarum, norint turėti reguliuojamą nuo 1 s iki 5 s reikia varžą keisti nuo 100 kΩ iki 510 kΩ. Papildome kuriamą schemą, kai vėlinimas 5 s:
Tokią schemą jau būtų galima surinkti LTspice programoje ir paanalizuoti:
Pasimatuokime įtampas svarbiuose schemos taškuose ir atvaizduokime grafiškai:
Grafikas pasididina. Čia:
Raudona – įtampa, formuojama rezistoriniu dalikliu į invertuojantį operacinuko įėjimą. Simuliacijoje apskaičiuota vertė 8,4931338V.
Mėlyna – stačiakampis impulsas, kuris vėlinamas operacinuku ir išlenda jo išėjime po nustatyto laiko. Impulso trukmė 6 s.
Šviesiai mėlyna – įtampa ant kondensatoriaus ir neinvertuojamame operacinuko įėjime. Matome, kaip atsiradus impulsui, ši įtampa didėja ir, kai pasiekia mūsų nustatytą slenkstinę įtampą atsiranda…:
Žalia linija – mūsų panašiai 6 sekundes užvėlavęs išėjimas, kuris pradingsta, kai dingus impulsui kondensatorius išsikrauna iki slenkstinės įtampos.
Ir iš karto grafike matosi didelis minusas – kondensatorius labai ilgai išsikraudinėja. O blogai tai dėl to, kad jeigu impulsas ateis, kol kondensatorius neišsikrovęs – jis pradės įsikraudinėti ne nuo 0 V, o nuo kažkiek daugiau, tai ir slenkstinės ribos pasiekimo laikas atitinkamas sutrumpės. Reikia tą kondensatorių kažkaip priverstinai iškrauti, kai jo paslaugų mums nebereikia. Tam yra gudras sprendimas – diodas. Schema dabar atrodytų taip:
O grafikas taip:
Viskas atrodo panašiai, bet dabar vos tik atsijungia valdantis impulsas – dingsta įtampa ant kondensatoriaus ir tuo pačiu operacinuko išėjime. Idealu . Taip galvotum, bet iš tikro – ne. Pasižiūrėkim kaip atrodytų, kai valdantys impulsai yra bent du.
Ir ką čia matome ? Ogi kondensatorius realiai nėra iškrautas, todėl atėjus naujam impulsui jis kraunasi ne nuo 0 V, o nuo tos įtampos, kuri liko iš praėjusio impulso. O mums taip netinka, kiekvieną kartą reikia kondensatorių krauti nuo 0 V, kad būtų reikiamas vėlinimas. Panašus vaizdas būtų ir pašalinus diodą:
Principe mano schemai tiktų ir toks veikimas, kai sekantys impulsai turi mažesnį vėlinimą, bet dar paeksperimentuokime su LTspice. Ir dar pastebėjau, kad tokiu vis papildomų įkrovimų atveju, kondensatoriaus įtampa gali pakilti iki maitinimo įtampos, 13,6 V, o tai yra daugiau nei gali atlaikyti operacinuko įėjimas (9,2 V maks.). Pamažinkime mūsų slenkstinę įtampą iki, tarkim 5 V:
Turime – R2 = 22 kΩ, Vin = 13,6 V, Vout = 5,0 V.
Standartinės varžos būtų 36 kΩ arba 39 kΩ. Pasirenkame 39 kΩ, įtampa bus truputį mažesnė (geriau, nei truputį didesnė). Perskaičiuojam Vout su Vin = 13,6 V, R1 = 39 kΩ ir R2 = 22 kΩ.
Slenkstinė įtampa perskaičiuota, pakoreguojam schemą. Grafiškas atitinka skaičiavimą (raudona linija). Lygiagrečiai kondensatoriui pridedame stabilitroną arba, kitaip, Zenerio diodą su 5,6V pramušimo įtampa (STZ5.6NT146). Tai turėtų apriboti maksimalią kondensatoriaus įtampą (melsva linija) iki tikrai saugių 5,6 V. Grafiškai tai atrodo taip:
Pliusas ir tas, kad mažiau įkrautas kondensatorius = mažiau reiks iškrauti po impulso pabaigos. O schema atrodo va taip:
Dabar turime saugius įtampų lygius, kaip ir teisingą veikimą, tuo atveju, jeigu impulsas yra tik vienas arba sekantis impulsas ateina po ilgesnio laiko (kai kondensatorius jau išsikrovęs). Liko tik sugalvoti, kaip iškrauti kondensatorių. Paprasčiausias, bet tuo pačiu ir mažiausiai elegantiškas, netgi brutalus būdas – panaudoti relytę, kuri reikiamu momentu užtrumpins kondensatorių į minusą, taip jį iškraunant iki nulio voltų.
Atnaujinta schema. Nekreipkite dėmesio į DPDT relės tipą, pasirodo LTspice ir labai kūdai su relėmis, tai ką turiu tą ir naudoju. Kai nėra valdančio impulso, relės kontaktai laiko kondensatoriaus teigiamą polių prijungtą prie minuso. R4 (1 kΩ) skirtas apriboti srovę, kuri tekės per relės kontaktus, kai vyks kondensatoriaus iškrovimas. Kodėl 1 kΩ ? A, šiaip. Čia svarbu neviršyti relės kontaktų maksimalios srovės. Nors netgi be rezistoriaus, manyčiau, impulsas bus per trumpas ir per silpnas, kad prideginti kontaktus arba šauti žiežirbą. Bet darom taip, kad būtų tikrai tikrai. O prie 1 kΩ, kai kondensatorius įsikrovęs iki maksimalios 5,6 V įtampos, srovė bus (taip taip, gerbiamieji, Omo dėsnis):
Tai jau bet kokia, net ir silpna relė laisvai atlaikys 5,6 mA trumpalaikę srovę. Jeigu reiktų iškrauti kondensatorių, kurio įtampa aukštesnė, galima būtų skaičiuoti 1 A išrovimo srovę. Tiek laiko netgi paprastos signalinės mikrorelės. Grafikas atrodo va taip (spalvos pasikeitė, nes iš naujo sudėliojau „daviklius”, bet ir taip jau aišku kas čia kur):
Dabar jau abiejų impulsų trukmė vienoda, įsikrovimas vyksta nuo 0 V, nebeaktualus laikas tarp impulsų, nes nereikia laukti, kol išsikraus kondensatorius. Prie esamų nominalų vėlinimas 4,4 s. Jeigu R1 pakeisti iš 750 kΩ į 900 kΩ – vėlinimas bus 5,07 s.
Ties šita vieta schemos kūrimas kaip ir galėtų sustoti, bent jau maketą rinksiu iš to, ką turime dabar. Bet norintiems galima dar patobulinti schemą. Iš grafiko akivaizdu, kad pavėlintas impulsas baigiasi kartu su valdančiuoju impulsu, taigi, jeigu vėlinimas bus toks pat ar ilgesnis nei valdančio impulso trukmė – išėjime neturėsime pavėlinto signalo. Galima būtų sugalvoti, kaip pailginti išėjimo impulsą, kad vėlinimas galėtų būti didesnis nei valdančio impulso trukmė.