Penggunaan motor DC dewasa ini sudah sangatlah umum, salah satu kelebihan motor DC adalah relatif gampang didapat dan mudah diatur kecepatan putarnya. Secara umum pengaturan kecepatan motor DC adalah dengan menggunakan cara analog. Pada artikel kali ini akan dibahas contoh cara mengatur kecepatan motor DC dengan menggunakan mikrokontroller.
Mikrokontroler yang digunakan adalah Tipe AVR dari Atmel seperti mikrokontroler Atmega 8535, 16, 32. Informasi kecepatan motor akan ditampilkan pada modul LCD HD4480. Sedangkan sebagai driver motor menggunakan modul driver motor IC L298.
Cara pengaturan kecepatan yang digunakan adalah dengan menggunakan teknik PWM (Pulse Width Modulation), salah satu teknik untuk mengatur kecepatan motor DC yang umum digunakan. Dengan menggunakan PWM kita dapat mengatur kecepatan yang diinginkan dengan mudah. Teknik PWM untuk pengaturan kecepatan motor adalah, pengaturan kecepatan motor dengan cara merubah-rubah besarnya duty cycle pulsa. Pulsa yang yang berubah ubah duty cycle-nya inilah yang menentukan kecepatan motor. Besarnya amplitudo dan frekuensi pulsa adalah tetap, sedangkan besarnya duty cycle berubah-ubah sesuai dengan kecepatan yang diinginkan, semakin besar duty cylce maka semakin cepat pula kecepatan motor, dan sebaliknya semakin kecil duty cycle maka semakin pelan pula kecepatan motor. Sebagai contoh bentuk pulsa yang dikirimkan adalah seperti pada gambar 1, pulsa kotak dengan duty cycle pulsa 50%. Sedangkan sebagai contoh bentuk pulsa PWM adalah seperti pada gambar 2.
Gambar 1
Gambar 2
Seperti pada gambar 1, semakin besar duty cycle pulsa kotak, maka semakin lama pula posisi logika high. Jika motor diatur agar berjalan ketika diberi logika high, maka jika memberi pulsa seperti pada gambar 1 diatas, maka motor akan berada pada kondisi “nyala-mati-nyala-mati” sesuai dengan bentuk pulsa tersesebut. Semakin lama motor berada pada kondisi “nyala” maka semakin cepat pula kecepatan motor tersebut. Motor akan berputar dengan kecepatan maksimum jika mendapat pulsa dengan duty cycle 100%. Dengan kata lain motor mendapat logika high terus menerus.
Dengan mengatur besarnya duty cycle pulsa kotak yang dikirimkan, kita dapat mengatur banyaknya logika high yang diberikan pada motor, dengan kata lain mengatur lamanya waktu motor untuk berputar dalam satu periode pulsa. Jika lamanya waktu motor untuk berputar dalam satu periode pulsa ini berubah maka kecepatan purtaran motor juga akan berubah, sesuai dengan duty cycle atau waktu motor untuk berputar dalam satu periode pulsa.
Sumber :http://delta-electronic.com/article/wp-content/uploads/2008/09/an0082.pdf
===============================================================
PENGATURAN KECEPATAN MOTOR DC Berbasis Atmega8535
Skema dengan proteus:
Hasil simulasi dengan proteus:
Program Pengaturan Kecepatan Motor DC dengan Bascom AVR
$regfile = “m8535.dat” ‘menggunakan Atmega8535 sebagai preprosesor
$crystal = 12000000 ‘menggunakan crystal clock 12 MHz
$eeprom ‘menggunakan fasilitas eeprom Atmega8535
‘—————————inisialisasi lcd————————————
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2 : Cursor Off
‘—————————inisialisasi pwm———————————–
Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up ‘pwm dengan settingan fast pwm 10 bit
‘—————————inisialisasi port——————————–
‘inisialisasi tombol
Config Portb = Input
‘—————————pull up internal——————————–
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Config Portd = Output
‘alias logika motor
M1a Alias Portd.0
M1b Alias Portd.1
M2a Alias Portd.2
M2b Alias Portd.3
‘——————————alias——————————————–
‘alias tombol
Sw_ok Alias Pinb.3
Sw_cancel Alias Pinb.2
Sw_down Alias Pinb.1
Sw_up Alias Pinb.0
‘——————————————————————————-
Dim Pwm As Integer
Dim Pwm_eprom As Eram Integer
Home
Lcd “Fahmizal_dte2006”
Lowerline
Lcd “Cek fungsi PWM”
Wait 1
Do
Pwm = Pwm_eprom
If Sw_up = 0 Then : Incr Pwm : Waitms 10
End If
If Sw_down = 0 Then : Decr Pwm : Waitms 10
End If
If Pwm > 1023 Then : Pwm = 0 : Waitms 10
End If
If Pwm < 0 Then : Pwm = 1023 : Waitms 10
End If
Pwm_eprom = Pwm
Cls
Home
Lcd “tes uji pwm”
Lowerline
Reset M1a
Reset M2a
Set M1b
Set M2b
Pwm1a = Pwm
Pwm1b = Pwm
Lcd “nilai pwm:” ; Pwm1a : Waitms 100
Loop
End
nach berikut hasil video pengaturan sinyal PWM nya ^_^
===============================================================
bacaan terkait di blog ini:
1. mudah-belajar-mikro-dengan-simulasi-program-proteus klik disini
2. aplikasi-pwm-mikrokontroler-atmega8535 klik disini
Posted by DIAN on November 26, 2010 at 8:19 am
SELAMAT SIANG..
IDE YANG SANGAT BAGUS…
TERIMAKASIH..
RANGKAIANNYA SAYA COBA KEMBANGKAN UNTUK MEMBUAT MOBIL MINIATUR BERTENAGA LISTRIK…
MOHON IJIN SHARE RANGKAIANNYA…
DAN TERIMAKASIH ATAS SHARE LISTING PRGRAMNYA..
SALAM
Posted by fahmizaleeits on November 27, 2010 at 3:23 pm
sama2 mas…selamat mencoba…semoga blog ini dapat membantu…salam kembali
Posted by aji on Oktober 27, 2012 at 1:12 pm
mas, boleh minta list programnya yang pake codevision dong , please ya
Posted by robby on November 29, 2010 at 8:02 pm
mas minta di share donk rangkain nya . .
SMKN 2 PEKANBARU . .
Posted by fahmizaleeits on Desember 2, 2010 at 1:22 pm
untuk rangkaian aplikasinya gk punya mas…cuma ada simulasi doank…
Posted by lewat on Desember 20, 2010 at 1:46 pm
Waduh, tolong dibenerin titlenya,
Yang namanya pengaturan kecepatan motor berarti harus ada yang diatur, lha ini cuman loop terbuka (mau identifikasi ato gimana ne?), kasih encoder dulu baru dilihat responsnya, klo ini mah cuman bagaimana cara gerakin motor pakek AVR?
Latih lagi cara menulis yg bener, 😛
Posted by fahmizaleeits on Desember 20, 2010 at 3:35 pm
terimakasih atas masukannya mas, yang diatur disini cuma open loop bukan close loop menggunakan sensor, kalo close loop gak dilakukan pada pengaturan motor pada tulisan ini… cukup menggunakan open loop dan kita liat hasil duty cycle PWM-nya pada osiloscope… kalo mas bilang cuman bagaimana cara gerakin motor pake AVR itu gak benar, di tulisan ini mengatur besar putaran motor menggunakan PWM, Apakah mas sudah paham tentang PWM….? 🙂
Posted by lewat on Desember 21, 2010 at 5:06 am
PWM? anda aja buat pwm tidak pada jalur yang benar (walaupun cara ini dibenarkan), di AVR sendiri ada pin OCR1A, dan OCR1B dimana “duty cycle” yg dihasilkan lebih baik dan presisi.
(belajar lagi fitur2 mikro, jgn asal copas, kembangkan!)
Kalo emang punya anda bener open loop sejati,dari rangkaian anda tidak ada yang namanya response, step input juga gak ada, harusnya input = 200rpm maka respons mendekati 200rpm
(belajar lagi teori kontrol, kasihan yg nyasar kesini malah diajarin copas :P)
klo comment ini didelete, berarti lu salah hahhaa
Posted by fahmizaleeits on Desember 21, 2010 at 10:01 am
lo mas ni aneh… 😀 PWM yang saya berikan pada pemrograman tersebut ya menggunakan pin OCR1A dan OCR1B, list inisialisasi programnya: “Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up” lalu Pwm1a untuk OCR1A dan Pwm1b untuk OCR1B, oiya untuk apa menghapus komentar mas hehehehe 🙂 untuk input tidak menggunakan “rpm” mas, program diatas cuma memberikan nilai OCR1A/B yang diinputkan dengan cara menekan tombol up sebagai increment nilai OCR1A/B dan tombol down sebagai decrement nilai OCR1A/B.
Posted by IKONspirasi on Juni 14, 2011 at 10:11 am
hahaha ini si “lewat” ga ngerti apa ya artinya klo knowledge itu open-source??
ilmu itu untuk dibagi, bukan klo kita menemukan sesuatu itu disimpan sendiri hahaha
Posted by Iqbal on Januari 8, 2011 at 5:55 pm
Mau nanya gan, adakah sensor mengenai kelembaban,ph,dan salinitas untuk mengukur dilaut. mohon informasinya..
Posted by fahmizaleeits on Februari 1, 2011 at 1:50 pm
ada gan, sensor SHT11 merupakan sensor suhu plus kelembapan…sangat presisi dan mudah diakses…cuman harganya lumayan sih…kalo sensor PH ane belum tahu…info tentang sensor SHT11 tautan ini gan https://fahmizaleeits.wordpress.com/2010/08/29/akses-sensor-suhu-dan-kelembaban-sht11-berbasis-mikrokontroler/ thanks atas kunjungannya…
Posted by imoel on Februari 6, 2011 at 9:06 am
mas,,ko programnya ga bisa di compile ya,,error mulu
Posted by fahmizaleeits on Februari 17, 2011 at 8:25 pm
saya compile bisa tu mas… 😀
Posted by Om Iswanto on Februari 27, 2011 at 6:46 am
Bos, ini aku sharekan untuk mengakses PWM dengan ATMEGA16 menggunakan codevision
http://iswanto.staff.umy.ac.id/2011/02/27/mengakses-pwm-atmega16-dengan-codevision/
Posted by fahmizaleeits on Maret 1, 2011 at 3:46 pm
trims atas kunjungan dan sharing ilmunya mas is 😀
Posted by si agan on Maret 3, 2011 at 2:01 pm
baca koment yg diatas dari inisial “lewat” bikin ngakak gan… tu anak sotoi dan gak tahu ma mikrokontroler dan sotoi juga dengan ilmu kontrol…kebanyakan teori tu anak dan gk tahu prakteknya, untung saja mas fahmi sabar dengan comment gituan…
Posted by fahmizaleeits on Maret 4, 2011 at 4:05 pm
gpp kali mas..hehehe 😀
Posted by Prima on Maret 18, 2011 at 7:34 am
terimakasih share ilmunya… 🙂
oiya nanya gan, kalo mau buat H-Bridge yang paling bagus pake komponen apa ya?
thx
Posted by fahmizaleeits on Maret 20, 2011 at 3:52 pm
trims atas kunjungannya mas prima 😀
dari pemgalaman maenan line follower, menurut ane H-bridge komposisi transistor FET lebih baik dari pada IC L293d ato L298, mungkin mas prima ada info laen?
Posted by amak yunus on April 2, 2011 at 6:12 am
Mas, sy pemula dalam elektronika. mhn saat diclick, fotonya bisa diperbesar. trims
Posted by fahmizaleeits on April 9, 2011 at 6:12 pm
Trims atas pemberitahuanya…ok ntar ane revisi 😀
Posted by donny on April 29, 2011 at 9:36 pm
Mas programnya kok error ya
“DIM PWM As Integer” ====>Menurut bascom: “Variable already dimensioned”
“If PWM >1023 then…………====>Menurut bascom:”Value doesn’t fit into byte.
Tolong dong
Thx
Posted by fahmizaleeits on Mei 1, 2011 at 11:47 pm
masak seh error, ane coba enggak tu… mungki qmu salah definisi dimensi PWM, coba diperiksa lagi 😀
Posted by eL on Mei 21, 2011 at 10:51 am
izin save ya,,
mas,, tlg kirimin ane skema proteus nya dong..ad tgs kmpus nih. Gmbr di atas krg nampak..
Tlg ke email ya…
Thnks,, trs brkrya!
Posted by fahmizaleeits on Juli 22, 2011 at 6:12 pm
okay 😀
Posted by ariel yagusandri on Juni 4, 2011 at 2:56 am
mas mw nanya nih..
saya kan mw buat program pergerakan servo pake bascom AVR..
saya mw kontrol 4 servo sekaligus dengan sudut yg beda mas.
kira2 bsa share g mas??
saya bingung bgt nih mas..
mohon pencerahan yah mas2 sekalian..
Posted by fahmizaleeits on Juli 22, 2011 at 6:41 pm
di help editor bascom udah ada contoh penggunaan servo…mudah dipahami kok, coba deh 😀
Posted by surda on Juni 27, 2011 at 7:23 pm
mas saya mau nanya untuk bikin program AVO meter.. yg ditampilkan di LCD gmana ya.. thanks
Posted by fahmizaleeits on Juli 22, 2011 at 6:53 pm
maaf lum pernah coba 😀
Posted by imron on Agustus 3, 2011 at 1:23 pm
mas seumpama feedbacknya pake tacho dc generator yang keluarannya gak pulsa pwm akan tetapi langsung tegangan tu bisa apa dipake pd kontrol kecepatan motor dc???
trus programnya gmn?
Posted by fahmizaleeits on Agustus 4, 2011 at 10:21 am
bisa mas…umpan balik dari tacho berupa tegangan…terus mas kondisikan pada ADC sebagai nilai umpan baliknya…bis tu bisa deh dikontrol pake PD… tapi biasanya kalo buat ngontrol motor lebih cocok PI, kalo programmnya berarti ada akses ADC buat baca umpan balik tacho-nya dan kontrol PI diskrit ^_^
Posted by imron on Agustus 4, 2011 at 10:48 am
mksudnya kontrol PI diskrit tu gmn???
Posted by fahmizaleeits on Agustus 6, 2011 at 12:42 pm
maksudnya kontroler PI diskrit ialah kontroler PI yang ditanamkan pada mikrokontroler dari PI analog diubah ke digital dalam bentuk bahasa pemrograman contohnya https://fahmizaleeits.wordpress.com/2010/08/24/tuning-kontrol-pid-pada-robot-line-follower/
Posted by bambang on Desember 2, 2011 at 5:41 am
aslkum… oea mas… bisa minta tolong buatin flowchatnya?
Posted by Fahmizal on Desember 2, 2011 at 9:56 pm
wlkum sallam… maaf untuk flowchartnya belum sempat ane buat ^_^
Posted by syuratman on Desember 5, 2011 at 4:35 pm
Sw_ok Alias Pinb.3
Sw_cancel Alias Pinb.2
Sw_down Alias Pinb.1
Sw_up Alias Pinb.0
tombol2 itu , apa aja mas, fungsi nya. mohon beri penjelasan lebih detail y man . thnx
Posted by Fahmizal on Desember 7, 2011 at 8:11 pm
itu buat inisialisasi penggunaan tombolnya mas 😀
Posted by Aziz on Desember 10, 2011 at 8:22 pm
Untuk total biaya pembuatan kira2 besar gak mas tu?
Posted by Fahmizal on Januari 1, 2012 at 3:54 pm
hanya membutuhkan rangkaian sistem minimum mikrokontroler…biayanya sekitar 200 ribu sudah cukup mas 😀
Posted by Aziz on Desember 10, 2011 at 8:27 pm
o…iya satu lagi mas..
untuk mikrokontroler yang dipake apa harus ATMega8535?
Posted by Fahmizal on Januari 1, 2012 at 3:56 pm
tidak harus ATmega8535… bisa diganti dengan ATmega 16/32 dan keluara ATmega laiinya 😀
Posted by taufiksanjaya on Desember 30, 2011 at 6:09 pm
mas kalo mau menjadikan input pwm sebagai pengktif led dengan kecerahan tertentu
gimana ya ?
saya make
$regfile = “8535def.dat”
$crystal = 12000000
Config Portc = Output ‘ port c sebagai output dihubungkan ke Led
Portc = &H00
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim Inputldr As Byte
Start Adc
Inputldr = Getadc(0)
Inputldr = Inputldr * 1
Do
If Inputldr >10
Portc.0 = 1
Waitms 100
Portc.1 = 1
Elseif Inputldr < 2
Then
Portc.0 = 0
Waitms 100
Portc.1 = 0
End If
muncul pesan error
assigmennt error… mohon pencerahan mas
Posted by taufiksanjaya on Desember 30, 2011 at 6:26 pm
0h iya mas tambahan pertanyaan… saya baca buku … katanya ada 4 pwm pada atmega 8535
saya nyoba
$regfile = “m8535.dat”
$crystal = 12000000
‘ adc inputan ldr
Config Adc = Single , Prescaler = Auto , Reference = Avcc
‘deklarasi timer0 sebagai pwm
‘Config Timer0 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
‘deklarasi timer2 sebagai pwm
Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
‘deklarasi timer1 sebagai pwm
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1
‘ deklarasi untuk inputan adc/ldr
Dim Nilai_ldr As Byte
‘deklarasi output pwm 0 dan 2
Dim Nilaipwm0 As Byte
Dim Nilaipwm2 As Byte
‘deklarasi output pwm 1a dan 1b
Dim Nilaipwm1a As Byte
Dim Nilaipwm1b As Byte
‘ setting nilai pwm 1a dan 1b
Nilaipwm1a = 100
Nilaipwm1b = 0
‘ setting nilai pwm 0 dan 2
Nilaipwm0 = 100
Nilaipwm2 = 0
Do
Pwm1a = Nilaipwm1a + 10
Pwm1b = Nilaipwm1b + 20
Pwm0 = Nilaipwm0
Pwm = Nilaipwm2 + 10
Loop
End
saya bungung tuk pwm 0 dan pwm 2 cara ngeluarkan outputnya gimana ya?
kalo yang 1a n 1b kan
Pwm1a = Nilaipwm1a + 10
Pwm1b = Nilaipwm1b + 20
mohon dijawab mas..
terimakasih
Posted by Fahmizal on Januari 1, 2012 at 4:19 pm
penjelasan TIMER 0
‘———————————————————————
‘ TIMER0.BAS
‘ example that shows how to use TIMER0 related statements
‘———————————————————————
‘First you must configure the timer to operate as a counter or as a timer
‘Lets configure it as a COUNTER now
‘You must also specify if it will count on a rising or falling edge
Config Timer0 = Counter , Edge = Rising
‘Config Timer0 = Counter , Edge = falling
‘unremark the line aboven to use timer0 to count on falling edge
‘To get/set the value from the timer access the timer/counter register
‘lets reset it to 0
Tcnt0 = 0
Do
Print Tcnt0
Loop Until Tcnt0 >= 10
‘when 10 pulses are count the loop is exited
‘or use the special variable TIMER0
Timer0 = 0
========================================================
penjelasan TIMER 1
Dim W As Word
‘The TIMER1 is a versatile 16 bit TIMER.
‘This example shows how to configure the TIMER
‘First like TIMER0 , it can be set to act as a TIMER or COUNTER
‘Lets configure it as a TIMER that means that it will count and that
‘the input is provided by the internal clock.
‘The internal clock can be divided by 1,8,64,256 or 1024
Config Timer1 = Timer , Prescale = 1024
‘You can read or write to the timer with the COUNTER1 or TIMER1 variable
W = Timer1
Timer1 = W
‘To use it as a COUNTER, you can choose on which edge it is triggered
Config Timer1 = Counter , Edge = Falling, , Prescale = 1024
‘Config Timer1 = Counter , Edge = Rising
‘Also you can choose to capture the TIMER registers to the INPUT CAPTURE registers
‘With the CAPTURE EDGE = , you can specify to capture on the falling or rising edge of pin ICP
Config Timer1 = Counter , Edge = Falling , Capture Edge = Falling , , Prescale = 1024
‘Config Timer1 = Counter , Edge = Falling , Capture Edge = Rising
‘To allow noise canceling you can also provide :
Config Timer1 = Counter , Edge = Falling , Capture Edge = Falling , Noise Cancel = 1, , Prescale = 1024
‘to read the input capture register :
W = Capture1
‘to write to the capture register :
Capture1 = W
‘The TIMER also has two compare registers A and B
‘When the timer value matches a compare register, an action can be performed
Config Timer1 = Counter , Edge = Falling , Compare A = Set , Compare B = Toggle, , Prescale = 1
‘SET , will set the OC1X pin
‘CLEAR, will clear the OC1X pin
‘TOGGLE, will toggle the OC1X pin
‘DISCONNECT, will disconnect the TIMER from output pin OC1X
‘To read write the compare registers, you can use the COMPARE1A and COMPARE1B variables
Compare1a = W
W = Compare1a
‘And the TIMER can be used in PWM mode
‘You have the choice between 8,9 or 10 bit PWM mode
‘Also you can specify if the counter must count UP or down after a match
‘to the compare registers
‘Note that there are two compare registers A and B
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down
‘to set the PWM registers, just assign a value to the compare A and B registers
Compare1a = 100
Compare1b = 200
‘Or for better reading :
Pwm1a = 100
Pwm1b = 200
End
========================================================
penjelasan TIMER 2
Syntax for the 8535
CONFIG TIMER2 = TIMER | PWM , ASYNC=ON |OFF,
PRESCALE = 1 | 8 | 32 | 64 | 128 | 256 | 1024 ,
COMPARE = CLEAR | SET | TOGGLE I DISCONNECT ,
PWM = ON | OFF ,
COMPARE PWM = CLEAR UP| CLEAR DOWN | DISCONNECT ,
CLEAR TIMER = 1|0
Example
‘——————————————————————-
Dim W As Byte
Config Timer2 = Timer , ASYNC = 1 , Prescale = 128
On TIMER2 Myisr
ENABLE INTERRUPTS
ENABLE TIMER2
DO
LOOP
MYISR:
‘get here every second with a 32768 KHz xtal
RETURN
‘You can read or write to the timer with the COUNTER2 or TIMER2 variable
W = Timer2
Timer2 = W
Posted by taufiksanjaya on Januari 2, 2012 at 8:57 pm
mas saya nyoba pwm1a dan pwm1b untuk kontrol kecerahan nyala led , tapi kok kelihatan berkedip ya saat tambah terang / redupnya.?
Posted by Fahmizal on Januari 4, 2012 at 1:57 pm
iya mas coz mas ngaturnya pake PWM… itukan on-off permainan frekuensi mas… jadi sangat berpengaruh juga dengan kristal mikro yg mas gunakan 😀
Posted by akmal budi daryanto on Januari 5, 2012 at 12:39 am
maaf mas,,
tolong bantuin saya, gimana untuk menjalakankan motor servo pada bahasa bascom
makasih mass,,
Posted by Fahmizal on Januari 16, 2012 at 10:09 pm
silakan berkunjung kesini https://fahmizaleeits.wordpress.com/2011/12/04/akses-motor-servo-dengan-pemrograman-bascom-avr/ 😀
Posted by Dg.Narang on Januari 11, 2012 at 3:50 pm
Klo mau download software proteus (windows 7) yg full versi tp free, mas punya linknya gak ?, beberapa yg saya download suka error. Tks
Posted by taufiksanjaya on Januari 14, 2012 at 3:46 pm
mas, kalo mau ngeset output pwm nya dinamic gimana mas? semisal saya pengen menghasilkan keluaran pwm untuk menyalakan led (banyak led) agar menghasilkan keluaran dengan nilai keluaran antara 200-300 lux, inputanny nya LDR untuk membaca tingkat kecerahan cahaya(pada pengukuran percobaan, nilai 200-300 lux LED dicapai saai inputan LDR ke PWM = 98-77 dalam skala ADC 8 bit (255), jadi ketika input ldr di bawah 77 (terang) maka nilai keluaran PWM di turunkan (agar menjadi lebih redup nyala LED nya). jikaninputan dari LDR diatas 98 (gelap) maka output pwm dinaikkan sehingga mencapai nilai antara 200-300 lux, jika nilai sudah diantara 200-300 maka pwm tidak perlu diubah-ubah
saya memncoba code di bawah ini, namun keluaran belum sesuai harapan mas,
$regfile = “8535def.dat”
$crystal = 12000000
‘ di bawah ini konfigurasi LCD di port B
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4
Config Lcdpin = Pin , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2
‘ config acd
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
‘ deklarasi inputan
Dim Inputldr As Byte
Dim Outputpwm As Byte
‘set out
Do
Start Adc
Inputldr = Getadc(0)
Waitms 500
Cls
Locate 1 , 1
Lcd Inputldr
‘TERANG
Outputpwm = 125
If Inputldr 98 Then
Decr Outputpwm
Pwm1a = Outputpwm
End If
Loop
Posted by Fahmizal on Januari 16, 2012 at 10:39 pm
ada yg salah di proses kondisi “if then rule-nya” masih kurang mas…coba diperiksa lagi 😀
Posted by indra on Januari 21, 2012 at 3:37 pm
mas progam bascom yg mas cantumkan kog ada home???itu perintah menuju kemana mas???
Posted by Fahmizal on Januari 23, 2012 at 12:21 am
perintah home itu buat peletakan posisi cursor LCD, more information you can read here 😀
Posted by indra on Januari 24, 2012 at 10:15 am
mas mau tanya lagi..program diatas kan kalo nambah persiklusnya pwm setiap ditekan switch,,kalo kita murni dari software gmn ya mas,,bukan dari luar mikronya
Posted by Fahmizal on Januari 24, 2012 at 4:27 pm
kamu bisa menambahkan suatu vaiabel, misalnya
dim kecepatan as byte
do
incr kecepatan
waitms 100
Pwm1a=kecepatan
loop
End
Posted by indra on Januari 24, 2012 at 7:34 pm
berarti pwm1a=….itu bisa diisi variabel misal (255/10/98) ndak mas????
Posted by Fahmizal on Januari 24, 2012 at 10:43 pm
iya mas betul sekali 😀
Posted by fakhri munziar on Maret 11, 2012 at 5:26 pm
mas mau minta skema proteusnya boleh dikirim ke email??
buat tugas kampus,
makasih bnyak
semoga jadi amal jariah (ilmu yg bermanfaat)
amin
Posted by kris on Maret 25, 2012 at 2:01 pm
mas saya mau tanya ne saya mau buat robot berjalan 6 kaki 18 kaki sayabagusnya saya pake program apa ya, ad ngak contoh programnya
Posted by gamebiz on April 2, 2012 at 6:15 am
makasih kak…..akhirnya ketemu juga listing program untuk bascom.
Posted by rahasia on April 8, 2012 at 2:32 pm
sumpah ni blog keren..bisa menambah ilmu setiap orang yang membacanya..!!
Posted by ariftatul on April 20, 2012 at 8:51 am
Gan, tw tentang sensor aliran…. q butuh info. berkenanaan dengan sensor aliran tersebut.( prinsip kerja, jenis,dll). terimakasih
Posted by zay on Mei 8, 2012 at 9:53 am
kalau mau ditaruh di line follower pake mikro yang sama gimana? apa perlu tambah program? kalau ngaturnya pakai trimpot bisa nggak. terima kasih sebelumnya
Posted by wiswis on Mei 10, 2012 at 9:44 am
makasih infonya sam..
ijin copas buat tugas besar saya 🙂
Posted by ryan on Mei 21, 2012 at 8:07 am
mas settingan untuk di avr sebelum di generate nya dong thanks..
Posted by yuda on Juni 13, 2012 at 10:55 am
SELAMAT SIANG..
IDE YANG SANGAT BAGUS…
TERIMAKASIH..
RANGKAIANNYA SAYA COBA KEMBANGKAN MEMBUAT MOUNTING
MERIAM MINIATUR BERTENAGA DC
MOHON IJIN SHARE RANGKAIANNYA…
Posted by reins on Juni 15, 2012 at 9:30 pm
mas saya mau menyalakan kipas menurut suhu ruangan jadi saat suhu turun kipas pelan saat suhu naik kipas kencang, dan saya pake spc dc motor buat pengontrol kipasnya, nah sampe saat ini saya masi bingung bt programnya krna program yang saya coba gak jadi2 .. bisa di minta programnya gak mas.. makasih
Posted by lekgun on Juli 11, 2012 at 9:42 pm
mas tolong dong buat kan program bascom atmega8 untuk motor dc brushless 3phase yg pengaturan speed nya pergunakan potensiometer.untuk kecepatan nya dari0 rpm sampai 1000 rpm .untuk data kaki pin IC atmega8 yg di gunakan seperti ini mas:
ATmega8 pin Connected to Direction
AREF Motor supply reference In
PB0 WH_EN Out
PB1 WL_EN Out
PB2 VH_EN Out
PB3 VL_EN Out
PB4 UH_EN Out
PB5 UL_EN Out
PC0 Phase U ADC input In
PC1 Phase V ADC input In
PC2 Phase W ADC input In
PC3 Shunt voltage In
PC4 Speed reference In
PC5 VCC reference In
PD5 PWM signal Out
PD6 Analog comparator input 0 In
PD7 Analog comparator input 1 In
Peripheral unit Usage
Timer/counter0 PWM generation
ADC sample triggering
Timer/counter1 Commutation timing
zero-cross holdoff timing
Analog to digital converter Zero-cross detection
Current measurement
Speed reference input
Analog comparator Overcurrent detection/prevention
klo bisa tolong kabari mas melalui email z ya???????
lekgun@ymail.com
thanks mas atas bantuan nya.
Posted by tritrobot on Juli 18, 2012 at 12:27 am
boleh nanya gak..ini saya bikin lf dan semua sensor nyala cuman pas dicoba ke motor l293d mengeluarkan asap…kira2 ada pencerahan ? batere untuk l293d zippy 11.1 volt…mohon balasannya…trims
Posted by kodok on Juli 19, 2012 at 12:56 pm
mas punya program bahasa Cnya ga ?
Posted by AJI on Oktober 2, 2012 at 11:40 pm
salam kenal mas… bisa bantu buat robot line follower menggunakan logika fuzzi..pakai bascom avr..teriakasih….
Posted by ompewe on Oktober 14, 2012 at 2:35 pm
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1 <<<< mas apakah perintah ini fungsinya untuk menghilangkan noice yang muncul dari inputan adc?
Posted by Yoseph Agung Wicaksono on Desember 15, 2012 at 9:43 pm
mau nanya mas bro. rangkaian d atas kan berfungsi untuk mengatur kecepatan putar motor dc. bisa gak rangkaian d atas d pake untuk mengatur tingkat intensitas cahaya lampu dc?
terima kasih. .
Posted by riska jelita on Desember 18, 2012 at 3:45 pm
mas..mau nnya ne,,ntuk Pengaturan Kecepatan Motor Dc menggunakan kontroler PID Dengan Mikrokontroler atmega8535 dah ada buat mas???\
boleh sya lihat??
n satu lagi,,aplikasi ntuk kcptn mtor dc ini bgusnya d aplikasikan kmn mas??klo diindustri untuk apa mas??
mksh mas,,
Posted by Jamil on Februari 5, 2013 at 8:11 pm
mas kalau mau membuat fungsi tombol pada mikrokontroller BASCOM
menjadi one cyle raising edge atau DIFU seperti pada PLC gimana ya mas..terima kasih
Posted by Ahmad Muhaemin on Maret 10, 2013 at 11:57 pm
mas tolong kirimin rangkaian simulasi proteusnya
terimakasih sebelumnya
Posted by Binary on Maret 31, 2013 at 3:16 pm
I lIke it….
makasih infonya, sudah lama saya mencari artikel tentang pengaturan motor dc, dan saya rasa artikel anda benar dan bermanfaat 😀
Posted by timtim on April 26, 2013 at 10:26 am
minta tolong ni mas, klo mau baca input berupa frekuensi gimana mas, saya mo coba bikin kontrol beban listrik berdasarkan frekuensi dengan penggunaan dummyload.
semisal frekuensi jalala pln kan 50Hz jika terjadi kenaikan frekuensi beban dummy akan on, begitu mas ?????!!!!!! pencerahanya mas !!!
Posted by Engly Ndaomanu on April 26, 2013 at 11:35 am
Makasih banyak atas infonya, blog ini sangat bermanfaat.
Mas, saya mau minta bantuannya dikit untuk tugas kuliah ku mas, boleh kan ?
Gini mas, saya sedang membuat prototype alat pengendali kecepatan kendaraan bermotor. Karena prototype, maka saya menggunakan mobil2an dan motor dc. pengontrolnya dengan atmega 8535 dan bahasa c.
Kalau pake bahasa C, programnya gimana ya?
Tolong di bantu ya, dikirim aja ke email ku :
engly.nd@gmail.com.
Thanks……..
Posted by t3chno_freak on Agustus 1, 2013 at 2:36 pm
Mas, boleh minta file simulasi proteus-nya gk? Saya coba buat sendiri simulasi-nya tp kok Osciloscope beda ya?Mohon bantuannya
Terima kasih
Posted by aldrinjuliant on Januari 29, 2014 at 9:06 pm
keren mas penjelasannya bisa mgerti pwm sekarang
Posted by edisutanto37 on April 21, 2014 at 2:08 pm
Reblogged this on Jejak catatan mahasiswa Pendidikan Teknik Elektro.
Posted by abdul aziz effiyatna on Mei 7, 2014 at 8:38 pm
maaf mau nanya nih gan, saya sedang menyusun skripsi nih, saya mau nanya untuk mengatur pwm untuk penerangan ruangan menggunakan sensor cahaya pada atmega 8535 gimana ya…mohon minta source code nya buat di BASCOM…mksh
Posted by Jamal on Mei 27, 2014 at 12:57 pm
gan mau nanya maksutnya pull up internal itu apa……
maklum masih blajar….
Posted by KTJ on Januari 26, 2016 at 5:39 pm
sudah gak aktif lagi ya?
Posted by ade azhar on Maret 3, 2016 at 12:21 am
mas mau tanya,saya ingin buat pengatur kecepatan motor penggerak untuk generator, menghidupkan / on motor AC kecepatan 1500rpm dan memutus arus motor AC kecepatan 3000rpm,mohon arahannya,maaf ya mas kurang sekolah jadi banyak tanya