Kontrol

1. Menerapkan kontrol PID Suhu pada Oven sebagai simulasi Baby Incubator.

Berikut ini langkah-langkahnya:

1. Gunakan rangkaian berikut ini:

Gambar 1. Rangkaian untuk simulasi kontrol PID suhu di Proteus

2. Gunakan program Arduino berikut:
    1. #include <Wire.h>
    2. #include <Adafruit_GFX.h>
    3. #include <Adafruit_SSD1306.h>
    4. #include <PID_v2.h>
    5. double Kp = 0, Ki = 0, Kd = 0;
    6. PID_v2 myPID(Kp, Ki, Kd, PID::Direct);
    7. Adafruit_SSD1306 display(128, 64, &Wire, -1);
    8. unsigned long skr = 0;
    9. void setup() {
    10.   Serial.begin(9600);
    11.   if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) {
    12.     Serial.println(F("SSD1306 allocation failed"));
    13.     for (;;)
    14.       ;
    15.   }
    16.   pinMode(2, INPUT_PULLUP);
    17.   pinMode(8, OUTPUT);
    18.   pinMode(9, OUTPUT);
    19.   myPID.SetOutputLimits(-255, 255);
    20.   myPID.SetSampleTime(10);
    21.   delay(1000);
    22. }
    23. void loop() {
    24.   int setpoin = map(analogRead(A6), 0, 1023, 0, 100);
    25.   double sensor = analogRead(A0) / 10.23;
    26.   Kp = analogRead(A1) / 102.3;
    27.   Ki = analogRead(A2) / 102.3;
    28.   Kd = analogRead(A3) / 102.3;
    29.   int mulai = !digitalRead(2);
    30.   if (mulai) {
    31.     myPID.SetTunings(Kp, Ki, Kd);
    32.     myPID.Start(sensor, 0, setpoin);
    33.   }
    34.   const double output = myPID.Run(sensor);
    35.   analogWrite(10, abs(output));
    36.   if (output > 0) {
    37.     digitalWrite(8, LOW);
    38.     digitalWrite(9, HIGH);
    39.   }
    40.   if (output < 0) {
    41.     digitalWrite(9, LOW);
    42.     digitalWrite(8, HIGH);
    43.   }
    44.   if (millis() - skr > 100) {
    45.     display.clearDisplay();
    46.     display.setTextSize(2);
    47.     display.setTextColor(SSD1306_WHITE);
    48.     display.setCursor(0, 0);
    49.     display.print(F("SP : "));
    50.     display.println(setpoin);
    51.     display.print(F("PV : "));
    52.     display.println(sensor);
    53.     display.setTextSize(1);
    54.     display.print(F("OP : "));
    55.     display.println(output);
    56.     display.print(F("KP : "));
    57.     display.println(Kp);
    58.     display.print(F("KI : "));
    59.     display.println(Ki);
    60.     display.print(F("KD : "));
    61.     display.println(Kd);
    62.     display.display();
    63.     Serial.print(setpoin);
    64.     Serial.print(',');
    65.     Serial.println(sensor);
    66.     skr = millis();
    67.   }
    68. } 

3. Kompilasi program di atas, isikan lokasi file hex hasil kompilasi di kolom Program File komponen ATmega328 rangkaian Proteus. Kemudian jalankan Proteus dan juga program LabVIEW, seperti gambar berikut:

Gambar 2. Hasil simulasi rangkaian kontrol PID Suhu di Proteus dan tampilan Setpoin dan hasil kontrol PID di Grafik LabVIEW


File Proteus, program Arduino, dan program LabVIEW dapat diunduh di sini: https://drive.google.com/file/d/1_7fxZuaZzFTvv36tOy7LRQWw2dgmTDuR/view?usp=sharing


2. Menerapkan kontrol PID Kecepatan dan Posisi pada Motor DC sebagai simulasi Syringe Pump.

3. Menerapkan kontrol Timer dan PID Suhu pada Oven sebagai simulasi Autoclave.

No comments:

Post a Comment