Nauwkeurige Frequentie- en Duty Cycle-meting met Arduino UNO
Onderdelen en Benodigdheden
| Arduino UNO | 1 |
| Alfanumeriek LCD, 20x4 | 1 |
Benodigde Tools en Machines
- Breadboard, 270 pins
Apps en Online Services
- Arduino IDE
Over dit Project
Arduino heeft talloze toepassingen in verschillende velden. Het kan ook gebruikt worden voor metingen: elektrische grootheden (spanning, stroom, vermogen), fysische grootheden (temperatuur, vochtigheid, lichtintensiteit) of elektronische componentwaarden.
Dit artikel demonstreert hoe je frequentie en duty cycle van pulsen meet met een Arduino. Frequentiemeting is essentieel in communicatietechniek. Duty cycle is ook belangrijk omdat het de pulsbreedte aangeeft – de AAN-tijd van de puls. Bij DC-motor snelheidsregeling en servomotor hoekregeling is het meten van de pulsbreedte vereist. Ook wordt de pulsbreedte gemeten om de symmetrie van pulsen te controleren in digitale signaalontvangers, herhalers, etc.
In dit project meet de Arduino frequentie, AAN-tijd, UIT-tijd en duty cycle van pulsen en toont ze op een 16x4 LCD.
Beschrijving
Er zijn slechts twee hoofdcomponenten: (1) Arduino UNO ontwikkelbord en (2) 16x4 LCD display.
- De pulsen worden direct aangesloten op digitale pin 7 van de Arduino.
- De RS en EN pinnen van de LCD zijn verbonden met digitale pinnen 9 en 8. RW-pin naar massa.
- De datapinnen D4-D7 zijn verbonden met Arduino pinnen 10, 11, 12, 13.
- Anode van backlight LED (pin 15) en VCC (pin 2) krijgen 5V via Arduino.
- Kathode backlight (pin 16) en VSS (pin 1) naar massa.
- Een 1kΩ potentiometer op VEE-pin voor contrastregeling.
Schakeling Werking
- Bij voeding via USB worden vier parameters op het LCD getoond: "Freq:", "Ton:", "Toff:", "Duty:" op elke rij.
- Wanneer pulsen op pin 7 worden gegeven, wacht de Arduino tot de puls HOOG wordt. Dan berekent hij de tijd (in µs) dat de puls hoog blijft = Ton.
- Vervolgens berekent hij de tijd dat de puls LAAG blijft = Toff.
- De som van beide intervallen geeft de periode.
- Frequentie = 1 / periode.
- Duty cycle = Ton / (Ton + Toff) * 100%.
- Alle vier parameters worden op het LCD getoond.
- Elke seconde herhaalt de procedure.
- Zo worden continue veranderingen in frequentie en duty cycle gemeten.
Code
Programma voor frequentie- en duty cycle-meting op LCD (C/C++)
#include
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
#define pulse_ip 7
int ontime, offtime, duty;
float freq, period;
void setup() {
pinMode(pulse_ip, INPUT);
lcd.begin(16, 4);
lcd.clear();
lcd.print("Freq:");
lcd.setCursor(0,1);
lcd.print("Ton:");
lcd.setCursor(0,2);
lcd.print("Toff:");
lcd.setCursor(0,3);
lcd.print("Duty:");
}
void loop() {
ontime = pulseIn(pulse_ip, HIGH);
offtime = pulseIn(pulse_ip, LOW);
period = ontime + offtime;
freq = 1000000.0 / period;
duty = (ontime / period) * 100;
lcd.setCursor(4,1);
lcd.print(ontime);
lcd.print("us");
lcd.setCursor(5,2);
lcd.print(offtime);
lcd.print("us");
lcd.setCursor(5,0);
lcd.print(freq);
lcd.print("Hz");
lcd.setCursor(6,3);
lcd.print(duty);
lcd.print('%');
delay(1000);
}
Schema
De schakeling meet frequentie en duty cycle van een puls met Arduino.
Productieproces
- Betrouwbaar Arduino RFID Aanwezigheidssysteem Aangedreven door Python
- Universele Android-afstandsbediening bouwen met Arduino, 1Sheeld en IR-besturing
- Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
- Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
- Nauwkeurige Frequentie- en Duty Cycle-meting met Arduino UNO
- Bestuur een Arduino-rover naadloos met Firmata en een Xbox One-controller
- De massa van de aarde meten met Arduino: een stapsgewijze DIY-gids
- Realtime afstandsmeting met Arduino Sonar & Processing visualisatie
- Naadloze LED-dimmer met Bolt IoT en Arduino UNO
- Bouw een Real-time Digitale Kompas met Arduino & Processing
- Frequentie en Fase Meten in AC Energiesystemen