- Vereiste componenten:
- Circuit uitleg:
- Signaalgenerator met 555 Timer IC:
- Schmitt Trigger Gate:
- Arduino Frequentieteller Code Uitleg:
Bijna elke elektronische hobbyist moet een scenario hebben meegemaakt waarin hij of zij de frequentie moet meten van het signaal dat wordt gegenereerd door een klok of een teller of een timer. We kunnen een oscilloscoop gebruiken om het werk te doen, maar we kunnen niet allemaal een oscilloscoop betalen. We kunnen apparatuur kopen om de frequentie te meten, maar al deze apparaten zijn duur en niet voor iedereen. Met dat in gedachten gaan we een eenvoudige maar efficiënte frequentieteller ontwerpen met Arduino Uno en Schmitt-triggergate.
Deze Arduino-frequentieteller is kosteneffectief en kan gemakkelijk worden gemaakt, we gaan ARDUINO UNO gebruiken voor het meten van de frequentie van het signaal, UNO is hier het hart van het project.
Om de frequentiemeter te testen, gaan we een dummy signaalgenerator maken. Deze dummy-signaalgenerator wordt gemaakt met behulp van een 555-timerchip. Het timercircuit genereert een blokgolf die voor testen aan UNO wordt verstrekt.
Met alles op zijn plaats hebben we een Arduino-frequentiemeter en een blokgolfgenerator. Arduino kan ook worden gebruikt om andere soorten golfvormen te genereren, zoals sinusgolf, zaagtandgolf enz.
Vereiste componenten:
- 555 timer IC en 74LS14 Schmitt-triggerpoort of NIET-poort.
- 1K Ω weerstand (2 stuks), 100Ω weerstand
- 100nF condensator (2 stuks), 1000 µF condensator
- 16 * 2 LCD,
- 47KΩ pot,
- Breadboard en enkele connectoren.
Circuit uitleg:
Het schakelschema van de frequentiemeting met Arduino wordt weergegeven in de onderstaande afbeelding. Circuit is eenvoudig, een LCD is gekoppeld aan Arduino om de gemeten signaalfrequentie weer te geven. 'Wave Input' gaat naar het signaalgeneratorcircuit, van waaruit we een signaal naar Arduino sturen. Een Schmitt-triggerpoort (IC 74LS14) wordt gebruikt om ervoor te zorgen dat alleen rechthoekige golf naar Arduino wordt gevoerd. Voor het filteren van de ruis hebben we een paar condensatoren over het vermogen toegevoegd. Deze frequentiemeter kan frequenties meten tot 1 MHz.
Signaalgeneratorcircuit en Schmitt-trigger worden hieronder uitgelegd.
Signaalgenerator met 555 Timer IC:
Allereerst zullen we het hebben over de 555 IC-gebaseerde blokgolfgenerator, of moet ik zeggen 555 Astable Multivibrator. Dit circuit is nodig omdat we met de frequentiemeter een signaal moeten hebben waarvan de frequentie bij ons bekend is. Zonder dat signaal zullen we nooit de werking van de frequentiemeter kunnen zien. Als we een vierkant hebben met een bekende frequentie, kunnen we dat signaal gebruiken om de Arduino Uno-frequentiemeter te testen en we kunnen het aanpassen voor aanpassingen voor nauwkeurigheid, in geval van afwijkingen. De afbeelding van de signaalgenerator met 555 Timer IC wordt hieronder gegeven:
Een typisch circuit van 555 in Astable-modus wordt hieronder gegeven, waaruit we het hierboven gegeven signaalgeneratorcircuit hebben afgeleid.
De uitgangssignaalfrequentie is afhankelijk van RA-, RB-weerstanden en condensator C.De vergelijking wordt gegeven als, Frequentie (F) = 1 / (tijdsperiode) = 1,44 / ((RA + RB * 2) * C).
Hier zijn RA en RB weerstandswaarden en C is capaciteitswaarde. Door de weerstands- en capaciteitswaarden in bovenstaande vergelijking te plaatsen, krijgen we de frequentie van de uitgangsgolf.
Men kan zien dat RB van bovenstaand diagram is vervangen door een pot in het signaalgeneratorcircuit; dit wordt gedaan zodat we een blokgolf met variabele frequentie aan de uitgang kunnen krijgen voor beter testen. Voor de eenvoud kan men de pot vervangen door een eenvoudige weerstand.
Schmitt Trigger Gate:
We weten dat alle testsignalen geen vierkante of rechthoekige golven zijn. We hebben driehoekige golven, tandgolven, sinusgolven enzovoort. Omdat de UNO alleen de vierkante of rechthoekige golven kan detecteren, hebben we een apparaat nodig dat signalen kan veranderen in rechthoekige golven, daarom gebruiken we Schmitt Trigger Gate. Schmitt-triggerpoort is een digitale logische poort, ontworpen voor rekenkundige en logische bewerkingen.
Deze poort levert UITGANG op basis van het INPUT-spanningsniveau. Een Schmitt Trigger heeft een THERSHOLD-spanningsniveau, wanneer het INPUT-signaal dat op de poort wordt toegepast een spanningsniveau heeft dat hoger is dan de THRESHOLD van de logische poort, wordt OUTPUT HOOG. Als het INPUT-spanningssignaalniveau lager is dan THRESHOLD, zal de OUTPUT van de poort LAAG zijn. We krijgen Schmitt-trigger meestal niet afzonderlijk, we hebben altijd een NIET-poort die de Schmitt-trigger volgt. Schmitt Trigger-werking wordt hier uitgelegd: Schmitt Trigger Gate
We gaan de 74LS14 chip gebruiken, deze chip heeft 6 Schmitt Trigger gates. Deze zes poorten zijn intern verbonden zoals weergegeven in onderstaande afbeelding.
De Truth Table of Inverted Schmitt Trigger gate wordt getoond in de onderstaande afbeelding, hiermee moeten we de UNO programmeren voor het omkeren van de positieve en negatieve tijdsperioden op de terminals.
Nu zullen we elk type signaal naar de ST-poort sturen, we zullen een rechthoekige golf van omgekeerde tijdsperioden aan de uitgang hebben, we zullen dit signaal naar UNO sturen.
Arduino Frequentieteller Code Uitleg:
Code voor deze frequentiemeting met arduino is vrij eenvoudig en gemakkelijk te begrijpen. Hier leggen we de pulseIn- functie uit die voornamelijk verantwoordelijk is voor het meten van de frequentie. De Uno heeft een speciale functie pulseIn , waarmee we de positieve toestandsduur of negatieve toestandsduur van een bepaalde rechthoekige golf kunnen bepalen:
Htime = pulseIn (8, HIGH); Ltime = pulseIn (8, LOW);
De gegeven functie meet de tijd gedurende welke hoog of laag niveau aanwezig is op PIN8 van Uno. Dus in een enkele golfcyclus hebben we de duur van de positieve en negatieve niveaus in microseconden. De pulseIn- functie meet de tijd in microseconden . In een bepaald signaal hebben we een hoge tijd = 10mS en een lage tijd = 30ms (met frequentie 25 HZ). Dus 30000 wordt opgeslagen in Ltime integer en 10000 in Htime. Als we ze bij elkaar optellen, hebben we de cyclusduur, en door deze om te keren, hebben we de frequentie.
Volledige code en video voor deze frequentiemeter met Arduino worden hieronder gegeven.