PRAKTIKUM MIKROKONTROLER

Bahan presentasi untuk matakuliah Praktikum Mikroprosesor dan Mikroprosesor 2016, Koordinator praktikum : Darwison, MT, referensi:


1. Darwison, 2010, ”Teknik Interface (antarmuka): Perancangan hardware dan simulasi software serta aplikasinya ”, ISBN: 978-602-9081-10-7, CV Ferila, Padang
2. Darwison, 2007 “ Teori, Rancangan ,Simulasi Dan Aplikasi Mikroprosesor Dan Mikrokontroller” ISBN: 978-602-9487-09-1”, CV Ferila, Padang.
3. Mikrokontroller,Andrianto, Heri. 2015. "Pemrograman Mikrokontroler AVR
ATMega128 Bahasa C (CodeVisionAVR)". Informatika Bandung: Bandung.

Rabu, 23 November 2016

Modul 2







2.1 Tujuan [Kembali]

a.Mempelajari aplikasi output pada mikrokontroller Arduino
b.Mempelajari aplikasi input pada mikrokontroller Arduino 
c.Mempelajari aplikasi I/O pada mikrokontroller Arduino 



2.2 Alat dan Bahan [Kembali]

  • Module Arduino 
  • LCD 
  • Motor servo 
  • Jumper 
  • Motor DC 
  • 7 Segment 
  • LM35

2.3 Dasar Teori [Kembali]

    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 pada prkatikum ini adalah arduino mega yang menggunakan chip AVR ATmega 2560 yang memiliki fasilitas PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C. Sehingga Arduino bisa digabungkan bersama modul atau alat lain dengan protocol yang berbeda-beda. Bahasa pemograman yang digunakan adalah bahasa C. Tetapi bahasa ini sudah dipermudah menggunakan fungsi-fungsi yang sederhana sehingga lebih mudah dalam memprogramnya. Dalam memprogram arduino, kita bisa menggunakan serial komunikasi agar arduino dapat berhubungan dengan komputer ataupun aplikasi lain. 
Beberapa fitur dari Arduino Mega 2560 ini adalah :



  • Microcontroller                              :ATmega2560

  • Operating Voltage                          :5V

  • Input Voltage (recommended)      :7-12V

  • Input Voltage (limits)                      :6-20V

  • Digital I/O Pins                                :54 (of which 15 provide PWM output)

  • Analog Input Pins                          :16

  • DC Current per I/O Pin                   :20 mA

  • DC Current for 3.3V Pin                  :50 mA

  • Flash Memory                                  :256 KB of which 8 KB used by bootloader

  • SRAM                                               :8 KB

  • EEPROM                                           :4 KB

  • Clock Speed                                      :16 MHz

I.    BAGIAN-BAGIAN DARI ARDUINO MEGA 2560

Soket USB
 

     Soket USB adalah soket untuk kabel USB yang disambungkan ke komputer atau laptop.

Berfungsi untuk mengirimkan program ke Arduino dan juga sebagai port komunikasi serial.

Input / Output Digital
 

     Input/Output Digital atau digital pin adalah pin-pin untuk menghubungkan Arduino dengan

komponen  atau  rangkaian  digital.  Pada  Arduino  Mega  terdapat  53  I/O  Digital  dimana  16

diantaranya dapat dijadikan sebagai output PWM

  

Input Analog
 

    Input Analog atau analog pin adalah pin-pin yang berfungsi untuk menerima sinyal dari komponen atau rangkaian analog. Misalnya dari potensiometer, sensor suhu, sensor cahaya, dsb.

Terdapat 16 input analog pada arduino mega 2560.



Pin POWER
 

     Pin-pin catu daya adalah pin yang memberikan tegangan untuk komponen atau rangkaian yang dihubungkan dengan Arduino. Pada bagian catu daya ini terdapat juga pin Vin dan Reset.Vin digunakan untuk memberikan tegangan langsung kepada Arduino tanpa melalui tegangan USB atau adaptor.



Tombol RESET

     Reset adalah pin untuk memberikan sinyal reset melaui tombol atau rangkaian eksternal.



Jack Baterai/Adaptor
 
     Soket baterai  atau adaptor digunakan untuk menyuplai Arduino dengan tegangan  dari  baterai/adaptor 9V pada saat Arduino sedang tidak disambungkan ke komputer. Kalau Arduino sedang disambungkan ke komputer melalui USB, Arduino mendapatkan suplai tegangan dari USB, jadi tidak perlu memasang baterai/adaptor saat memprogram Arduino.


 
 

Senin, 21 November 2016

Modul 1






1.1 Tujuan [Kembali]
 

a. Mempelajari aplikasi output pada mikrokontroller ATMEGA 128 
b. Mempelajari aplikasi input pada mikrokontroller ATMEGA 128 
c. Mempelajari aplikasi I/O pada mikrokontroller ATMEGA 128


1.2 Alat dan Bahan [Kembali] 

a. Module AT MEGA 128 
b. LED 
c. Seven Segment 
d. Jumper 
e. LCD
f. Motor Stepper


1.3 Dasar Teori [Kembali]


Mikrokontroller ATMEGA 128 merupakan mikrokontroller keluarga AVR yang mempunyai kapasitas flash memori 128KB. AVR (Alf and Vegard’s Risc Processor) merupakan seri mikrokontroler CMOS 8-bit buatan ATEMEL inc, berdasarkan arsitektur RISC (Reduced Instruction Set Computer). Secara umum, AVR dapat terbagi menjadi 4 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga AT-Mega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, bisa dikatakan hampir sama. Semua jenis AVR dilengkapi dengan flash memori sebagai memori program. Kapasitas dari flash memori ini berbeda antara chip yang satu dengan chip yang lain. Tergantung dari jenis IC yang digunakan. Untuk flash memori yang paling kecil adalah 1 kbytes (ATtiny11, ATtiny12, dan ATtiny15) dan paling besar adalah 128 kbytes (AT-Mega128). Berikut ini adalah spesifikasi Mikrokontroler AVR ATMega-128 dan konfigurasi pin ATMEGA 128. 

1. Saluran I/O sebanyak 56 buah, yaitu Port A, Port B, Port C, Port D, Port E, Port F dan Port G.
2. ADC 10 bit sebanyak 8 saluran.
3. 2 buah Timer/Counter 8 bit dan 2 buah Timer/Counter 16 bit.
4. Dua buah PWM 8 bit.
5. Watchdog Timer dengan osilator internal.
6. Internal SRAM sebesar 4 kbyte.
7. Memori flash sebesar 128 kBytes.
8. Interupsi Eksternal.
9. Port antarmuka SPI.
10. EEPROM sebesar 4 kbyte.
11. Real time counter.
12. 2 buah Port USART untuk komunikasi serial.
13. Enam kanal PWM.
14. Tegangan operasi sekitar 4,5 V sampai dengan 5,5V


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU-HGwQpNB1GzVYuV7Ycj3M2wbpeyAilo2-s64VAwgFGirHRPmHvGlb61OxJNJQmyLO5EcCVjdxI47fVxkz2G4DnZjjdYWzVnuQLif83cuOK6jCFR8PerH9aJG_3l3ynstccYhfhFbVXI/s1600/atmega.jpg
Konfigurasi pinATMEGA-128



Minggu, 20 November 2016

Modul 2 seven segment (Kondisi)

6.Kondisi [Kembali]

  • Menampilkan karakter "E" berkedip dengan delay 100ms ketika angka genap pada  keypad ditekan

Sabtu, 19 November 2016

Modul 2 seven segment (Listing Program)

4.Listing Program [Kembali]


 #include <Keypad.h>    //memasukan pustaka keypad
                          
char tombol[4][3] =     //menyatakan tombol di keypad adalah kolom 3 dan baris 4
{            //pembuka tata letak keypad
  {'1', '2', '3'},      //deklarasi posisi tombol keypad
  {'4', '5', '6'},      //deklarasi posisi tombol keypad
  {'7', '8', '9'},    //deklarasi posisi tombol keypad
  {'*', '0', '#'}       //deklarasi posisi tombol keypad
};            //penutup tata letak keypad

byte pin[] = {2, 3, 4, 5, 6, 7, 8, 9};    //deklarasi pin arduino pada   seven segment dengan tipe data byte
byte pinBaris[] = {17, 18, 19, 20};    //deklarasi pin arduino yang dihubungkan ke baris pada keypad
byte pinKolom[] = {14, 15, 16};        //deklarasi pin arduino yang dihubungkan ke kolom pada keypad

Keypad keypad = Keypad(makeKeymap(tombol), //digunakan untuk menciptakan objek keypad
                pinBaris, pinKolom, 4, 3); //objek keypad yaitu empat kali tiga


void setup()  //fungsi utama
{
  pinMode(10,OUTPUT);     //pin 10 arduino digunakan sebagai output
  digitalWrite(10,LOW);   //pin 10 pada arduino digunakan pada keaadan low
 
}

void loop()  //fungsi perulangan pada program
{
   char kode = keypad.getKey(); //fungsi membaca tombol apa pada keypad yang ditekan
  if (kode == NO_KEY) //keadaan jika tombol tidak ditekan
    return;          // perintah return dieksekusi

  else if(kode == '0' || kode == '2' || kode == '4' || kode == '6' || kode == '8')  //kondisi dimana tombol angka genap di tekan
  { for (int a=0; a<=5; a++){  //fungsi perulangan jika memenuhi syarat maka akan terus berulang
    digitalWrite(2,HIGH);      //pin 2 seven segment hidup
    digitalWrite(3,LOW);       //pin 3 seven segment mati
    digitalWrite(4,LOW);       //pin 4 seven segment mati
    digitalWrite(5,HIGH);      //pin 5 seven segment hidup
    digitalWrite(6,HIGH);      //pin 6 seven segment hidup
    digitalWrite(7,HIGH);      //pin 7 seven segment hidup
    digitalWrite(8,HIGH);      //pin 8 seven segment hidup
    digitalWrite(9,LOW);       //pin 9 seven segment mati
    delay (100);            //delay selama 100ms
    digitalWrite(2,LOW);       //pin 2 seven segment mati
    digitalWrite(3,LOW);       //pin 3 seven segment mati
    digitalWrite(4,LOW);       //pin 4 seven segment mati
    digitalWrite(5,LOW);       //pin 5 seven segment mati
    digitalWrite(6,LOW);       //pin 6 seven segment mati
    digitalWrite(7,LOW);       //pin 7 seven segment mati
    digitalWrite(8,LOW);       //pin 8 seven segment mati
    digitalWrite(9,LOW);       //pin 9 seven segment mati
    delay (100);            //delay selama 100ms
    ;
  }
}




else if(kode == '1')      //kondisi dimana angka satu ditekan
   {digitalWrite(2,LOW);  //pin 2 seven segment mati
    digitalWrite(3,HIGH); //pin 3 seven segment hidup
    digitalWrite(4,HIGH); //pin 4 seven segment hidup
    digitalWrite(5,LOW);  //pin 5 seven segment mati
    digitalWrite(6,LOW);  //pin 6 seven segment mati
    digitalWrite(7,LOW);  //pin 7 seven segment mati
    digitalWrite(8,LOW);  //pin 8 seven segment mati
    digitalWrite(9,LOW);  //pin 9 seven segment mati
  }
  else if(kode == '3')    //kondisi dimana angka tiga ditekan
  { digitalWrite(2,HIGH); //pin 2 seven segment hidup
    digitalWrite(3,HIGH); //pin 3 seven segment hidup
    digitalWrite(4,HIGH); //pin 4 seven segment hidup
    digitalWrite(5,HIGH); //pin 5 seven segment hidup
    digitalWrite(6,LOW);  //pin 6 seven segment mati
    digitalWrite(7,LOW);  //pin 7 seven segment mati
    digitalWrite(8,HIGH); //pin 8 seven segment hidup
    digitalWrite(9,LOW);  //pin 9 seven segment mati
  }
   else if(kode == '5')   //kondisi dimana angka lima ditekan
  { digitalWrite(2,HIGH); //pin 2 seven segment hidup
    digitalWrite(3,LOW);  //pin 3 seven segment mati
    digitalWrite(4,HIGH); //pin 4 seven segment hidup
    digitalWrite(5,HIGH); //pin 5 seven segment hidup
    digitalWrite(6,LOW);  //pin 6 seven segment mati
    digitalWrite(7,HIGH); //pin 7 seven segment hidup
    digitalWrite(8,HIGH); //pin 8 seven segment hidup
    digitalWrite(9,LOW);  //pin 9 seven segment mati
  }
  else if(kode == '7')    //kondisi dimana angka tujuh ditekan
  { digitalWrite(2,HIGH); //pin 2 seven segment hidup
    digitalWrite(3,HIGH); //pin 3 seven segment hidup
    digitalWrite(4,HIGH); //pin 4 seven segment hidup
    digitalWrite(5,LOW);  //pin 5 seven segment mati
    digitalWrite(6,LOW);  //pin 6 seven segment mati
    digitalWrite(7,LOW);  //pin 7 seven segment mati
    digitalWrite(8,LOW);  //pin 8 seven segment mati
    digitalWrite(9,LOW);  //pin 9 seven segment mati
  }
   else if(kode == '9')   //kondisi dimana angka sembilan ditekan
  { digitalWrite(2,HIGH); //pin 2 segment segment hidup
    digitalWrite(3,HIGH); //pin 3 segment segment hidup
    digitalWrite(4,HIGH); //pin 4 segment segment hidup
    digitalWrite(5,HIGH); //pin 5 segment segment hidup
    digitalWrite(6,LOW);  //pin 6 segment segment mati
    digitalWrite(7,HIGH); //pin 7 segment segment hidup
    digitalWrite(8,HIGH); //pin 8 segment segment hidup
    digitalWrite(9,LOW);  //pin 9 segment segment mati

}
}

Rabu, 16 November 2016

Modul 2 seven segment (Rangkaian Simulasi)

2.Rangkaian Simulasi [Kembali]




Prinsip Kerja: 

Pada percobaan yang telah dilakukan pada modul 2 kondisi 7, yaitu percobaan pada 7 segment, jika angka genap ditekan pada keypad maka akan menampilkan karakter E pada 7 segment ,dimana percobaan ini memerlukan beberapa komponen yaitu :
  • Arduino 2560 yang berfungsi sebagai otak dari rangkaian ini 
  • Seven segment yang berfungsi sebagai keluaran 
  • keypad yang berfungsi sebagai masukan
Pada rangkaian, seven segment dihubungkan pada arduino sebagai output dan keypad  sebagai input. Dimana apabila angka genap ditekan pada keypad  maka akan menampilkan karakter 'E' berkedip dengan delay 100ms pada seven segment .

Prinsip Kerja: Pada percobaan kali ini, yaitu menampilkan teks dari kiri ke kanan pada lcd. Dimana membutuhkan beberapa komponen, yaitu Mikroprosesor ATMega 128 yang berfungsi sebagai otak dari rangkaian ini, LCD berfungsi sebagai keluaran berupa karakter, serta Switch yang berfungsi sebagai masukan/input. Serta juga menambahkan kristal sebagai 'Clock' atau sering disebut juga sebagai pendetak bagi Mikroprosesor ATMega 128. Pada rangkaian, LCD dihubungkan pada PORT A dan SWITCH pada PORT B. Dimana apabila salah satu Switch ditekan dan bernilai 1, maka pada LCD akan menampilkan 'Nama : Setiawan MH'

Today Deal $50 Off : https://goo.gl/efW8Ef

Modul 2 sevent segment (Hardware)

1.Hardware [Kembali]





a. Mikrokontroler Arduino 2560



b.Seven segment


c. Keypad




Sabtu, 12 November 2016

Percobaan pada seven segment Jika angka genap di tekan maka akan menampilkan huruf E berkedip dengan delay 100ms









1. Pastikan semua supply dalam keadaan off
2. Hubungkan jumper seperti gambar dibawah
3. Buatlah listing program yang telah ada pada modul.
4. Hidupkan supply pada modul
5. Upload program pada rangkaian
6. Tekan tombol Reset
7. Amati percobaan, jika tidak sesuai perbaiki rangkaian atau program
8. Jika sesuai, maka selesai dan demokan pada instruktur atau asisten yang mengawas
9. Matikan supply pada modul




1.Hardware [Kembali]



a. Mikrokontroler Arduino 2560



b.Seven segment


Seven Segment adalah salah satu perangkatlayar untuk menampilkan sistem angka 
desimal yang merupakan alternatif dari layar dot-matrix. Seven Segment memiliki
7 Segmen dimana setiap segmen dikendalikan secara On dan Off untuk mennampilkan
angka yang di inginkan. Angka-angka dari 0 sampai 9 dapat ditampilkan dengan
menggunakan beberapa kombinasi segmen. Seven Segment juga dapat menampilkan Huruf
Hexadecimal dari A sampai F.

c. Keypad






Kepad merupakan komponen elektronik yang digunakan sebagai 
masukan, disusun dari beberapa tombol/switch dengan teknik matrix.
Pada praktikum kali ini, saya menggunakan Keypad 3x4 dimana terdiri
atas 3 Kolom dan 4 Baris. Dimana Keypad disini berfungsi sebagai
input/masukan pada praktikum saya kali ini. Proses scaning untuk 
membaca penekanan tombol pada matrix keypad dilakukan secara 
bertahap kolom demi kolom dari pertama sampai kolom ke 3 dan
baris ke 4. Misal di asumsikan keypad aktif LOW dan dihubungkan 
ke port mikrokontroller dengan jalur kolom adalah jalur input dan 
jalur baris adalah jalur output maka proses scanning matrix dapat
dituliskan sebagai berikut : 

a. Mengirimkan logika Low untuk kolom 1 dan logika high untuk
kolom yang lain kemudian membaca data baris.Misal tombol SW1
ditekan maka data baris pertama akan Low sehingga data baris yang
dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data
baris ke 2 Low sehingga data yang terbaca 1011, atau tombol SW9 
yang ditekan sehingga data yang terbaca 1101, atau tombol SW13
ditekan maka data yang dibaca adalah 1110 atau tidak ada tombol 
pada kolom pertama yang ditekan maka data pembacaan baris akan 
1111. 

b. Mengirimkan logika Low untuk kolom 2 dan logika High untuk
kolom yang lain kemudian membaca data baris



2.Rangkaian Simulasi [Kembali]




Prinsip Kerja: 

Pada percobaan yang telah dilakukan pada modul 2 kondisi 7, yaitu percobaan pada 7 segment, jika angka genap ditekan pada keypad maka akan menampilkan karakter E pada 7 segment ,dimana percobaan ini memerlukan beberapa komponen yaitu :
  • Arduino 2560 yang berfungsi sebagai otak dari rangkaian ini 
  • Seven segment yang berfungsi sebagai keluaran 
  • keypad yang berfungsi sebagai masukan
Pada rangkaian, seven segment dihubungkan pada arduino sebagai output dan keypad  sebagai input. Dimana apabila angka genap ditekan pada keypad  maka akan menampilkan karakter 'E' berkedip dengan delay 100ms pada seven segment .

Prinsip Kerja: Pada percobaan kali ini, yaitu menampilkan teks dari kiri ke kanan pada lcd. Dimana membutuhkan beberapa komponen, yaitu Mikroprosesor ATMega 128 yang berfungsi sebagai otak dari rangkaian ini, LCD berfungsi sebagai keluaran berupa karakter, serta Switch yang berfungsi sebagai masukan/input. Serta juga menambahkan kristal sebagai 'Clock' atau sering disebut juga sebagai pendetak bagi Mikroprosesor ATMega 128. Pada rangkaian, LCD dihubungkan pada PORT A dan SWITCH pada PORT B. Dimana apabila salah satu Switch ditekan dan bernilai 1, maka pada LCD akan menampilkan 'Nama : Setiawan MH'

Today Deal $50 Off : https://goo.gl/efW8Ef




3.Flow Chart [Kembali]






4.Listing Program [Kembali]


 #include <Keypad.h>    //memasukan pustaka keypad
                          
char tombol[4][3] =     //menyatakan tombol di keypad adalah kolom 3 dan baris 4
{            //pembuka tata letak keypad
  {'1', '2', '3'},      //deklarasi posisi tombol keypad
  {'4', '5', '6'},      //deklarasi posisi tombol keypad
  {'7', '8', '9'},    //deklarasi posisi tombol keypad
  {'*', '0', '#'}       //deklarasi posisi tombol keypad
};            //penutup tata letak keypad

byte pin[] = {2, 3, 4, 5, 6, 7, 8, 9};    //deklarasi pin arduino pada   seven segment dengan tipe data byte
byte pinBaris[] = {17, 18, 19, 20};    //deklarasi pin arduino yang dihubungkan ke baris pada keypad
byte pinKolom[] = {14, 15, 16};        //deklarasi pin arduino yang dihubungkan ke kolom pada keypad

Keypad keypad = Keypad(makeKeymap(tombol), //digunakan untuk menciptakan objek keypad
                pinBaris, pinKolom, 4, 3); //objek keypad yaitu empat kali tiga


void setup()  //fungsi utama
{
  pinMode(10,OUTPUT);     //pin 10 arduino digunakan sebagai output
  digitalWrite(10,LOW);   //pin 10 pada arduino digunakan pada keaadan low
 
}

void loop()  //fungsi perulangan pada program
{
   char kode = keypad.getKey(); //fungsi membaca tombol apa pada keypad yang ditekan
  if (kode == NO_KEY) //keadaan jika tombol tidak ditekan
    return;          // perintah return dieksekusi

  else if(kode == '0' || kode == '2' || kode == '4' || kode == '6' || kode == '8')  //kondisi dimana tombol angka genap di tekan
  { for (int a=0; a<=5; a++){  //fungsi perulangan jika memenuhi syarat maka akan terus berulang
    digitalWrite(2,HIGH);      //pin 2 seven segment hidup
    digitalWrite(3,LOW);       //pin 3 seven segment mati
    digitalWrite(4,LOW);       //pin 4 seven segment mati
    digitalWrite(5,HIGH);      //pin 5 seven segment hidup
    digitalWrite(6,HIGH);      //pin 6 seven segment hidup
    digitalWrite(7,HIGH);      //pin 7 seven segment hidup
    digitalWrite(8,HIGH);      //pin 8 seven segment hidup
    digitalWrite(9,LOW);       //pin 9 seven segment mati
    delay (100);            //delay selama 100ms
    digitalWrite(2,LOW);       //pin 2 seven segment mati
    digitalWrite(3,LOW);       //pin 3 seven segment mati
    digitalWrite(4,LOW);       //pin 4 seven segment mati
    digitalWrite(5,LOW);       //pin 5 seven segment mati
    digitalWrite(6,LOW);       //pin 6 seven segment mati
    digitalWrite(7,LOW);       //pin 7 seven segment mati
    digitalWrite(8,LOW);       //pin 8 seven segment mati
    digitalWrite(9,LOW);       //pin 9 seven segment mati
    delay (100);            //delay selama 100ms
    ;
  }
}


}





5.Video [Kembali]





6.Kondisi [Kembali]

  • Menampilkan karakter "E" berkedip dengan delay 100ms ketika angka genap pada  keypad ditekan



7. Link Download [Kembali]