Olen suunnitellut pehmeät käynnistimet PIC16C74A / F77-prosessoreilla. Nollan ylitys voi olla hankalaa, jos joudut työskentelemään myös meluisissa ympäristöissä.
Jos et tarvitse prosessoria eristetyksi linjasta, ei ole mitään vikaa siinä, että pari arvokasta vastusta syöttää prosessoria tappi. Lisäisin sisäisiä suojadiodeja vain parin shottky-diodin avulla vain vankkuutena, mutta se toimii hyvin. Jos tarvitset eristämistä, käytä transistorin ulostulon optoisolaattoria. Kiinnitä huomiota opton kytkentänopeuteen ja minimoi transistorin keräimen virta maksimoidaksesi kytkentänopeuden.
Siitä huolimatta siirrymme meluun. Jos ohjaat vaihevaihetta muulla kuin resistiivisellä lämmityksellä, sinulla on melua, joka tarkoittaa, että on todennäköistä, että sinulla on nolla-ylittävä melu. Älä tee alokasvirhettä syöttämällä nollan ylitystulo keskeytystappiin; joka tekee ohjelmistostasi tupakoitavan pahuuden, kun prosessori yrittää käsitellä gazillion-keskeytyksiä. (Puhun kokemuksesta.) RC: n tai edistyneemmän alipäästösuodattimen heittäminen linjalle tuo vain vaihesiirron. Jos pystyt työskentelemään sen kanssa, hienoa. Jos ei (minun piti olla tekemisissä 50/60 ja 400Hz järjestelmien kanssa), sinun on kokeiltava muita keinoja.
Omassa suunnittelussani hoidin sen ohjelmistossa kyselemällä linjaa ja olennaisesti äänestämällä. rutiini, joka ohitti transientit. Vaiheensiirto oli siinä, mitä pystyin käsittelemään, se oli nopea ja se ei kaatunut edes kovassa melussa. (Testattu laitoksessa, jossa he poistivat suodatinkorkit induktiouunista, en ole koskaan ennen nähnyt niin meluisaa viivaa!) Jos suunnittelisin sen uudelleen, luulen voivani kokeilla ulkoista ratkaisua, johon kuuluu yksi laukaus, joka " lukitse "nollaristi ja sitten mikro-ohjain kuittaisi sen ennen seuraavan keskeytyksen asettamista.
Kaiken kaikkiaan luulen, että todellisen nolla-ylityksen löytäminen luotettavasti missä tahansa käytännön tilanteessa oli yksi pehmeän käynnistimen suunnittelun hankalimmista osista. Ohjaussilmukan sulkeminen oli toissijaista, mutta se oli enimmäkseen vain viritystä. Näyttää siltä, että se on yksinkertainen tehtävä, mutta opin melko vähän teorian ja käytännön eroista tuona aikana. :-)
muokkaa kuvaamaan "äänestys" -rutiinia:
Jos muistan oikein, minulla oli I / O-linja, joka oli korkea, kun linja oli yli nollan, ja matala, kun linja oli alle nollan. Äänestysrutiini yksinkertaisesti kysyi tuon linjan ja jos 2 viimeisestä 3 näytteestä oli sama, hyväksyin tosiasian, että linja oli ylittänyt nollan. Se on hyvin samanlainen kuin UART: n äänestyspiiri merkin ja tilan havaitsemiseksi. Tämänkaltaisen piirin etuna on, että vaihesiirtosi on kiinteä (2 * näytetaajuus) ja voit virittää sen kokemaasi melua varten. En muista suoraa äänestystä, mutta jos vaarannan arvauksen, sanoisin 8 kHz, koska numero pysyy mielessäni.