- Nödvändiga komponenter:
- Kretsförklaring:
- Signalgenerator med 555 timer IC:
- Schmitt Trigger Gate:
- Arduino Frequency Counter Code Förklaring:
Nästan varje elektronisk hobbyist måste ha ställts inför ett scenario där han eller hon måste mäta signalfrekvensen som genereras av en klocka eller en räknare eller en timer. Vi kan använda oscilloskop för att göra jobbet, men inte alla har råd med ett oscilloskop. Vi kan köpa utrustning för att mäta frekvensen men alla dessa enheter är kostsamma och är inte för alla. Med detta i åtanke kommer vi att utforma en enkel men ändå effektiv frekvensräknare med Arduino Uno och Schmitt trigger gate.
Denna Arduino-frekvensräknare är kostnadseffektiv och kan enkelt göras, vi ska använda ARDUINO UNO för att mäta signalfrekvensen, UNO är hjärtat i projektet här.
För att testa frekvensmätaren ska vi skapa en dummy-signalgenerator. Denna dummy-signalgenerator kommer att skapas med hjälp av ett 555-timerchip. Timerkretsen genererar en fyrkantig våg som kommer att skickas till UNO för testning.
Med allt på plats kommer vi att ha en Arduino-frekvensmätare och en fyrkantvågsgenerator. Arduino kan också användas för att generera andra typer av vågformer som sinusvåg, sågtandvåg etc.
Nödvändiga komponenter:
- 555 timer IC och 74LS14 Schmitt triggergrind eller NOT gate.
- 1K Ω motstånd (2 delar), 100Ω motstånd
- 100nF kondensator (2 delar), 1000 μF kondensator
- 16 * 2 LCD,
- 47KΩ kruka,
- Brödbräda och några kontakter.
Kretsförklaring:
Kretsschemat för frekvensmätningen med Arduino visas i bilden nedan. Kretsen är enkel, en LCD är gränssnitt med Arduino för att visa den uppmätta signalfrekvensen. 'Wave Input' går till Signal Generator Circuit, från vilken vi matar signal till Arduino. En Schmitt-utlösargrind (IC 74LS14) används för att säkerställa att endast rektangulär våg matas till Arduino. För att filtrera bruset har vi lagt till några kondensatorer över strömmen. Denna frekvensmätare kan mäta frekvenser upp till 1 MHz.
Signalgeneratorkretsen och Schmitt-utlösaren har förklarats nedan.
Signalgenerator med 555 timer IC:
Först och främst kommer vi att prata om 555 IC-baserad fyrkantvågsgenerator, eller ska jag säga 555 Astable Multivibrator. Denna krets är nödvändig eftersom vi med frekvensmätaren måste ha en signal vars frekvens är känd för oss. Utan den signalen kommer vi aldrig att kunna berätta hur frekvensmätaren fungerar. Om vi har en kvadrat med känd frekvens kan vi använda den signalen för att testa Arduino Uno Frequency Meter och vi kan justera den för justeringar för noggrannhet, i händelse av avvikelser. Bilden av Signal Generator med 555 Timer IC ges nedan:
En typisk krets på 555 i Astable-läge ges nedan, från vilken vi har härledt den ovan angivna signalgeneratorkretsen.
Utsignalens frekvens beror på RA, RB-motstånd och kondensator C. Ekvationen ges som, Frekvens (F) = 1 / (tidsperiod) = 1,44 / ((RA + RB * 2) * C).
Här är RA och RB motståndsvärden och C är kapacitansvärde. Genom att sätta motstånds- och kapacitansvärdena i ovanstående ekvation får vi frekvensen för utgångs kvadratvåg.
Man kan se att RB i ovanstående diagram ersätts av en kruka i Signalgenerator-kretsen; Detta görs så att vi kan få kvadratvåg med variabel frekvens vid utgången för bättre testning. För enkelhetens skull kan man byta ut potten med ett enkelt motstånd.
Schmitt Trigger Gate:
Vi vet att alla testsignaler inte är kvadratiska eller rektangulära vågor. Vi har triangulära vågor, tandvågor, sinusvågor och så vidare. Eftersom UNO bara kan upptäcka kvadratiska eller rektangulära vågor behöver vi en anordning som kan ändra alla signaler till rektangulära vågor, så vi använder Schmitt Trigger Gate. Schmitt trigger gate är en digital logisk gate, designad för aritmetiska och logiska operationer.
Denna grind ger OUTPUT baserat på INPUT-spänningsnivån. En Schmitt-utlösare har en THERSHOLD-spänningsnivå, när INPUT-signalen som appliceras på grinden har en spänningsnivå högre än THRESHOLD för den logiska grinden, går OUTPUT HIGH. Om INPUT-spänningssignalnivån är lägre än THRESHOLD kommer utgången för grinden att vara LÅG. Vi brukar inte få Schmitt-utlösaren separat, vi har alltid en INTE-grind efter Schmitt-utlösaren. Schmitt Trigger-arbete förklaras här: Schmitt Trigger Gate
Vi ska använda 74LS14-chip, det här chipet har 6 Schmitt Trigger-grindar i sig. Dessa SIX-grindar är anslutna internt enligt bilden nedan.
Den Sanningen Table of Inverted Schmitt Trigger gate är show i figuren nedan, med detta måste vi programmera UNO för att invertera de positiva och negativa tidsperioder vid sina terminaler.
Nu matar vi vilken typ av signal som helst till ST-grinden, vi kommer att ha en rektangulär våg av inverterade tidsperioder vid utgången, vi matar denna signal till UNO.
Arduino Frequency Counter Code Förklaring:
Koden för denna frekvensmätning med arduino är ganska enkel och lättförståelig. Här förklarar vi pulseIn- funktionen som huvudsakligen ansvarar för att mäta frekvensen. Uno har en speciell funktion pulseIn , som gör det möjligt för oss att bestämma varaktigheten för positivt tillstånd eller negativt tillstånd för en viss rektangulär våg:
Htime = pulseIn (8, HIGH); Ltime = pulseIn (8, LOW);
Den givna funktionen mäter den tid under vilken hög eller låg nivå finns vid PIN8 för Uno. Så i en enda vågcykel kommer vi att ha varaktigheten för de positiva och negativa nivåerna i mikrosekunder. Den pulseIn Funktionen mäter tiden i mikrosekunder. I en given signal har vi hög tid = 10mS och låg tid = 30ms (med frekvens 25 Hz). Så 30000 lagras i Ltime-heltal och 10000 i Htime. När vi lägger till dem kommer vi att ha cykeltiden, och genom att invertera den kommer vi att ha frekvensen.
Komplett kod och video för denna frekvensmätare med Arduino ges nedan.