Berhubungan dengan Dunia Nyata II: Motor Stepper, Keyboard, dan DAC

BAB 13

 

Sasaran

 

Setelah anda menamatkan bab ini , diharapkan anda dapat :

ð          Menjelaskan operasi dasar dari motor stepper

ð          Menghubungkan 8051 dengan motor stepper

ð          Memprogram 8051 untuk menjalankan motor stepper

ð          Menjelaskan kaidah operasi motor stepper dalam hal sudut step, step per revolusi, tooth pitch, kecepatan putar, RPM

ð          Menjelaskan operasi dasar dari Keyboard

ð          Menbahas Key-Press dan mekanisme deteksinya

ð          Menghubungkan keypad 4×4 dengan 8051

ð          Membahas operasi dasar dari DAC (Digital to Analog Converter)

ð          Menghubungkan chip DAC pada 8051

ð          Menjelaskan fungsi dari IC sensor suhu presisi

ð          Membuat program untuk DAC, untuk gelombang sinus

Bab ini mabahas hubungan 8051 dengan motor stepper, keyboard, dan DAC (Digital to Analog Converter). Pada SubBAB 13.1, dasar motor stepper akan dijelaskan. Dan di bagian 13.2, menghubungkan keyboard dengan 8051 akan ditunjukkan. Sedang karekteristik dari DAC yang berkaitan dengan 8051 akan dibahas pada SubBAB 13.3.



SubBab 13.1: Menghubungkan Motor Stepper

Bagian ini dimulai dengan penjelasan singkat tentang operasi dasar dari motor stepper. Kemudian kita akan menjelas bagaimana menghubungkan motor stepper pada 8051. Dan terakhir, kta menggunakan program bahasa assembly untuk mendemonstrasikan penggendalian sudut, arah dari rotasi motor stepper.

Motor-motor Stepper

Motor Stepper sekarang banyak digunakan unuk mentranslasikan pulsa-pulsa listrik menjadi gerakan mekanis. Dalam aplikasi semacam Disk Drive, Printer Dot Matrix, dan robot, motor stepper digunakan sebagai kendali posisi. Setiap motor stepper memiliki rotor (bagian yang berputar) dengan magnet permanen, dan stator (bagian yang diam) dengan dikelingi oleh kumparan-kumparan. Lihat gambar 13-1. Kebanyakan dari motor stepper memiliki 4 buah kumparan stator, yang dari keempatnya salah satu ujung kumparan dihubungkan menjadi 1 yang kemudian dinamakan Common. Lihat gambar 13-2. Type motor stepper seperti ini biasa dinamakan sebagai “motor stepper 4 fasa”.

 

Gambar 13-1, Penjajaran rotor

 

 

Sejatinya motor ini memiliki hanya 2 buah kumparan. Lihat gambar 13-2. Yang masing-masingnya diberikan center tap yang membagi 2 masing-masing kumparan besar. Sehingga dari kumparan tersebut kita mendapatkan 3 buah terminal. Dengan berdasar pada center tap ini maka kumparan dapat bekerja sebagai 4 buah kumparan kecil. Dengan demikian masing-masing kumparan kecil dapat merubah medan magnet yang berpengaruh pada rotor. Umumnya center tap ini dihubungkan pada sumber arus. Dan ujung kumparan lainnya akan dapat merubah medan magnet jika di-bumi-kan. Setiap perubaha terkecil dalam gerakan rotor oleh karena perubahan magnet ini disebut dengan step.

 

Gerakan berputar dapat diselenggarakan dengan melakukan urutan medan magnet, yang didapat dari 4 kumparan ini. Ada banyak cara urutan untuk menggerakkan motor ini, dengan kecepatan berbeda dan kekuatan yang juga berbeda. Tabel 13-1 menunjukkan urutan 4-step normal.

 

Table 13-1: Urutan 4-step Normal

Step #   Gul.A    Gul.B    Gul.C   Gul.D 

1          1        0        0        1

2          1        1        0        0

3          0        1        1        0

4          0        0        1        1

Catatan : Ke kanan : Step 1 > 2 > 3 > 4. Ke kiri : Step 4 > 3 > 2 > 1.

 

Table 13-2: Sudut Step dari Motor Stepper

Sudut Step        Step per Revolusi

0.72              500

1.8               200

2.0               180

2.5               144

5.0               72

7.5               48

15                24

Gambar 13-2: Konfigurasi gulungan Stator

 

 

 

 

Gambar 13-3: Menghubungkan 8051 pada Motor Stepper

 

Harap dicatat pula bahwa kita dapat memulai urutan seperti dalam Tabel 13-1 dari step mana saja. Namun tetap setelah itu adalah step berikutnya, dan tidak boleh melompat-lompat. Misalnya untuk putaran ke kanan, dan kita mulai dari step 3. Maka step berikutnya adalah harus step 4. Dan jika berputar ke kiri, maka haruslah step ke 2. Begitulah seterusnya.

 

Contoh 13-1

Sesuai dengan hubungan 8051 dan motor stepper seperti pada gambar 13-3, maka buatkan kode program untuk membuatnya berputar secara teru menerus.

 

jawaban:

Langkah berikut ini menunjukkan hubungan 8051 dengan motor stepper, dan pemrogramannya.

1.    Gunakan Ohmmeter untuk mengukur resistansi kumparan motor. Cara ini perlu dilakukan untuk menemukan Kabel mana yang berupa COM.

2.    Kabel Common, dihubungkan ke sisi positif pada sumber daya khusus untuk motor. Beberapa motor menggunakan 5 Volts. Beberapa lagi ada yang butuh 12 V dan 24 V.

3.    4 kabel lainnya yang merupakan kabel untuk gulungan statornya dikontrol oleh 4-bit dari port 8051 (P1.0-P1.3). Namun, karena 8051 sangat minim akan arus untuk dapat langsung menggerakkan gulungan motor, maka kita harus menggunakan driver seperti ULN2003 untuk dapat memberikan arus yang cukup bagi gulungan. Disamping ULN2003, kita dapat membuat driver sendiri dengan 4 buah transistor, seperti yang diperlihatkan oleh gambar 13-4. Jika kita menggunakan transistor, maka kita perlu untuk menambahkan dioda pada masing-masing transistor. Dioda ini digunakan untuk mengindari adanya arus induksi yang sangat besar (EMF = Elektro Magnetic Feedback) sehingga masuk ke transistor dan kemudian dapat merusakkanya. Jika kita menggunakan ULN2003, kita tidak perlu dioda lagi. Karena di dalam ULN2003 ini sudah disediakan dioda, sehingga dapat langsung dimanfaatkan.

               MOV A,#66h          ;isikan dengan urutan step

ULANG:         MOV P1,A            ;tulis urutan itu pada port

               RR  A               ;Putar searah jarum jam

               ACALL DELAY         ;tunggu sejenak

               SJMP ULANG          ;ulang

               …

 

DELAY:         MOV R2,#100

H1:            MOV R3,#255

H2:            DJNZ R3,H2

               DJNZ R2,H1

               RET

Merubah-rubah nilai dari DELAY akan dapat menrubah kecepatan putaran.

Kita juga dapat menggunakan instruksi SETB dan CLR untuk menggantikan RRA untuk menbuat urutan yang lebih baik.

 

 

Sudut Step

Berapa jauh gerakan pada motor stepper dalam 1 step-nya? Hal itu tergantung oleh konstruksi internal dari motor, khususnya jumlah gigi pada stator dan rotor. Sudut Step adalah derajat minimum putaran dalam 1 step. Beberapa motor memiliki sudut step berbeda. Table 13-2 menunjukan beberapa sudut step dari beberapa jenis motor. Dalam Table 13-2, perhatikan tentang step per revolution. Ini adalah jumlah total step yang dibutuhkan untuk berputar dalam 1 putaran penuh atau 360 derajat.

Dan harap dicatat pula bahwa di masa depan atas prakarsa seseorang, motor stepper tidak perlu lagi lebih banyak terminal untuk statornya untuk Step yang sama atau bahkan untuk step yang lebih sedikit. Semua motor yang didiskusikan di BAB ini adalah motor yang memiliki 4 kabel ditambah 1-2 kabel common (motor 4 fasa). Nanti kita akan mendiskusikan terminologi yang berhubungan dengan motor stepper untuk mendalaminya.

Step per Detik dan relasinay dengan RPM

Hubungan antara RPM (revolutions per Minute), step per revolution, dan step per second adalah kira-kira semacam ini.

Step per Second = (RPM * Step per Revolution) / 60

Urutan 4-step dan jumlah gigi pada rotor

Urutan pensaklaran seperti yang ditunjukkan sebelumnya dalam Tabel 13-1 disebut dengan urutan pensaklaran 4-step. Hal ini mengingat setelah 4-step dilalui, 2 kumparan yang sama, kembali menjadi “ON”. Berapa banyak gerakan yang dihasilkan dari 4-step ini? Setelah menyelesaikan 4-step, motor bergerak hanya 1 gigi. Hal ini kerena motor dengan jumlah step per revolusi sebanyak 200, memiliki 50 buah gigi dengan hitungan 4 x 50 = 200. Sehingga dibutuhkan 200-step untuk satu revolusi (putaran penuh). Ini memberikan kesimpulan bahwa sudut step minimum adalah sejarak 1 gigi dari rotor. Dengan kata lain, untuk mendapatkan sudut step yang lebih kecil, maka dibutuhkan gigi yang lebih banyak. Lihat contoh 13-2.

 

Contoh 13-2

Cari jumlah step pada urutan 4-step seperti pada gambar 13-1. Jika motor digunakan untuk berputar sejauh 80 derajat, dengan motor yang memiliki 2 derajat setiap stepnya

jawaban:

Motor dengan 2 derajat per step ini memiliki karakteristik seperti di bawah ini.

sudut Step (Step Angle) : 2 derajat

Step 1 putaran penuh    : 180 step

Jumlah gigi motor       : 45

Gerakan dalam 4 step    : 8 derajat

Untuk menggerakkan 80 derajat, kita membutuhkan untuk memberi perintah 10 kali urutan penuh 4-step. Dengan perhitungan sebagai berikut.

10 x 4 step x 2 derajat = 80 derajat

 

 

Table 13-3: Urutan 4-step Half-Step

Step #   Gul.A    Gul.B    Gul.C   Gul.D 

1          1        0        0        1

2          1        0        0        0

3          1        1        0        0

4          0        1        0        0

5          0        1        1        0

6          0        0        1        0

7          0        0        1        1

8          0        0        0        1

Catatan : Ke kanan : Step 1 > 2 > 3 > 4.> 5 > 6 > 7 > 8. Ke kiri : Step 8 > 7 > 6> 5 > 4 > 3 > 2 > 1.

Kecepatan Motor

Kecepatan motor diukur dari jumlah step dalam 1 detik (step/S), dan juga disebut sebagai swithcing rate. Perhatikan Contoh 13-1 bahwa dengan mengubah lama tundaan, kita dapat membuat beberapa variasi kecepatan putar yang berbeda.

Holding torque (Kekuatan menahan)

Berikut ini adalah definisi dari Holding torque: “Dengan inti motor dalam keadaan diam atau kondisi RPM = 0 atau menahan putaran, berapa tenaga yang harus diberikan dari luar yang dibutuhkan untuk dapat memutar motor yang mengunci tersebut. Hal ini diukur dengan memberikan tegangan dan arus rata-rata pada motor.” Hasil pengukuran itu dalam bentuk ounce-inch (atau kg-cm).

Urutan Wave Drive 4-step

Selain dari urutan 8-step dan 4-step yang sudah dibahas sebelumnya, ada urutan lain yang disebut dengan urutan 4-step Wave Drive. Seperti yang ditunjukkan pada Tabel 13-4. Perhatikan bahwa urutan 8-step (Tabel 13-3) adalah kombinasi dari urutan 4-step Wave Drive (Tabel 13.4) dan urutan 4-step normal (Tabel 13-1). Percobaan dengan 4-step Wave Drive saya serahkan kepada pembaca yang budiman.

Table 13-4: Urutan 4-step Wave-Drive

Step #   Gul.A    Gul.B    Gul.C   Gul.D 

1          1        0        0        0

2          0        1        0        0

3          0        0        1        0

4          0        0        0        1

Catatan : Ke kanan : Step 1 > 2 > 3 > 4. Ke kiri : Step 4 > 3 > 2 > 1.

 

Gambar 13-4: Penggunaan Transistor sbg Driver Motor Stepper

 



SubBAB 13.2: Menghubungkan 8051 degan Keyboard

Keyboard dan LCD adalah peralatan input/output yang digunakan secara luas dan umum untuk 8051, dan mengerti dasar-dasar dari 2 peralatan tersebut adalah sangat penting bagi kita. Di bagian ini, kita akan mendiskusikan  pondasi dari sebuah keyboard, termasuk key-press dan mekanisme deteksi key. Kemudian kita akan ditunjukkan bagaimana menghubungkan keyboard dengan 8051.

Menghubungkan keyboard dengan 8051

Pada tingkat terendah, keyboard diorganiasasi secara matrik meliputi baris dan kolom. CPU mengakses kedua Baris dan Kolom tersebut melalui Port. Sehingga dengan menggunakan 2 x 8-bit Port, sebuah key dengan matrix 8 x 8 dapat dihubungkan pada mikrokontroller. Ketika key ditekan, Baris dan Kolom terhubung, dan jika sebaliknya, tidak ada hubungan antara Baris dan Kolom.

Dalam keyboard PC IBM, terdapat sebuah mikrokontroller yang khusus menangani Key. Dia bertugas memeriksa Key-key dan segera mengirimkan data kepada CPU utama lewat hubungan serial jika ada key yang ditekan.
Mengacu pada mekasinme yang dilakukan oleh keyboard kontroler tadi, kita akan membuat 8051 kita bisa bekerja semacam itu, yakni dengan scanning dan deteksi key.

Scanning dan identifikasi Key

Gambar 13-5 menunjukkan matrix 4 x4 yang terhubung pada 2 port. Baris terhubung pada port output, dan kolom terhubung pada port input. Jika tidak ada key yang ditekan, maka bacaan port input (kolom) akan selalu 1s. Hal ini karena input mendapat pull-up ke Vcc. Jika ternyata salah satu key ditekan maka salah satu input/kolom tersebut adalah berlogika 0s Karena Key ditekan karena mengikuti Output baris yang rendah. Nah hal inilah yang ditelusuri (scann) oleh mikrokontroller secara terus menerus. Bagaimana itu terjadi, akan kita jelaskan berikutnya.

Gambar 13-5: Koneksi matrik Keyboard kepada Port

 


Membumikan Baris dn membaca kolom

Untuk mendeteksi Key yang sedang ditekan, mikrokontroller meng-ground-kan semua baris dengan menuliskan nilai 0s pada semua port output. Selanjutnya membaca port input, jika ternyata hasilnya adalah 1111, berarti memang tidak ada key yang ditekan, dan proses tersebut selalu diulang sampai terdapat data yang berbeda. Jika ternyata salah satu kolom bernilai 0s, maka berarti ada salah satu key yag ditekan. Key yang mana? Tentu saja key yang kolomnya bernilai 0s. Misalnya terbaca D3-D0 = 1101, berarti key dalam kolom D1 ditekan, yakni di antara “1”, “5”, “9”, dan “D”. Setelah 8051 mengetahuinya, maka 8051 menuju pada proses identifikasi Key. Yakni menentukan Key yang ditekan itu dari baris berapakah? Sehingga 8051 hanya berkonsentrasi pada kolom D1 ini.

Selanjutnya CPU meng-bumi-kan 4 port output satu per satu. Dimulai dari output-baris D0. Jika ternyata inputkolom D2 masih tinggi, maka key yang ditekan bukanlah “1”. Dan sekarang ke baris berikutnya. CPU membumikan output-baris D1, dan input-kolom D1 masih tinggi, yang berarti key bukan “5”. Baris berikutnya. Dengan mem-bumi-kan output-baris D2, dan ternyata input kolom D1 adalah rendah. Maka kemudian dapat dipastikan key yang ditekan adalah “9”. Demikian proses tersebut diulang untuk setiap deteksi key yang lain.

 

 

Contoh 13-3

Dari Gambar 13-5, pastikan baris dan kolom pada posisi key, dari masing-masing …

(a) D3-D0 = 1110 untuk Baris. D3-D0 = 1011 untuk kolom

(b) D3-D0 = 1101 untuk Baris. D3-D0 = 0111 untuk kolom

 

 

jawaban:

Dari Gambar 13-5, Baris dan Kolom dapat digunakan untuk mendapatkan Key.

(a) Baris adalah D0, Kolom adalah D2, sehingga key adalah angka “2”

(b) Baris adalah D1, Kolom adalah D3, sehingga key adalah angka “7”

 

 


Untuk mendeteksi Key yang ditekan sebenarnya mudah saja.Karena terdapat 4 baris maka kita program dibagi sebanyak 4 bagian.

Bagian pertama adalah Baris pertama yang port output D0 harus dibuat rendah sementara yang lain tetap tinggi. PortOut D0-D0 = 1110. Setelah itu kita memeriksa kolom. Jika ternyata PotIn D3-D0 = 1111, maka berarti tombol “3”, “2”, “1”, dan “0” tidak ada yang ditekan. 8051 dapat melompat ke bagian berikutnya. Namun jika ternyata PortIn D3-D0 = 1101, maka berarti tombol “1”-lah yang sedang ditekan. Demikian pula jika ternyata PortIn D3-D0 = 1101, maka tombol “2 dan “1” sama-sama ditekan.

Bagian kedua adalah Baris kedua. Maka kita harus meulis PortOut = 1101. Kemudian kita bisa membaca PortIn D3-D0 yang merepresentasikan tombol berikutnya, yakni “7”, “6”, “5”, dan “4”.

Bagian ketiga dan keempat adalah baris ketiga dan baris keempat masing-maisng PortOut kita tulis dengan D3-D0 = 1011, untuk memeriksa tombol “B”, “A”, “9”, dan “8”. Dan PortOut kita tulis dengan D3-D0 = 0111, untuk memeriksa tombol “F”, “E”, “D”, dan “C”.

 


Gambar 13-6: Flowchart untuk program 13-1

 

Program 13-1 adalah program bahasa Assembly yang bertugas untuk mendeteksi dan mengidentifikasi aktivasi key. Dalam program ini, kita mengasumsikan bahwa P1 dan P2 adalah masing-masing digunakan sebagai output dan input. Program 13-1 selengkapnya adalah sebegai berikut.

1.    Sebelumnya yakinkan bahwa saat itu tidakada key yang sedang ditekan. Bumikan port output menjadi 0s semua. Kemudian bacalah input, jika masih ada yang 0s maka tunggulah sampai input menjadi “1111”. Bahwa Key masih ada yang ditekan.

2.    Untuk kemudian melihat apakah ada key yang ditekan, maka kita harus meng-scan kolom-kolom itu terus menerus dan berulang-ulang. Sampai dari padanya ada yang bernilai 0s. Dan jika ternyata memang demikian, maka tunggu selama 20mS. Hal ini untuk memberi kesemapatan debounce dari Key. Hal ini penting untuk menjamin kebenaran bacaan key. (Kualitas Switch Key yang buruk akan membuat seolah key ditekan dengan cepat, walaupun sebenarnya tidak ditekan). Setelah yakin ada key yang ditekan, maka kemudian tinggal dicari key tersebut.

3.    Untuk mendeteksi Baris Key yang ditekan , maka bumi-kan salah satu dari port output-baris. Dan kemudian baca kolom saat itu juga. Jika ternyata hasilnya adalah “1111”, maka key yang ditekan bukan milik Kolom tersebut. Selanjutnya adalah memilih baris berikutnya. Jika ternyata hasilnya kolom ada yang 0s, maka dapat dipastikan key yang ditekan adalah milik kolom ini. Tugas selanjutnya adalah mencari kode ASCII dari Key tersebut.

4.    Untuk mendeteksi Key , maka putar bit-bit kolom, bit demi bit, menuju Carry, dan periksalah apakah dalam keadaan 0s. Jika memang 0s maka dengan menggunakan tabel look-up maka cari nilai ASCIInya. Namun jika ternyata Carry tidak ada 0s, maka kita dapat ke proses kolom selanjutnya dengan menambah DPTR untuk menunjuk ASCII berikutnya..

 

Jika proses deteksi key adalah menjadi standar dari keyboard manapun, maka proses dari pengujian key mana yang ditekan adalah bermacam cara. Metode table Look-up yang ditunjukkan pada Program 13-1 dapat dimodifikasi untuk dapat bekerja pada sembarang matrix sampai dengan 8 x 8. Gambar 13-6 mmeberikan flowchart dari program 13-1 untuk proses scanning dan identifikasi Key.

Ada banyak chip IC seperti dari National Semiconductor, yakni MM74C933 yang merupakan chip lengkap scanning dan decoding keyboard. Chip tersebut menggunakan kombinasi dari Counter dan gerbang logika  (tanpa mikro kontroller) untuk mengimplementasikan konsep yang dipaparkan pada program 13-1.

 

;Subrutin Keyboard. Program ini mengirimkan kode ASCII utk Key P0.1

;P1.0-P1.3 pada Baris, P2.0-P2.3 pada kolom

        MOV  P2,#0FFh         ;buat P2 sebagai port input

K1:     MOV  P1,#0            ;buat rendah semua

        MOV  A,P2             ;Baca semua kolom

        ANL  A,#00001111b     ;Ambil bit yang dibuthkan saja

        CJNE A,#00001111b,K1  ;Lompat jika ada key masih ditekan

K2:     ACALL DELAY             ;Panggil delay 20mS

        MOV  A,P2               ;Lihat jk ada key dtekan

        ANL  A,#00001111b       ;Ambil bit yang dibutuhkan

        CJNE A,#00001111b,OVER  ;Lompat jika ada key masih ditekan

        SJMP K2                 ;Ulang

OVER:   ACALL DELAY             ;Tunda

        MOV  A,P2               ;Lihat jk ada key dtekan

        ANL  A,#00001111b       ;Ambil bit yang dibutuhkan

        CJNE A,#00001111b,OVER1 ;Lompat jika ada key masih ditekan

        SJMP K2                 ;Ulang

OVER1:  MOV  P1,#11111110b      ;Aktifkan Baris pertama

        MOV  A,P2               ;Lihat jk ada key dtekan

        ANL  A,#00001111b       ;Ambil bit yang dibutuhkan

        CJNE A,#00001111b,ROW_0 ;Lompat jika ada key masih ditekan

        MOV  P1,#11111101b      ;Aktifkan Baris kedua

        MOV  A,P2               ;Lihat jk ada key dtekan

        ANL  A.#00001111b       ;Ambil bit yang dibutuhkan

        CJNE A,#00001111b,ROW_1 ;Lompat jika ada key masih ditekan

        MOV  P1,#11111011b      ;Aktifkan Baris ketiga

        MOV  A,P2               ;Lihat jk ada key dtekan

        ANL  A.#00001111b       ;Ambil bit yang dibutuhkan

        CJNE A,#00001111b,ROW_2 ;Lompat jika ada key masih ditekan

        MOV  P1,#11110111b      ;Aktifkan Baris keempat

        MOV  A,P2               ;Lihat jk ada key dtekan

        ANL  A.#00001111b       ;Ambil bit yang dibutuhkan

        CJNE A,#00001111b,ROW_3 ;Lompat jika ada key masih ditekan

        LJMP K2                 ;Ulang

ROW_0:  MOV  DPTR,#KCODE0       ;Atur DPTR=Start dari ROW 0

        SJMP FIND               ;Cari Kolom milik siapa

ROW_1:  MOV  DPTR,#KCODE1       ;Atur DPTR=Start dari ROW 1

        SJMP FIND               ;Cari Kolom milik siapa

ROW_2:  MOV  DPTR,#KCODE2       ;Atur DPTR=Start dari ROW 2

        SJMP FIND               ;Cari Kolom milik siapa

ROW_3:  MOV  DPTR,#KCODE3       ;Atur DPTR=Start dari ROW 3

FIND:   RRC  A                  ;Lihat apa ada CY

        JNC  MATCH              ;Lompat jk tak ada

        INC  DPTR               ;Arahkan pada Kolom berikutnya
SJMP FIND               ;Tetap cari
MATCH:  CLR  A                 ;A = 0

        MOVC A,@A+DPTR         ;Ambil karakter ASCII nya

        MOV  P0,A              ;Tambilkan nilai Key pada Port 0

        LJMP K1                ;Ulang

; Tabel Look Up

KCODE0:     DB ‘0123’         ;ROW 0

KCODE1:     DB ‘4567’         ;ROW 1

KCODE2:     DB ’89AB’         ;ROW 2

KCODE3:     DB ‘CDEF’         ;ROW 3

END

Program 13-1

 



SubBAB 13.3: Menghubungkan DAC dengan 8051

Bab ini akan menunjukkan bagaimana menghubungkan DAC (Digital Analog Converter) dengan 8051. Kemudian akan mendemonstrasikan bagaimana membangkitkan gelombang sinus dengan menggunakan DAC, yang nampak pada layar osiloskop.

konverter Analog-toDigital (DAC)

DAC adalah sebuah peralatan yang dikenal luas untuk mengkonversi bilangan atau nilai-nilai digital menjadi sebuah sinyal analog. Pada bagian ini kita akan membicarakan dasar-dasar dari hubungan DAC dengan mikroprosesor seperti 8051.

Merujuk pada sebuah buku tentang elektronika digital anda, terdapat 2 metode untuk membuat DAC, yakni pemberatan bilangan biner (binary weigthed) dan penjummlah resistor R/2R (R/2R adder). DAC yang umum dipasaran saat ini termasuk MC1408 (DAC808) juga menggunakan metode R/2R. Hal ini karena metode ini memmiliki derajat yang lebih teliti. Kreteria pertama saat memilih DAC adalah resolusi, yang mana berarti jumlah dari input binernya. Kebanyakan adalah 8, 10 dan 12 bit. Jumlah input data bit tersebut menentukan resolusi dari DAC, mengingat jumlah dari input data bit tesebut adalah setara dengan 2 exp N, yang mana N adalah jumlah dari input data bit. Sehingga jika DAC 8-bit seperti DAC8051, maka dia berarti memiliki resolusi sebesar 256 perbedaan level tegangan (atau arus). Termasuk juga DAC 12-bit akan memiliki perbedaan tegangan sebesar 4096. Dan juga DAC 16-bit yang harganya lebih mahal. DAC yang sangat mahal memiliki resolusi 24-bit dengan bit rate 192 kbps, yang digunakan untuk Audio profesional.

DAC MC1408 (atau DAC808)

Pada MC1408 (DAC808, input digital dikopnversi menjadi arus listrik, dan dengan menghubungkan sebuah resistor pada pin Iout, kita akan mendapatkan hasil berupa tegangan. Total arus yang diberikan oleh pin Iout adalah tergantung status dari nilai input D0-D7 pada DAC808 tersebut dan juga tergantung pada arus referensi (Iref), seperti yang dtunjukkan pada berikut ini.

 

    Iout = Iref * ((D7/2)+(D6/4)+(D5/8)+(D4/16)+(D3/32)+(D2/64)+(D1/128)+(D0/256))

 

di sana D0 adalah LSB dan D7 adalah MSB, sedang Iref adalah input arus yang harus diberikan pada pin 14. arus Iref ini umumnya diatur setinggi 2.0 mA. Gambar 13-7 menunjukkan bagaimana membangkitkan arus referensi (Iref=2mA) dengan menggunakan tegangan catu daya standar 5 Volt dan dengan beberapa resistor standar 1KOhms dan 1,5KOhms. Beberapa rancangan juga menggunaan dioda zener (lm336), yang mana digunaan untuk mencegah adangan fluktuasi yang disebabkan oleh catu daya yang kurang baik. Sekarang anggaplah Iref adalah 2 mA, jika kesemuanya input biner DAC adalah tinggi, maka arus maksimum keluaran adalah 1.99mA (periksalah sendiri pada rangkaian anda).

Konversi Iout menjadi tegangan di dalam DAC808

Kita menghubungkan pin output Iout dengan sebuah resistor, sehingga mengubah arus tersebut menjadi tegangan dan monitorlah hasilnya pada sebuah osiloskop. Namun, pada kehidupan nyata, hal ini dapat menyebabkan akurasi yang tidak semestinya, mengingat resistansi input pada beban yang dikoneksikan  nanti juga menyebabkan pengaruh pada tegangan output. Untuk alasan ini, arus Iref di-isolasi dengan menghubungkannya dengan sebuah Op-amp seperti 741 dengan Rf = 5KOhms sebagai resistor feedback. Menganggap bahwa R=5KOhms, dengan mengubah input biner DAC, maka perubahan tegangan DAC dapat dilihat seperti pada contoh 13-4.

 

 

Contoh 13-4

Dengan menganggap R = 5K dan Iref = 2 mS, kalkulasikan Vout untuk input biner berikut ini.

(a) 10011001b (99h)      (b) 11001000b (C8)

 

jawaban:

(a) Iout = 2mA (153/255) = 1.195mA dan Vout = 1.195mA x 5K = 5.975 V

(b) Iout = 2mA (200/255) = 1.562mA dan Vout = 1.562mA x 5K = 7.8125 V

 

 

 

Gambar 13-7: Koneksi 8051 pada DAC808

 

 

Contoh 13-5

Dalam tugas untuk membuat gelombang tangga, seperti pada gambar 13-7, dan hubungkan output dengan sebuah osiloscope. Kemudian tulis program untuk mengirimkan data pada DAC untuk menghasilkan gelompabng tangga.

 

jawaban:

         CLR   A

AGAIN:   MOV   P1,A     ;kirim data pada DAC 

         INC   A

         ACALL DELAY    ;tunggu sampai DAC siap

         SJMP  AGAIN

 

Contoh 13-6

Periksalah pada nilai yang diberikan untuk sudut..

(a) 30     (b) 60

 

jawaban:

(a)Vout 5V + (5V x sin T) = 5V + 5 x sin 30 = 5V + 5 x 0.5 = 7.5 V

   nilai input DAC = 7,5 x 25.6 = 192 desimal

(b)Vout 5V + (5V x sin T) = 5V + 5 x sin 60 = 5V + 5 x 0.866 = 9.33V

   nilai input DAC = 9.33 x 25.6 = 238 desimal

 

Tabel 13-5  Sudut vs besaran tegangan untuk Gelombang sinus

 

Sudut T     Sin T     Vout(5V + 5V x sin T)  Nilai untuk DAC

0           0         5                      128

30          0.6       7.5                    192

60          0.866     9.33                   238

90          1.0       10                     255

120         0.866     9.33                   238

150         0.5       7.5                    192

180         0         5                      128

210         0.5       2.5                    64

240         0.866     0.669                  17

270         1.0       0                      0

300         0.866     0.669                  17

330         0.5       2.5                    64

360         0         5                      128

 

 

Gambar 13-8: Besaran Voltage untuk Gelombang Sinus

 

Membuat gelombang sinus

Untuk menbangitkan gelombang sinus, kita membutuhkan sebuah tabel nilai, yang merepresentasikan besaran dari gelombang sinus tersebut mulai dari 0 sampai 360 derajat. Nilai untuk gelombang sinus ini adalah berkisar -1.0 s/d +1.0 untuk 0 s/d 360 derajat. Kemudian sebuah table nilai integer, yang merepresentasikan besaran tegangan dari gelombang sinus tetha. Metode ini unutk menjamin bahwa hanya bilangan integer yang diberikan pada DAC oleh mikrokontroller 8051. Table 13-5 menunjukkan sudut nilai sinus, dan besaran tegangan, dan nilai integer yang merepresentasikan besaran tegangan bagi setiap sudut dalam kelipatan 30 derajat. Untuk membangkitkan Table 13-5, kita menganggap jangkauan tegangan penuhnya adalah 10V pada keluaran DAC (sepeti pada rangkaian Gambar 13-7). Jangkauan keluaran penuh pada DAC dicapai di saat semua input data biner DAC dalam keadaan tinggi (1s). Kemudian untuk mencapai tegangan keluaran penuh 10V, kita mengunaan perhitungan Vout DAC dari beberapa derajat sinus seperti pada hitungan berikut ini.

    Vout = 5V + (5 * sin t)

Untuk mencari nilai yang dikirimkan pada DAC untuk beberapasudut, kita secara sederhana mengkalikan nilai tegangan Vout dengan 25.60 karena ada 256 langkah dan skala penuh Vout dalah 10Volts. Kemudian, 256 langkah / 10 V = 25.6 langkah per Volt. Untuk lebih jelas tentang hal ini lihat pada kode berikut ini. Program ini mengirimkan tegangan DAC secra terus menerus (in an infinite loop) untuk menghasilkan gelombang sinus bergerigi. Lihat gambar 13-7.

  LAGI:    MOV  DPTR,#TABLE
MOV  R2,#COUNT
ULANG:   CLR  A
MOVC A,@A+DPTR
MOV  P1,A
INC  DPTR
DJNZ R2,ULANG
SJMP LAGI
ORG  300
TABLE:   DB 128,192,238,255,238,192   ;lihat table 13-5
DB 128,64,18,0,17,64,128
;untuk mendapatkab gelombang yang mulus, ulangi
; tabel 13-5 dengan sudut 2 derajat.


Ringkasan

Bab ini lanjutan dari pertunjukkan bagaimana menghubungkan 8051 dengan peralatan Dunia Nyata. Peralatan yang dibahas pada bab ini adalah motor stepper, keyboard, dan DAC(Digital-toAnalog Converter).

Pertama, operasi dasar dari motor stepper yang dibahas, dengan hal-hal pokok yang melatar belakangi digunakannya dan kendali motor stepper. Kemudian menghubungan 8051 dengan motor stepper. Kemudian membuat program yang bisa mengendalikan motor stepper.

Keyboard adalah satu dari sekian banyak peralatan yang paling sering digunaan untuk 8051. Bab ini akan menjelaskan tentang operasi keyboard. Termasuk KeyPress dan mekanisme deteksi key. Kemdudian kita ditunjukkan menghubungkan 8051 denga keyboard. Membuat program untuk mendapatkan nilai karakter ASCII dari setiap tombol yang ditekan.

Terakhir, 8051 dihubungkan dengan DAC. Chip DAC yang umum, menerima inut digital, dan mengubahnya menjadi arus listrik. Dengan menghubungkan sebuah resistor pada pin   outputnya maka arus tersebut dapat diubah menjadi tegangan. Level tegangan tersebut dapat dimonitor melalui sebuah osiloskop. Bab ini ditunjukkan bagaimana menghubungkan 8051 dengan chip DAC. Kemudian, membuat program sederhana untuk membuat gelombang sinus yang bisa dlihat oleh osiloskop.


—————————————-

|o-o| Diterjemahkan oleh Dhanny Dhuzell

—————————————-

Tinggalkan Balasan