MODUL 2 - μp dan μc



1. Tujuan Percobaan [Kembali]

a) Memahami prinsip kerja PWM pada mikrokontroler

b) Memahami prinsip kerja ADC pada mikrokontroler

c) Menggunakan PWM dan ADC pada Arduino


2. Alat dan Bahan [Kembali]

a) Modul Arduino

b) Motor DC

c) LM35


3. Dasar Teori [Kembali]

2.4.1 Pulse Width Modulation

PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi.

Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).

Gambar 12. Duty Cycle

Duty Cycle = tON / ttotal

tON = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (highatau 1)

tOFF = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah(low atau 0)

ttotal = Waktu satu siklus atau penjumlahan antara tON dengan tOFF atau disebut jugadengan “periode satu gelombang”

     Pada board Arduino Uno, pin yang bisa dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite();

    PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.

Gambar 13. Siklus Sinyal PWM pada Arduino

2.4.1 Analog to Digital Converter

ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi.

Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0-1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Pada Arduino, menggunakan pin analog input yang diawali dengan kode A(A0-A5 pada Arduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);

 2.4.2 Arduino

Arduino adalah kit elektronik atau papan rangkaian elektronik open-source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.

Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :

Gambar 14 Arduino Uno

Microcontroller ATmega328P

Operating Voltage 5 V

Input Voltage (recommended) 7 – 12 V

Input Voltage (limit) 6 – 20 V

Digital I/O Pins 14 (of which 6 provide PWM output)

PWM Digital I/O Pins 6

Analog Input Pins 6

DC Current per I/O Pin 20 mA

DC Current for 3.3V Pin 50 mA

Flash Memory 32 KB of which 0.5 KB used by bootloader

SRAM 2 KB

EEPROM 1 KB

Clock Speed 16 MHz

A. BAGIAN-BAGIAN ARDUINO UNO

1. POWER USB

Digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.

2. POWER JACK

Supply atau sumber listrik untuk Arduino dengan tipe Jack. Input DC 5 - 12 V.

3. Crystal Oscillator

Kristal ini digunakan sebagai layaknya detak jantung pada Arduino. Jumlah cetak menunjukkan 16000 atau 16000 kHz, atau 16 MHz.

4. Reset

Digunakan untuk mengulang program Arduino dari awal atau Reset.

5. Digital Pins I / O

Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan nilai logika ( 0 atau 1 ). Pin berlabel " ~ " adalah pin-pin PWM ( Pulse Width Modulation ) yang dapat digunakan untuk menghasilkan PWM.

6. Analog Pins

Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk membaca sinyal atau sensor analog seperti sensor jarak, suhu dsb, dan mengubahnya menjadi nilai digital.

7. LED Power Indicator

Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik denganbaik.

 

B. BAGIAN-BAGIAN PENDUKUNG

1. RAM

RAM (Random Access Memory) adalah tempat penyimpanan sementara pada komputer yang isinya dapat diakses dalam waktu yang tetap, tidak memperdulikan letak data tersebut dalam memori atau acak. Secara umum ada 2 jenis RAM yaitu SRAM (Static Random Acces Memory) dan DRAM (Dynamic Random Acces Memory).

2. ROM

ROM (Read-only   Memory)  adalah   perangkat   keras   pada computer   yang   dapat menyimpan data secara permanen tanpa harus memperhatikan adanya sumber listrik. ROM terdiri dariMask ROM, PROM, EPROM, EEPROM.


3. Rangkaian [Kembali]

1.     Percobaan 1 Menghidupkan Motor DC

a)      Pastikan semua supply dalam keadaan off

b)      Hubungkan jumper seperti gambar dibawah

c)      Buatlah listing program yang telah ada pada modul

d)      Hidupkan supply pada modul

e)      Upload program pada rangkaian

f)       Tekan tombol reset

g)      Amati percobaan. Jika tidak sesuai, perbaiki rangkaian atau program

h)      Jika sesuai, maka selesai dan demokan pada instruktur atau asisten yang mengawas

i)       Matikan supply pada modul

Gambar 17. Rangkaian percobaan motor dc

Listing Program

#define in1 10    //Deklarasi pin 10 sebagai input 1

#define in2 9      //Deklarasi pin 9 sebagai input 2

void setup() {     //Semua kode dalam fungsi ini di eksekusi sekali pinMode(in1, OUTPUT); //Deklarasi in1 sebagai OUTPUT pinMode(in2, OUTPUT); //Deklarasi in2 sebagai OUTPUT

}

void loop() { //Semua kode dalam fungsi ini dieksekusi berulang digitalWrite(in1, HIGH); //in1 diberi logika 1

digitalWrite(in2, LOW); //in2 diberi logika 0

delay(1000);                     //Jarak waktu 1000 ms setelah input dieksekusi

 

 

digitalWrite(in1, LOW); //in1 diberi logika 0 digitalWrite(in2, LOW); //in2 diberi logika 0

delay(1000);                    //Jarak waktu 1000 ms setelah input dieksekusi


 

 

digitalWrite(in1, LOW); //in1 diberi logika 0 digitalWrite(in2, HIGH); //in2 diberi logika 1

delay(1000);                     //Jarak waktu 1000 ms setelah input dieksekusi

 

 

digitalWrite(in1, LOW); //in1 diberi logika 0 digitalWrite(in2, LOW); //in1 diberi logika 0

delay(1000);                    //Jarak waktu 1000 ms setelah input dieksekusi

}


Percobaan 2 Menampilkan LM35 ke LCD

a)      Pastikan semua supply dalam keadaan off

b)      Hubungkan jumper seperti gambar dibawah

c)      Buatlah listing program yang telah ada pada modul

d)      Hidupkan supply pada modul

e)      Upload program pada rangkaian

f)       Tekan tombol reset

g)      Amati percobaan. Jika tidak sesuai, perbaiki rangkaian atau program

h)      Jika sesuai, maka selesai dan demokan pada instruktur atau asisten yang mengawas

i)       Matikan supply pada modul 

Gambar 21. Rangkaian percobaan lm35 dan lcd

Listing Program

#include <LiquidCrystal.h>      //Deklarasi library LCD #define LM35 A0                                  //Deklarasi pin A0 untuk LM35 LiquidCrystal lcd(2,3,4,5,6,7); //Deklarasi pin 2-7 untuk LCD

int nilaiSuhu;                              //Deklarasi variabel nilaiSuhu

void setup()

{

pinMode(A0, INPUT); lcd.begin(16,2);

}

void loop()

{

nilaiSuhu=((5*analogRead(LM35)*100.00)/1024); //Mencari nilai Suhu

lcd.clear();

lcd.setCursor(0,0);

lcd.print("LM35 Sensor Suhu"); //Menampilkan text pada LCD lcd.setCursor(0,1);                        //Menentukan posisi kursor pada awal penulisan lcd.print(nilaiSuhu);               //Menampilkan nilaiSuhu pada LCD delay(100);  //Waktu delay 100 ms setelah dieksekusi

} 

 Percobaan 3 Mengatur Kecepatan Putar Motor DC

1)    Listing Program

byte pot= A0; //Deklarasi pin A0 untuk potensiometer

byte motor= 9; //Deklarasi pin 9 untuk motor

 

 

int nilai; //Deklarasi variabel nilai

int output; //Deklarasi variabel output

 

 

void setup(){ //Semua kode dalam fungsi ini dieksekusi sekali pinMode(motor, OUTPUT); //Deklarasi motor sebagai OUTPUT Serial.begin(9600);     //Set baud rate 9600

}

void loop(){ //Semua kode dalam fungsi ini dieksekusi berulang

nilai= analogRead(pot); //Membaca nilai potensiometer output= map(nilai, 0, 1023, 0, 255);

 

analogWrite(motor, output);

 

 

Serial.print("potensiometer: "); Serial.print(nilai); Serial.print(" "); Serial.print("output: "); Serial.print(output);

delay(2);

}


Electricity LightningElectricity Lightning