Sida 1 av 2
Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 13:28:27
av bos
Låt oss säga att jag har en frekvensgenerator som spottar ut fyrkantsvågor i upp till och med 1MHz. Jag vill med en PIC16 räkna antalet pulser via CCP-modulen.
När det gäller att sampla analoga signaler så sägs det enligt Nyqvist att man ska sampla dubbelt så snabbt som den högsta frekvensen för att inte riskera att missa något.
Gäller Nyqvist även i mitt fall? Dvs för att inte riskera att missa någon puls i 1MHz så måste jag ha en FOsc/4 på minst 2MHz, dvs så måste jag låta min PIC köras i minst 8MHz. Stämmer detta?
Även om generatorn skulle köras i 900kHz så skulle en Fosc/4 på 1MHz (kristall på 4MHz) kännas alldeles för nära gränsen för att missa pulser, men det är bara en gissning.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 13:36:15
av vfr
Nej. Nykvistteoremet har att göra med hur fort du måste sampla för att återskapa en signal med rätt frekvens. I ditt fall måste du bara se till att du samplar så fort att du inte missar några pulser. Hur fort du måste klocka, beror helt på hur du mäter pulserna. Du kan ju använda ren mjukvara, eller t.ex CCP-enheten i PIC:en. I första fallet så får du räkna på instruktionstiderna för koden, i andra fallet kolla specarna för CCP-enheten i databladet.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 13:41:35
av bos
Tack för svaret. Jag glömde bort att Nykvist var för återuppbyggande av signaler.
CCP-modulen är som sagt den jag ska använda. Jag får dyka ner i pappren och se vad som står där.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 13:43:54
av vfr
Sorry, missade det om CCP. Du kan nog peta på rätt bra frekvens om du kör med CCP:n. Har dock inga siffror i huvet.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 14:00:47
av jesse
Kanske du kan sätta en räknare på ingången som delar frekvensen med 64 eller nåt liknande, om den inte ska räkna exakt antal pulser utan antalet pulser under en längre tidsperiod (sekund)
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 14:05:38
av blueint
Samplingsfrekvensen bör nog var mer
än den frekvens som ska mätas. Men den behöver bara något mer. Så att man undviker dom situationer då signalerna skulle gå synkront och felaktigt signalera en stilla signalnivå

Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 14:35:37
av Mindmapper
Beroende på dutycycle kan det nog behövas en hel del mera av samplingen.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 15:00:26
av sodjan
Du ska alltså bara *räkna* antalet pulser ?
Kolla datablaet och se om "CAPTURE/COMPARE/PWM TIMINGS"
inte räcker till...
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 15:41:48
av bos
sodjan skrev:Du ska alltså bara *räkna* antalet pulser ?
Korrekt.
sodjan skrev:Kolla datablaet och se om "CAPTURE/COMPARE/PWM TIMINGS" inte räcker till...
*läser*
Där finner jag att den ingående perioden måste vara större än Tcy + 40ns. Tcy definieras som 4/Fosc. Med ingångspulser på 1MHz blir det en periodtid på 1µs.
Jag får ekvationen till Tcy + 40ns < 1µs <=> 4/Fosc < (1µs - 40ns) <=> Fosc > [4 / (1µs - 40ns)] <=> Fosc > 4.16MHz.
En oscillator på 8MHz duger med andra ord så att det räcker och blir över. Tack för pekaren.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 15:52:35
av Icecap
Och uppmärksamma att detta kräver en duty-cycle på 50%!
Men jag undrar hur du ska räkna antal pulser vid en kontinuerlig frekvens eller är det något jag inte har fattat?
Ska du räkna en pulsskur eller ska du mäta frekvensen?
Är det det första ska du knappast använda CCP-modulen och är det det andra klarar den inte jobbet utan en nerdelning innan.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 16:02:15
av bos
Icecap skrev:Ska du räkna en pulsskur eller ska du mäta frekvensen?
Är det det första ska du knappast använda CCP-modulen och är det det andra klarar den inte jobbet utan en nerdelning innan.
Skulle du kunna utveckla det sista om varför den inte klarar jobbet utan nerdelning? Är det något grundläggande jag missat i databladet?
Tanken med kretsen är att min PIC ska mäta frekvensen (som kommer ligga någonstans mellan 0.5-1MHz). Det finns kanske bättre sätt, men det enda jag kom på på rak arm var att räkna antalet pulser under en sekunds tid.
Finns det bättre sätt är jag idel öra.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 16:05:23
av bos
Jag tror jag kom på varför. Registren för Timer1 är två 8-bits, vilket ger ett maxvärde på 65535. Om jag skulle räkna varje puls skulle dessa overflow:a så det visslar om det.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 16:13:14
av Icecap
Det finns "många" sätt att räkna frekvens och CCP-enheten är inte den rätta... eller jo, det är den men då på ett speciellt sätt.
Man kan:
* Mäta tiden mellan varje flank, det är en snabb metod men den kräver mycket hastighet på µC'n.
* Samma som ovan men med neddelat frekvens, kan vara det bästa av 2 världar.
* Mäta pulser över en viss tid.
* Kombinera lite: Med en räknare räknas antal pulser och dessa "gates" under en viss tid. Vid att bygga styrningen så att den reagerar på flanker kan man dels räkna hur många pulser det kom OCH få ett bra mått på över "exakt" hur lång tid dessa pulser kom på. Resten är matematik.
Att räkna pulser i ett sekund är att leva med en långsam uppdatering vilket snabbt driver en till vansinne. Mäter man pulser över kortare tid (kanske 1/10 sek) får man sämre upplösning MEN motsatt: är kristallfrekvensen och mätsätt så exakt att man får den upplösning som man ger avkall på om man väljer maximal upplösning?
Ett kristall är ofta ±50ppm, vid 1MHz blir det ±50Hz, bättre upplösning kan du alltså inte få eller hur? Visst, bättre kristall osv. men de sista siffror kommer att kosta dyra pengar.
Men då så, skippa 1Hz upplösningen och räkna hur mågna pulser på 1/10 sek. och du har en snabb uppdatering och inte förlorat något för upplösningen fanns ju inte till att börja med.
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 16:17:00
av blueint
Man kan uppdatera snabbt (1/10s) samt medelvärdesbilda över 0,5 - 2,0 s ..
Re: Klockfrekvens på PIC för att mäta externa pulser
Postat: 20 mars 2009, 18:14:31
av TomasL
Man kan också mata nån av räknarna externt, och läsa av dem vid lämpligt intervall.