Bayangkan pemrograman robot sepakbola 3 roda. Apa jenis pengontrol yang akan Anda gunakan untuk memutarnya? P? PID?
Tujuan dari pengontrol ini adalah membuat robot berdiri pada sudut yang ditentukan (0 derajat) dan berbalik jika diputar dengan tangan atau robot lain.
Saya menggunakan motor stepper untuk robot saya dan bukan servos jadi saya perlu mengimplementasikan ini dalam perangkat lunak saya!
Saya telah menulis contoh pengontrol tipe P dan gerakannya cukup baik. Tetapi saya ingin membuatnya lebih baik jika memungkinkan. Kode tersebut adalah sebagai berikut:
void spinSpeed(int devidedValue, int addedValue, int correction) {
if(degree<correction && degree>-correction) {
motorSpeed = 0;
} else {
if(degree > 0) {
motorSpeed = ((degree)/(devidedValue) + (addedValue));
} else {
motorSpeed = ((degree)/(devidedValue) - (addedValue));
}
}
}
correction
adalah rentang, di mana robot tidak memiliki gerakan.
degree
adalah angka antara -127 dan 128 yang dikembalikan dari kompas.
motorSpeed
adalah angka antara 0 dan 255 yang diterapkan pada PWM.
degree
?Jawaban:
Yang penting untuk diingat tentang loop kontrol PID adalah bahwa setiap istilah dimaksudkan untuk mendominasi kontrol pada waktu yang berbeda selama bergerak.
Istilah proporsional dimaksudkan untuk mendominasi dan memberikan torsi yang lebih besar (atau dalam kecepatan kasing Anda) semakin jauh Anda menjauhi posisi target Anda.
Istilah turunan dimaksudkan untuk mendominasi selama fase 'pelayaran' dari gerakan trapesium khas Anda. Ini membantu untuk mengatur kembali istilah proporsional yang sangat tinggi dan membatasi akselerasi pelarian ketika Anda jauh dari tujuan Anda, tetapi juga dapat membantu meningkatkan kecepatan di mana Anda bertemu di tempat tujuan ketika Anda mendekatinya dan istilah proporsional berkontribusi lebih sedikit. .
Jika Anda menggunakan pengontrol kecepatan daripada pengontrol torsi, maka istilah turunannya mungkin sebenarnya tersembunyi di dalam pengontrol kecepatan Anda dan tidak dapat diakses langsung ke loop PID Anda. Ini dapat membuat kontrol menjadi lebih sederhana (biasanya itu hanya akan berakselerasi secepat mungkin hingga kecepatan yang diinginkan atau kecepatan maksimum, mana yang lebih rendah) tetapi juga dapat membuatnya kurang dapat diprediksi. Seringkali istilah D (atau P) yang terlalu agresif dapat mengakibatkan siklus batas (sering disebut resonansi atau osilasi yang salah karena bunyi motor bersenandung atau bahkan menjerit dalam keadaan ini, meskipun siklus-batas adalah deskripsi yang jauh lebih akurat. ).
Istilah integral ada di sana untuk mengoreksi kesalahan kondisi tetap residual , yaitu di mana ada perbedaan, persisten jangka panjang antara di mana Anda diminta untuk pergi dan di mana Anda sebenarnya. Nilai Anda saat ini
correction
(benar-benar hanya toleransi) bekerja seperti kebalikan dari istilah integral, itu memotong motor sepenuhnya ketika Anda berada dalam deadband di sekitar posisi yang diinginkan.Karena faktor-faktor ini, Anda akan mendapatkan sedikit dari menerapkan loop PID penuh kecuali Anda juga merencanakan dalam profil kecepatan dengan fase akselerasi, jelajah & perlambatan yang berbeda.
Juga ingat bahwa deadband dan kurangnya istilah I akan berarti bahwa posisi akhir akan selalu agak acak dan kemungkinan besar akan berbeda tergantung pada arah mana Anda mendekati posisi yang diinginkan. Dengan demikian, pengulangan dua arah Anda bisa jauh lebih buruk daripada pengulangan standar Anda.
Untuk informasi lebih lanjut tentang perbedaan antara akurasi, pengulangan dan resolusi, lihat deskripsi yang sangat baik ini . Dalam kasus Anda, resolusi Anda adalah sensor kompas Anda, sementara akurasi, pengulangan kemungkinan besar dibatasi oleh
correction
nilai Anda , karena jikacorrection
nilainya lebih besar dari resolusi kompas Anda, Anda membuang beberapa akurasi posisi Anda sebagai imbalan untuk dapat matikan motor Anda ketika Anda dekat.sumber
Kontroler PID akan menjadi yang terbaik, Menggunakan kompas maka itu adalah tugas yang relatif lurus ke depan untuk mendapatkan bantalan robot Anda dan membandingkannya dengan bantalan yang ingin Anda capai, dan menggunakan beberapa teknik penyetelan PID untuk mencapai gerakan putaran yang halus untuk judul yang Anda inginkan. Pendekatan ini juga dapat diterapkan untuk memutar dengan jumlah yang diberikan secara akurat.
Saya telah melakukan beberapa robot di bidang ini, ini yang kami gunakan dalam robot kami, melakukan tugas yang tidak terlalu berbeda dengan milik Anda ...
sumber