Kamis, 10 September 2015

Multiplexer Untuk Membaca ADC di ATMega

Semangat Berkarya!!

Baiklah pada kali ini kita akan membahas Multiplexer Untuk Membaca ADC  di ATMega. Apa itu multiplexer? untuk apa multiplexer? sebelum itu kita ketahui dulu bahwa pada Mikrokontroller seperti ATmega 16/32/8535 menyediakan hanya 8 buah port ADC yang terdapat pada PORTA. Maka bagaimana kita bisa menambah masukan ADC jika hanya 8 buah? untuk itu kita bisa menggunakan multiplexer. Secara umum multiplexer adalah cara untuk memasukan banyak input dengangan output yang lebih sedikit. banyak tipe mutiplexer contohnya  4 input 1output , 8 input 1 output, 16 input 1 output, dll. pada kesempatan kali ini kita akan menggunakan IC4051 untuk multiplexer dan mikrokontroller menggunakan ATMega 8535.


Berikut untuk rangkaian pada proteus:
pada IC4051 memakai 8 inputan dan 1 output. pada multiplexer terdapat selector sebagai alamat untuk tiap masing masing inputan pada IC4051 terdapat 3 buah selector yaitu A B C. pada kali ini saya sambungkan di port b. sebagai contoh untuk alamat pada input pertama kita buat biner ABC adalah 000 dan seterusnya sampai 111 untuk inputan terakhir.


berikut listing progam pada CV AVR:

Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 11.059200 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
char data[17];
int data_adc[10]; //membuat data yg bs dimasukan pada data_adc
#include <delay.h>


// Alphanumeric LCD Module functions
#include <alcd.h>

#define ADC_VREF_TYPE 0x00

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

// Declare your global variables here

 void adc()  //pembuatan alamat tiap inputan pada selector
    {

        for(i=0;i<=7;i++)
        {
        PORTB=i;
        data_adc[i]=read_adc(0);
                 }

      } 
         

PORTB=0x00;
DDRB=0x0f;

void lcd() //void menampikan data ADC
{
 lcd_clear(); 
       lcd_gotoxy(0,0);
       sprintf(data,"%d %d %d %d",data_adc[0],data_adc[1],data_adc[2],data_adc[3]);  
       lcd_puts(data);
       lcd_gotoxy(0,1);
       sprintf(data,"%d %d %d %d",data_adc[4],data_adc[5],data_adc[6],data_adc[7]);  
       lcd_puts(data); 
       
}   

while (1)
      {
      // Place your code here
      lcd();

      }  

berikut gambar hasil simuasi :

Terimakasih sudah berkunjung ke blog saya :)
Tetap semangat!!
Terus Berkarya!!!

Tidak ada komentar:

Posting Komentar