🌀 کنترل دما با فن (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);
}
چطور اجرایش کنم؟
- شبیهساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
- از پنل «نمونهها»، «کنترل دما با فن (PID)» را بارگذاری کن — مدار و کد با هم میآیند.
- دکمهی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
- حالا کد را تغییر بده — عددها، پینها، ترتیب — و دوباره اجرا کن!