با سلا و عرض ادب
موتور کولر آبی را توسط ATmega8 ورله ۵ولت برنامه نویسی کرده ام مشکل اینکه میکرو با بار اهمی بودن مشکل کار می کند ولی زمانیکه بار القایی (موتور پمپ کولر) بعد از چندبار فرمان دادن میکرو هنگ می کنه(از کار می افتد) و دوبار باید تغذیه میکرو را قطع ودوباره وصل کنم تا راه بیفه آیا از کار افتادن میکرو در اثر نویز بار القایی نیست ممنون می شم اگر راهنمایی بفرمایید با تشکر
با تشکر از توجه شما
منبع تعذیه 220ولت به 5ولت 700میلی آمپر مشتر ک برای رله ها و میکرو ضمناً با آزمایشی که در دو محیط مختلف انجام دادم در همه محیط ها این مشکل وجود ندارد احتمالاً بعضی محیط ها نویز بیشتر دارند
کد رو هم پیوست می کنم ممنون می شم بررسی بفرمایید توضیح کد: ابتدا باید پمپ روشن شود و سپس دور کند درصورت لزوم دور تند را می توان روشن کرد . تازمانیکه پمپ به تنهایی روشن است led روشن و خاموش می شود و بازر هرچند لحظه آلارم می دهد اگر دور کند روشن نشود بعد ا ز پند لحظه پمپ خاموش می شود می توان زمان راهم تنظیم کرد از 1 تا10 ساعت
باتشکر
#include <TM1637.h> // Pin 19 - > DIO // Pin 18 - > CLK TM1637 tm(18, 19);//-----------18 >>port C4 19 >>port C5int buttstatelast;
int buttstate;
int stateled;
int buttstate_l;
int buttstate_h;
bool buzer = false;
String seg;
unsigned long t1=0, t2=0, t3=0 ,t4=0, t5=0;int c_tme;
unsigned long interval;
int aw;
int tt;
int t=1;
int q=0;
int r=0;void setup() {
//Serial.begin(9600);
tm.begin();
int q=0;
aw=0;
//------------
pinMode(12,OUTPUT);//----------------LED-pomp----port B4
pinMode(11,OUTPUT);//---------------LED-slow-----port B3
pinMode(10,OUTPUT);//---------------LED -HI------port B2
pinMode(9,OUTPUT);//---------------Buzzer-------port B1pinMode(5,OUTPUT);//------------relay pomp--------port D5
pinMode(6,OUTPUT);//-----------relay SLOW---------port D6
pinMode(7,OUTPUT);//-----------relay HI-----------port D7pinMode(0,INPUT);//----------------key pomp-motor----port D0
pinMode(1,INPUT);//----------------key Slow-motor----port D1
pinMode(2,INPUT);//----------------key HI-motor------port D2
pinMode(3,INPUT);//----------------key button timer–port D3
stateled=0;
}void loop() {
unsigned long currentTime = millis();
unsigned long interval = t * 3600000;
//unsigned long interval = t * 80000;stateled= digitalRead(5);
aw=digitalRead(3);//---------timer D3
buttstate=digitalRead(0);//-------------pomp d1
buttstate_l=digitalRead(1);//------------Slow
buttstate_h=digitalRead(2);//-------------HIif(buttstate==1 && buttstatelast==0 ){
t3=currentTime;
stateled=!stateled;
digitalWrite(12, stateled);//----led pomp
digitalWrite(5, stateled);//-----relay pomp
}
buttstatelast=buttstate;if(digitalRead(1)==1 && digitalRead(5)==1 ){//------slow
digitalWrite(7, LOW);
digitalWrite(10, LOW);
delay(10);
digitalWrite(11, HIGH);//—led Slow
digitalWrite(6, HIGH);//----relay Slow
digitalWrite(12, HIGH);
}if(digitalRead(2)==1 && digitalRead(5)==1 && digitalRead(11)==1){//------------HI
digitalWrite(11, LOW);
digitalWrite(6, LOW);digitalWrite(7, HIGH); digitalWrite(10, HIGH); digitalWrite(12, HIGH);}
if(digitalRead(5)==0){
digitalWrite(7, 0);
digitalWrite(11, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(2, 0);
digitalWrite(10, 0);}
if(digitalRead(5)==1 && digitalRead(7)==0 && digitalRead(11)==0){
if(currentTime > t4+ 300){
digitalWrite(12, !digitalRead(12));
t4=currentTime;
r++;
if(r>=20){r=0;}
if(r==0){digitalWrite(9, !digitalRead(9));delay(100);}}}
if(currentTime > t3+ 360000){
if(digitalRead(5)==1 && digitalRead(7)==0 && digitalRead(11)==0){
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(5, 0);
digitalWrite(12, 0);
digitalWrite(9, 1);
delay(200);
digitalWrite(9, 0);t3=currentTime;
}
}if(currentTime - t1 >= interval){
if(digitalRead(5)==1 && digitalRead(7)==1 || digitalRead(11)==1){
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(5, 0);
digitalWrite(12, 0);
buttstatelast=buttstate;
//delay(100);
}
t1 = currentTime;
}if(aw==HIGH){
t++;
while (aw==HIGH) {
aw=digitalRead(3);
}}
if(t==1 && buzer==false){//--------------------------------int1
digitalWrite(9,1);//--------------------buzzer
buzer = true;
t2 = currentTime;
}
if(currentTime > t2+ 500 && digitalRead(9)==1){
digitalWrite(9, 0);
t2=currentTime;
}if(t==2 && buzer==false){//-----------------------int2
digitalWrite(9,0);//--------------------buzzer
}
if(t==3 && buzer==false){//-------------------int 3
digitalWrite(9,0);//--------------------buzzer
}if(t==4 && buzer==false){//------------------int4
digitalWrite(9,0);//--------------------buzzer
}//------------------int 5
if(t==5 && buzer==false){
digitalWrite(9,0);//--------------------buzzer
}//------------------int 6
if(t==6 && buzer==false){
digitalWrite(9,0);//--------------------buzzer
}//------------------int 7
if(t==7 && buzer==false){
digitalWrite(9,0);//--------------------buzzer
}//------------------int 8
if(t==8 && buzer==false){
digitalWrite(9,0);//--------------------buzzer
}
//------------------int 9
if(t==9 && buzer==false){
digitalWrite(9,0);//--------------------buzzer
}
if(t==10 && buzer==false){
digitalWrite(9,0);//--------------------buzzer
}if(t==1){
tm.display(" “);
showHOXX(1);
}
if(t==2){
tm.display(” “);
showHOXX(2);
}
if(t==3){
tm.display(” “);
showHOXX(3);
}
if(t==4){
tm.display(” “);
showHOXX(4);
}
if(t==5){
tm.display(” “);
showHOXX(5);
}
if(t==6){
tm.display(” “);
showHOXX(6);
}
if(t==7){
tm.display(” “);
showHOXX(7);
}
if(t==8){
tm.display(” “);
showHOXX(8);
}
if(t==9){
tm.display(” “);
showHOXX(9);
}
if(t==10){
tm.display(” ");
showHOXX(10);
}if(t>10){
tm.display(" ");
showHOXX(10);
}//------------------int 0
if(t> 10){
t=1;
buzer = false;
}
}
void showHOXX(int t){
switch(t){
case 1: tm.display(“HH01”); break;
case 2: tm.display(“HH02”); break;
case 3: tm.display(“HH03”); break;
case 4: tm.display(“HH04”); break;
case 5: tm.display(“HH05”); break;
case 6: tm.display(“HH06”); break;
case 7: tm.display(“HH07”); break;
case 8: tm.display(“HH08”); break;
case 9: tm.display(“HH09”); break;
case 10: tm.display(“HH10”); break;
default: tm.display(" "); break;
}
delay(50);
}