Sama seperti artikel sebelumnya hanya saja disini sebagai inputnya yaitu melalui komunikasi serial PC. Sebagai tampilannya menggunakan Visual Basic 6. Simulasi disini sudah dicoba secara hardware dan hasilnya berhasil. Untuk menghubungkan mikrokontrole pada proteus dengan PC yaitu pada proteus menggunakan komponen COMPIM
sehingga mikrokontroler pada proteus dapat berkomunikasi Serial Port pada PC. Com pada mikro misalnya kita setting COM4 sedangkan pada PC kita setting COM3. Agar COM 3 dan COM dapat berkomunikasi yaitu menggunakan program “virtual serial Port”. Pada tampilan vb yaitu menggunakan scrollbar, nilai dari scrollbar ini dikirim melalui serial yaitu menggunakan mscomm.
Pada mikrokontroler yaitu menggunakan AVR ATMega16. Menggunakan fasilitas interupt serial receive. Jadi saat ada data masuk melalui serial maka otomatis AVR akan menjalankan program yang ada pada subrutin USART Receiver interrupt. Berikut setting programnya pada codevision AVR :
Programnya :
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
unsigned char cek,input; char lcd_buffer[33];
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};PORTD.2=0; PORTD.3=1; OCR0=data; //Data serial untuk mengatur //kecepatan motor
lcd_clear();
lcd_gotoxy(0,0);
sprintf(lcd_buffer,”Data Receive:%d”,data);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
if(OCR0==0){lcd_putsf(“Motor Mati “);}
else if(OCR0>0 && OCR0<150){lcd_putsf(“Motor pelan”);}
else{lcd_putsf(“Motor Cepat”);}
};
}#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm(“cli”)
–rx_counter;
#asm(“sei”)
return data;
}
#pragma used-
#endif// Standard Input/Output functions
#include <stdio.h>// Declare your global variables here
void main(void)
{ unsigned char data_rx[25],input,sip;
unsigned char i,j,k,l; //Declare your local variables herePORTA=0x00;
DDRA=0x00;PORTB=0x00;
DDRB=0x08;PORTC=0x00;
DDRC=0x00;PORTD=0x00;
DDRD=0xff;// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 43.200 kHz
// Mode: Fast PWM top=FFh
// OC0 output: Non-Inverted PWM
TCCR0=0x6D;
TCNT0=0x00;
OCR0=0x00;TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;MCUCR=0x00;
MCUCSR=0x00;TIMSK=0x00;
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;ACSR=0x80;
SFIOR=0x00;// LCD module initialization
lcd_init(16);// Global enable interrupts
#asm(“sei”)while (1)
{
};
}
Sedangkan pada tampilan vb nya :
Private Sub Form_Load()
Text1 = 0
MSComm1.PortOpen = True
End SubPrivate Sub out_Change()
Dim nilai As Integer
nilai = out.Value
If nilai > 0 And nilai < 125 Then
Text1.BackColor = vbGreenElseIf nilai = 125 Then
Text1.BackColor = vbYellowElseIf nilai > 175 And nilai < 255 Then
Text1.BackColor = vbRed
End IfText1 = nilai
MSComm1.Output = “” + Chr$(nilai)End Sub
https://youtube.com/watch?v=nTLMnyk5XkE
klw pake atmega 8535 tinggal ganti mdefnya aja ya mas?
tinggal ganti header yang #include diganti #include
Mas, boleh minta source-nya? Lagi belajar masalah ini, please ya mas…
Thx 🙂
la itukan sudah ada sourcenya…
mas mau nanyak…
cara nya mengkoneksikan VB ke proteus itu gmn ya ??? (seperti artikel yg di atas itu)
terus mau nanyak lagi mas…hehheee….bs tunjukin artikel yg lain gak?? tapi yg buat ARM atau ATXmega gtu?? please mas….help me….
thank you
Pake Virtual serial disini saya pake VSPE..bisa lihat videonya disini https://www.musbikhin.com/connect-avr-proteus-simulation-with-pc-using-usart
ini rangkaian RS232nya pake ic max232 dlu gak gan ??
iya bener..
mas ini knp ya.. nilai yang dikirim vb (scroll bar).. dan yg muncul dari mikro (LCD) berbeda.. :(( mohon pencerahannya mas..
setting range scrool barnya bisa di cek lagi…
mass.. bingung masalah port .. dicontoh vb mscomm1 <= ini mksd nya com1 ?
itu nama komponennya…kalo untuk com berapa bisa dilihat pada property dan bisa diubah ubah tidak hanya com1, tergantung com yang dicolokkan dengan mikronya…
Mas boleh minta save an dari semua program simulasi nya.. butuh bgt.. uda bikin hardware nya tp blm work… kalo boleh kirim ke alt_tea@ymail.com.. makasih banyak mas
cek inbox gan..
mass.. ini knp ya, alatnya dah jadi smua, syntax nya uda sama juga, di compile sukses, tp pass scroll bar nya di geser gk ada perubahan, ada saran buat ku gk ??
Ini pake simulasi atau buat hardwarenya langsung, kalo pake kdang proteus terjadi masalah pada saat mengirim atau menerima data dari serial…coba yang com4(milik mikro proteus) jangan dirun proteusnya tapi pake Hiperterminal dulu, apakah benar vbnya mengirim data serial, kalo mengirim data berarti emang maslah pada mikro di proteusnya. mungkin bs sdikit membantu..thanks for visit..
pake harware nya mas.. ohh ia klo pke driver motor l293D bisa gk mas ?
bisa mas…
mas data yang dikirim bentuknya apa??
Nilai integer dari komponen slider kemudian dirubah dalam bentuk karakter sebelum dikirim melalui serial.
ngubahnya di VB langsung or gmn mas?
saya mau pakai Matlab, kalo dari listing codevision sepertinya hampir sama ya mas?
perubahan nilai di matlab mau saya pakai sebagai pengubah PWM sperti contih diatas..
Ya, ngubahnya langsung di vb, listing di codevidionnya hampir sama…
kurang lebih begini mas,
misalnya saya ngatur setpoint sebesar 1000rpm nanti akan ada sinyal kontol yang dikirim ke mikro karena yang terhubung dengan mikro adalah sinyal kontrol, misal sebesar 500, tapi kalo kita ubah setppoint jadi 500 maka sinyal control jg berubah misal jadi 240, ga linear mas.
dari sinyal kontrol mau saya pakai sebagai patokan penambahan PWM di mikro untuk gerakin kecepatan motor DC agar sama dengan sepoint.
masalahnya saya bingung krn sinyal kontrolnya tidak linear mas,
kira2 gmn ya mas?
terima kasih
Coba pada proprties “large charge” pada Scrollbarnya diset 5 atau 1 sehingga tiap perubahas scroll bisa linier….mungin bisa membantu..
mas.. pd saat program.. pke isp usb bisa gk ? trs kalo dari serial DB9 ke laptop pake converter db9 -> usb ngaruh gk ?
kalo isp usb itu buat download program…,terus kalo di laptop kan gak adau konektor db9 maka bisa pake USB to Serial (hardware lagi, biasa kalo di pasaran mereknya Prolifik)di laptopnya pake usb di mikronya tetep pake db9…
Mas mau tanya, ada tutorial buat rangkaian s3nsor suhu ngga’ mas?
Trims sblmnya.. 😀
kalo rangkaian buat sensor suhu biasanya sudah ada di pasaran sperti SHT11 ato yang murah meriah pake LM35…rangkaiannya paling menggunakan komparator..
mas, bisa minta program vb nya ke email saya ? trims
mas ada tutorial untuk kendali motor berbasis matlab?
saya mau merancang PID-fuzzy ada di matlab jadi set point juga berasal dari PC matlab serial ATMega 8535.
saya bingung dengan listingnya
mohon bantuannya mas kalo ada contoh program yang bisa saya pelajari.
terima kasih
maaf saya BELUM ad mas…coba aja cari di google “matlab serial avr”..
makasih ya mas.
mas kalo bisal nya gk pke LCD bisa kan ? klo ttp pke syntax itu trs gk pke lcd bisa ?
Gak bisa mas..harus pake lcd, kalo gak pake lcd, harus di edit dan dicompile ulang…
owalah… jd wajib pke LCD nih ?? >_< padahal pengen nya gk pake :((
rangkaian nya ada ukuran yg lebih besar ?
Ada…uda dikirim filenya..cek email…
OK sudah diterima, thanks mas
saya belum dapat kiriman emailnya mas
Uda terkirim cek email….
Mas saya boleh minta skematiknya?, soalnya gambar di atas kurang jelas. sekalian saya minta code programnya. saya sudah coba copy paste code tersebut ke code vision 2.05, tapi malah error. mohon bantuannya dikirim ke cyberqalbunsalim@gmail.com. Nuhun/terima kasih
Maaf baru blas jarng cek blog..iya mas kalo pake yang versi 2.05 banyak errornya…kalo saya yang pake yang versi 1.25.8 dijamin tidak error..untuk skematiknya serial biasa mas ke mikro pake rs232,…
Mas saya boleh minta program vb-nya ini sama simulasinya sekalian gak?
thanks. kirim di email guesh_agush@yahoo.com
uda q kirim bro…thanks…
sistem kerjanya, juga hampir sama dengan skripsi aku mas.
bisa dikirim program vb skaligus source codenya sama simulator proteusnya mas. Buat pengembangnnya… trim’s.
ponco_xl@yahoo.com
oke nnti akan saya kirim…..^^
uda saya girim bro…lets cekidot…
Waw keren neh…
mas,, boleh minta program vb skaligus source codenya ga.?
kirim ke email Q ya.?
nizartekhnik@yahoo.co.id
saya sangat tertarik sekali mas, boleh minta bantuan nyelesain TA, membuat simulator man-machine interface, boleh minta source program dan desain simulator virtual PLC dan Mikro mas, dikirm di emailku mas iya: majongbahrin@yahoo.co.id
makasih sebelumnya
bahrin
boleh minta program vb skalian simulator proteusnya kgk mas, coz aq bru blajar mikro..
tp disuruh bikin tgs interfacing..
boleh minta program vb skaligus source codenya sama simulator proteusnya kgk mas, coz aq bru blajar mikro..
tp disuruh bikin tgs interfacing..
tolong kirim ke email ya :
riza_punya46@yahoo.co.id
makasih mas
wah bikin tambah gaul.. lanjutkan mas bro’
klo gaul kro makrim gek an…hehehe
Mas saya tertarik ingin mencoba ini, boleh minta tolong kirim program vb sama rangkaian di proteusnya gak???
thanks.
makasih mas…berkat ni tutorial saya jadi bisa belajar interface vb ma mikro…
saya mau tanya mas klo kejadiannya di balik mikro yang ngirim dan vb yg nerima ada tutorialnya ga mas…klo ada di tunggu publishnya y mas…
blum ada mas..bnyak ksibukn disini..mungkn nanti akn sya buat tutorialnya….thanks for visiting, smg bermanfaat…
udah saya coba progrm CVnya,, bnyak yng error… knp ya??
trus,, mau nnyak, untuk penerimaan data dari VB ke CV gmn ya mas….??? untuk menggerakkan servo
mhon bntuannya
kalau pake servo ane blum pernh nyoba gan…maklum newbie…
Pemanfaatan Sistem Akuisisi Data untuk Inteligent Room System hampir sama dengan TA saya mas
boleh minta programnya ga mas, coz aq bru blajar mikro
tolong kirim ke email ya :
natha_dechoco@yahoo.com
makasih mas
udah q kirim …smg sukses TAnya…