Fórum témák
» Több friss téma |
Ha 10mF-ot párhuzamosan kötök, akkor az eredő 10,0001 mF lesz, nem? (nem mikrora gondoltál?) Tehát a 100nF már igazán nem jelent semmit.
A reset esetében nem elég, ha a belső felhúzót aktiválom? (Feltétlen tegyek rá kívülről?) Amúgy megpróbáltam megérinteni, de különösebb változás nem volt.
Ha van neki belső ,akkor nem szükséges a külső.
Köszönöm a választ. Tehát akkor a 100nF (nekem ez perpill fóliakondi, az baj?) és a 10µF is kell nekem (és mikro, nem milli, azaz proba elírta?), melyeket simán a táp föld közé bekössek, párhuzamosan? Volt egy régebbi kérdésem is, hogy több (2-3) IC esetén is elég 1 db 100nF hidegítőnek, vagy szorozni kell?
Nos... próbálkoztam. Vilmosd javaslatai alapján megcsináltam az oszcilloszkópot, és így lehetőségem lett néhány dolgot megmérni.
Az AVR-emre a ZCD helyett rákötöttem egy 555-ös IC-t, melynek 100Hz-es négyszögjel volt a kimenetén (oszcival ellenőriztem). Sajnálatos módon az AVR-re kötött LED így is villogott, így utánanéztem, hogy jól érzékeli az interruptot, de az ábra alapján igen. Ami viszont eltért, az az impulzus szélessége (az AVR úgy működött, hogy számlált (kb 100Hz-es időzítő), és ha jött egy interrupt, akkor amíg a számláló le nem telik, addig kiad egy impulzust). A továbbiakban tehát erre kell továbbmenni szerintem. Ezután megmértem egy optocsatolón keresztül a ZCD-m kimenetét a szkóppal, és teljesen jól adta az impulzusokat, 10ms-onként egy-egy 250us hosszút. A kondenzátorokkal kapcsolatban azt a javaslatot kaptam, hogy a 100nF-os mellé tegyek egy 10µF-osat is. A boltban azt javasolták, hogy polarizált tantál kondit vegyek, így az lett. Ráraktam ezt is a táp és a föld közé, de semmi változás nem történt. Összefoglalva valami az AVR időzítésével nem stimmelhet. Mivel a számlálója 80kHz-en megy, így az legfeljebb 12,5us késleltetést eredményezhetne egy interrupt észlelésében, kezelésében stb. A hangkártya 44kHz-e pedig kb. 25us mérési hibát eredményezhet. Minden esetre az impulzusok kb. random 50 us-es intervallumban változnak, és a LED is szemmel láthatóan villog tőle. A tervem most egy nagyon egyszerű assemblys kód, amivel fix időzítést érek el. Ezzel tesztelném, hogy megszűnik-e a villogás, akár az 555-ös, akár a ZCD szolgáltatja az interruptokat. Bármi javaslatot szívesen meghallgatok ehhez, vagy ha szükséges, megmutatom a forráskódot, stb. Köszönök minden eddigi segítséget is!
Hát nem jutottam sokkal előrébb.
Az AVR-t most assemblyben programoztam, kétféleképpen is. Az egyik az érkező interruptra várakozó hurokkal késleltetve ad impulzust, a másik meg rendesen, belső számlálót használ erre. Szkóppal nézve mindkettő megoldás jól adja az impulzusokat, továbbá most így LED-et rakva a lábra sem látni villogást. Élesben, SSR-rel kipróbálva viszont hasonló eredményt kaptam, mint eddig. Mi legyen szerintetek a következő lépés? Egy RC az SSR két AC lába közé snubber gyanánt? (Ha igen, akkor pl. 100 Ohm 0.6W-os fémréteg ellenállás, és egy 47 nF-os 630V AC kondi megfelel sorba kötve?)
Kösd be élesbe az egészet ,ezután amivel a jelalakot vizsgáltad kösd az int bemenetre. Itt vajon változik valami?
Az AVR kimenetére mekkora terhelést raktál, lehet az generál valami zavart. Utólag visszagondolva,a 100nF-ra túlságosan sokat javult a szerkezeted.(általában a hiánya csak ritkán előforduló hibákat okoz.) Ha módod van ,mérj felvett áramot az 5V oldalon,teljesen összerakott áramkör esetén.
A szkóppal terhelés alatt is mértem a jelalakokat, és különösebb bajt nem észleltem, ugyanúgy jöttek az impulzusok. Minden esetre a biztonság kedvéért mérek még egyszer. Az AVR kimenetén csak az SSR ledje van, de direktben egy (most épp) 220 Ohmon keresztül (tehát nincs semmi tranyó előtte...). Meg fogom még nézni, hogy kb. 500 Ohm esetén mit csinál.
Áramot sajnos nem tudok pontosan mérni a mostani multiméteremmel, de tervben van a cseréje, meg azért megpróbálom majd kihozni ebből is a maximumot.
Továbbra is jónak tűnik terhelés alatt is az időzítési viszony. Megnéztem az SSR LED-jét 500 Ohmmal hajtva, úgy is megy, de ugyanúgy látszik a villogás. Az áramot amennyire tudtam, megmértem, kb. 12-16 mA.
Az impulzusok pontossága volna igazán fontos (a közöttük lévő távolság nem változik) .Ha ez jó akkor passz.Ja és a programodat ugyan azon az elven írd át asm-be amivel a ledek vibrálását nézted és nem vibráltak.
Amennyire a hangkártyás szkóp mérési pontossága megbízható, annyira a ZCD és az SSR gyújtó impulzus felfutó élei állandó távolságra vannak egymástól.
Ha gondolod, megmutatom a szkóp képét, meg ha értesz az AVR assemblyhez, akkor a forráskódot is, bár tény, h ennél jobban nem nagyon lehetne lebutítani az AVR programját. (Most csak annyit csinál, hogy az interrupt beérkezésénél fix hosszút vár egy ciklusban, aztán felkapcsol, majd még vár kicsit egy másik ciklussal, aztán lekapcsol. Még a timerét is letiltottam, h csak ez az egy interruptja legyen.)
Ha programból az SSR kimenetét letiltod ( kikapcsolod a portot ) akkor megszűnik a villogás?
Ha megszűnik, akkor a szinuszhullám végét nem nullátmenet vezérléssel oldod meg, hanem egyszerűen lekapcsolod a portot KB 95-98% -nál. 10-20V -os feszültségnél egy hagyományos 230V-os izzó nem fog nagyon világítani...
Sajnos nem értem, mire gondolsz. Jelenleg egy gyújtó impulzust használok, s az SSR a nullátmenetnél kikapcsol. Ha arra gondolsz, nem kapcsol ki előbb, végig megtartja. (Különböző szélességű impulzusokra is ugyanaz az eredmény.)
Azt viszont megjegyezném, hogy a proba által javasolt összehasonlító programmal továbbra is villognak a LEDek, akár a ZCD, akár az 555 szolgáltatja az interruptokat. Szkóppal itt sem látni drasztikus dolgokat, bár egy kis impulzus-szélesség ingadozás látható - gondolom ez okozza a villogást.
Mutassak esetleg C kódot, hogy mit csinál, hátha valamit elnéztem?
Tilts le programból az SSR teljes vezérlését 95%-os kitöltési tényező elérésekor. ( 5%-os bekapcsolási érték alatt. )
Nem tudom, hogy ugyanarra gondolsz-e, amire én. Ha arra, hogy nagyon kis fényerőt ne engedélyezzek, az megvan, a legkisebben is 2ms-kel a nullátmenet előtt van gyújtás -> 20%.
Továbbá mostmár a "kínomban" írt program nem is képes a fényerő állítására, konstans értéket vár nullátmenet után (kb. 7 ms), aztán gyújt, aztán még vár megint konstans értéket (kb 1,2 ms), és kioltja.
Hali
Nem figyeltem vegig az esemenyeket, de nincs veletlenul olyan, hogy az uj impulzus igelyen meg lehet az elozobol megmaradt impulzus. Tehat azt szeretnem mondani, hogy meg kint van a vezerles amikor beut a kovetkezo ZC.
Szkóp alapján sincs, meg ugye elméletileg is 10 ms-ként jön. Sajnos kezd reménytelen lenni úgytűnik :S
Az a baj, hogy nem tudom, merre induljak, mert pl a proba által javasolt programban tényleg gáz, ha villog a LED. Ugyanakkor a konstans várakozó program esetében nem villog. A program is olyan egyszerű, hogy nem hinném, hogy ebből gond lehetne. Elég tanácstalan kezdek lenni.
Hali
Hogy kezdjuk az elejen ujra, tedd fel a kapcsrajzot, ami most ossze van rakva, es a programot. "Tobb szem tobbet lat" jeligere a kiadoba.
Ha tudsz javasolni valami kapcsrajzkészítő progit, ami az AVR-eket is ismeri, szívesen lerajzolom vele. Minden esetre a proba által javasolt elrendezés nem egy nagy kaland. Van egy ATtiny13-mas AVR, annak a külső interrupt lábára van kötve egy 555 kimenete (kb. 99,5 Hz-es négyszögjelet ad). A tápon van egy 100 nF-os kerámiakondi. Az AVR kimenetként használt lábait mérem, de mivel az 555 frekije kisebb, mint 100 Hz, az AVR által mért idő előbb letelik, s így csak a RED LED világít, és persze picit vibrál is...
Táp továbbra is PC USB. A C forráskód: Bővebben: Link Nagyon remélem, hogy valaki tud ehhez hozzászólni... előre is köszönök minden segítséget!
Idézet: Eagle demo, Kicad. Az elsonek vannak sajat lib-jei, es a Cadsoft oldalrol letoltheto 1000+1 marek lib. Korlatozott, de ha nem akarsz 16 retegu A4-es PCB-t csinalni azert hasznalhato. A Masik teljesen free. „Ha tudsz javasolni valami kapcsrajzkészítő progit”
Köszönöm, nemsokára utánanézek.
Raktam snubbert az SSR 2 AC lába közé: 47 nF + 47 Ohm. Semmi változás.
Talán én az elvet módosítanám.Minden nullátmenetnél indítanám az időzítőt (az osztásokat úgy állítanám be hogy 10ms nél hoszabb legyen egy teljes ciklus (akár az órajelem csökkentése árán is) És mintha lenne egy olyan módja az időzítőnek hogy egy bizonyos szám elérése esetén egy megszakítást generál.
Nullátmenet -indítja az időzítőt Időzítő megszakítás-bekapcsolja a kimenetet,feltölti az összehasonlító regisztert,késleltet egy kicsit,kikapcsolja a kimenetet. kezdődhet minden elölről Az időzítőt nulláról (nem csak a számlálót hanem a timmert is) és a megszakításból kellene indítani minimum.Ha nem így teszel már egy +-800 ad hibával indulsz neki az egésznek.
Hali
Belelestem a progidba. Elorebocsajtom, nem ismerem az Atmel procikat, de viszont az elektronikat ismerem. Meg kellene probalni a progiban atirni a port IT-t "Falling Edge"-re. Mert igy meg a nullatmenet elott IT-t ker, viszont ha atirod, biztos a nullatmenet utan tortenik az IT.
Igazad van, de ha ezt az ember beszámolja, nem lehet gond, a lényeg, hogy egyenletesen kapjam az interruptot. Szóval a rising edge nem elhet gond a konstans várakozós progiban, ahol ugye kb. 7ms-et vár az interrupt után, és gyújt. Próbáltam fallinggal, ugyanazt csinálta. Azért választottam a risingot, mert a ZCD impulzusa lényegében egy kondi kisütése, és a kezdete talán pontosabb, mint a vége.
Sajnos elsőre nem fogtam fel pontosan, amit írtál, ezért elmondom azt, ahogy az én fejemben megszületett:
A Timer jelenleg 80kHz-cel ad interruptot. Ez úgy jön össze, hogy a 9,6M-es órajelet 8-cal osztom, és egy számláló 0-14-ig számol, 14-nél interrupt jön (ez a komparálási szint). Ezt módosítsam úgy, hogy a számláló ne járjon állandóan, hanem csak a ZCD érkezése indítsa el, mégpedig nulláról, és a fényerőszint függvényében állítsa be a komparálási szintet. Amikor letelik, és megkapom az interruptot, akkor tiltsam le a számlálót, kapcsoljam be a kimenetet, várjak kb 0,5-1 ms-ot, aztán kapcsoljam ki. Erre gondoltál? Ha igen, megpróbálom. Mindenesetre kétlem, hogy ez pontosabb lenne, mint az a változat, amikor még timert se használok, csak a ZCD interruptjában várakozok egy fix hosszú hurokkal.
Igen ,ha a számlálód az egész 10ms ciklust egyben átfogja.Ha több megszakításból kell összerakni akkor már biztosan rosszabb.
Arra figyelj hogy a nullátmenet megszakításnál az első utasítás a számláló indítása legyen,a timmernél pedig a port bekapcsolása.( már itt beállíthatod a következő interrupt összehasonlító értékét ,valamint nullázhatod a számlálót az összes előosztójával együtt.)
Igenám, de szerinted ez tényleg megoldhatja, hogyha a ZCD interruptba ágyazott fix hosszú várakozó hurok sem segített? (Csak mert ott ugye tényleg fix utasítássor hajtódik végre, mivel assemblyben írtam, és annak az ideje konstans...) Ha úgy érzed, van értelme, megcsinálom.
Egyébként szerintetek lenne értelme megpróbálni egy sima triaccal? (Mint ahogy az eredeti rajzon volt? Aztán ha az jó, akkor elé egy opto... Nem tudom, mennyire van különbség a triac és az SSR között, árban minden esetre van a triac javára.
Ha biztos hogy fix hosszú volt,akkor nem segít szerintem sem.
Keress egy 12V transzformátort.utána köss egy graetzet.Ennek a negatív ágát testre,a pozitívot egy 100K ellenálláson az AVR int bemenetére.A bemenetre párhuzamosan egy 4,7V zenert is tegyél.És próbáld ki ezt az összeállítást ,hogyan szabályoz. Esetleg próbád ki egy nem 40 hanem 60W égővel.
Ezt most nullátmenet detektáló cuccnak gondoltad?
|
Bejelentkezés
Hirdetés |