BAHAN PRESENTASI UNTUK MATA KULIAH
MIKROPROSESOR DAN MIKROKONTROLLER
2017
Dosen Pengampuh:
Darwison, M.T

Oleh :
Dicky Anugrah
1410952050
Referensi :

a. Darwison, 2007 “ TEORI, SIMULASI DAN APLIKASI ELEKTRONIKA Jilid 1” , CV Ferila, Padang
b. Darwison, 2007 “ TEORI, SIMULASI DAN APLIKASI ELEKTRONIKA Jilid 2”, CV Ferila, Padang
c. Robert L. Boylestad and Louis Nashelsky, 2013, "Electronic Devices and Circuit Theory", Pearson
d. Keith Brindley, 2005, "Starting Electronics" , Newness 3rd Edition
e. John M. Hughes, 2015, "Practical Electronics: Components and Techniques" , O’Reilly Media
f. Ian R. Sinclair and John Dunton, 2007, "Practical Electronics Handbook" , Newness
Blog Presentasi.

ADC dengan PIC






1. Rangkaian Simulasi [kembali]

Prinsip kerja rangkaian :
         Rangkaian diatas merupakan rangkaian sederhana dari pengunaan PIC untuk penggunaan sebagai ADC. Pada rangkaian tersebut input ADCnya digunakan potensiometer dan nilai analognya ditampilkan pada layar LCD

2. Flowchart [kembali]


3. Listing Program [kembali]


//Penyambungan Modul LCD
sbit LCD_RS at RB7_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB7_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;

void PrintToDisplay(char x, char y, float in1)   //fungsi cetak ke LCD
{
     char ch;                                    // deklarasi variabel ch
     int tint;                                   // deklarasi variabel tint
     tint=(int)(in1*1000);                       // mendapatkan nilai integer dari input analog
     ch=tint/1000;                               // mendapatkan bilangan pertama dari nilai analog
     Lcd_Chr(x,y,ch+48);                         // cetak bilangan pertama ke LCD
     Lcd_Chr_Cp('.');                            // cetak titik yang menjadi koma desimal
     ch=(tint%1000)/100;                         // mendapatkan bilangan kedua dari nilai analog
     Lcd_Chr_Cp(ch+48);                          // cetak bilangan kedua ke LCD
     ch=((tint%1000)%100)/10;                    // mendapatkan bilangan ketiga dari nilai analog
     Lcd_Chr_Cp(ch+48);                          // cetak bilangan ketiga ke LCD
     ch=((tint%1000)%100)%10;                    // mendapatkan bilangan keempat nilai analog
     Lcd_Chr_Cp(ch+48);                          // cetak bilangan keempat ke LCD
     Lcd_Out_Cp("Volt");                         // cetak satuan Volt ke LCD
     Delay_ms(10);                               // delay 10 ms
     }

     int vadc;                                   // deklarasi variabel vadc
     float vin, vinb;                            // deklarasi variabel vin dan vinb

void main() {
TRISB=0x00;                                      // PORTB sebagai output
TRISA=0xff;                                      // PORTA sebagai Input

Lcd_Init();                                      // Inisialisasi LCD
Lcd_Cmd(_LCD_CLEAR);                             // bersihkan layar LCD
Lcd_Cmd(_LCD_CURSOR_OFF);                        // matikan cursor LCD

ADCON0.ADCS0=0;                                  // ADCS0, ADCS1 & ADCS2 bersama sama menentukan kecepatan clock
ADCON0.ADCS1=1;                                  // jika 0 1 1 maka kecepatannya  Fosc/64
ADCON1.ADCS2=1;
ADCON0.CHS0=0;                                   // CHS0, CHS1 & CHS2 bersama-sama menentukan pin
ADCON0.CHS1=0;                                   // jika 0 0 0  maka pin yang digunakan adalah RA0/AN0
ADCON0.CHS2=0;
ADCON0.ADON=1;                                   // mengaktifkan konverter A/D
ADCON1.ADFM=1;                                   // menyatakan 10 bit terdiri dari 8 bit ADRESL dan 2 bit ADRESH
ADCON1.PCFG0=0;                                  // PCFG0, PCFG1, PCFG2 & PCFG3 bersama sama menetukan
ADCON1.PCFG1=0;                                  // apakah pin digunakan sebagai input analog atau input digital
ADCON1.PCFG2=0;                                  // jika 0000 maka semua pin sebagai input Analog
ADCON1.PCFG3=0;

for(;;) {                                        // looping
        ADCON0.Go_Done=1;                        // melakukan pengukuran konversi A/D
        while(ADCON0.Go_Done)                    // memastikan konversi aktif
        { }
        vadc=ADRESL+(ADRESH*256);


    /* Mengambil nilai digital, dengan ADRESL bit low hanya dapat menghitung
                                    hingga 256 dan meluap. sehingga jika 256 telah terpenhui maka nilai
                                    ADRESH akan bertambah 1 point. sehingga hasil digital yang didapatkan
                                    dapat dicari dengan ADRESL terakhir ditambah dengan ADRESH*256. dengan
                                    kolaborasi ini ADC dapat menghitung hingga 10bit.
                                 */

        vin=vadc*5/1024;                       // konversi nilai digital yang didapat ke nilai analog
                                               // dengan tegangan maksimum 5 volt
        PrintToDisplay(1,1,vin);                 // panggil fungsi  untuk mencetak ke layar LCD
        delay_ms(50);                                         // delay 50ms
        Lcd_Cmd(_LCD_CLEAR);                   // bersihkan layar LCD
        }

}


 4. Video [kembali]

5. Link Download [kembali]

           

          
Unknown Unknown Author

ADC dengan Bascom AVR






1. Rangkaian Simulasi [kembali]

Prinsip Kerja Rangkaian:
Rangkaian diatas terdiri dari mikrokontroller atmega 8535, LCD, dan potensiometer. Rangkaian ini bekerja berdasarkan prinsip ADC dimana data analog yang dibaca oleh mikrokontroller, dikonversi menjadi biner sehingga pada LCD dapat menampilkan kata "Dicky Anugrah".

2. Flowchart [kembali]


3. Listing Program [kembali]


$regfile = "m8535.dat"                                      'memanggil librari ATmega 8535
$regfile = 16000000                                         'menentukan kecepatan crystal


Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2       'deklarasi pin lcd
Config Lcdpin = Pin , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5       'deklarasi pin lcd
Config Lcd = 16 * 2                                         'menentukan lcd yang digunakan
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'menentukan deklarasi ADC
Dim V As Word                                               'menentukan variable V
Dim D As Word                                               'menentukan variable V



Do                                                          'fungsi utama

Cls                                                         'lcd bersih dari karakter
Cursor Off                                                  'kursor lcd off

Lcd "AIQI "                                        'lcd menampilkan karakter AIQI
Lowerline                                                   'baris bagian bawah
Lcd "Tegangan= "                                            'Lcd menampilkan karakter Tegangan=
Start Adc                                                   'memulai proses Adc
D = Getadc(0)                                               'D diambil dari Adc 0
V = D * 5                                                   'proses Adc

Locate 2 , 11                                               'baris 2kolom 11 pada lcd
Lcd V ; "mV"                                                'lcd menampilkan karakter
Waitms 1000                                                 'delay 1 s

Loop                                                        'fungsi utama
End                                                         'program selesa


  4. Video [kembali]

5. Link Download [kembali]

Link download HTML Download here
Link download video simulasi Download here
Link download rangkaian simulasi Download here
Link download listing program Download here
Unknown Unknown Author

ADC




*klik teks untuk menuju 


Mikrokontroller AT MEGA 128 dan Mikrokontroller

PIC16F877A.



 a. Mikrokontroller AT MEGA 128 dan Mikrokontroller PIC 16F877A
 b. LED 
 c. SWICTH
 d. Jumper  


A.  ATMEGA 128
Mikrokontroller AVR (Alf and Vegard’s Risc processor) memiliki arsitektur 8 bit, dimana semua instruksi dikemas dalam kode 16-bit dan sebagian besar instruksi dieksekusi dalam 1 siklus clock atau dikenal dengan teknologi RISC (Reduced Instruction Set Computing). Secara umum, AVR dapat dikelompokan ke dalam 4 kelas, yaitu keluarga AT90Sxx, keluarga ATMega dan AT86RFxx. Pada dasarnya yang membedakan masing-masing adalah kapasitas memori, peripheral dan fungsinya.Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hamper sama. Pada praktikum kali ini yang membedakan antara ATMEGA 128 dengan ATMEGA 8535 selain pada kapasistas memori, jug dari Bahasa program yang digunakan.
Berikut gambar dari ATMEGA8535 :

Berikut merupakan gambar konfigurasi pin pada ATMEGA8535  :
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

Konfigurasi pin ATMEGA-128
B. ADC

ADC (Analog To Digital Converter) adalah perangkat elektronika yang berfungsi untuk mengubah sinyal analog (sinyal kontinyu) menjadi sinyal digital. Perangkat ADC (Analog To Digital Convertion) dapat berbentuk suatu modul atau rangkaian elektronika maupun suatu chip IC. ADC (Analog To Digital Converter) berfungsi untuk menjembatani pemrosesan sinyal analog oleh sistem digital.

Converter

Alat bantu digital yang paling penting untuk teknologi kontrol proses adalah yang menerjemahkan informasi digital ke bentuk analog dan juga sebaliknya. Sebagian besar pengukuran variabel-variabel dinamik dilakukan oleh piranti ini yang menerjemahkan informasi mengenai vaiabel ke bentuk sinyal listrik analog. Untuk menghubungkan sinyal ini dengan sebuah komputer atau rangkaian logika digital, sangat perlu untuk terlebih dahulu melakukan konversi analog ke digital (A/D). Hal-hal mengenai konversi ini harus diketahui sehingga ada keunikan, hubungan khusus antara sinyal analog dan digital.

ADC (Analog to Digital Convertion)

Analog To Digital Converter (ADC) adalah pengubah input analog menjadi kode – kode digital. ADC banyak digunakan sebagai Pengatur proses industri, komunikasi digital dan rangkaian pengukuran/ pengujian. Umumnya ADC digunakan sebagai perantara antara sensor yang kebanyakan analog dengan sistim komputer seperti sensor suhu, cahaya, tekanan/ berat, aliran dan sebagainya kemudian diukur dengan menggunakan sistim digital (komputer).
ADC (Analog to Digital Converter) memiliki 2 karakter prinsip, yaitu kecepatan sampling dan resolusi.

Resolusi ADC

Resolusi ADC menentukan “ketelitian nilai hasil konversi ADC”. Sebagai contoh: ADC 8 bit akan memiliki output 8 bit data digital, ini berarti sinyal input dapat dinyatakan dalam 255 (2n – 1) nilai diskrit. ADC 12 bit memiliki 12 bit output data digital, ini berarti sinyal input dapat dinyatakan dalam 4096 nilai diskrit. Dari contoh diatas ADC 12 bit akan memberikan ketelitian nilai hasil konversi yang jauh lebih baik daripada ADC 8 bit.

Prinsip Kerja ADC

Prinsip kerja ADC adalah mengkonversi sinyal analog ke dalam bentuk besaran yang merupakan rasio perbandingan sinyal input dan tegangan referensi. Sebagai contoh, bila tegangan referensi 5 volt, tegangan input 3 volt, rasio input terhadap referensi adalah 60%. Jadi, jika menggunakan ADC 8 bit dengan skala maksimum 255, akan didapatkan sinyal digital sebesar 60% x 255 = 153 (bentuk decimal) atau 10011001 (bentuk biner).
signal = (sample/max_value) * reference_voltage
= (153/255) * 5
= 3 Volts

Komparator ADC

Bentuk komunikasi yang paling mendasar antara wujud digital dan analog adalah piranti (biasanya berupa IC) disebut komparator. Piranti ini, yang diperlihatkan secara skematik pada gambar dibawah, secara sederhana membandingkan dua tegangan pada kedua terminal inputnya. Bergantung pada tegangan mana yang lebih besar, outputnya akan berupa sinyal digital 1 (high) atau 0 (low). Komparator ini digunakan secara luas untuk sinyal alarm ke komputer atau sistem pemroses digital. Elemen ini juga merupakan satu bagian dengan konverter analog ke digital dan digital ke analog yang akan didiskusikan nanti

Gambar diatas memperlihatkan sebuah komparator merubah keadaan logika output sesuai fungsi tegangan input analog. Sebuah komparator dapat tersusun dari sebuah opamp yang memberikan output terpotong untuk menghasilkan level yang diinginkan untuk kondisi logika (+5 dan 0 untuk TTL 1 dan 0). Komparator komersil didesain untuk memiliki level logika yang dperlukan pada bagian outputnya



Unknown Unknown Author

Motor Stepper dengan Bascom AVR






1. Rangkaian Simulasi [kembali]



2. Flowchart [kembali]


3. Listing Program [kembali]


$regfile = "m8535.dat"                                      'memanggil library ATmrga 8535
$regfile = 160000000
                              'menentukan kecepatan Crystal
Ddra = &B1111                                               'PORTA sebagai output
Ddrb = &B0000                                               'PORTB sebagai output
Porta = &B0000                                              'keadaan awal PORTA
Portb = &B0000                                              'keadaan awal PORTB


Do                                                          'fungsi utama
If Pinb.0 = 1 Then                                          'pemilihan kondisi pada PORTB
Porta = &B1000                                              'keluaran pada PORTA
Waitms 100                                                  'delay 100 ms

Elseif Pinb.1 = 1 Then                                      'pemilihan kondisi pada PORTB
Porta = &B0100                                              'keluaran pada PORTA
Waitms 100                                                  'delay 100 ms


Elseif Pinb.2 = 1 Then                                      'pemilihan kondisi pada PORTB
Porta = &B0010                                              'keluaran pada PORTA
Waitms 100                                                  'delay 100 ms


Elseif Pinb.3 = 1 Then                                      'pemilihan kondisi pada PORTB
Porta = &B0001                                              'keluaran pada PORTA
Waitms 100                                                  'delay 100 ms

Else                                                        'pemilihan kondisi terakhir
Porta = &B0000                                              'keluaran pada PORTA
Waitms 100                                                  'delay 100 ms

End If                                                      'pemilihan kondisi selesai
Loop                                                        'fungsi utama
End                                                         'program selesai
4. Video [kembali]

5. Link Download [kembali]

File HTML - Download
File Proteus - Download
File Program - Download
File Video - Download
Unknown Unknown Author

Motor Stepper dengan ATMEGA






1. Rangkaian Simulasi [kembali]



Prinsip kerja rangkaian :

Rangkaian terdiri dari LCD, driver motor L293D, keypad, dan 2 switch dengan menggunakan mikrokontroller Atmega 128. Dimana LCD terhubung pada PORT A, switch terhubung pada PORT B dengan switch 1 pada pin 0 ddan switch 2 pada pin 6. Dan juga driver motor terhubung pada PORT D dan keypad terhubung pada PORT E. untuk menjalankan simulasi klik tombol PLAY. untuk memulai operasi maka ditekan tombol RESET terlebih daulu. setelah itu, apabila tombol 1 pada keypad ditekan, maka motor stepper akan berputar. dan apabila switch 1 diaktifkan, maka motor stepper akan berputar juga.
 
2. Flowchart [kembali]


3. Listing Program [kembali]
#include <mega128.h>                       // Library atmega 128
#include <delay.h>                             // Libaray delay
#include <alcd.h>                               // Library LCD
int pin[]={1,2,4,8};                             // Deklarasi pin digunakan
int i;                                                     // Deklarasi nilai I;
void putar()                                         // Fungsi putar
{
    for( i=4;i>0;i--)                                // Perulangan
         {     
         lcd_gotoxy(1,1);                        // Posisi tulisan pada LCD
         lcd_putsf("Putar");                     // Mencetak tulisan pada LCD
         delay_ms(50);                            // Delay selama 50 ms
         lcd_clear();                                 // Membersihkan /reset LCD
         PORTD= pin[i];                         // Menjalankan motor sesuai biner
         }
}
void keypad()
{
PORTE=0b1111011;                          // PORTE sebagai keypad
delay_ms(1);                                       // Delay selama 1 ms
if (PINE.4 == 0)                                 // Jika PINE.4 ditekan dengan aktif low
  {           
    lcd_gotoxy(1,0);                             // Posisi kata yang tampil pada LCD
    lcd_putsf("Anda Tekan 1");            // Menulis kata pada LCD
    putar();                                            // Memanggil fungsi putar
  }
}
void main(void)                                  // Fungsi utama dalam program
{         
    PORTD=0x00;                                // PORTD dengan kondisi awal aktif low
    DDRD=0xff;                                  // PORTD ditetapkan sebagai ouput
    PORTF=0x00;                                // PORTF dengan kondisi awal aktif low
    DDRF=0x00;                                  // PORTF ditetapkan sebagai input
    PORTE=0xff;                                 // PORTE dengan kondisi awal aktif high
    DDRE=0x0f;                                  // PORTE ditetapkan sebagai input dan output
    lcd_init(16);                                    // Inisialisasi tipe LCD yang digunakan
   
    while(1)                                           // Looping dalam program
    {  
       keypad();                                      // Fungsi keypad     
       if (PINB.0 == 1)                          // Jika PINF.0 aktif high saat ditekan
        {                 
         putar();                                       // Memanggil fungsi putar
        }        
    }

}
4. Video [kembali]

5. Link Download [kembali]

File HTML - Download
File Proteus - Download
File Program - Download
Video Rangkaian - Download
Unknown Unknown Author