Technologi Solution

 MIKROKONTROLLER
Buat agan-agan yang mau belajar mikro, bukan disini tempatnya..! salah kalau agan-agan menjadikan web ini sebagai refernsi, karena ini gak sesuai dengan tutorial, tapi cukup bisa bikin agan cepat memahami mkro dengan cara agan sendiri...! wkwkwkwk...! yang penting aplikasi gan, bukan cuma teori tapi gak bisa dimengerti..! ane mau share yang ane ngerti dan faham dengan kata-kata ane sendiri. Maaf jika kata-katanya gak baku apalagi sesuai EYD.., jauh dari kata sempurna..! tapi yakinlah karena ini akan mudah buat agan memahami tentang sebuah mikrokontroller.

Langsung aja gan, disin ane cuma mau share tentang mikro yang ane kenal dan pernah coba aja gan..! langsung ke TKP..! cekidot..!

1. Mikrokontroller ATMEL Family ( Keluarga Atmel ).

Agan kenal dong dengan yang namanya ATMEL ? baik itu AT89S/C51 ataupun ATMega 16,32,64,128 atau sebagainya. secara sistem atau apanya sama aja gan, cuma yang membedakan adalah fasilitas memorinya, sedangkan yang lainnya sama..! nah, biasanya yang jadi masalah itu adalah dalam pemrogramannya, dimana ada yang pake Assembler, Basic, bahasa C atau dengan yang lainnya...! nah disinia ane cuma mau share yang Basic aja gan, karena untuk yang Assembler ane kapok dan takut agan-agan pada muntah..! wkwkwkwk....! 
Ane kasih contoh syntax per instruksinya gan, sekaligus penjelasannya, jadi agan bisa riset sendiri.

$regfile = "m64def.dat" --> ini adalah untuk pemilihan mikro yang dipakai gan, disini ane misalkan pakai AT mega 64, biasanya file ini sudah ada tersimpan di file install software yang kita pakai gan, ane pakai software BASCOM AVR.

$crystal = 16000000 --> ini adalah untuk konfigurasi kristal yang kita pakai gan, kebetulan ane pake yang 16MHz, ini fungsinya buat ngatur clock gan, semakin besar nilai kristal maka semakin cepat pula pengeksekusian sebuah instruksi.


$baud = 9600 --> ini konfigurasi baudrate gan, fngsinya untuk sistem transfer data, disini kita gunakan baudrate 9600 bps ( artinya 9600 bit per second data yang terkirim aau tereksekusi )


Open "coma.0:9600,8,n,1" For Output as #1 --> ini adalah konfigurasi buat buka pin serial komunikasi, disini ane pakai PORT A pin 0 (PORTA.0), bisa agan lihat di tulisan coma.0 itu artinya COM di PORT A pin 0.


Config PORTB.0 = Output --> ini untuk konfigurasi pin I/O, dimana PORT B pin 0 kita jadikan sebagai output.


Sensor alias PINA.0 --> ini konfigurasi untuk pin Input gan, dimana jika agan punya sensor terhubung ke PORT A pin 0. untuk konfigurasi pin jika dijadikan input agan cukup bikin syntax ini aja. tapi jika dalam satu port agan mau dijadikan bermacam input atau outpun, terutama jika agan mau bikin pin output agan kudu pake syntax yang atas dulu (Config PORTB.0 = Output). agar si mikro tahu tiap pin itu di konfigurasi sebagai apa.


Dim jarak as Byte --> ini untuk konfigurasi variable gam dimana ae punya variable "jarak" yang tipe datanya adalah Byte (8 bit / 255).


jarak = 0 --> ini adalah pengisian nilai konstanta pada variable, sehingga memiliki arti variable jarak memiliki nilai konstanta 0 (nol).


Gosub --> adalah pemanggilan ntuk subroutine atau prosedure, misal agan punya prosedure atau subroutine bernama "jalan" dimana isi dari prosedure ini adalah program untuk menjalankan sesuatu, dan kalau agan mau panggil program ini di program utama, agan tinggal panggil menggunakan syntax ini GOSUB JALAN.


IF THEN --> ini percabangan gan, jika agan akan membuat program yang ada sistem percabangan atau pemilihan, aga tinggal pake syntax ini. sebagai contoh seperti ini:


IF sensor >= 3 THEN    --> jika sensor berjarak lebih besar atau sama dengan 3 maka:
     Gosub  Jalan             --> panggil prsedure JALAN.
Else                               --> jika tidak terpenuhi kondisi sensor lebih besar atau sama dengan 3, maka
     Gosub Stop              --> panggil prosedure STOP.
Endif.                            ---> akhir percabangan.


untuk konfigurasi sistem HIGH-LOW, agan cukup ngasih kondisi 1-0 pada pin yang diinginkan. misal saya ingin meng-HIGH-kan Port A Pin 0, maka agan cukup kasih syntax seperti ini.

Config PORTA.0 =  Output
PORTA.0 = 1 

Perulangan:
kalau agan ingin buat sistem perulangan, maka agan bisa gunakan FOR atau DO-LOOP, bedanya gini gan..!
kalau FOR itu biasanya kita ketahui terlebih dahulu berapa banyak perulangan yang akan dilakukan, misal kita akan melakukan perulangan 100 kali, maka syntaxnya kayak gini gan.

For i=0 To 100                              --> i adalah varible untuk counter dari 0-100.
      "instruksi yang mau di ulang"
Next

Nah, kalau perlangan DO-LOOP itu untuk perulang tak henti atau perulangan berdasarkan suatu kondisi, lihat gan syntaxnya.

Do                                                       --> perulangan tidak henti.

    " instruksi yang ingin diulang"
Loop 

Do                                                       --> Perulangan berdasar kondisi sensor.
     " instruksi yang ingin diulang"
Loop Until sensor <=3                       --> jika kondisi sensor kurang dari atau sama dengan 3 maka selesai 

Agan-agan yang mengharapkan pembahasan Mikro Basic Stamp, jangan khawatir, nanti ane bahas...! yang atas juga belum selesai, tapi ane lagi males ngetik atau bikin postingan...! sabar gan..!
 
SENSOR ULTRASONIC

Ping))) Ultrasonic atau yang lebih dikenal dengan sensor jarak.
jiga agan-agan punya sensor ini, dan agan-agan gak bisa memprogramnya, agan bisa dowwnload programnya disini, tapi ingat..! ini program hanya untuk mikrokontroller Basic Stamp. sebenarnya sudah ada program bawaan dari parallax untuk sensor ini, tapi jujur aja gan, pasti dijamin gak ngerti maksud dari syntax programnya, makanya ane buat program secara simple, agar lebih mudah dimengerti dan tidak terlalu panjang programmnya.

Download disini.

Dalam membangun sebuah robot, kita membutuhkan sebuah sistem yaitu dimana ada Input, Proses dan Output tentunya. Nah, disini saya akan sedikit share tentang dunia robotika.

untuk sistem Input dalam dunia robotika itu biasanya menggunakan sensor, ada sensor jarak, sensor panas, sensor pendeteksi api sensor sentuh, sensor cahaya dan banyak lagi sensor lainnya. sedang untuk sistem prosesnya kita pasti membutuhkan sebuah prosessor atau kontroller...! ingat berbeda lho antara prosessor dan mikrokontroller..! bedanya seperti ini, Jika mikro prosessor adalah bagian pemroses instruksi atau perintah yang berada dalam sebuah kontroller, sedangkan mikrokontroller itu gabungan dari beberapa element seperti prosessor dan perangkat lainnya seperti Memori Flash dan lainnya, dalam artian sebuah prosessor berada dalam sebuah mikrokontroller. Disini kita akan menggunakan mikrokontroller untuk sitem proses, dimana input dari sensor akan masuk ke kontroller dan dilakukan perbandingan dengan apa yang diharapkan, kemudian di proses dan di keluarkan berupa output. Nah sekarang sistem Outputnya...! Sistem Output adalah aplikasi untuk melihat hasil dari apa yang menjadi harapan atau setpoint..! biasanya dalam dunia robotika sistem output ini diaplikasin untuk suatu gerak dan menggunakan aktuator berupa motor, baik motor DC, motor Servo atau motor Stepper dan aktuator lainnya, atau juga output berupa data yang akan dikirmkan.

yang mau saya share disini adalah membuat sebuah robot dengan menggunkan mikkontroller Basic Stamp dengan aktuator motor DC, dan Servo, dan Input sensor jarak ultrasonic Pings))).

untuk menggerakan motor DC ada dua macam pergerakan, yaitu dengan PWM atau dengan Set DC, dimana jika kita menggunakan Set DC, maka kita tidak dapat mengontrol kecepatan motor tetapi hanya dapat menggerakan motor DC saja dengan kecepatan sesuai tegangan motor yang diberikan, tanpa bisa mengatur keceptan yang diharapkan. Sedangkan jika kita menggunakan PWM (pulse width modulation), kita dapat mengatur kecepatannya dengan mengontroll lebar pulsa yang diberikan, yang nilainya linear dengan tegangan yang diberikan....! sama dengan servo, pengontrolannya di berikan sistem pulsa, hanya saja berbeda pengaplikasiannya..! biar lebih jelas dan faham mari kita lihat perbedaan syntax antar pengontrolan motor diatas.

Motor DC :
untuk menggerakan motor DC yang terhubung ke sebuah kontroller maka kita membutuhkan sebuah driver yang berguna untuk mengendalikan arah putaran dan kecepatan motor, dimana data yang dieksekusi adalah data dari mikrokontroller. dalam pengaktifannya biasanya jika kita menggunakan driver motor L298D maka akan ada 6 pin yang akan kita akses di mikro, yaitu Aen, Ben, A+, A-, B+, B-.

Aen --> A enable, untuk mengaktifkan motor A ( harus di set HIGH jika ingin menjalankan motor A )
Ben --> B enable, untuk mengaktifkan motor B ( harus di set HIGH jika ingin menjalankan motor B )
A+  --> A plus, Kutub positip motor A ( Jika diset HIGH)
A-   --> A min, Kutub negatif motor A ( Jika diset LOW)
B+  --> B plus, Kutub positip motor B ( Jika diset HIGH)
B-   --> B min, Kutub negatif motor B ( Jika diset LOW)

Syntax :
      HIGH Aen
      HIGH Ben
      HIGH A+
      LOW A-
      HIGH B+
      LOW B-

maka putaran motor akan sama atara motor A dan B, tapi jika kondisinya pin A+, A-, B+, B- menjadi kondisi sebaliknya, yang HIGH di LOW-kan dan sebaliknya, maka akan menghasilkan putaran kebalikannya pula.

itu jika kita menggunakan set DC, tetapi jika kita menggunakan PWM akan berbeda, tetapi untuk driver motor tetap harus ada, yang berbeda disini hanya pemberian programmnya saja yang berbeda.

syntax :
PWM motor, 100, 128 --> berikan pulsa PWM ke pin motor dengan lebar pulsa 100, dan tingi pulsa 200
misal jika kita menggunakan tegangan motor 5V, maka besar tegangan yang terberikan pada motor adalah ((128/255)x5V)=2,5V.

sedangkan untuk servo, syntaxnya lain lagi gan, seperti ini :
syntax :
PULSOUT pinservo, pulsa
PULSOUT pinservo, 1200

gitu gan..! ( aduh gan ane mules mau ke kamar kecil, lanjut nanti lagi ya..! )