 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:332
|
|
05-03-2020, 05:29 PM
المشاركة 1
|
|
مقياس تردد باستخدام الاردوينو :
الدائرة الكهربية

يحتوي الاردوينو على دالة خاصة pulseIn ، والتي تمكننا من تحديد مدة duration الحالة الموجبة أو مدة الحالة السالبة لموجة مستطيلة معينة :
كود:
Htime = pulseIn(8,HIGH);
Ltime = pulseIn(8, LOW);
تقيس الدالة الوقت الذي يوجد فيه المستوى المرتفع High أو المنخفض Low الموجود على الطرف 8 من الاردوينو . لذلك في دورة واحدة من الموجة ، سيكون لدينا مدة للمستوى الموجب Htime ومدة للمستوى السالب Ltime بالميكروثانية . الدالة pulseIn تقيس الوقت بالميكروثانية . في إشارة معينة ، نفترض أن لدينا وقت مرتفع Htime وليكن 10ms ووقت منخفض Ltime وليكن 30ms ويكون زمن الدورة 10+30=40ms ، ويكون التردد 1000/40 = 25 Hz . سيتم تخزين 30000 في العدد الصحيح Ltime و 10000 في Htime. عندما نضيفهم معًا ، سنحصل على مدة الدورة ، ومن خلال المعكوس (المقلوب) سنحصل على التردد.
البرنامج :
كود:
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int Htime; //integer for storing high time
int Ltime; //integer for storing low time
float Ttime; // integer for storing total time of a cycle
float frequency; //storing frequency
void setup()
{
pinMode(8,INPUT);
lcd.begin(16, 2);
}
void loop()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Frequency : ");
Htime=pulseIn(8,HIGH); //read high time
Ltime=pulseIn(8,LOW); //read low time
Ttime = Htime+Ltime;
frequency=1000000/Ttime; //getting frequency with Ttime is in Micro seconds
lcd.setCursor(0,1);
lcd.print(frequency);
lcd.print(" Hz");
delay(500);
}
|