mEmang sUsah uNtuk mEndapatkan aPa yAng kIta iNginkan dAlam kEhidupan kIta, tApi sEbenarnya aDa kEsempatan yAng cEmerlang di dEpan sAna, kIta hAnya cUkup bErgerak mAju dAn tIdak tErperangkap dAlam kEsedihan mAsa lAlu...
eCko aNggoRo

Jumat, 30 Juli 2010

Programming Mikrokontroler AVR dengan C

http://www.blogcatalog.com/blogs/dunia-pemrograman-kata-kata-mutiara-dan-kata-kata-bijak-dunia-islami/all/explore/pemrograman+codevisionavr/



Pemrograman Bahasa C untuk AVR Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler। Bahasa ini sudah merupakan high level language, dimana memudahkan programmer menuangkan algoritmanya. Untuk mengetahui dasar bahasa C dapat dipelajari sebagai berikut.

1. Struktur penulisan program
#include < [library1.h] > // Opsional
#include < [library2.h] > // Opsional
#define [nama1] [nilai] ; // Opsional
#define [nama2] [nilai] ; // Opsional
[global variables] // Opsional
[functions] // Opsional
void main(void) // Program Utama
{ [Deklarasi local variable/constant] [Isi Program Utama] }

2. Tipe data
char : 1 byte ( -128 s/d 127 )
unsigned char : 1 byte ( 0 s/d 255 )
int : 2 byte ( -32768 s/d 32767 )
unsigned int : 2 byte ( 0 s/d 65535 )
long : 4 byte ( -2147483648 s/d 2147483647 )
unsigned long : 4 byte ( 0 s/d 4294967295 )
float : bilangan desimal
array : kumpulan data-data yang sama tipenya.

3. Deklarasi variabel & konstanta
Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.
Penulisan : [tipe data] [nama] = [nilai] ;
Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.
Penulisan : const [nama] = [nilai] ;
Tambahan: Global variabel/konstanta yang dapat diakses di seluruh bagian program.
Local variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya.

4. Statement
Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga comments / komentar.
Contoh: suhu=adc/255*100; //contoh rumus perhitungan suhu

5. Function Function
adalah bagian program yang dapat dipanggil oleh program utama.
Penulisan : [tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) { [statement] ; }

6. Conditional statement dan looping if else
digunakan untuk penyeleksian kondisi
if ( [persyaratan] ) { [statement1]; [statement2]; } else { [statement3]; [statement4]; }
for : digunakan untuk looping dengan jumlah yang sudah diketahui
for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) { [statement1]; [statement2]; }
while : digunakan untuk looping jika dan salama memenuhi syarat tertentu
while ( [persyaratan] ) { [statement1]; [statement2]; }
do while : digunakan untuk looping jika dan salama memenuhi syarat tertentu, namun min 1 kali
do { [statement1]; [statement2]; } while ( [persyaratan] )
switch case : digunakan untuk seleksi dengan banyak kondisi
switch ( [nama variabel] ) { case [nilai1]: [statement]; break; case [nilai2]: [statement]; break; }

7. Operasi logika dan biner Logika
AND :&&
NOT : !
OR : ||
Biner AND : &
OR : |
XOR : ^
Shift right: >>
Shift left : << style="font-weight: bold;">8. Operasi relasional (perbandingan)
Sama dengan : ==
Tidak sama dengan : !=
Lebih besar : >
Lebih besar sama dengan : >=
Lebih kecil : < style="font-weight: bold;">9. Operasi aritmatika
+ , - , * , / : tambah,kurang,kali,bagi
+= , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di sebelah kanan operator
% : sisa bagi
++ , -- : tambah satu (increment) , kurang satu (decrement)
Contoh :
a = 5 * 6 + 2 / 2 -1 ;
maka nilai a adalah 30 a *= 5 ;
jika nilai awal a adalah 30, maka nilai a = 30x5 = 150. a += 3 ;
jika nilai awal a adalah 30, maka nilai a = 30+5 = 33. a++ ;
jika nilai awal a adalah 5 maka nilai a = a+1 = 6. a-- ;
jika nilai awal a adalah 5 maka nilai a = a-1 = 4.

bAcA sEleNgkaPnya......

Selasa, 06 Juli 2010

Implementasi Fuzzy Logic Pada Microcontoller Untuk Kendali Putaran Motor DC

Fuzzy Logic Controller merupakan alternatif sistem kendali modern yang mudah karena tidak perlu dicari model matematis dari suatu sistem, tetapi tetap efektif karena memiliki respon sistem yang stabil. Motor DC Servo yang dikontrol oleh mikrokontroler 8031 dan metode pengaturan yang digunakan adalah fuzzy logic. Fuzzy logic yang dirancang memiliki 2 input (Err & DErr) dan 1 output (Doutput). Masing-masing membership function memiliki 5 label. Disini digunakan 25 fuzzy if-then rule yang terdiri atas 9 rule pokok/utama, 10 rule tambahan dan 6 rule pelengkap. Sedangkan proses fuzzy logic terdiri dari fuzzifikasi, evaluasi rule dan yang terakhir defuzzifikasi. Penggerak motor (driver motor) menggunakan sistem PWM (Pulse Width Modulation). Input setting point dilakukan melalui pedal (foot switch) yang dikonversi ke tegangan dan kemudian oleh ADC 0808 diubah ke besaran digital. Input Setting Point dibatasi antara 0 sampai dengan 255 RPM sesuai dengan yang dibutuhkan.
Pengujian respon sistem dilakukan terhadap variasi setting point, variasi beban dan variasi rule. Dari datadata yang diperoleh menunjukkan bahwa respon sistem cukup cepat dalam mengejar nilai setting point baik dalam berbagai variasi yaitu setting point, beban dan rule. Fuzzy logic merupakan salah satu sistem kontrol yang redundant atau fault tolerant yang artinya fuzzy logic controller masih dapat bekerja dengan adanya pengurangan beberapa rule, maupun jika terjadi kesalahankesalahan kecil dalam pemrogramannya, tanpa adanya perubahan yang signifikan.

Fuzzy Logic Controller merupakan alternatif sistem kendali modern yang mudah karena tidak perlu dicarimodel matematis dari suatu sistem, tetapi tetap efektif karena memiliki respon sistem yang stabil. Alat yang direncanakan diputar oleh motor DC Servo yang dikontrol oleh mikrokontroler8031 dan metode pengaturan yang digunakan adalah fuzzy logic. Fuzzy logic yang dirancang memiliki 2 input(Err & DErr) dan 1 output (Doutput). Masing-masing membership function memiliki 5 label. Disini digunakan 25fuzzy if-then rule yang terdiri atas 9 rule pokok/utama, 10 rule tambahan dan 6 rule pelengkap. Sedangkanproses fuzzy logic terdiri dari fuzzifikasi, evaluasi rule dan yang terakhir defuzzifikasi. Penggerak motor (drivermotor) menggunakan sistem PWM (Pulse Width Modulation). Input setting point dilakukan melalui pedal (footswitch) yang dikonversi ke tegangan dan kemudian oleh ADC 0808 diubah ke besaran digital. Input SettingPoint dibatasi antara 0 sampai dengan 255 RPM sesuai dengan yang dibutuhkan.Pengujian respon sistem dilakukan terhadap variasi setting point, variasi beban dan variasi rule. Dari datadatayang diperoleh menunjukkan bahwa respon sistem cukup cepat dalam mengejar nilai setting point baikdalam berbagai variasi yaitu setting point, beban dan rule.Fuzzy logic merupakan salah satu sistem kontrol yang redundant atau fault tolerant yang artinya fuzzy logiccontroller masih dapat bekerja dengan adanya pengurangan beberapa rule, maupun jika terjadi kesalahankesalahankecil dalam pemrogramannya, tanpa adanya perubahan yang signifikan.

Motor DC Servo

DC servo motor yang digunakan dalam perencanaan ini adalah DC servo motor yang menggunakan permanen magnet. Alasan pemilihan DC servo motor tipe ini adalah kemudahan dalam pengontrolan dengan menggunakan pengaturan tegangan DC. Medan stator motor jenis ini dihasilkan oleh magnet permanen bukan elektromagnet. PM motor mempunyai kurva kecepatan torsi yang linier dalam jangka yang lebar. Penggunaan magnet permanen tidak membutuhkan daya listrik untuk menghasilkan medan stator, sehingga daya dan pendinginan yang diperlukan lebih rendah dibandingkan motor yang menggunakan elektromagnet. Perubahan kecepatan motor dapat dengan mudah diatur dengan cara mengubahubah besarnya tegangan DC yang diberikan pada motor.

DC servo motor memiliki beberapa keunggulan, yaitu :

  • Bentuknya kompak, ringan dan berdaya kerja tinggi
  • Dapat bekerja pada daerah atau tempat yang kurang baik
  • Kecepatan maksimum yang sangat tinggi
  • Biaya perawatan mudah

DC servo motor ini mempunyai fasilitas optical encoder yang menjadi satu dengan body motor dan ikut berputar pada saat motor berputar. Encoder ini berfungsi sebagai feedback untuk pengontrolan close loop.

B. Perencanaan Perangkat Keras

Pada gambar 1 ditunjukkan blok diagram sistem dimana pada blok tersebut terdapat :

  • Minimum Sistem 8031 dengan perangkat lunak fuzzy system.
  • Rangkaian ADC yang berfungsi sebagai konverter dari besaran analog ke besaran digital, rangkaian ADC ini menerima input SP (Setting point) pada channel 0 dan PV (Present Value) pada channel 1. Rangkaian ADC ini dapat pada gambar 2.
  • Rangkaian DAC yang mengkonverter besaran digital ke besaran analog. Gambar 3 merupakan rangkaian DAC yang dipakai dalam sistem ini.
  • Rangkaian F/V (gambar 4) mengkonversi frekuensi output yang dihasilkan oleh tachometer dari motor Servo ke tegangan yang kemudian tegangan ini merupakan harga Present Value yang diterima ADC.

Gambar 1. Blok Diagram Sistem

  • Driver motor berfungsi untuk menjalankan motor servo yang kemudian motor ini memutar alat. Driver motor ini mendapat input analog dari rangkaian DAC. Rangkaian driver motor ini dapat dilihat pada gambar 5.
  • Input SP berupa 2 pedal, yang berfungsi untuk menjalankan motor. pedal yang satu memutar potensiometer ke kiri dan yang satu lagi memutar ke kanan. Output dari potensiometer ini berupa tegangan yang merupakan input SP.
  • Display LCD untuk menampilkan nilai SP dan PV.

Gambar 2. Rangkaian ADC Dengan Menggunakan ADC0808

Gambar 3. Rangkaian DAC Dengan Menggunakan DAC0808

Gambar 4. Rangkaian Pengubah Frekuensi Ke Tegangan

Gambar 5. Rangkaian Driver Motor DC

bAcA sEleNgkaPnya......

Motor Servo

Motor servo adalah sebuah motor dengan sistem umpan balik tertutup di mana posisi dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor servo. Motor ini terdiri dari sebuah motor DC, serangkaian gear, potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan batas sudut dari putaran servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor.

Karena motor DC servo merupakan alat untuk mengubah energi listrik menjadi energy mekanik, maka magnit permanent motor DC servolah yang mengubah energi listrik ke dalam energi mekanik melalui interaksi dari dua medan magnit. Salah satu medan dihasilkan oleh magnit permanent dan yang satunya dihasilkan oleh arus yang mengalir dalam kumparan motor. Resultan dari dua medan magnit tersebut menghasilkan torsi yang membangkitkan putaran motor tersebut. Saat motor berputar, arus pada kumparan motor menghasilkan torsi yang nilainya konstan.

Secara umum terdapat 2 jenis motor servo. Yaitu motor servo standard dan motor servo Continous. Servo motor tipe standar hanya mampu berputar 180 derajat. Motor servo standard sering dipakai pada sistim robotika misalnya untuk membuat “ Robot Arm” ( Robot Lengan ). sedangkan Servo motor continuous dapat berputar sebesar 360 derajat. motor servo Continous sering dipakai untuk Mobile Robot. Pada badan servo tertulis tipe servo yang bersangkutan.

Motor servo merupakan sebuah motor dc kecil yang diberi sistim gear dan potensiometer sehingga dia dapat menempatkan “horn” servo pada posisi yang dikehendaki. Karena motor ini menggunakan sistim close loop sehingga posisi “horn” yang dikehendaki bisa dipertahanakan. “Horn” pada servo ada dua jenis. Yaitu Horn “ X” dan Horn berbentuk bulat ( seperti pada gambar di bawah ).

Servo Dengan Horn Bulat

Servo Dengan Horn X

Pengendalian gerakan batang motor servo dapat dilakukan dengan menggunakan metode PWM. (Pulse Width Modulation). Teknik ini menggunakan system lebar pulsa untuk mengemudikan putaran motor. Sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor. Tampak pada gambar dengan pulsa 1.5 mS pada periode selebar 2 mS maka sudut dari sumbu motor akan berada pada posisi tengah. Semakin lebar pulsa OFF maka akan semakin besar gerakan sumbu ke arah jarum jam dan semakin kecil pulsa OFF maka akan semakin besar gerakan sumbu ke arah yang berlawanan dengan jarum jam.

Untuk menggerakkan motor servo ke kanan atau ke kiri, tergantung dari nilai delay yang kita berikan. Untuk membuat servo pada posisi center, berikan pulsa 1.5ms. Untuk memutar servo ke kanan, berikan pulsa <=1.3ms, dan pulsa >= 1.7ms untuk berputar ke kiri dengan delay 20ms, seperti ilustrasi berikut:

PEMBAHASAN

Salah satu rangkaian yang digunakan untuk uji alat servo terlihat seperti dibawah ini. Rangkaian terdiri dari astable multivibrator dan monostable multivibrator.

Rangkaian disamping berfungsi membangkitkan PWM, yang nantinya akan menggerakkan motor servo.

Setiap pinggiran menuju positif astable multivibrator menyulut monostable sehingga pulsa keluaran dapat diubah dari satu millisecond hingga dua millisecond.

Astable multivibrator adalah rangkaian multivibrator yang mempunyai output tidak stabil pada suatu keadaan, berubah terus menerus dari keadaan 0 menjadi 1, dan dari 1 menjadi 0. Keadaan tidak stabil ini dapat dimanfaatkan untuk membuat oscillator gelombang kotak. Pada rangkaian diatas astable multivibrator mengahasilkan frekuensi 50Khz dengan lebar pulsa kurang lebih 10mS.

Monostable multivibrator digunakan untuk mengatur pulsa keluaran. Monostable multivibrator merupakan rangkaian yang mempunyai suatu keadaan stabil. Jika nilai awal output monostable multivibrator adalah 0, ketika mendapat pulsa dari luar, maka monostable multivibrator akan mengalami keadaan semi stabil sehingga output menjadi 1 pada suatu waktu tertentu, lalu kembali ke nilai 0 kembali. Yang menentukan lama waktu kembali ini adalah harga komponen R dan C pada rangkaian monostable multivibrator.

Keluaran dari monostable multivibrator ini kemudian dimanfaatkan untuk menggerakkan servo. Potensio 27K berfungsi untuk menentukan delay seberapa lama monostable multivibrator mempertahankan kestabilannya. Ketika potensio 27K diberi nilai resistansi kecil, akibatnya jika kapasitor C1 sudah terisi penuh, dia akan segera membuang muatanya dan kestabilan monostable multivibrator segera berubah. Dari logika 1 akan segera berupa menjadi logika 0 atau dengan kata lain delaynya kecil. Sebaliknya, saat potensio resistansinya besar, muatan yang dibuang kapasitor akan tertahan. Monostable multivibrator dari keadaan 1, masih tetap mempertahankan keadaanya kemudian sedikit demi sedikit keadaanya berubah menjadi 0. Dengan kata lain delaynya menjadi besar. Dengan demikian pergerakan motor servo juga berubah. Secara tidak langsung potensio digunakan untuk merubah arah gerak motor servo.


#) Motor Servo
Berbeda dengan motor DC dan motor Stepper, motor servo adalah sebuah
motor dengan sistem closed feedback di mana posisi dari motor akan diinformasikan
kembali ke rangkaian kontrol yang ada di dalam motor servo. Motor ini terdiri dari
sebuah motor, serangkaian gear, potensiometer dan rangkaian kontrol.
Potensiometer berfungsi untuk menentukan batas sudut dari putaran servo.
Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang dikirim
melalui kaki sinyal dari kabel motor. Tampak pada gambar dengan pulsa 1.5 mS pada
periode selebar 2 mS maka sudut dari sumbu motor akan berada pada posisi tengah.
Semakin lebar pulsa OFF maka akan semakin besar gerakan sumbu ke arah jarum jam
dan semakin kecil pulsa OFF maka akan semakin besar gerakan sumbu ke arah yang
berlawanan dengan jarum jam.
Motor servo biasanya hanya bergerak mencapai sudut tertentu saja dan tidak
kontinyu seperti motor DC maupun motor stepper. Walau demikian, untuk beberapa
keperluan tertentu, motor servo dapat dimodifikasi agar bergerak kontinyu.

bAcA sEleNgkaPnya......
zwani.com myspace graphic comments