Szervusz!
Az LMX2322 kimenetén milyen a jel kitöltési tényezője, illetve a jelszint? Ha az AVR 5V-ról megy és a bemenete ST trigeres (ezt nem tudom) akkor a 3 V -ról üzemelő (? kapcsolást nem láttunk) előosztó nem biztos hogy elegendő szintű jelet ad. (kisebb frekvenciákon még talán épp elegendőt)
Az LMX2322 adatlapján valóban 3,9 V-os a maximum tápfezültség, de évek óta használom ezt az IC-t 5V-os tápról, mindig megbízhatóan, hiba nélkül működik 5V-ról is, 0 melegedés mellett.
Szóval jelen esetben is 5 V-ról üzemel, így a mikrokontroller is 5V amplitúdójú jelet kap. A kitöltési tényező az osztásaránytól függ. Minél nagyobb osztást állítok be, annál kisebb lesz. De 64-es és 1000-es előosztásnál is ugyan addig mér a műszer, tehát ebből következően én nem tartom valószínűnek, hogy a kitöltési tényező a probléma
Ha minden hardveres okot kizártunk, akkor nem marad más mint a szoftveres hiba! És mivel többféle előosztásnál is ugyanannyi a kijelzett max érték, ezért valószínűleg a kiírásért felelős rutinban van hiba.
Igen, ezek után valószínűleg itt lesz a hiba, bár néhányszor már végigfutottam rajta, illetve kézzel is végigszámoltam, hogy az algoritmus szerint minek kell kijönnie. De akkor folytatom tovább!
Az algoritmus akár lehet jó is, de ha mundjuk egy változó hossza/típusa nem elég abból is lehet gond, pl. egy előjeles 16 bites szám legnagyobb értéke 32 767 lehet...
A változókból is a lehető legnagyobbat használom, melynek a legnagyobb értéke 2147483647. Erre én is gondoltam, eredetileg nem ilyen típusú változóval írtam meg, mégis ugyan addig mért a műszer.
Most van egy ötletem, még megpróbálom azt, hátha beválik.
Az LMX2322-es bemenetét egy 100kohmos ellenállással lehúztam GND-re, így ha nincs bemenő jel, akkor 0-t mutat. (de ugyan ez a trükk nekem működött MB501-nél is)
Most minden elképzelhető változót kiírattam LCD-re, és minden jónak tűnik az algoritmusban.
Kipróbáltam azt is, hogy a mikrokontroller számlálója helyett egy konkrét, 450 MHz-es jelnek megfelelő számot írok be a bizonyos változóba fixen, hogy abból utána jól számolja-e ki, hogy 450MHz-es a jelem, és így működik is. Megjelenik a kijelzőn, hogy 450.000 MHz.
Innentől kezdve a változók típusa, és az algoritmus is jónak kell, hogy legyenek.
Viszont ebben az esetben a mikrokontroller valamiért nem számolja meg rendesen a bemenetére jutó impulzusokat.
Jelenleg 640-es osztást állítottam be, így 450 MHz esetén kb. 700 kHz-es jelet kellene mérnie, de valamiért mégsem megy.
Kösz az infót! Az MB501 a működési elvéből is, illetve a felhasználási köréből adódóan csak speciális körülmények között működik normálisan, mivel ahova tervezték mindig van megfelelő bemenő jel rajta.
Cak egy tipp: ha C-ben van a program akkor szorzás osztás esetén lehet az is hogy egy 32 bites számot szorzol/osztol egy 16 bites számmal (állandóval, pl.1000-el) akkor az eredmény is 16 bites lesz, hiába 32 bites változó van az értékadás bal oldalán. De kód nélkül csak tippelgetni lehet...
Mellékeltem két képet az LMX2322 kimenetéről. Az egyiken 446, a másikon 868 MHz-el volt megtáplálva, és mindkét esetben 640-es előosztás volt beállítva. Viszonylag jól látszik, hogy a nagyobb frekvencián az impulzus szélessége is jócskán lecsökkent, kihegyesedett.
Lehet, hogy az a probléma, hogy adott frekvencia fölött már túl kicsi a kitöltési tényező?
Most látom, amit írtál. Hát igen, megnéztem 100 MHz-en is, ott még egész szélesek ezek az impulzusok. Majdnem négyszögjel alakú a kimenet.
Lemértem, 446 MHz-en kb. 40ns széles az előosztó kimenetén megjelenő tüske (kb ekkora szélességben van 3V fölött).
Szerintem biztos, az AVR számlálójának a felső határfrekvenciája négyszögjelre van megadva, de igazából meghatározott ideig kell magas illetve alacsony szinten lennie a bemenetnek, mielőtt a le/felfutó él jönne és abból kell az igazi határfrekvenciát számolni az impulzus szélességet figyelembe véve. Az előosztó adatlapját nézve nem túl nagy a kimenet terhelhetősége sem, ami nagyobb kapacitív terhelésnél a szkópképen láható jelenséget ("hegyesedés") okozhatja, bár itt a szkóp kábel kapacitása is bezavarhat, főleg ha nem 1/10 állásban van. Az AVR-nek van belső előosztója?
Az a 40 ns --> 12,5 MHz frekvenciát jelent 50%-os kitöltési tényezőjű négyszögjelre konvertálva!
Köszönöm az eddigi segítségeket.
Nagyon úgy tűnik, hogy az a baj, amit írtál. Túl keskenyek már az impulzusok hozzá, hogy meg tudja számolni.
A szkóp mérőfeje 1/10-es állásban volt.
Esetleg még az lehet megoldás, hogy az LMX2322 kimenetére bekötök egy flip-flopot. Szerinted ez működne? A flipflopnak elég lenne egy ilyen keskeny impulzus?
Vagy tegyek az LMX kimenetére egy tranzisztoros fokozatot a terhelés miatt?
A flip-flop volt nekem is az első gondolatom, a korszerű (HC) CMOS logikák már elég gyorsak, és szép 50%-os négyszögjel jelenik meg a kimenetén.
A tranzisztoros vagy gyors CMOS buffer is alternativa, csak valószínű, hogy messze nem fogja a szükséges 2,5 szeres növekedést okozni.
Látható, hogy az LMX2322 belső 32/33-as előosztója determinálja a felső határfrekvenciát...
Igen, az egész alapötlet innen indult, ezért is terveztem és építettem meg a mostani műszert, innen kaptam kedvet hozzá.
A baj csak ott van, hogy a PICekhez egy kicsit sem konyítok, és van egy olyan érzésem, hogy nem is fogok
Ma bekötöttem az LMX2322 kimenetére egy JK flip-flopot, hogy korrekt, 50%-os kitöltési tényezőjű jelet kapjak, a nagy frekvenciákon megjelenő, keskeny tüskék helyett. Működik is rendesen, a flip-flop kimenetén megjelenik a kívánt kitöltési tényezőjű jel, viszont ezt hiába kötöm a mikrokontroller megfelelő lábára, az nem számol. Folyamatosan 0.0000MHz-et mutat. Ha visszakötöm közvetlenül az LMX kimenetére, akkor pedig mér (a korábban tárgyalt felső határig).
A flip-flop típusa egy 74HC109-es, szkóppal lemértem, a kimenetén minden ott van, ami kell.
Van esetleg valami ötletetek, hogy mi lehet a gond így látatlanban?
Látatlanban elég rejtélyes a dolog...
Az előosztót direktbe kötöd az AVR bemenetére, nincs közte/rajta egyéb áramköri elem?
Egy áramköri részlet jó lenne, vagy egy szkóp kép az AVR bemenetéről mikor nem mér. (AC és DC szint)
Most van két megépített frekvenciamérőm. Az egyikben az előosztó LMX2322, a másikban LMX2306.
Ktulu linkje alapján az előosztó után kötöttem egy tranzisztoros fokozatot (BFR93), és úgy kötöttem rá az ATMega8 bemenetére.
Az az érdekes helyzet állt elő, hogy ha ezt a tranzisztoros leválasztó fokozatot az LMX2306 után kötöm be, akkor tökéletesen működik az áramkör több száz MHz-ig. Ha viszont az LMX2322 kimenetére kötöm ugyan ezt a leválasztó fokozatot, akkor nem mér semmit a mikrokontroller (0.0000MHz a kijelzés).
A dolog már csak azért is furcsa, mert szkóppal nézve mindkét esetben teljesen ugyan olyan jelet látok a kimeneten.
LMX2306-ra kötve gyakorlatilag tetszőleges előosztással működik, kipróbáltam 10-1000 között többféle értéket is. LMX2322-nél viszont leosztástól függetlenül nem mutat semmit.
Igazából abszolút nem értem a dolgot, de a lényeg, hogy az LMX2306-tal és a BFR93-mal tökéletes az áramkör. Úgyogy a további fejlesztéseket/méréseket ezzel az áramkörrel fogom csinálni, az LMX2322 bekerül a fiók mélyére...
Egyre nehezebb követnem az eseményeket!
Most akkor az LMX2306 és a BFR93-mal elmegy 1 GHz-ig? Nem kell a 74HC109? (a LMX2306 is csak 550 MHz-es a katalógus szerint)
Azért az elgondolkodtató, hogy a katalógus alapján az LMX2306 2,3 - 5,5 V míg az LMX2322 2,7 - 3,9 V között működik! Így talán nem is meglepetés hogy 5 V feszültségen az LMX2322-vel gondok vannak. Ráadásul a BFR93-as "illesztő" fokozat is problémás lehet ha a meghajtás maradékfeszültsége meghaladja a 0,5 V-ot, ami a katalógus adatnál nagyobb feszültséggel megtáplált LMX3222-vel elő is fordulhat, ha még nem is megy tőle tönkre. (a BFR93 egyszerűen nem tud lezárni...)
Elnézést, ha kicsit követhetetlenül írtam, elég sok mindent kipróbáltam viszonylag rövid idő alatt.
Kezdtem azzal, hogy az LMX2322 kimenetére egy 74HC109-es flip-flopot kötöttem. Ekkor a 109-es kimenetén gyönyörűen meg is jelent az 50% kitöltési tényezőjű négyszögjel, viszont a mikrokontroller ezzel továbbra sem tudott mit kezdeni (jó kérdés, hogy miért nem).
Ekkor vettem elő egy régebbi, LMX2306-ra felépített frekvenciamérőmet, amely eddig kb. 100 MHz-es felső határfrekvenciával tudott csak mérni (valószínűleg a növekvő frekvenciánál jelentkező egyre kisebb kitöltési tényező miatt). Most annyit módosítottam rajta, hogy az LMX2306 kimenetére bekötöttem az említett fokozatot BFR93-as tranzisztorral. Ezzel a megoldással az áramkör egyből működött, és a PMR rádió 446 MHz-es jelét is gond nélkül pontosan tudtam vele mérni. Ez az IC, ahogyan említetted is, csak kb. 500 MHz-ig mér, nagyobb frekvenciájú jellel nem is próbáltam megtáplálni. De a lényeg, hogy most amit tud az LMX2306, azt méri is a műszer, nem akad el 100 MHz környékén
Ezen felbuzdulva kötöttem rá ugyan ezen tranzisztoros meghajtó fokozatot az LMX2322 kimenetére. Szkópon szépen látszik minden, és úgy is néz ki minden, ahogyan a nagy könyvben meg van írva. Ennek ellenére sajnos ebben az esetben a frekimérő megintcsak nem működik De már arra is gondoltam, hogy a sok forrasztással és próbálkozással tönkretettem a mikrokontroller bemenetét.
Igazság szerint már nincs kedvem újabb NYÁKot tervezni/készíteni és kipróbálni új LMX2322-vel és új mikrokontrollerrel.