- Nødvendige komponenter:
- Forklaring af kredsløb:
- Signalgenerator ved hjælp af 555 timer IC:
- Schmitt udløserport:
- Arduino Frequency Counter Code Forklaring:
Næsten enhver elektronisk hobbyist skal have stået over for et scenarie, hvor han eller hun skal måle frekvensen af signalet genereret af et ur eller en tæller eller en timer. Vi kan bruge oscilloskop til at udføre jobbet, men ikke alle af os har råd til et oscilloskop. Vi kan købe udstyr til måling af frekvensen, men alle disse enheder er dyre og er ikke for alle. Med det i tankerne skal vi designe en simpel, men effektiv frekvenstæller ved hjælp af Arduino Uno og Schmitt trigger gate.
Denne Arduino Frequency Counter er omkostningseffektiv og kan let laves, vi skal bruge ARDUINO UNO til måling af signalfrekvensen, UNO er kernen i projektet her.
For at teste frekvensmåleren skal vi lave en dummy-signalgenerator. Denne dummy-signalgenerator oprettes ved hjælp af en 555 timer-chip. Timerkredsløbet genererer en firkantbølge, som vil blive leveret til UNO til test.
Med alt på plads vil vi have en Arduino-frekvensmåler og en firkantbølgenerator. Arduino kan også bruges til at generere andre slags bølgeformer som sinusbølge, savtandbølge osv.
Nødvendige komponenter:
- 555 timer IC og 74LS14 Schmitt trigger gate eller NOT gate.
- 1K Ω modstand (2 stykker), 100Ω modstand
- 100nF kondensator (2 stk.), 1000µF kondensator
- 16 * 2 LCD,
- 47KΩ pot,
- Brødbræt og nogle stik.
Forklaring af kredsløb:
Kredsløbsdiagrammet for frekvensmåling ved hjælp af Arduino er vist i nedenstående figur. Kredsløbet er simpelt, en LCD er grænseflade med Arduino for at vise den målte signalfrekvens. 'Wave Input' går til Signal Generator Circuit, hvorfra vi sender signal til Arduino. En Schmitt trigger gate (IC 74LS14) bruges til at sikre, at kun rektangulær bølge føres til Arduino. Til filtrering af støj har vi tilføjet et par kondensatorer på tværs af strøm. Dette frekvensmåler kan måle frekvenser op til 1 MHz.
Signalgenerator kredsløb og Schmitt trigger er forklaret nedenfor.
Signalgenerator ved hjælp af 555 timer IC:
Først og fremmest vil vi tale om 555 IC-baseret firkantbølgenerator, eller skal jeg sige 555 Astable Multivibrator. Dette kredsløb er nødvendigt, fordi vi med frekvensmåleren skal være på plads, hvis frekvens er kendt for os. Uden dette signal kan vi aldrig fortælle, hvordan frekvensmåleren fungerer. Hvis vi har en firkant med kendt frekvens, kan vi bruge signalet til at teste Arduino Uno-frekvensmåler, og vi kan tilpasse det for justeringer for nøjagtighed i tilfælde af afvigelser. Billedet af signalgeneratoren ved hjælp af 555 Timer IC er vist nedenfor:
Typisk kredsløb på 555 i Astable-tilstand er angivet nedenfor, hvorfra vi har afledt ovenstående Signal Generator Circuit.
Udgangssignalfrekvensen afhænger af RA, RB-modstande og kondensator C. Ligningen er angivet som, Frekvens (F) = 1 / (tidsperiode) = 1,44 / ((RA + RB * 2) * C).
Her er RA og RB modstandsværdier, og C er kapacitansværdi. Ved at sætte modstands- og kapacitansværdierne i ovenstående ligning får vi frekvensen af output kvadratbølge.
Man kan se, at RB i ovenstående diagram erstattes af en gryde i signalgeneratorens kredsløb; dette gøres, så vi kan få kvadratbølgen med variabel frekvens ved udgangen for bedre test. For nemheds skyld kan man udskifte puljen med en simpel modstand.
Schmitt udløserport:
Vi ved, at alle testsignaler ikke er firkantede eller rektangulære bølger. Vi har trekantede bølger, tandbølger, sinusbølger og så videre. Da UNO kun er i stand til at registrere de firkantede eller rektangulære bølger, har vi brug for en enhed, der kan ændre eventuelle signaler til rektangulære bølger, og derfor bruger vi Schmitt Trigger Gate. Schmitt trigger gate er en digital logisk gate designet til aritmetiske og logiske operationer.
Denne port giver OUTPUT baseret på INPUT-spændingsniveau. En Schmitt-udløser har et THERSHOLD-spændingsniveau, når INPUT-signalet, der påføres porten, har et spændingsniveau højere end THRESHOLD for den logiske gate, går OUTPUT HIGH. Hvis INPUT-spændingssignalniveauet er lavere end THRESHOLD, vil portens OUTPUT være LAV. Vi får normalt ikke Schmitt-trigger separat, vi har altid en NOT gate efter Schmitt-triggeren. Schmitt Trigger-arbejde forklares her: Schmitt Trigger Gate
Vi skal bruge 74LS14 chip, denne chip har 6 Schmitt Trigger porte i den. Disse SIX-porte er forbundet internt som vist i nedenstående figur.
Den sandhed Tabel over Inverted Schmitt Trigger gate er show i nedenstående figur, med dette har vi til at programmere UNO til at vende de positive og negative tidsperioder på dens terminaler.
Nu vil vi føde enhver form for signal til ST gate, vi vil have en rektangulær bølge af inverterede tidsperioder ved udgangen, vi vil føde dette signal til UNO.
Arduino Frequency Counter Code Forklaring:
Kode til denne frekvensmåling ved hjælp af arduino er ret enkel og let forståelig. Her forklarer vi pulseIn- funktionen, som hovedsagelig er ansvarlig for at måle frekvensen. Uno har en speciel funktion pulseIn , som gør det muligt for os at bestemme varigheden af den positive tilstand eller den negative tilstand for en bestemt rektangulær bølge:
Htime = pulseIn (8, HIGH); Ltid = pulseIn (8, LAV);
Den givne funktion måler det tidspunkt, hvor højt eller lavt niveau er til stede ved PIN8 i Uno. Så i en enkelt bølgecyklus har vi varigheden for de positive og negative niveauer i mikrosekunder. Den pulseIn funktion måler tiden i mikrosekunder. I et givet signal har vi høj tid = 10mS og lav tid = 30ms (med frekvens 25 Hz). Så 30000 gemmes i Ltime-heltal og 10000 i Htime. Når vi tilføjer dem sammen, har vi cyklusvarigheden, og ved at vende den vil vi have frekvensen.
Komplet kode og video til dette frekvensmåler ved hjælp af Arduino er angivet nedenfor.