Frekvencia mérése
Frekvencia mérése
Sziasztok!
Vass Csaba vagyok, kb 1 hónapja boldog MegaBoard tulajdonos. Most kezdtem az ismerkedést ezzel a témával, nagyon megfogott.
Olyan kérdésem lenne, hogy hogyan tudnám megmérni egy négyszögjel frekijét (1 Hz pontossággal) , amit ki tudok íratni az LCD-re? A freki nem magas, 1kHz alatti.
Előre is köszönöm válaszotokat: Vass Csaba
Vass Csaba vagyok, kb 1 hónapja boldog MegaBoard tulajdonos. Most kezdtem az ismerkedést ezzel a témával, nagyon megfogott.
Olyan kérdésem lenne, hogy hogyan tudnám megmérni egy négyszögjel frekijét (1 Hz pontossággal) , amit ki tudok íratni az LCD-re? A freki nem magas, 1kHz alatti.
Előre is köszönöm válaszotokat: Vass Csaba
A bemenőjel négyszög, vagy legalábbis négyszögesíthető, periódikus?
Akkor INTx lábon megfogod. 2 impulzus közt eltelt idő a periódusidő.....
Ehhez kell egy timer0/timer1 (a Timer 1 a 16bites szamlalo miatt jobb), és az egyik INT.
A progi elejen timert inditod, es a int engedelyez.
"Foprogram"
Int beesik:
idozito kiolvas->periodusido az elozo impulzusnak
idozito nullaz (Stop Timer1;timer1=0;start timer1)
Return
Igy minden impulzust megnezel megmertel, azaz van egy keped arrol hogy ingadozik e a freki (itta frekvencia reciprokat kapod).
Masik megoldas:
Timer indit
ha timer1>1sec eltelt, akkor disable intx
LCDkiir: 1/impulzusszam
Timer0-z, Int engedelyez
goto progi eleje
Intx:
impulzusszam=impulzusszam+1
Return
Szóval valami hasonló a programváz.
Akkor INTx lábon megfogod. 2 impulzus közt eltelt idő a periódusidő.....
Ehhez kell egy timer0/timer1 (a Timer 1 a 16bites szamlalo miatt jobb), és az egyik INT.
A progi elejen timert inditod, es a int engedelyez.
"Foprogram"
Int beesik:
idozito kiolvas->periodusido az elozo impulzusnak
idozito nullaz (Stop Timer1;timer1=0;start timer1)
Return
Igy minden impulzust megnezel megmertel, azaz van egy keped arrol hogy ingadozik e a freki (itta frekvencia reciprokat kapod).
Masik megoldas:
Timer indit
ha timer1>1sec eltelt, akkor disable intx
LCDkiir: 1/impulzusszam
Timer0-z, Int engedelyez
goto progi eleje
Intx:
impulzusszam=impulzusszam+1
Return
Szóval valami hasonló a programváz.
"Periódusidő" mérése
Hello!
Asszimetrikus négyszögjel "periódusidejét" szeretném megmérni. Pontosabban külön a "H" hosszát illetve az "L" hosszát.
A példapogramok alapján a teljes hossz mérése nem látszik nehéznek.
Config Timer1
Prescale xx
Capture Edge rising
stb....
Ez a megoldás csak a teljes periódus hosszának mérésére alkalmas(?).
Létezik-e egyszerű megoldás a Capture felhasználásával a mérésre?
Külső hardvert igénylő elgondolásom van:
A mérendő jel kapuz egy ismert stabil generátort,a kapun átjutó
impulzusokat megszámolom és ebből számítom az időt.
Ennél egyszerűbbet szeretnék,ha van!
Asszimetrikus négyszögjel "periódusidejét" szeretném megmérni. Pontosabban külön a "H" hosszát illetve az "L" hosszát.
A példapogramok alapján a teljes hossz mérése nem látszik nehéznek.
Config Timer1
Prescale xx
Capture Edge rising
stb....
Ez a megoldás csak a teljes periódus hosszának mérésére alkalmas(?).
Létezik-e egyszerű megoldás a Capture felhasználásával a mérésre?
Külső hardvert igénylő elgondolásom van:
A mérendő jel kapuz egy ismert stabil generátort,a kapun átjutó
impulzusokat megszámolom és ebből számítom az időt.
Ennél egyszerűbbet szeretnék,ha van!
Nagy frekvencia mérés
Sziasztok!
Mekkora a legnagyobb frekvencia, amit az attiny2313 be tud fogadni az intx1,2 es lábain?(lehetőleg fel is dolgozza)
.Mondjuk 20MHz-ról járatva
Mekkora a legnagyobb frekvencia, amit az attiny2313 be tud fogadni az intx1,2 es lábain?(lehetőleg fel is dolgozza)
Hát, igazából frekvenciamérőt szeretnék csinálni, 5Ghz-ig. Ezt rf tranyókból összeállított d-flip-flop okkal akarom leosztani. Csak az a kérdés, hogy meddig kell leosztani?Mennyi a maximális frekvencia, amit képes feldolgozni?
Úgy találtam, az általad belinkelt linkben, hogy 1,5MHz.Ez helyes?(Ha rossz a kérdés, akkor boccs)
Úgy találtam, az általad belinkelt linkben, hogy 1,5MHz.Ez helyes?(Ha rossz a kérdés, akkor boccs)
Hello!
Végigolvastam a frekimérős témát de nem találtam meg benne az én elképzelésemet. Van egy négyszögjel vagyis sok és azt szeretném mérni ,hogy a felfutás és a lefutás között mennyi idő telik el majd ezeket összeadva kapok egy eredményt...itt igazából az eltelt idő lenne a fontos a négyszögjelet egy schmitt trigger szolgáltatja és Atmega16-os kontrollerem van. Mivel lehetne ezt a legpontosabban mérni és hogyan:?:
Végigolvastam a frekimérős témát de nem találtam meg benne az én elképzelésemet. Van egy négyszögjel vagyis sok és azt szeretném mérni ,hogy a felfutás és a lefutás között mennyi idő telik el majd ezeket összeadva kapok egy eredményt...itt igazából az eltelt idő lenne a fontos a négyszögjelet egy schmitt trigger szolgáltatja és Atmega16-os kontrollerem van. Mivel lehetne ezt a legpontosabban mérni és hogyan:?:
Megcsináltam ezt már hamarabb is csak nem teljesen világos, hogy ezen az ICP bemeneten most mit is kapok meg ha leosztom pl. 1024-el.. a mérés egy induktív elmozdulásérzékelővel történik amit egy Schmitt trigger alakít át mint már írtam és ez pedig az ICP bemenetre. Egyébként ez a bemenet elég érzéken ha már hozzányúlok kézzel azt is számolja... ezért egy 1nF-os kondit rátettem így már jónak bizonyul, szóval a megírt programod szépen fut 1024-es leosztásban 380-at ír ki átlagban 256-nál pedig 1535 körüli az érték.
A kérdésem, hogy ez most milyen idő a nyészögjel felfutás és lefutását mérem ezzel? Elolvastam a könyvnek az erről szóló részeit de nem egy értelmű sok dolog mivel kezdő vagyok.
$crystal = 14318180
$regfile = "m16def.dat"
Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising
Dim Wtime As Byte
Dim Timercounter As Word
On Capture1 Captmr
Wtime = 20
Timercounter = 0
Enable Interrupts
Enable Capture1
Do
Waitms Wtime
Cls
Lcd "pwidth: " ; " " ; Capture1
Loop
Captmr:
Timercounter = Capture1
Timer1 = 0
Return
End
A kérdésem, hogy ez most milyen idő a nyészögjel felfutás és lefutását mérem ezzel? Elolvastam a könyvnek az erről szóló részeit de nem egy értelmű sok dolog mivel kezdő vagyok.
$crystal = 14318180
$regfile = "m16def.dat"
Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising
Dim Wtime As Byte
Dim Timercounter As Word
On Capture1 Captmr
Wtime = 20
Timercounter = 0
Enable Interrupts
Enable Capture1
Do
Waitms Wtime
Cls
Lcd "pwidth: " ; " " ; Capture1
Loop
Captmr:
Timercounter = Capture1
Timer1 = 0
Return
End
