Upload
others
View
12
Download
2
Embed Size (px)
Citation preview
1
EL3214PraktikumSistemMikroprosesorModulPengendaliMotorDCDaftarIsi1 ModulIVPengendaliMotorDC............................................................................................................2
1.1 Tujuan...........................................................................................................................................2
1.2 DaftarKomponen.........................................................................................................................2
1.3 KitKendaliMotorDC....................................................................................................................3
1.3.1 Perhatian..............................................................................................................................4
1.3.2 Persiapan..............................................................................................................................4
1.4 PercobaanArduinoNanoATMega328P.......................................................................................5
1.4.1 Tujuan...................................................................................................................................5
1.4.2 Persiapan..............................................................................................................................5
1.4.3 Tugas....................................................................................................................................5
1.5 SensorRotaryEncoder.................................................................................................................5
1.5.1 Tujuan...................................................................................................................................5
1.5.2 Teori.....................................................................................................................................5
1.5.3 Tugas....................................................................................................................................7
1.6 MotorDriverH-BridgeTB6612FNG............................................................................................11
1.6.1 Tujuan.................................................................................................................................11
1.6.2 Teori...................................................................................................................................11
1.6.3 Persiapan............................................................................................................................13
1.6.4 Tugas..................................................................................................................................13
1.7 KendaliKecepatanOpenLoop...................................................................................................14
1.7.1 Tujuan.................................................................................................................................14
1.7.2 Persiapan............................................................................................................................14
1.7.3 Tugas..................................................................................................................................14
1.8 KendaliKecepatanMotorDCDenganPID..................................................................................14
1.8.1 Tujuan.................................................................................................................................14
1.8.2 Persiapan............................................................................................................................14
1.8.3 Tugas..................................................................................................................................15
1.9 KendaliPosisiMotorDCDenganPID..........................................................................................15
2
1.9.1 Tujuan.................................................................................................................................16
1.9.2 Persiapan............................................................................................................................16
1.9.3 Tugas..................................................................................................................................19
1.10 TugasPendahuluan....................................................................................................................19
1.11 Referensi....................................................................................................................................20
DaftarGambar
Gambar1KitMotorDC...............................................................................................................................3Gambar2PillowBearing.............................................................................................................................4Gambar3Keluaranrotaryencoderpadaputaransearahjarumjam.........................................................7Gambar4Keluaranrotaryencoderpadaputaranberlawananjarumjam.................................................7Gambar7Contohkonfigurasipercobaanmotordanrotaryencoder.........................................................9Gambar5TampakbawahmotordriverTB6612FNG................................................................................12Gambar6Rangkaianpercobaanmotordriver..........................................................................................13Gambar8Rangkaiansistemkendalimotor..............................................................................................15Gambar9Blokdiagramsistemkendalikecepatan...................................................................................15Gambar10Blokdiagramsistemkendaliposisi.........................................................................................16
DaftarTabel
Tabel1Listingprogrampengukurposisi.....................................................................................................9Tabel2TabelKebenaranmotordriver......................................................................................................12Tabel3Listingprogramkendaliposisi......................................................................................................16
1 ModulIVPengendaliMotorDC1.1 Tujuan
• Praktikandapatmembuatantarmukamikrokontrolerkerotaryencoder• Praktikandapatmembacainformasiposisidankecepatandarirotaryencoder• PraktikandapatmembuatantarmukaoutputmikrokontrolerkemotorDC• PraktikanmampumembuatpengendaliPIDdigitaluntukmengendalikanposisidankecepatan
motorDC
1.2 DaftarKomponenBerikutinidaftarkomponendanperangkatyangdiperlukanuntukpercobaanini:
• KitMotorDC• MikroprosesorArduinoNano(ATMega328P)
3
• KabelUSBminiuntukArduinoNano• Breadboard• ModulMotorDriverTB6612FNG• Potensiometerdengannilai1ksampai10kuntukinputposisi• PowerSupply5volt2ampereuntuksupplykemotor• Osiloskop• Multimeter• Kabel-kabelpendekuntukbreadboard
1.3 KitKendaliMotorDCPraktikuminimenggunakankitmotorDCsebagaiberikut.
Gambar1KitMotorDC
KomponenutamakitmotorDCadalahsebagaiberikut
• MotorDC12volttipe775denganporos5mmsebagaipenggeraksistem.• Porosutamastainlesssteel8mm• Pillowbearing8mm• RotaryEncoder400pulsedenganporos6mm• DuabuahPelatAluminium5mmsebagaibebanmomeninersia• Closedlooptimingbeltdenganpanjang160mm
4
• PulleyGT2denganporos8mm(untukdipasangdiporosutama)• PulleyGT2denganporos6mm(untukrotaryencoder)• Terminalblok12titik• Flexibleshaftcoupling8mmke5mm
Gambar2PillowBearing
MotorDCberputarsesuaidenganteganganyangdiberikanpadaterminalnya.Arahputaransesuaidenganpolaritastegangan.MotorDCmenggerakkanporosutama,yangjugamenggerakkanbebanpiringandansensorrotaryencoder.Kecepatandanposisirelativedaripiringandapatdiketahuidenganmenggunakansensorrotaryencoder.
1.3.1 Perhatian• KitmotorDCinidapatbergerakdengankecepatancukuptinggi,sehinggajikaterkenaalat-alat
atauanggotabadandapatmenyebabkankerusakanataucedera.• Pastikanteganganyangdiberikandaripowersupplykemotordibatasipada5voltsaja.Motor
inidapatmenerimategangansampai12volt,namunputarannyaakanterlalucepatdanmembahayakan.
• Janganmenyentuhkomponenyangbergerakketikamotorsedangberputar.• Bersikapseriusketikamengoperasikanmotor• SegeramematikanpowersupplyjikaterjadimasalahpadakitmotorDC.• Matikanpowersupplyketikamelakukanpenyambungankabel-kabel.
1.3.2 Persiapan• CekfisikkitmotorDC,apakahmekaniknyalengkap.• Cobaputarpiringanaluminiumdengantangan,pastikanhalberikutini:
o porosdapatberputar
5
o beltbergerako sensorrotaryencoderberputaro flexibleshaftberputaro motorberputaro tidakadamur/bautyanglonggar
1.4 PercobaanArduinoNanoATMega328P1.4.1 Tujuan
• MengujifungsionalitasArduinoNano• Mengujiinputanalogdaripotensiometeryangakandipakaisebagaitargetposisidankecepatan
1.4.2 Persiapan• PasangArduinoNanodibreadboard• SambungkanArduinoNanokePCdengankabelUSBmini• JalankanAplikasiArduinodiPC
1.4.3 Tugas• JalankancontohprogramBlinkdariArduino,untukmemastikanbahwaArduinoberfungsibaik.
ProgramBlinkdapatdiaksesdarimenu“File”->“Examples”->“01.Basics”->Blink• JalankancontohprogramDigitalReadSerialdariArduino,untukmemastukanbahwaPCdapat
menerimadataserialdariboardArduinonano.ProgramDigitalReadSerialdapatdiaksesdarimenu“File”->“Examples”->“01.Basics”->DigitalReadSerial
• Jalankancontohprogramuntukmembacainputanalogdaripotensiometer,danmenampilkanoutputnyakeportserial.PerhatikanbatasatasdanbawahdariADC,karenamungkintidakpenuhdari0sampai1023.
1.5 SensorRotaryEncoder1.5.1 Tujuan
• MengujiperilakusensorrotaryencoderuntukmotorDC• Membuatsistempengukurkecepatan• Membuatsistempengukurposisi
1.5.2 Teori
6
Gambar1RotaryencodertipeLPD3806-600BM
TabelKabelpadaRotaryEncoder
WarnaKabel NamaSinyalMerah 5voltsampai24voltDCHitam GNDHijau SinyalA(opencollector)Putih SinyalB(opencollector)Shield GND
Outputrotaryencoderberupapulsayangfrekuensinyasebandingdengankecepatanputaran.ArahputaranjugadapatdiketahuidariperbedaanfasaantarasinyalAdansinyalB.SinyalAdanBadalahopencollector,sehinggamemerlukanresistorpullup.Resistorpullupinidapatmenggunakanresistorbiasa,bisajugamenggunakanpull-upinternalpadamikrokontroler.
7
Gambar3Keluaranrotaryencoderpadaputaransearahjarumjam
Gambar4Keluaranrotaryencoderpadaputaranberlawananjarumjam
1.5.3 Tugas PengujianRotaryEncoderManual
• SambungkanGNDpadarotaryencoder(kabelhitam)• Berikantegangan5VkeVCCpadarotaryencoder(kabelmerah)• BerikanpullupresistorpadaoutputAdanBdarirotaryencoder.• UkurteganganoutputrotaryencoderAdanB(kabelputihdanhijau)denganmenggunakan
osiloskop• Putarsedikitporosmotordengantangan.Jikasensorberfungsibaik,seharusnyaadasinyalpada
outputAdanBpadarotaryencoder.Perhatikanperbedaanfasajikaarahputarandibalik.
Pertanyaan
8
• Bandingkanfasaoutputrotaryencoderantaradatasheetdenganyangdiukur• Catattegangankeluaranrotaryencoder
PengujianmotorDC+rotaryencoder• Pengujianinilanjutandaripengujianrotaryencoer• Berikantegangan5voltDCpadamotor,seharusnyamotorakanberputar• Amatiteganganoutputrotaryencoder,seharusnyasinyalAdanBadabedafasa90derajat• GantipolaritasteganganpadamotorDC,seharusnyaperbedaanfasayangmunculpadaoutput
rotaryencoder(AdanB)akankebalikanfasadarisebelumnya.
Pertanyaan
• Bandingkanfasaoutputrotaryencoderantaradatasheetdenganyangdiukur• Catattegangankeluaranrotaryencoder• Ukur/hitungkecepatanmotormaksimumberdasarkanfrekuensisinyalyangterlihatpada
osiloskop,untukmasing-masingarah,denganteganganpadamotordibatasi5volt.
SoftwarePengukurPosisi
Berikutinifotokonfigurasiuntukpengukuranposisidankecepatanmenggunakanrotaryencoder.
9
Gambar5Contohkonfigurasipercobaanmotordanrotaryencoder
Padapercobaaniniakandijalankansoftwareyangmengukurposisisudut.Posisiawalketikaresetdiasumsikanadalah0.Outputposisiditampilkanpadaportserialdengankecepatan9600bps.
Tabel1Listingprogrampengukurposisi
/*MengukurposisirelatifrotaryencoderdenganINT0danINT1*/intstate=0;longintposisi=0;voidISR_INT0(){intpinA,pinB;pinA=digitalRead(2);pinB=digitalRead(3);if(pinA==LOW&&pinB==LOW){posisi--;//CCW}if(pinA==LOW&&pinB==HIGH){
10
posisi++;}if(pinA==HIGH&&pinB==LOW){posisi++;//CCW}if(pinA==HIGH&&pinB==HIGH){posisi--;//CCW}}voidISR_INT1(){intpinA,pinB;pinA=digitalRead(2);pinB=digitalRead(3);if(pinA==LOW&&pinB==LOW){posisi++;//CCW}if(pinA==LOW&&pinB==HIGH){posisi--;}if(pinA==HIGH&&pinB==LOW){posisi--;//CCW}if(pinA==HIGH&&pinB==HIGH){posisi++;//CCW}}voidsetup(){//initializeserialcommunicationsat9600bps:Serial.begin(9600);pinMode(LED_BUILTIN,OUTPUT);//untukindikatorpinMode(2,INPUT_PULLUP);pinMode(3,INPUT_PULLUP);attachInterrupt(digitalPinToInterrupt(2),ISR_INT0,CHANGE);attachInterrupt(digitalPinToInterrupt(3),ISR_INT1,CHANGE);}voidloop(){if(state==0){state=1;digitalWrite(LED_BUILTIN,HIGH);//turntheLEDon(HIGHisthevoltagelevel)}else{state=0;digitalWrite(LED_BUILTIN,LOW);//turntheLEDon(HIGHisthevoltagelevel)}Serial.print("posisi");
11
Serial.print(posisi);Serial.println("");delay(1000);}
Pertanyaan:
• Amatiberapaperubahanposisiyangdicatatjikasistemdiputar360derajat• SoftwareinimenggunakanpinINT0danINT1.BagaimanacaramenghubungkanINT0danINT1
supayaangkahasilpengukuranposisisesuai(positif/negatifnya).• Modifikasisoftwareinisupayadapatdijalankanmenggunakan“InterupsiPinChange”,supaya
dapatdipakaidipinselainINT0danINT1• ModifikasisoftwareinisupayadapatdijalankanpadaCodeVisionAVR
SoftwarePengukurKecepatanBuatlahsoftwareyangmengukurkecepatansudut.Outputkecepatanditampilkanpadaportserial.
Tips:
• Pengukurankecepatandilakukandengancaramembagiposisidenganwaktu.Teknisnyadapatdilakukandenganmenggunakaninterupsitimeruntukmembangkitkansamplingdenganfrekuensitertentu,danmeresetcounterposisisetiapterjadiinterupsitimer.Angkaposisiyangtercatatketikaterjadiinterupsimewakilikecepatansudut.
• InterupsiTimer1diArduinodapatmenggunakanlibraryTimer1(http://playground.arduino.cc/code/timer1)
• InterupsiTimer1diCodeVisionAVRdapatdiaktifkandenganmenggunakanCodeWizardataupuncaramanual(membacaregisterdaridatasheetATMega328)
Pertanyaan:
• BuatlahsoftwareyangmenampilkankecepatansudutsistemberbasissoftwareArduino• BuatlahsoftwareyangmenampilkankecepatansudutsistemberbasissoftwareCodeVisionAVR
1.6 MotorDriverH-BridgeTB6612FNG1.6.1 Tujuan
• MengujiperilakumotordriverTB6612FNGdenganbebanresistor• MengujioutputPWM• Menghitungdisipasienergypadamotordriver
1.6.2 Teori
12
Gambar2TampakatasmotordriverTB6612FNG
Gambar6TampakbawahmotordriverTB6612FNG
Tabel2TabelKebenaranmotordriver
13
1.6.3 PersiapanBuatlahbebanresistoryangdapatmenerimaarus1amperepadategangan5volt.Perhatikanbatasdisipasiresistor.
Buatlahrangkaianmotordriversebagaiberikut:
Gambar7Rangkaianpercobaanmotordriver
Perhatikanbahwapowersupplyuntukmikrokontrolerdibedakandenganpowersupplyuntukmotor-driver.
1.6.4 Tugas• BuatlahsoftwarepadaArduinoNanountukmenghasilkansinyalPWMdarimotordriverdengan
berbagaidutycycle(0%,25%,50%,100%)danpolaritaspositifdannegative.Jaditotalada7pengukuran.
• Ukurlahteganganpowersupplymotordanteganganyangmunculpadaresistorbeban.Hitunglahdisipasienergypadamotordriver,danefisiensimotordriverini.BandingkandenganteoriefisiensitransistorMOSFETsebagaisakelar.
• Ukurlahteganganpowersupplymotor,cekapakahterjadifluktuasiteganganberkaitandenganteganganpadabebanresistor.
14
1.7 KendaliKecepatanOpenLoopPadapercobaaninimotordriverdilakukanpengamatanresponmotorterhadapsinyalPWMdenganberbagaidutycycledanpolaritas.
1.7.1 Tujuan• MerekamoutputkecepatanterhadapberbagaiinputPWM
1.7.2 PersiapanBuatlahrangkaiansebagaiberikut
1.7.3 TugasBuatlahrangkaian&programuntukmengirimkansinyalPWMkemotordriverdanmencatatkecepatanmotorsecaraperiodik.
• Amatiuntuktegangan-100%,-75%,-50%,-25%,0,25%,50%,75%,100%• Buatgrafiktransienkecepatanterhadapwaktu.• Apakahperilakusistemorde1,atauorde2ataulebihlagi?Berapakanbandwidthsistem
tersebut?• BuatgrafikkorelasidutycyclePWMdengankecepatansteadystatemotor.• UkurjugaberapadeadbanddengancaramencarinilaiPWMyangtidakdapatmembuatmotor
berputar.
1.8 KendaliKecepatanMotorDCDenganPID1.8.1 TujuanMengendalikankecepatanmotorDCdenganpengendalidigitalberbasisPID
1.8.2 PersiapanBuatlahrangkaiansebagaiberikut.PCdigunakanuntukmemonitorresponsistem.
15
Gambar8Rangkaiansistemkendalimotor
1.8.3 TugasBuatlahpengendalitipePID(ProporsionalIntegralDerivatif)untukmengendalikankecepatanmotor.
• Frekuensisampling1kHz,ataudisesuaikandenganbandwidthdarisistemmotorDCtersebut.• Inputkecepatandiberikanmelaluipotensiometer• DatayangdikirimkePCadalahkecepatantargetdankecepatanyangdicapai.• Pewaktuanmenggunakaninterupsitimer
Gambar9Blokdiagramsistemkendalikecepatan
Halyangdilaporkan:
• Rangkaianpercobaan• Softwarepercobaan• Outputresponterhadapinputstep.Inputstepdapatdibuatdenganmenambahkantombolatau
sinyalinputdariportserial.
1.9 KendaliPosisiMotorDCDenganPIDPadapercobaaninidibuatpengendaliposisimotorDCdenganpengendaliPID.
16
1.9.1 Tujuan• MengendalikanposisimotorDCdenganpengendalidigitalberbasisPID
1.9.2 PersiapanRangkaiansamadengansistemkendalikecepatan.
Berikutdiagrambloksistemkendaliposisi.
Gambar10Blokdiagramsistemkendaliposisi
Berikutinicontohprogramkendaliposisisederhana.Programinimasihmemilikikelemahansebagaiberikut:
• Menggunakandelay()untukpewaktuan,sehinggafrekuensisamplingtidaktepat.Perludiubahmenggunakaninterupsitimer.
• Terdapatserialoutputpadaloopyangdapatmempengaruhifrekuensisampling.
Tabel3Listingprogramkendaliposisi
/*Kendaliposisisederhana*/constintIN2=10;//pinuntukkendaliarahmotorconstintIN1=11;constintPWM=9;//pinuntukPWMconstintanalogInPin=A0;longintsensorValue=0;//valuereadfromthepotintoutputValue=0;//valueoutputtothePWM(analogout)intstate=0;longintposisi=0;longintkecepatan=0;intpinA;intpinB;voidISR_INT0(){
17
pinA=digitalRead(2);pinB=digitalRead(3);if(pinA==LOW&&pinB==LOW){posisi--;//CCWkecepatan--;}if(pinA==LOW&&pinB==HIGH){posisi++;kecepatan++;}if(pinA==HIGH&&pinB==LOW){posisi++;//CCWkecepatan++;}if(pinA==HIGH&&pinB==HIGH){posisi--;//CCWkecepatan--;}}voidISR_INT1(){pinA=digitalRead(2);pinB=digitalRead(3);if(pinA==LOW&&pinB==LOW){posisi++;//CCWkecepatan++;}if(pinA==LOW&&pinB==HIGH){posisi--;kecepatan--;}if(pinA==HIGH&&pinB==LOW){posisi--;//CCWkecepatan--;}if(pinA==HIGH&&pinB==HIGH){posisi++;//CCWkecepatan++;}}voidmotor_power(intpower){intpwm_value;pwm_value=abs(power);if(pwm_value<0)pwm_value=0;if(pwm_value>255)
18
pwm_value=255;if(power>0){digitalWrite(IN1,LOW);//turnoffdigitalWrite(IN2,HIGH);//turnoffanalogWrite(PWM,pwm_value);}elseif(power<0){digitalWrite(IN1,HIGH);//turnoffdigitalWrite(IN2,LOW);//turnoffanalogWrite(PWM,pwm_value);}else{digitalWrite(IN1,LOW);//turnoffdigitalWrite(IN2,LOW);//turnoff}}voidsetup(){//initializeserialcommunicationsat9600bps:Serial.begin(9600);pinMode(LED_BUILTIN,OUTPUT);attachInterrupt(digitalPinToInterrupt(2),ISR_INT0,CHANGE);attachInterrupt(digitalPinToInterrupt(3),ISR_INT1,CHANGE);pinMode(IN1,OUTPUT);pinMode(IN2,OUTPUT);pinMode(PWM,OUTPUT);}voidloop(){staticfloaterror_integral=0;inttarget;floatcontrol;floaterror;//printtheresultstotheSerialMonitor:sensorValue=0;//posisi=0;//wait2millisecondsbeforethenextloopfortheanalog-to-digital//convertertosettleafterthelastreading:if(state==0){state=1;digitalWrite(LED_BUILTIN,HIGH);//turntheLEDon(HIGHisthevoltagelevel)}else{state=0;digitalWrite(LED_BUILTIN,LOW);//turntheLEDon(HIGHisthevoltagelevel)}sensorValue=analogRead(analogInPin);target=sensorValue*2;error=target-posisi;
19
error_integral=error_integral+error;control=error*0.15+error_integral*0.001;motor_power(control);Serial.print(target);Serial.print("");Serial.print(kecepatan);Serial.print("");Serial.print(posisi);Serial.print("");Serial.print(control);Serial.println("");kecepatan=0;delay(10);}
1.9.3 TugasBuatlahpengendalitipePID(ProporsionalIntegralDerivatif)untukmengendalikanposisimotor.
• Frekuensisampling1kHz,ataudisesuaikandenganbandwidthdarisistemmotorDC• InputposisidiberikanmelaluiportserialdariPC• DatayangdikirimkePCadalahposisitargetdanposisiyangdicapai.• Pewaktuanmenggunakaninterupsitimer
Halyangdilaporkan:
• Rangkaianpercobaan• Softwarepercobaan• Outputresponterhadapinputstep.Inputstepdapatdibuatdenganmenambahkantombolatau
sinyalinputdariportserial.
1.10 TugasPendahuluanTugaspendahuluanadalahmenyiapkansemuaprogramyangakandijalankan.
• Modifikasisoftwarepengukurposisisupayadapatdijalankanmenggunakan“InterupsiPinChange”,supayadapatdipakaidipinselainINT0danINT1
• ModifikasisoftwarepengukurposisisupayadapatdijalankanpadaCodeVisionAVR• SoftwareyangmenampilkankecepatansudutsistemberbasissoftwareArduino• SoftwareyangmenampilkankecepatansudutsistemberbasissoftwareCodeVisionAVR• KendaliOpenLoop:programuntukmengirimkansinyalPWMkemotordriverdanmencatat
kecepatanmotorsecaraperiodik.• KendaliKecepatan:programkendalikecepatanberbasisPID• KendaliPosisi:programkendaliposisiberbasisPID
20
1.11 Referensi• ArduinoNano(ATMega328)https://store.arduino.cc/usa/arduino-nano• RotaryEncoderTeardownhttps://wemakethings.net/2014/05/26/rotary-encoder-teardown/• DatasheetRotaryEncoder(bahasaJepang)https://uamper.com/products/datasheet/LPD3806-
360BM.pdf• ReadingRotaryEncoderhttps://playground.arduino.cc/Main/RotaryEncoders• DatasheetTB6612FNGhttps://toshiba.semicon-
storage.com/us/product/linear/motordriver/detail.TB6612FNG.html• TB6612FNGHookupGuidehttps://learn.sparkfun.com/tutorials/tb6612fng-hookup-guide• CodeVisionAVRhttp://www.hpinfotech.ro/cvavr-features.html.•