برمجة الاردوينو للعمل تايمر تشغيل أيقاف 1

 تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

مقدمــــــــة عن المشروع

مقدمــــــــة عن المشروع

مرحبًا ، مع هذا المشروع ، سنتمكن من التحكم في تشغيل وإيقاف  الأجهزة في الوقت الذي نريده , تشغيل الأضواء ، تشغيل الأجهزة والمعدات الكهربائية ، وما إلى ذلك . سوف نستخدم المقاومة المتغييرة  مع الاردوينو  للتحكم في الوقت الذي يحدد  للتشغيل أو الايقاف .

هذا المشروع مفيد لضبط AC ، سخان ، وأي آلة أو ضوء على “تشغيل وإيقاف” لفترة محددة من الزمن .

فدعنا نبدأ !….

متطلبات المشروع

1. ARDUINO .

2. potentiometers 100kΩ .

3. SSR 25 DA ( SOLID STATE REALY).

4. JUMPER WIRES.

5. 2 push button switch

طريقة العمل والتوصيل

robojax_relay_timer_1.0_schematic

توصيل المكونات وفقا للمخطط أعلاه . ولكن في حالة أستخدام “سوليد ستات ريلاي هاي باور 60 DA ” يربط مكان الموديول ريلي ولا تكن هنالك أي مشاكل .

في طريقة العمل يتم تحديد حالة البدأ أو أعادة التشغيل من المفتاحين الموضحين في المخطط أعلاه .

عند تحديد حالة البدأ , يتم تحريك عصا المقاومة المتغييرة لتحديد مدة التشغيل .

عند الرغبة في أعادة الضبط يتم الضغط على المفتاح الاخر المسؤل عن أعادة التشغيل .

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

الكــــــــود البرمجي

لتحميل الكود البرمجي اضغط هنا
#define relayPin 8 // the pin relay is connected
#define potPin  A0 // the pin potentiometer is connected
#define resetPin 3 // the pin where rest switch is connected
#define startPin 2 // the pin where start switch is connected

#define relayType 'L' // Relay trigger type. L for low and H for high
const int maxTime = 30000;// maximum timer time in milliseconds
const int minTime = 3000; // miniimum timer time in milliseconds

// do not change anything bellow here
long duration;
int potValue;
long rememTime;
int relayState =0;

void setup() {
  pinMode(relayPin, OUTPUT);// define relayPin  as output
  pinMode(resetPin, INPUT_PULLUP);// define input pin with pullup (watch video)
  pinMode(startPin, INPUT_PULLUP);// define input pin with pullup (watch video)
  attachInterrupt(digitalPinToInterrupt(resetPin), reset, LOW);
    
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  if(relayType == 'L')
  {
    digitalWrite(relayPin, HIGH);// turn the relay OFF and keep it OFF
      Serial.println(" Relay Timer"); 
      Serial.println("Relay Type: LOW Trigger");      
  }else{
    digitalWrite(relayPin, LOW);// turn the relay OFF and keep it OFF
      Serial.println("Relay Timer"); 
      Serial.println("Relay Type: HIGH Trigger");
  }  
}

void loop() {
  potValue = analogRead(potPin)/10;// reads the value of the potentiometer (value between 0 and 1023)

  duration = map(potValue, 0, 102, minTime, maxTime);// convert A0 value to time set at minTime and maxTime
  
    if(digitalRead(startPin) ==LOW)
    {
     rememTime = millis();
     relayState = 1;
     controlRelay();// send command to turn the relay ON
    }
   if(  (millis()- rememTime) > duration )
   {
    relayState = 0;
    controlRelay();
   }
      Serial.print("Time: ");
      Serial.print(duration/1000);
      Serial.println(" Seconds");     
 delay(200); // wait for 200 milliseconds    
}// loop end


 void controlRelay()
 {
  if(relayType == 'L')
  {
     if(relayState == 1)
     {
    digitalWrite(relayPin, LOW);// Turn ON relay
      Serial.print("LT-Relay ON for ");
      Serial.print(duration/1000);// display in seconds
      Serial.println(" Seconds");
     }else{
    digitalWrite(relayPin, HIGH); // turn OFF
      Serial.println("====Relay is OFF");
     }
      
  }else{
     if(relayState == 1)
     {    
      digitalWrite(relayPin, HIGH);
      Serial.print("HT-Relay ON for ");
      Serial.print(duration/1000);// display in seconds
      Serial.println(" Seconds");  
     }else{
      digitalWrite(relayPin, LOW); 
      Serial.println("==Relay OFF");  
     }  
  }

}//controlRelay end




void reset()
{
  duration =0;
   if(relayType == 'L')
  {
    digitalWrite(relayPin, HIGH);// turn OFF High trigger relay     
  }else{
    digitalWrite(relayPin, LOW);// turn OFF Low trigger relay
  
  } 
  Serial.println("Relay OFF"); 

}//reset()

1 Comments

  1. تمام

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *