ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 10 از 10
  1. #1
    2014/07/26
    58
    6

    ساخت کنترل کننده pid با آردوینو

    سلام دوستان ...
    من یه کنترل کننده pid فازی برای کنترل دمای یک لامپ با آردوینو مگا ساختم.
    سیگنال کنترلی خروجی رو روی پایه شماره 7 با تابع analogWrite نوشتم. یعنی یک موج pwm.
    حالا برای اینکه بتونم با این سیگنال کنترلی توان اعمال شده به لامپ رو کنترل کنم نیاز به یه دیمر دارم که با ولتاژ کنترل بشه . اول از آی سی tca785 استفاده کردم برای کنترل زاویه آتش که خب راستش خیلی مشکل داشتم . میخواستم بدونم دوستان راه حل دیگه ای سراغ ندارن ... دیمرهای power fet که بدون zero detector هستند چه طور کار می کنند ؟ اگه کمک کنید ممنون میشم.
  2. #2
    2014/07/26
    58
    6

    مشکل در برنامه نویسی آردوینو

    سلام خدمت دوستان عزیز ...
    من توی برنامه نویسی با یه مشکل رو به رو هستم ... که شرحش یکم طولانیه . اگه می تونید کمکم کنید خیلی ضروریه
    من در حال ساخت یه کنترل کننده pid هستم . و میخوام دمای یک لامپ رو باهاش کنترل کنم . و روی یک lcd کارکتری نشون بدم. دما رو از طریق سنسور lm35 می خونم که به ازای هر درجه سانتی گراد یک میلی ولت خروجی داره . از طریق یک پتانسیومتر هم ست پوینت رو به آردوینو می دم .
    پس من با آردوینو دوتا ولتاژ می خونم یکی خروجی lm35 و یکی هم خروجی پتانسیومتر.خب حالا این دو عدد خونده شده با توجه به دقت adc آردوینو ، مقداری بین 0 تا 1023 دارن . من میخوام این مقدار رو به دما تبدیل کنم ... از رابطه های زیر استفاده می کنم :
    (5/1023)*100*عدد خوانده شده توسط آردوینو از lm35
    (5/1023)*20*عدد خوانده شده توسط آردوینو از پتانسیومتر
    حالا این دو عدد دمای خوانده شده و دمای مطلوب(ست پوینت) من هستن.
    من حالا این دو عدد رو از هم کم می کنم تا خطا به دست بیاد و بعد هم یکسری اعمال ریاضی برای به دست آوردن مشتق و انتگرال و در نهایت ساخته شدن فرمان کنترلی pid . حالا باید این فرمان رو به سیستمی که می خوام کنترلش کنم بفرستم ...

    مشکل اساسی این جاست :
    چون می خوام از دستور analogWrite استفاده کنم مقدار سیگنال pid من باید بین 0 تا 255 باشه . اما اولا مقدار pid معلوم نیست که چه قدر هستش و ثانیا اصلا مقدار صحیحی نیست و مقداری اعشاری داره . چون سیگنال pid ما حاصل کلی ضرب و تقسیم و انتگرال و مشتق هستش که روی خطا انجام شده. به نظر شما برای اینکه از دستور analogWrite استفاده کنم باید چی کار کنم که موج pwm من درست ایجاد بشه ؟
    ویرایش توسط sadegh.put : 2017/02/07 در ساعت 19:34
  3. #3
    2013/01/20
    190
    59

    پاسخ : ساخت کنترل کننده pid با آردوینو

    سلام
    چند تا نکته در جواب شما:
    1. اعشاری بودن خروجی کنترل کننده به ضرایب PID ات مربوط میشه(اگه اونا اعشاری باشن حاصل اعشاری میشه) و چیز خاصی نیست قبل اینکه به دستور analogWrite بدی از نوع صحیحش میکنی

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    2.برای PID در آردینو کتابخونه نوشتن میتونی از همون استفاده کنی

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    3.اگه خودت مینویسی برای مشتق کافیه تفاوت دو نمونه پشت سرهم و برای انتگرال حاصل جمع خطا ها را بگیری
    در ضمن حواست باید به اشباع انتگرال گیر، منفی شدن خروجی کنترل کننده و ... باشه

    4.این که خروجیت تو چه بازه ای، بستگی به ضرایب PID داره و اگه درست تنظیم بشه بین همون 0 تا 255 میفته
    ولی شما میتونی فعلا وصل نکنی به لامپ خروجیو تو سریال چاپ کنی و ببینی و بعد ضرایب دستی تنظیم کنی
    در ضمن با چندتا شرط گذاشتن کاری کنی از این بازه خارج نشه

    5.اگه میخوای PID فازی بسازی ضرایب را احتیاج نداری فقط یک بازه برای هر کدوم نیازه که با آزمون و خطا میتونی پیدا کنی

    6.اگه نوشتی و تموم شد لطف کن نتیجشو به اشتراک بزار
  4. #4
    2014/07/26
    58
    6

    پاسخ : ساخت کنترل کننده pid با آردوینو

    سلام ممنون از جوابتون
    من با نوشتن مشتق و انتگرال و محاسبات فازی مشکلی ندارم ... نوشتم این کدها رو و ضرایب هم به صورت فازی تعیین میشن ...
    مشکل من در خروجی pid هستش ...
    من برای تعیین خطا به طور مستقیم از اعداد خونده شده توسط آردوینو استفاده نمی کنم بلکه از اعداد تبدیل شده به دما استفاده می کنم . خب این اعداد دیگه بین 0 تا 1023 نیستن پس دیگه خطا، انتگرال و مشتق من بین 0 تا 1023 نیستن و در نتیجه سیگنال pid من هم همین طور هست ... پس من محدوده این سیگنال رو نمی دونم ... اگه می دونستم با دستور map به راحتی اون مقدار رو به بازه 0 تا 255 و بعد به صورت pwm روی خروجی می فرستادم ...
    مشکل بعدی هم اینه که خروجی خیلی بزرگ میشه مثلا 10000000یا -10000000 ... من بخش انتگرال گیر و حتی خود سیگنال pid رو محدود کردم ... اما نمی دونم کران پایین این محدوده باید صفر باشه یا یه عدد منفی ... و در ضمن نمی دونم این کران باید چه عددی باشه . میترسم مثلا اگه 255 انتخاب کنم بخشی از فرمان کنترلی از بین بره .
  5. #5
    2013/01/20
    190
    59

    پاسخ : ساخت کنترل کننده pid با آردوینو

    من نمی دونم کدتو چطوری نوشتی ولی حداکثر اختلاف دما که مشخصه (مثلا 20 درجه) و حداکثر خروجی میکرو که همون 255 است پس ضرایب مثلا باید حدودا 10 باشه نمیدونم چطوری به این اعداد رسیدی!
    ولی خوب من اگه بودم مثلا 10000 رو مپ میکردم به 255 و خروجیو میدیدم دست میمد که چطوریه
    شما بدون فازی با یک سری ضرایب کم شروع کنی تقریبا میشه بازه را فهمید
    خروجی کنترل کننده منفی بشه باید سیستم خنک کننده کار کنه مثلا یک فن ولی اگه نداری احتمالا باید صفرش کنی و صبر کنی تا دما بیاد پایین
  6. #6
    2014/07/26
    58
    6

    پاسخ : ساخت کنترل کننده pid با آردوینو

    اون مشکل برنامه نویسی حل شد ... برای بخش انتگرال گیر محدوده مثبت و منفی قرار دادم و برای خود سیگنال pid محدوده 0 تا 255 قرار دادم ...
    الان مشکل اصلی دیمر هست ... اگه کمک کنید ممنون میشم
  7. #7
    2016/02/11
    39
    7

    پاسخ : ساخت کنترل کننده pid با آردوینو

    سلام دوستان.بنده با ی سنسور دما و رطوبت sht11 وبورد پرو مینی و دو عدد رله اقدام به ساخت کنترلر دما دستگاه جوجه کشی کردم و دمای پایین(37.5)و دمای بالا (37.7) قرار دادم.طی دو سری دوره 21 روزه جوجه کشی فقط یک بار آردیونو هنگ کرده بود( هی رله رو خاموش روشن میشد).تو اینترنت با مبحث PID آشنا شدم و علاقه مندم رو بوردم برنامه ای با این قابلیت رو آپلود کنم.کتابخانه های pid رو گرفتم اما از مثالهاش چیزی سر در نیاوردم.نمونه های آماده هم با سنسور های lm35 هست ک به درد نمیخورن.ممنون میشم با توجه به کد زیر راهنماییم کنه.


    کد:
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27,20,4);
    #include <SHT1x.h>
    #define dataPin  A0
    #define clockPin A1
    SHT1x sht1x(dataPin, clockPin);
    int hitter=4;
    int humm=3;
    
    
    void setup() {
    lcd.begin();  
    lcd.backlight();
    lcd.print("abbas javanmardi");                   
    Serial.begin(9600);
    pinMode(4,OUTPUT); //hiter relay
    pinMode(3,OUTPUT); // humm fan relay
    
    
    }
    void loop()
    {
      lcd.setCursor(0,1);
      float temp_c;
      float humidity;
      temp_c = sht1x.readTemperatureC();
      humidity = sht1x.readHumidity();
      lcd.clear();
      lcd.setCursor(,0);
      lcd.print("Tmp : ");
      lcd.print(temp_c);
      lcd.setCursor(2,1);
      lcd.print("Hum : ");
      lcd.print(humidity);
      lcd.print("%");
      
      Serial.print("Temp: ");
      Serial.print(temp_c);
      Serial.print("Humidity: ");
      Serial.print(humidity);
      Serial.println("%");
    
    
     
     if(temp_c<37.5){ //lighting up the led
        digitalWrite(4,HIGH);
      }
        
    if(temp_c>37.7){ //lighting up the led
        digitalWrite(4,LOW);
      }
     
    
    
     if(humidity<57){
     digitalWrite(3,HIGH);
     }
    
    
    if(humidity>61){
      digitalWrite(3,LOW); 
    }
      delay(1000);
    }
  8. #8
    2014/10/05
    1,546
    1,088

    پاسخ : ساخت کنترل کننده pid با آردوینو

    با سلام و درود
    در این مطلب پیرامون مبحث PID مواردی بیان شده است که می تواند کمک کننده باشد:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  9. #9
    2016/11/05
    16
    20

    پاسخ : ساخت کنترل کننده pid با آردوینو

    نقل قول نوشته اصلی توسط sadegh.put

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    اون مشکل برنامه نویسی حل شد ... برای بخش انتگرال گیر محدوده مثبت و منفی قرار دادم و برای خود سیگنال pid محدوده 0 تا 255 قرار دادم ...
    الان مشکل اصلی دیمر هست ... اگه کمک کنید ممنون میشم
    سلام.
    از رله SSR استفاده کنید. انشاالله خوب باشه.
  10. #10
    2018/10/10
    1
    0

    پاسخ : ساخت کنترل کننده pid با آردوینو

    نقل قول نوشته اصلی توسط sadegh.put

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    اون مشکل برنامه نویسی حل شد ... برای بخش انتگرال گیر محدوده مثبت و منفی قرار دادم و برای خود سیگنال pid محدوده 0 تا 255 قرار دادم ...
    الان مشکل اصلی دیمر هست ... اگه کمک کنید ممنون میشم
    سلام ببخشید منم دقیقا مشکل شما رو دارم...میخوام با آردوینو و PID کنترلر معمولی که نوشته شده سرعت یک موتور رو کنترل میکنم ولی خروجی PID یه بازه خیلی بزرگ میشه که با 0 تا 255 مربوط به PWM هم خوانی نداره...ممنون میشم اگه یکم بیشتر توضیح بدین که چجوری مشکل رو حل کردین و اگه یک نمونه کد هم بذارید که ممنونتون میشم.
    ویرایش توسط sajad1210 : 2018/11/29 در ساعت 16:16
نمایش نتایج: از 1 به 10 از 10

موضوعات مشابه

  1. ساخت مدار کنترل کننده برای فن سی پی یو
    توسط ghaderi00 در انجمن مدارهای آنالوگ و مدارهای مجتمع
    پاسخ: 6
    آخرين نوشته: 2016/01/25, 13:25
  2. ساخت مدار کنترل کننده صوتی با 4 رله با AVR
    توسط ehsan2774 در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2015/04/22, 19:10
  3. پاسخ: 3
    آخرين نوشته: 2012/07/21, 22:06
  4. چگونگی ساخت ظبط کننده سیگنال ریموت کنترل
    توسط roohiran در انجمن مدارهای مجتمع خطی
    پاسخ: 6
    آخرين نوشته: 2011/03/08, 15:57

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •