Selasa, 28 Juni 2011

AVR “Membaca Input ADC dan Ditampilkan di Komputer”


Materi kali ini adalah membaca input tegangan analog (0-5V) pada PORTA.0 dari ATmega8535(L) (bisa pula untuk IC ATmega16(L), ATmega32(L), ATmega163(L), ATmega323(L)) kemudian mengirimkan data tersebut ke serial komputer (DB9) untuk dibaca. Rangkaian yang diperlukan seperti yang terlihat pada gambar berikut.

Untuk memudahkan pembelajaran, sebaiknya menggunakan modul kami, DI-Smart AVR System, sebagai media praktik. Adapun langkah-langkah dalam pembuatan sistemnya adalah sebagai berikut:
  1. Modul yang dibutuhkan DI-Smart AVR System, DI-Smart Extension Board, dan DI-Cable Serial. (Merangkai komponen-komponen sesuai dengan gambar skematik rangkaian).
  2. Hubungkan adaptor DC pada JACK-DC. Tetapkan tegangan adaptor pada kisaran 9 s/d 12 VDC. Pastikan kutub positif berada pada bagian dalam. (Jika anda menyusun dari awal, maka pastikan sistem mendapatkan tegangan 5V [VCC = 5V]).
  3. Hubungkan DI-Smart Extension Board dengan PORTA DI-Smart AVR System.
  4. Hubungkan input analog dengan salah satu terminal pada DI-Smart Extension Board (pada contoh digunakan terminal PORTA.0).
  5. Hubungkan DI-Cable Serial dengan port serial dari DI-Smart AVR System dan komputer.
  6. Atur jumper JP1 pada posisi “RXD SERIAL PORT”.
  7. Atur jumper JP2 pada posisi “TXD SERIAL PORT”.
  8. Aktifkan program Hyper Terminal pada PC/LAPTOP, baudrate = 9600 bps.
  9. Unduh skrip program berikut (menggunakan BASCOM atau yang CVAVR):
PROGRAM BASCOM:
$regfile = “m8535.dat” ‘Lokasi source code BASCOM untuk chip ATmega8535
$crystal = 4000000 ‘Sesuai dengan xtal0 = crystal yang digunakan pada rangkaian = 4MHz 
‘Jika anda menggunakan DI-Smart AVR System, maka crystal = 8000000 = 8MHz
$baud = 9600            ‘penge-set-an baudrate, dan yang digunakan adalah 9600 bps

‘inisialisasi ADC:
Config Adc = Single , Prescaler = Auto
Start Adc
Dim Data_adc As Word    ‘memesan variable Data_adc bertipe word
Do
‘Data adc pada kanal-0 (PORTA.0) disimpan dalam variabel Data_adc
Data_adc = Getadc(0)

‘Kirim Data_adc ke serial port,
‘chr(13) meletakkan kursor pada posisi paling kiri tampilan
Print Data_adc ; Chr(13);
Waitms 500     ‘Tunda selama 500ms (0.5 detik)
Loop 
End
PROGRAM CVAVR:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.5 Evaluation
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date    : 20/01/2011
Author  : Freeware, for evaluation and non-commercial use only
Company :
Comments:
Chip type           : ATmega8535
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External RAM size   : 0
Data Stack size     : 128
*****************************************************/
#include <mega8535.h>
// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>
#define ADC_VREF_TYPE 0×00
// 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|=0×40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0×10)==0);
ADCSRA|=0×10;
return ADCW;
}
// Declare your global variables here
unsigned int dataadc;
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0×00;
DDRA=0xff;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0×00;
UCSRB=0×08;
UCSRC=0×86;
UBRRH=0×00;
UBRRL=0×33;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// ADC initialization
// ADC Clock frequency: 921,600 kHz
// ADC Voltage Reference: AREF pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0×83;
SFIOR&=0xEF;
while (1)
{
// Place your code here
dataadc=read_adc(0);
printf(“%d\r\n”,dataadc);
delay_ms(500);
};
}
◄ Newer Post Older Post ►