Pengukuran sudut / putaran pada suatu poros dapat dilakukan dengan berbagai macam sensor, di antaranya sebagai berikut:
Optical Incremental Rotary Encoder. Sensor ini mengukur posisi relatif, bukan posisi absolut.
Optical Absolute Rotary Encoder
Potensiometer Analog
Hall Effect Potensiometer
Magnetic Rotary Encoder
Optical Incremental Rotary Encoder
Sensor jenis ini mengukur posisi relatif, bukan posisi absolut. Contohnya dibahas di artikel Rotary Encoder
Rotary Encoder G40B-6-400
Optical Absolute Rotary Encoder
Sensor ini mirip dengan jenis incremental, namun outputnya sudah berupa posisi poros.
Magnetic Rotary Encoder
Sensor jenis ini mengukur medan magnet pada poros, dan dari situ dapat diukur posisi absolute poros tersebut. Contoh sensor jenis ini adalah AS5600.
Modul AS5600 dari SeeedstudioModul AS5600 dari Seeedstudio
AS5600 ex Aliexpress
Potensiometer
Potensiometer dapat dipakai sebagai sensor sudut, dengan cara menyambung poros potensiometer ke poros yang akan diukur. Potensiometer yang dipakai sebagai sensor tentunya harus lebih kokoh dibandingkan potensiometer biasa. Porosnya juga dibuat supaya mudah disambung ke poros lain.
Pada tulisan ini diuraikan contoh perancangan suatu sistem kendali motor dengan menggunakan mikrokontroler ATMega328 atau Arduino Nano.
Batasan masalahnya adalah sebagai berikut
Input kecepatan (set point) menggunakan potensiometer analog.
Kecepatan ditampilkan dengan 2 buah LED 7 segment. LED yang tersedia dalam konfigurasi common anode dan common cathode. Arus maksimum pada LED adalah 20 mA.
Motor menggunakan motor DC 12 volt.
Komponen yang tersedia:
mikrokontroler ATMega328 / Arduino Nano
transistor BJT (NPN, PNP) & MOSFET (kanal P, kanal N).
resistor, induktor, kapasitor , dioda, relay
regulator DC
batere 12 volt DC
motor DC 12 volt
rotary encoder 400 pulsa per putaran, output A dan B
LED 7 segmen common cathode dan common anode
Blok Diagram Sistem
Berikut ini adalah blok diagram sistem kendali secara keseluruhan.
Blok diagram pengendali motor berbasis mikrokontroler ATMega328
Analisis Kebutuhan Pin
Daftar pin pada mikrokontroler ATMega328
Pin pada mikrokontroler terbatas, jadi perlu dianalisis dulu apakah pin yang ada cukup. Jika tidak cukup, maka harus melakukan ekspansi port, atau menggunakan mikrokontroler lain yang pin lebih banyak.
Jumlah pin pada ATMega328 adalah 23 buah, jadi perlu dianalisis dulu apakah pin yang ada cukup untuk menyambungkan semua periferal. Dalam prakteknya, beberapa pin sudah dipakai untuk fungsi lain, jadi tidak tersedia, misalnya di Arduino Nano pin berikut sudah dipakai:
PB6 & PB7 untuk kristal osilator
PC6 untuk RESET
PD0 untuk serial RX
PD1 untuk serial TX
Jadi dalam praktisnya, yang tersedia adalah 18 pin.
Analisis alokasi pin:
Potensiometer memerlukan 1 input analog, untuk itu dapat menggunakan salah satu dari pin PC0 (ADC0) sampai PC5 (ADC5)
Rotary encoder memiliki 2 output, jadi perlu 2 pin digital untuk membaca data dari rotary encoder.
Motor agar dapat bergerak 2 arah memerlukan transistor yang dipasang dalam konfigurasi ‘H Bridge’. Pada sebuah H-Bridge terdapat 4 transistor, jadi memerlukan 4 pin digital untuk masing-masing transistor. Jumlah pin digital dapat dikurangi jika menggunakan rangkaian logika sehingga hanya diperlukan 2 pin saja: direction dan PWM. Namun pada soal hanya disediakan transistor, resistor dan sebagainya, jadi reduksi dari 4 pin menjadi 2 pin hanya boleh dilakukan dengan transistor.
LED 7 segment dapat menggunakan cara langsung: 1 pin ke 1 LED, atau bisa juga menggunakan multipleksing. Jika menggunakan cara langsung, maka diperlukan 14 pin digital untuk mengendalikan 2 buah LED 7 segment. Jika menggunakan multipleksing, maka diperlukan (7+2) pin digital.
Alternatif 1: motor dengan 4 pin, LED langsung
Alokasi pin:
Potensiometer: 1 pin analog
Rotary encoer: 2 pin digital
Motor: 4 pin digital
LED: 14 pin
Total pin: 21 , jadi konfigurasi ini dapat dibuat.
Alternatif 2: motor dengan 4 pin, LED dengan multipleksing.
Potensiometer: 1 pin analog
Rotary encoer: 2 pin digital
Motor: 4 pin digital
LED: 9 pin
Total pin: 16 , jadi konfigurasi ini dapat dibuat.
Alternatif 3: motor dengan 2 pin, LED dengan multipleksing.
Potensiometer: 1 pin analog
Rotary encoder: 2 pin digital
Motor: 2 pin digital
LED: 9 pin
Total pin: 14 , jadi konfigurasi ini dapat dibuat.
Rangkaian Potensiometer
Potensiometer dipakai sebagai pembagi tegangan. Tegangan output (Vout) akan dapat dipakai untuk mengetahui sudut putaran potensiometer. Perlu diperhatikan bahwa Vin harus <= 5 volt, supaya Vout juga <= 5 volt. Jika Vout melebihi 5 volt, maka dapat merusak mikrokontroler yang bekerja pada 5 volt.
Potensiometer sebagai pembagi tegangan
Vout dihubungkan ke salah satu pin analog input pada ATMega328.
Rotary encoder memerlukan koneksi ke GND , tegangan supply VCC, dan ada output A dan B. VCC dapat dihubungkan ke tegangan 5 volt. Detailnya disesuaikan dengan datasheet dari rotary encoder tersebut. Output A dan B dihubungkan ke input digital di mikrokontroler.
Rotary encoder
Pin yang dipilih di mikrokontroler tergantung dari metode pembacaan input yang dipakai, ada beberapa cara:
menggunakan interupsi eksternal, maka perlu menggunakan pin INT0 (PD2) dan INT1 (PD3)
menggunakan interupsi PCINT, maka dapat menggunakan input digital mana saja.
menggunakan sampling dengan timer, maka dapat menggunakan input digital mana saja.
Rangkaian Motor DC
Sinyal output dari mikrokontroler hanya maksimal arus 40 mA dengan tegangan 5 volt, jadi tidak cukup untuk menggerakkan motor. Cara yang paling umum untuk menyambungkan motor DC ke mikrokontroler adalah menggunakan rangkaian ‘H Bridge’, dengan rangkaian ini motor dapat dikendalikan maju mundur.
H Bridge
Pada H-Bridge juga dipasang dioda pengaman (D1 , D2, D3, D4) untuk mengamankan arus yang timbul karena induktansi motor. Rangkaian ini memerlukan 4 output digital dari mikrokontroler.
H-Bridge menggunakan teknik PWM (Pulse Width Modulation) untuk mengatur energi yang diberikan ke motor DC, dan dengan demikian dapat mengatur kecepatan motor. Arah putaran motor juga dapat diatur dengan mengatur kombinasi transistor yang aktif.
Selain menggunakan H-Bridge , antar muka ke motor DC dapat juga menggunakan teknik berikut:
Output analog dari mikrokontroler, diperkuat dengan penguat / amplifier. Cara ini secara teoritis dapat dilakukan, namun dalam praktek jarang digunakan karena efisiensi penguat analog tidak setinggi teknik PWM.
Relay, namun masalahnya relay mempunya kecepatan yang lambat, sehingga tidak cocok untuk teknik PWM.
H-Bridge tersedia dalam bentuk modul yang sudah jadi, di dalamnya sudah ada transistor power dan antar muka dari mikroprosesor (CMOS/TTL) ke transistor tersebut, sehingga sangat mudah dihubungkan ke mikroprosesor. Contoh modul tersebut adalah di antaranya Toshiba TB6612FNG dan Infineon TLE 5025-2
Cara 1: tanpa multipleksing. Setiap LED di 7 Segment dihubungkan ke output mikrokontroler. Cara ini memerlukan 14 pin output digital di mikrokontroler, namun memudahkan pemrograman karena tidak perlu melakukan update rutin.
LED 7 Segment tanpa multipleksing
Cara 2: dengan multipleksing. LED 7 Segment dapat dihubungkan dengan menggunakan multipleksing seperti rangkaian berikut ini:
LED 7 Segment common cathode
Teknik multipleksing ini hanya memerlukan 9 pin digital output, namun memerlukan software yang lebih kompleks.
Perhitungan nilai resistor seri LED
Asumsi tegangan drop pada LED adalah 2 volt.
Tegangan pada resistor adalah 3 volt.
Arus dibatasi di 20 mA
Nilai resistor = R = V/I = 3 volt / 20 mA = 150 ohm. Jadi nilai resistor sekurang-kurangnya adalah 150 ohm. Untuk itu resistor untuk LEd dapat menggunakan 220 ohm.
Perhitungan nilai resistor basis transistor (R1 dan R2)
Asumsi penguatan arus transistor = 100. Angka ini normal untuk transistor sinyal kecil.
Asumsi Vbe = 0.7 volt
Arus total LED 1 digit= 20 mA x 7 = 140 mA
Arus kolektor transistor = 140 mA
Arus basis minimal = 20 mA / 100 = 1,4 mA
Tegangan pada R1 = 5-0.7 = 4.3 volt
R = V/I = 4.3 / 1,4 mA = 3071 ohm. Jadi nilai R paling besar adalah 3071 ohm. Untuk itu R1 dan R2 bisa menggunakan nilai 1000 ohm yang mudah didapat.
Sumber daya yang tersedia hanya 12 volt, sedangkan rangkaian memerlukan 12 volt (motor) dan 5 volt (lainnya). Untuk itu diperlukan regulator yang sesuai, misal regulator 7805 yang dapat mengubah input 12 volt menjadi output 5 volt.
Potensiometer memerlukan tegangan 5 volt untuk Vin. Jika menggunakan 12 volt, maka Vout juga dapat mencapai 12 volt, sehingga dapat merusak mikrokontroler.
Motor DC memerlukan 12 volt, sehingga tegangan 12 volt dapat langsung disambung ke rangkaian motor driver.
Mikrokontroler ATMega328 memerlukan VCC 5 volt, sehingga memerlukan regulator 5 volt.
Rotary encoder memerlukan tegangan 5 volt, sehingga memerlukan regulator 5 volt.
LED 7 Segment jika common cathode tidak terhubung ke VCC, sehingga tidak perlu sambungan ke sumber daya. Jika menggunakan common anode, maka bagian common (anode) dihubungkan ke output regulator 5 volt. Perlu berhati-hati menghubungkan LED ke 12 volt, karena kalau salah , maka akan ada tegangan 12 volt masuk ke pin mikrokontroler, sehingga dapat merusak mikrokontroler.
Rangkaian power supply
Skema Rangkaian Lengkap
[under construction]
Penentuan Frekuensi Sampling
Frekuensi sampling ditentukan dari bandwidth sistem yang dikendalikan. Sesuai dengan kriteria Nyquist, frekuensi sampling adalah 2x frekuensi maksimum sistem. Pada persoalan ini nilai frekuensi sistem belum diketahui, namun dapat dihitung dengan mengetahui parameter sistem (Gc(s) dan Gp(s), ataupun dapat juga diukur dengan memperhatikan respon sistem terhadap sinyal input step.
Interupsi pada Perangkat Lunak
Berikut ini beberapa bagian pada sistem kendali ini yang memerlukan interupsi:
Algoritma sistem kendali digital memerlukan suatu frekuensi sampling tertentu. Untuk mendapatkan frekuensi sampling ini perlu interupsi TIMER.
Rotary encoder untuk pembacaan input menggunakan interupsi eksternal (INT0,INT1), atau PCINT, agar setiap transisi dari output rotary encoder menghasilkan interupsi pada mikrokontroler
Rotary encoder memerlukan interupsi TIMER, untuk dapat menghitung kecepatan, berdasarkan jumlah pulsa yang timbul dan waktu yang sudah berlalu.
LED 7 Segment memerlukan interupsi jika menggunakan konfigurasi multipleksing. Jika tidak menggunakan multipleksing, maka tidak memerlukan interupsi untuk update display.
Potensiometer tidak memerlukan interupsi secara langsung, namun perlu disampling sesuai dengan frekuensi sampling sistem kendali.
Diagram Alir Perangkat Lunak
Detail diagram alir (flowchart) tergantung dari konsep software yang dipakai. Berikut ini salah satu desain:
Diagram Alir Sistem Kendali
Penjelasan:
Rotary encoder menggunakan interupsi PCINT. Tiap kali ada transisi/perubahan di output A ataupun B, maka akan timbul interupsi. Dari sinyal ini dapat diketahui motor bergerak maju atau mundur. Angka posisi ini diakumulasikan oleh blok ‘Update counter posisi’
LED 7 Segment perlu update rutin jika menggunakan teknik multipleksing. Update ini ditangani oleh ‘Update Display LED’ yang dipanggil oleh interupsi TIMER.
Algoritma kendali digital memerlukan sampling secara rutin, untuk itu memerlukan interupsi TIMER secara teratur. Fungsi ini ditangani oleh blok ‘Sampling Kendali’.
Hal yang dikerjakan oleh blok ‘Sampling Kendali’ adalah sebagai berikut:
membaca posisi potensiometer berdasarkan tegangan analog yang masuk dari potensiometer ke ADC
menghitung posisi / kecepatan motor saat ini, berdasarkan angka counter posisi saat ini dan angka counter posisi sebelumnya.
melakukan perhitungan algoritma kendali, misalnya dengan menggunakan teknik PID (Proporsional, Integral, Derivative)
mengirimkan sinyal kendali hasil perhitungan dengan menggunakan output PWM dan Direction ke motor driver.
Jika display LED menggunakan teknik langsung tanpa multipleksing, maka flowchart dapat dimodifikasi sebagai berikut:
Berikut ini rotary encoder yang sudah dibuka casingnya
Berikut ini detail close up rangkaian dalam dari rotary encoder.
Nampak ada komponen aktif berupa regulator LM7805 dan 2 buah transistor serta dioda. Isi dalamnya mirip dengan yang dibongkar di artikel https://wemakethings.net/2014/05/26/rotary-encoder-teardown/, namun tidak sama persis.
Berikut ini rangkaian versi lain dari https://wemakethings.net/2014/05/26/rotary-encoder-teardown/:
rotary encoder
Berikut ini keterangan menurut situs Aliexpress (https://www.aliexpress.com/item/lpd3806-600bm-g5-24c-AB-Two-Phase-5-24V-600-Pulses-Incremental-Optical-Rotary-Encoder/32857035640.html):
AB Two Phase 5-24V 600 Pulses Incremental Optical Rotary Encoder
Uses:
For measuring the rotational speed of the object, angle, acceleration, and length measurements.
Scope of use:
Suitable for intelligent control of various displacement measurement, automatic fixed-length leather automatic guillotine machine, steel fixed length cutting controller, civil measured height human scale, college game with robots.
Feature:
AB two-phase incremental optical rotary encoder 600 pulses, NPN open collector output . (We also have 360 pulses and 600 pulses in stock, including NPN open collector output and voltage output two kinds of output. If you need please leave message for which one, or we will send by default 600 pulses and NPN open collector output ).
Standard with 1.5 m cable
Performance: 400 pulses / rev.
Operating voltage: DC5-24V
Maximum mechanical speed: 5000 rev / min
The electrical response frequency: 20K / sec
Integrated speed: 2000 rev / min
Size: Encoder body size: φ38mm; shaft φ6 × 13mm; axis platform: High 5mm, φ20mm; fixing holes for: M3 screws
Three mounting holes on the circle 30, and the other three mounting holes on the 28 circle ; side qualify.
Output:
AB rectangular two-phase quadrature pulse output circuit output NPN open collector output type, this output type can and with internal pull-up resistor connected directly to the microcontroller or PLC, such as 51 single or Mitsubishi PLC (PLC’s input to switch connected to 0V should work), Note: If the encoder is not connected to the device can not be directly oscilloscope oscilloscope (open collector output when there is no pull-up resistor, there is no voltage output) to oscilloscope please plus two pull-up resistor AB two-phaseoutput;
The rotary encoder is used to measure the speed and with PWM technology can achieve rapid speed devices
With fixed bolt hole for easy installation
Great for DIY project
Specification:
Model: KY-040 Working voltage: 5V
Material: PCB + Brass
Weight: 10g
Size: 32 x 19 x 30mm