Anda di halaman 1dari 6

22/4/2021 Arduino - Kontroler PID, Perpustakaan Auto-tuning Dan Contoh untuk Motor DC - Forum PHPoC

Masuk atau mendaftar

Cari

Tanya Jawab Blog Proyek Tutorial Berita

Buat Blog Baru Proyek baru

Blog IoT Lover

Jika ini adalah kunjungan pertama Anda, pastikan untuk memeriksa FAQ dengan mengklik link di atas. Anda
mungkin harus mendaftar sebelum Anda dapat memposting: klik tautan daftar di atas untuk melanjutkan.
Untuk mulai melihat pesan, pilih forum yang ingin Anda kunjungi dari pilihan di bawah ini.

Arduino - Pengontrol PID, Perpustakaan Tuning Otomatis Dan Contoh untuk


Motor DC

Halaman 1 dari 1

IoT_lover memulai posting blog Arduino - PID Controller, Auto-tuning Library Dan
Contoh untuk Motor DC Bagikan Menciak

11-30-2018, 13.27

Artikel ini memberikan pustaka dan contoh kode pengontrol posisi dan kecepatan motor DC menggunakan
pengontrol PID dan penyetelan otomatis.

Pendahuluan
Pernahkah Anda mendengar tentang pengontrol PID?

Lihat: Definisi Wikipedia

Ini adalah pengontrol yang banyak digunakan di industri untuk mengontrol berbagai variabel proses seperti suhu,
tekanan, gaya, laju umpan, laju aliran, komposisi kimia (konsentrasi komponen), berat, posisi, kecepatan, dan
praktis setiap variabel lain yang memiliki pengukuran.

Pada artikel ini, saya fokus menggunakan PID untuk mengontrol posisi dan kecepatan motor DC Brushed.

Apa yang menentukan kinerja pengontrol PID?

Kinerja PID ditentukan oleh Kp, Ki dan Kd gain (koefisien untuk proporsional, integral, dan suku turunan). Setiap
sistem memiliki gain PID optimalnya masing-masing. Menemukan perolehan PID terbaik adalah tugas yang sulit.
Oleh karena itu, kami biasanya menggunakan keuntungan yang dapat diterima. Link ini memberikan gambaran
tentang pengaruh Kp, Ki dan Kd pada sistem

. Proses pencarian nilai parameter ini disebut "tuning". Pengontrol PID dapat secara manual menyetel dan
menyetel otomatis ...

Penyetelan manual: Metode ini membutuhkan personel berpengalaman


https://forum.phpoc.com/blogs/iot-lover/1289-arduino-pid-controller-auto-tuning-library-and-example-for-dc-motor 1/6
22/4/2021 Arduino - Kontroler PID, Perpustakaan Auto-tuning Dan Contoh untuk Motor DC - Forum PHPoC
Penalaan otomatis: penyetelan dilakukan oleh perangkat lunak.

Saya menerapkan pustaka Auto-tuning untuk posisi dan kecepatan motor DC (lihat kode sumber) menggunakan
metode Relay On / Off. Kode ini ditulis untuk platform PHPoC.

Penguatan PID dari penyetelan otomatis bukanlah perolehan terbaik. Anda dapat melakukan fine-tune secara
manual berdasarkan perolehan PID dari auto-tuning.

Hal yang digunakan dalam proyek ini


Kabel Arduino Uno atau Mega + USB
PHPoC Shield R2 atau PHPoC WiFi Shield R2
Pengontrol Motor DC - PES-2604
Motor DC dengan encoder
Catu daya untuk motor DC (Adaptor DC 4 ~ 18V)
Catu daya untuk Arduino (kabel USB atau adaptor DC)

Arsitektur Sistem Kontroler

PID PID adalah sistem loop tertutup, kita membutuhkan umpan balik dari motor DC. Oleh karena itu, untuk
menggunakan kendali PID, motor DC perlu memiliki encoder.

Encoder akan mengeluarkan sinyal, yang digunakan untuk menghitung posisi dan kecepatan sebenarnya.
Perhitungan posisi dan kecepatan dilakukan oleh pengontrol motor DC. Motor DC mengirimkan nilai yang dihitung
(disebut nilai umpan balik) kembali ke Arduino. Library pada Arduino akan melakukan penyesuaian berdasarkan
nilai feedback, nilai yang diinginkan, Kp, gain Ki dan Kd, dan staling factor. Setelah melakukan pengaturan,
Arduino mengirimkan perintah beserta nilai duty-cycle PWM ke pengontrol motor DC, motor DC akan
mengeluarkan sinyal PWM untuk mengendalikan motor DC. Proses ini diulangi dalam putaran tak terbatas.

Pengkabelan
Stack PHPoC Shield atau PHPoC WiFi Shield di Arduino
Stack DC motor controller PES-2604 pada PHPoC Shield atau PHPoC WiFi Shield
https://forum.phpoc.com/blogs/iot-lover/1289-arduino-pid-controller-auto-tuning-library-and-example-for-dc-motor 2/6
22/4/2021 Arduino - Kontroler PID, Perpustakaan Auto-tuning Dan Contoh untuk Motor DC - Forum PHPoC
Hubungkan blok terminal pengontrol motor DC ke motor DC dan catu daya untuk motor DC sebagai berikut:

Blok Terminal - Kabel VM <----> (+) - catu daya untuk motor DC


Blok Terminal - GND <----> (-) wire - catu daya untuk motor DC
Blok Terminal - Kabel M1 + <----> (+) - motor DC
Blok Terminal - Kabel M1- <----> (-) - motor DC

(Opsional) Hubungkan port encoder pengontrol motor DC ke pin encoder motor DC sebagai berikut:

Encoder 1 - 5V <----> Vcc - Encoder motor DC


Encoder 1 - GND <----> GND - Encoder motor DC
Encoder 1 - 1A <----> Fase - Encoder motor DC
Encoder 1 - 1B <----> fase B - Encoder motor DC

Encoder 1 terletak di baris atas port encoder. Lebih detail ada di sini

Contoh
Perhatikan bahwa, motor yang berbeda memiliki karakteristik yang berbeda pula. Anda mungkin perlu
menyesuaikan beberapa parameter seperti:

Faktor skala: void setScaleFactor (float scaleFactor)


Periode PWM: void setPeriod (periode panjang)
Batas integral: setIntegralLimit (min panjang, maks panjang)
Batas Istilah integral: void setIntegralTermLimit (panjang min, panjang max)

untuk memenuhi kebutuhan sistem Anda. Kode Sumber

Kontrol Posisi

(Anda juga dapat menemukan kode ini di Arduino IDE -> File -> Contoh -> Pid Controller -> DcPIDPosition)

Kode:
dcPid1.beginTune ();
while (! dcPid1.loopTune ())
;

dcPid1.setEncoderPosition (0);

//Serial.print(F("PID TUNED Kp: ")); Serial.println (dcPid1.getKp ());


//Serial.print(F("PID TUNED Ki: ")); Serial.println (dcPid1.getKi ());
//Serial.print(F("PID TUNED Kd: ")); Serial.println (dcPid1.getKd ());

Serial.print (F ("Target_Position"));
Serial.print ("");
Serial.println (F ("Real_Position"));
}
https://forum.phpoc.com/blogs/iot-lover/1289-arduino-pid-controller-auto-tuning-library-and-example-for-dc-motor 3/6
22/4/2021 Arduino - Kontroler PID, Perpustakaan Auto-tuning Dan Contoh untuk Motor DC - Forum PHPoC
}

void loop () {
jika (hitung == 0)
targetPosition = 3000;
lain jika (hitung == 1000)
targetPosition = 4000;
lain jika (hitung == 2000)
targetPosition = -2000;

jika (hitung <3000) {


position = dcPid1.loop (targetPosition);

// position = dcPid1.getEncoderPosition ();


Serial.print (targetPosition);
Serial.print ("");
Serial.println (posisi);
hitung ++;
}

Kompilasi dan unggah kode ke Arduino


Buka Serial Monitor
Tunggu sampai motor berhenti
Salin log di Serial Monitor, tempelkan ke Excel, dan plot

Dalam contoh, setpoint of position diubah. Tidak terjadi overshoot

Perhatik an bahwa: Karena hasil bergantung pada karakteristik masing-masing motor DC, jika hasilnya kurang
baik, Anda dapat mengatur parameter lain seperti Faktor Skala, Batas integral, Batas suku integral, Periode
PWM. Kode Sumber

Kontrol Kecepatan

(Anda juga dapat menemukan kode ini di Arduino IDE -> File -> Contoh -> Pid Controller -> DcPIDSpeed)
Kode:
// Kontroler PID - Posisi Kontrol Contoh Motor DC
// Tutorial tersedia di sini: https://forum.phpoc.com/blogs/iot-lover/1289-arduino-pid-cont

#include <Phpoc.h>
#include <PhpocExpansion.h>
#include <Pid.h>

DcMotorPID dcPid1 (1, 1);

https://forum.phpoc.com/blogs/iot-lover/1289-arduino-pid-controller-auto-tuning-library-and-example-for-dc-motor 4/6
22/4/2021 Arduino - Kontroler PID, Perpustakaan Auto-tuning Dan Contoh untuk Motor DC - Forum PHPoC
// DcMotorPID dcPid2 (1, 2);

int targetSpeed;
kecepatan int;
int hitung = 0;

batal penyiapan () {
Serial.begin (9600);
sementara (! Serial)
;

//Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
Phpoc.begin ();
Expansion.begin (460800);

dcPid1.setPeriod (10000);
dcPid1.setEncoderPSR (64);
dcPid1.setDecay (0);
dcPid1.setFilterFrequency (5000);
dcPid1.setScaleFactor (8); // tergantung pada motor, harus menguji secara manual untuk mend
dcPid1.setIntegralLimit (-80000, 80000);
dcPid1.setIntegralTermLimit (-2000, 2000);

Kompilasi dan unggah kode ke Arduino


Buka Serial Monitor
Tunggu sampai motor berhenti
Salin log di Serial Monitor, tempelkan ke Excel, dan plot

Dalam contoh, setpoint kecepatan diubah.

Perhatik an bahwa: Karena hasil bergantung pada karakteristik masing-masing motor DC, jika hasilnya kurang
baik, Anda dapat mengatur parameter lain seperti Faktor Skala, Batas integral, Batas suku integral, Periode
PWM.

Kode Perpustakaan

PID_Controller.zip

Terak hir diedit oleh IoT_lover ; 06-17-2019, 09:05 .

Tag: Tidak ada

https://forum.phpoc.com/blogs/iot-lover/1289-arduino-pid-controller-auto-tuning-library-and-example-for-dc-motor 5/6
22/4/2021 Arduino - Kontroler PID, Perpustakaan Auto-tuning Dan Contoh untuk Motor DC - Forum PHPoC

4 kom entar 2-4

IoT_lover berkomentar #2
06-17-2019, 09:06

halo rohuj,
saya lampirkan kode contoh dan pustaka.
Silakan periksa lagi.
Jika Anda memiliki pertanyaan, silakan berkomentar di sini!

Roinaldo Pho berkomentar #3


06-29-2019, 02:52 AM

halo, dapatkah saya membuat proyek ini tanpa menggunakan


PHPoC Shield R2 atau PHPoC WiFi Shield R2 dan menggunakan pengontrol lain? seperti L298N
dan saya memeriksa "kode perpustakaan" tetapi hanya ada [ATTACH] n1618 [/ ATTACH]
terima kasih

IoT_lover berkomentar #4
07-01-2019, 09:16 AM

Perpustakaan saat ini hanya mendukung PHPoC [WiFi] Shield R2 dan pengendali motor DC PES-2604.
Untuk pengunduhan perpustakaan, dapatkah Anda memeriksanya kembali?

Anda harus masuk untuk mengirim komentar.

Inggris (AS) TOLONG HUBUNGI KAMI PERGI KE ATAS

SISTEM SOLLAE
Semua w aktu dalam GMT + 9. Halaman ini dibuat pada 03:55.

https://forum.phpoc.com/blogs/iot-lover/1289-arduino-pid-controller-auto-tuning-library-and-example-for-dc-motor 6/6

Anda mungkin juga menyukai