Opmærksomme læsere bemærkede, at der i artiklen fra forfatteren Instructables under kaldenavnet WilkoL om indstillingsgaffelgeneratoren og et ur med dens anvendelse kun er vist en frekvensmåler, og i artiklen om generatoren med et glas som frekvensindstillingselement blev der tilføjet et andet, og han kom endda på KDPV der. Denne historie handler om ham.
Jeg er glad for at arbejde homebrew kvist mesteren begynder med studiet af den teoretiske del, nemlig med valget af metoden til måling af frekvens. I mange frekvensmålere tælles antallet af perioder af indgangssignalet i et bestemt tidsrum, f.eks. Et sekund, til dette:
Denne metode er god til høje nok frekvenser, men hvis frekvensen er lav, tillader den ikke at få et tilstrækkeligt stort antal decimaler. For eksempel, hvis målecyklussen tager et sekund, vil der for en frekvens i størrelsesordenen 50 Hz være nul decimaler. Du vil f.eks. Have tre tegn - der er en udvej, vi udvider målecyklen til 1000 sekunder. Men det er en ting, når en pc eller en smartphone bremser, som alle i det mindste er vant til, og det er en helt anden ting - hvis en frekvensmåler også tilslutter sig dette sjove firma, vil dette helt slå brugeren ud af sig selv. Generelt er der brug for en anden måde. Men hvad nu hvis vi måler svingningsperioden som sådan?
Så gør det også. Tag et signal om referencefrekvensen, som er flere størrelsesordener højere end den målte, og overvej hvor mange perioder af referencesignalet der vil passere i en periode af det målte. Så for eksempel med en referencefrekvens på 10 MHz og målt til 50 Hz vil dette være 200.000. Dette betyder, at perioden er 20.000.0 ms, og en moderne (og forresten ikke særlig) mikrokontroller, hvis programmereren "lærer" det, med genberegner let perioden til en frekvens lig med 50.000 Hz. Hvis frekvensen stiger til 50,087 Hz, så i en periode af indgangssignalet, 199650 perioder med eksemplet passer ind, og en sådan ændring vil frekvensmåleren bemærke i realtid.
Men med denne målemetode falder tværtimod antallet af decimaler med stigende frekvens af indgangssignalet. For eksempel, hvis det er 40 kHz, og referencen stadig er 10 MHz, får vi ved 40-161 Hz 249 perioder af referencefrekvensen og ved 39840 Hz - 251 perioder. Mindst to frekvensmålere fungerer: en for høje frekvenser, der fungerer på den første måde, den anden for lave frekvenser, i den anden. Skønt - vent! Er det ikke muligt at kombinere begge metoder i en frekvensmåler? Det kan du, og mesteren fortæller hvordan. Du skal tage en almindelig D-trigger, så dens symbol og sandhedstabellen er givet:
Guiden viser fire signaler på kortet, hvoraf den fjerde producerer en trigger:
Den første af disse signaler er den målte frekvens, den føres til urindgangen til D-triggeren. Den anden er for eksempel en referencefrekvens på 10 MHz, hvilket kræver høj stabilitet. Det tredje er et signal med en frekvens i størrelsesordenen 1 Hz, hvor stabilitet overhovedet ikke er påkrævet, det påføres den samme trigger ved indgang D. Nå, den fjerde genereres af udløseren fra den første og den tredje som følger. Når det tredje signal skifter fra nul til et, reagerer udløseren ikke straks på dette, men kun når en sådan switch opstår med det første signal efter dette. Således falder fronten af en af pulserne i det fjerde signal nøjagtigt med fronten af en af de første impulser. Derefter skifter det tredje signal, efterfulgt af det fjerde, til nul, som mikrokontrolleren ikke reagerer på på nogen måde, så skifter det tredje signal tilbage til et, men udløseren reagerer ikke på det igen med det samme, men kun efter den samme skiftning af det første signal. Og igen, fronterne af det første og fjerde signal falder helt sammen. Og i den fulde periode af det fjerde signal passer et heltal af perioder af det første. Yderligere - en teknisk sag: glem ikke at vi også har et andet signal. Mikrokontrolleren beregner, hvor mange fulde perioder af det første og andet signal faldt i hele den fjerde periode.
Så vi har to numre. For eksempel 32 og 10185892. Multiplicer 32 med 10.000.000 (referencefrekvens) og divider med 10185892. Vi får 31.416 Hz. Tre decimaler. Og målingen forbliver nøjagtig både ved lave frekvenser og ved høje nærmer sig modellen. Og hvis du har brug for at måle endnu højere frekvenser, kan du tilføje en divider.
Nu skal vi beslutte, hvilken mikrokontroller der skal køre frekvensmåleren. Skibsføreren har allerede prøvet at lave dem på ATmega328 og endda på STM32F407, der kører med en urfrekvens på 168 MHz. Men denne gang er han gennemsyret af minimalisme og beslutter at kontrollere, om han kan få et lignende resultat på ATtiny2313.
Han har mere end nok konklusioner, især hvis du anvender en LED-skærm med en indbygget driverchip som MAX7219:
Et komplet enhedsdiagram ser sådan ud:
En temmelig kompleks driver til diskrete komponenter, der indeholder RC-kredsløb, en diodebegrænser og forstærkertrin, bruges til at opnå rektangulære pulser fra et signal med næsten enhver form. D-triggeren er placeret udenfor, signalet om den målte frekvens (først) føres til det fra driveren, signalerne med frekvenser på 10 MHz og 1 Hz (henholdsvis anden og tredje) modtages fra mikrokontrolleren, udgangssignalet (fjerde) går tilbage til mikrokontrolleren. Den anden sådan trigger tjener til at generere et signal på et kontrolpunkt. Det samme PDF-skema i ZIP-arkivet er tilgængeligt. her.
Efter at have samlet et diagram, samler masteren en frekvensmåler på det, viser det sig sådan:
I billedet, i modsætning til kredsløbet, vises batteriet og ladningskontrolleren, er pulsstabilisatoren også nævnt af masteren, men hvor den er, er den ikke synlig. Alle disse komponenter blev tilføjet senere, hvilket gjorde arbejdet med frekvensmåleren mere praktisk. Et 18650 batteri skal tages med beskyttelse, lodningstråd til det er uacceptabelt. Enten rummet eller plettsvejsning.
Firmware (løgne her også i ZIP-arkivet) skriver masteren under hensyntagen til behovet for at overføre mikrokontrolleren fra uret til RC-generatoren til at arbejde fra ekstern kvarts, samt muligheden for at tildele forskellige funktioner til hver af udgangene til mikrokredsløbet:
For at uploade firmwaren tager guiden en in-circuit programmerer fra Olimex. Dette er et bulgarsk firma med en profil tæt på Adafruit.
Skibsføreren forsegler den mindre udladning på displayet og skærer derefter et hul i husdækslet, så denne udladning lukkes, da dens aflæsninger var unøjagtige på trods af alle trufne forholdsregler.Dette påvirkes af funktionerne i algoritmen og ikke for høj temperaturstabilitet af krystaloscillatoren. For at indstille det forbinder masteren en ekstern frekvensmåler til kontrolpunktet med frekvensstabilisering af urgeneratoren fra GPS-modtageren, hvorefter den indstiller den nøjagtige 5 MHz ved at dreje tuningkondensatoren (udløseren deler urfrekvensen med to). En korrekt afstemt frekvensmåler giver den krævede nøjagtighed i området for målte frekvenser fra 0,2 Hz til 2 MHz. De følgende to fotos viser, hvordan masteren anvendte det samme signal samtidigt på reference- og verificerede frekvensmålere: