🌀 کنترل دما با فن (PID)

LM35 دما را می‌خواند و MOSFET با PWM سرعت فن را تنظیم می‌کند.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سه‌بعدی + کد)

قطعات لازم

کد کامل پروژه

// PID ساده برای فن: P + I + D
const int FAN = 9;
const float setpoint = 30.0;   // target temperature in C
const float Kp = 40.0, Ki = 2.0, Kd = 10.0;
const float dt = 0.5;          // seconds between two readings

float integral = 0;
float lastError = 0;

void setup() {
  pinMode(FAN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  float temp = analogRead(A0) * 5.0 / 1023.0 * 100.0;   // LM35: 10 mV per C
  float error = temp - setpoint;                 // positive = too hot

  integral = integral + error * dt;              // I: remembers the past
  integral = constrain(integral, -50, 50);       // anti-windup: don't remember forever
  float derivative = (error - lastError) / dt;   // D: how fast is it changing?
  lastError = error;

  float out = Kp * error + Ki * integral + Kd * derivative;
  int pwm = constrain(out, 0, 255);
  analogWrite(FAN, pwm);

  // Open the Serial Plotter to see the three lines
  Serial.print("temp:");
  Serial.print(temp);
  Serial.print(" setpoint:");
  Serial.print(setpoint);
  Serial.print(" fan:");
  Serial.println(pwm / 10.0);   // scaled so it fits next to the temperature
  delay(500);
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «کنترل دما با فن (PID)» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖