• Tidak ada hasil yang ditemukan

06 Sistem Cerdas (Intelligent System)

N/A
N/A
Naufal Aryandi

Academic year: 2024

Membagikan "06 Sistem Cerdas (Intelligent System) "

Copied!
13
0
0

Teks penuh

(1)

Modul ke:

Fakultas

Program Studi

Modul ke:

Fakultas

Program Studi

0 6

Fakultas Teknik Teknik Elektro

Pembuka

Pembuka Daftar PustakaDaftar Pustaka Akhiri PresentasiAkhiri Presentasi

Defuzzifikasi Bagian 2 (Sugeno) &

Tutorial Fuzzy untuk Microcontroller

Sistem Cerdas

(Intelligent System)

Galang Persada Nurani Hakim, S.T.,

M.T., IPM., Ph.D.

(2)

Tutorial Fuzzy untuk Microcontroller

a. Pengaturan Library untuk FUZZY dan sensor suhu

#include <FuzzyRule.h>

#include <FuzzyComposition.h>

#include <Fuzzy.h>

#include <FuzzyRuleConsequent.h>

#include <FuzzyOutput.h>

#include <FuzzyInput.h>

#include <FuzzyIO.h>

#include <FuzzySet.h>

#include <FuzzyRuleAntecedent.h>

#include <OneWire.h>

#include <DallasTemperature.h>

Fuzzy System

(3)

Tutorial Fuzzy untuk Microcontroller

b. Pengaturan Input Output pada microcontroller.

Pengaturan ini melibatkan komunikasi microcontroller dengan sensor suhu DS18B20 pada pin D0 dan pengaturan arus dengan PWM pada pin D1

// Data wire is plugged into pin D0

#define ONE_WIRE_BUS D0

#define peltier D1

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)

OneWire oneWire(ONE_WIRE_BUS);

Fuzzy System

(4)

Tutorial Fuzzy untuk Microcontroller

// Pass our oneWire reference to Dallas Temperature.

DallasTemperature DS18B20(&oneWire);

char temperatureCString[7];

float suhusensor, outputpwm;

Fuzzy* fuzzy = new Fuzzy();

void setup() {

Serial.begin(9600);

Serial.println();

pinMode(peltier, OUTPUT);

delay(100);

DS18B20.begin();

Fuzzy System

(5)

Tutorial Fuzzy untuk Microcontroller

c. Pengaturan Fuzzifikasi input suhu.

Pada pengaturan ini fungsi keanggotaan linguistik suhu (dingin, sejuk, normal) sebagai input microcontroller ditulis.

FuzzyInput* suhu = new FuzzyInput(1);

FuzzySet* dingin = new FuzzySet(0, 24, 25, 26);

suhu->addFuzzySet(dingin);

FuzzySet* sejuk = new FuzzySet(25, 26, 27, 28);

suhu->addFuzzySet(sejuk);

FuzzySet* normal = new FuzzySet(27, 28, 29, 30);

suhu->addFuzzySet(normal);

fuzzy->addFuzzyInput(suhu);

Fuzzy System

(6)

Tutorial Fuzzy untuk Microcontroller

d. Pengaturan Fuzzifikasi Output PWM

Pada pengaturan ini fungsi keanggotaan linguistik PWM (minimum, sedang, maksimum) sebagai output microcontroller ditulis.

FuzzyOutput* pwm = new FuzzyOutput(1);

FuzzySet* minimum = new FuzzySet(0, 55, 85, 115);

pwm->addFuzzySet(minimum);

FuzzySet* sedang = new FuzzySet(95, 125, 155, 185);

pwm->addFuzzySet(sedang);

FuzzySet* maksimum = new FuzzySet(165, 195, 225, 255);

pwm->addFuzzySet(maksimum);

fuzzy->addFuzzyOutput(pwm);

Fuzzy System

(7)

Tutorial Fuzzy untuk Microcontroller

e. Pengaturan Rule

Pada pengaturan ini fungsi pemetaan antara input linguistik suhu (dingin, sejuk, normal) dengan output linguistik PWM (minimum, sedang, maksimum) ditulis.

FuzzyRuleAntecedent* ifSuhuDingin = new FuzzyRuleAntecedent();

ifSuhuDingin->joinSingle(dingin);

FuzzyRuleConsequent* thenPwmMinimum = new FuzzyRuleConsequent();

thenPwmMinimum->addOutput(minimum);

FuzzyRule* fuzzyRule01 = new FuzzyRule(1, ifSuhuDingin, thenPwmMinimum);

fuzzy->addFuzzyRule(fuzzyRule01);

Fuzzy System

(8)

Tutorial Fuzzy untuk Microcontroller

FuzzyRuleAntecedent* ifSuhuSejuk = new FuzzyRuleAntecedent();

ifSuhuSejuk->joinSingle(sejuk);

FuzzyRuleConsequent* thenPwmSedang = new FuzzyRuleConsequent();

thenPwmSedang->addOutput(sedang);

FuzzyRule* fuzzyRule02 = new FuzzyRule(2, ifSuhuSejuk, thenPwmSedang);

fuzzy->addFuzzyRule(fuzzyRule02);

FuzzyRuleAntecedent* ifSuhuNormal = new FuzzyRuleAntecedent();

ifSuhuNormal->joinSingle(normal);

FuzzyRuleConsequent* thenPwmMaksimum = new FuzzyRuleConsequent();

thenPwmMaksimum->addOutput(maksimum);

FuzzyRule* fuzzyRule03 = new FuzzyRule(3, ifSuhuNormal, thenPwmMaksimum);

fuzzy->addFuzzyRule(fuzzyRule03);

Fuzzy System

(9)

<< MENUMENU AKHIRIAKHIRI >>

MENUMENU AKHIRIAKHIRI

Tutorial Fuzzy untuk Microcontroller

f. Pengaturan Defuzzifikasi

Pada pengaturan ini pengendalian PWM sebagai hasil defuzifikasi di keluarkan pada serial monitor arduino ide. Selain hasil defuzifikasi pembacaan suhu sebagai input microcontroller juga di keluarkan pada serial monitor arduino ide.

void loop() {

bacasuhu();

kontrolsuhu();

algoritmafuzzy();

delay(1000);

}

void algoritmafuzzy()

Fuzzy System

(10)

Tutorial Fuzzy untuk Microcontroller

void algoritmafuzzy() {

fuzzy->setInput(1, suhusensor);

fuzzy->fuzzify();

outputpwm = fuzzy->defuzzify(1);

Serial.print("Hasil perhitungan PWM Menggunakan Fuzzy = ");

Serial.println(outputpwm);

Serial.println();

Serial.println();

}

Fuzzy System

(11)

Tutorial Fuzzy untuk Microcontroller

void bacasuhu()

{ DS18B20.requestTemperatures();

suhusensor = DS18B20.getTempCByIndex(0);

dtostrf(suhusensor, 2, 2, temperatureCString);

Serial.print("Suhu Air Terbaca Oleh Sensor = ");

Serial.print(suhusensor);

Serial.println(" Celcius");}

void kontrolsuhu()

{ digitalWrite(peltier, outputpwm);}

Fuzzy System

(12)

Tutorial Fuzzy untuk Microcontroller

Hasil pengaturan dengan output pada serial monitor Arduino ide

Fuzzy System

(13)

Terima Kasih Terima Kasih Terima Kasih

Galang Persada Nurani Hakim, S.T., M.T., IPM.,

Ph.D.

Referensi

Dokumen terkait

Dalam tahap pengujian ini, hasil pengujian 100 RPM dan 150 RPM didapatkan melalui nilai baca RPM pada serial monitor dalam Arduino Uno, Maksud menggunakan sampling 0.5