Tampilkan postingan dengan label Mikrokontroler. Tampilkan semua postingan
Tampilkan postingan dengan label Mikrokontroler. Tampilkan semua postingan

Kontrol dan Akuisisi data Suhu menggunakan Mikrokontroler (1)


Selamat pagi / siang / sore
Teman – teman pembaca

      Ketika tulisan ini dibuat, ditempat saya sedang malam hari, waktu yang mengasyikkan buat menulis.:). Sudah lama ga membuat tulisan yangberkaitan dengan dunia kelistrikan, banyak alasan kenapa sudah lama ga bisa update tulisan mengenai dunia kelistrikan,pertama: Karena rutinitas kerja yang membunuh kreatifitas, dan yang kedua karena memang turunnya kuantitas waktu dalam meng-upgrade diri dalam dunia kelistrikan, kontrol maupun elektronika.

      Back to topic, setelah sekian lam menghilang dari dunia control, design dan automation, tiba – tiba saya dihubungi teman yang meminta bantuan untuk tugas akhirnya (skripsi), skripsinya berkaitan dengan dunia kontrol yaitu membuat sebuah prototipe alat pengontrol dan monitoring suhu untuk tanaman, sebenarnya saya ga menyanggupi karena kesibukan dan keterbatasan waktu takutnya ga bisa menyelesaikan proyek ini, namun karena niat ingin membantu teman yang ingin menyelesaikan tugas akhirnya dan sekalian bernostalgia dengan dunia yang saya senangi, akhirnya saya terima tantangan ini.

      Disini, karena memang alatnya masih dalam proses pembuatan / pengerjaan maka akan saya jelaskan secara umum sistem kerja dari alat ini, alat ini menggunakan mikrokontroler AVR Atmega 8535 sebagai controller utama, dengan input berupa 4 buah sensor suhu LM 35, dan output berupa rangkaian kontrol Motor induksi yang digunakan sebagai pompa yang  menyiramkan air untuk menjaga kestabilan suhu ditambah lagi alat terhubung dengan pc / laptop (interfacing)  yang memungkinkan kita bisa memonitoring suhu ruangan secara real –time dan dapat mengambil mengakuisisi data suhu tersebut, jadi dapat dikatakan sistem ini sudah mendekati sistem SCADA (supervisory Control And Data Aquitition).

 
 
 Sebagai diagram blog kontrolnya dapat kita sederhanakan menjadi seperti berikut:

 


      Jadi secara umum sistem ini menggunakan mikrokontroler sebagai controller utamanya yang kemudian akan berkomunikasi dengan PC / laptop dengan Visual Basic sebagai software interfacing dan HMI nya serta port serial sebagai jalur komunikasinya.

      Sekian dulu teman sebagai pembuka untuk penjelasan yang lebih teknis yaitu berupa rangkaian serta programnya akan saya tulis dibagian kedua tulisan ini.

Semoga Bermanfaat.

Program Motor Stepper dengan Bascom AVR

Pada postingan saya sebelumnya, saya sudah post kan tentang Prinsip program Motor Stepper | Wiring Motor Stepper serta Program Motor Stepper dengan CodeVision AVR , maka dalam tulisan kali ini tentang Program Motor Stepper dengan Bascom AVR.

Untuk memudahkan belajar buat rangkaian simulasinya di proteus, seperti gambar dibawah ini:

Program Motor Stepper dengan Bascom AVR
Program Motor Stepper dengan Bascom AVR

Berikut programnya

$regfile = "m8535.dat"
$crystal = 12000000
Config Portc = Output
Dim A As Integer



"Misal 1 step motor stepper sebesar 1 derajat maka untuk menggerakkan motor stepper sebesar 60 derajat"

For A = 0 To 60
Portc = &B00000001
Waitms 50
Portc = &B00000010
Waitms 50
Portc = &B00000100
Waitms 50
Portc = &B00001000
Waitms 50
Next A


"Misal 1 step motor stepper sebesar 1 derajat maka untuk menggerakkan motor stepper sebesar 180 derajat"
For A = 0 To 180
Portc = &B00000001
Waitms 50
Portc = &B00000010
Waitms 50
Portc = &B00000100
Waitms 50
Portc = &B00001000
Waitms 50
Next A


"Misal 1 step motor stepper sebesar 1 derajat maka untuk menggerakkan motor stepper secara continues"

do
Portc = &B00000001
Waitms 50
Portc = &B00000010
Waitms 50
Portc = &B00000100
Waitms 50
Portc = &B00001000
Waitms 50
loop

Program Motor Stepper dengan Bascom AVR
 Program Motor Stepper dengan Bascom AVR

Rangkaian dan Program Motor Stepper

Kalau pada tulisan sebelumnya sudah saya tuliskan Prinsip program Motor Stepper | Wiring Motor Stepper serta Program Motor Stepper , maka dalam tulisan kali ini tentang kombinasi dari keduanya, kita akan merangkain dan memprogram motor stepper.

Buat rangkaian interface motor stepper seperti berikut atau bisa juga menggunakan fitur simulasi dari proteus.

Rangkaian dan Program Motor Stepper

Berikut program motor stepper menggunakan bahasa c:

 for(i=0;i<50;i++)                 
      {
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       }





Untuk menggerakkan motor stepper sebesar 180 derajat
       for(i=0;i<200;i++)
      {
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       }  



Untuk menggerakkan motor stepper sebesar 360 derajat
 for(i=0;i<400;i++)
      {
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       }   

Berikut hasil simulasinya:

 Rangkaian dan Program Motor Stepper

Program Motor Stepper

Artikel ini merupakan kelanjutan dari tulisan sebelumnya mengenai Prinsip program Motor Stepper , jadi silahkan baca dulu tulisan sebelumnya bagi yang belum membaca.

Jadi bersasarkan prinsip motor stepper di tulisan sebelumnya, dapat kita buat program menggunakan compiler code vision AVR sebagai berikut:

Misal: Motor stepper yang digunakan memiliki karakteristik 0,9 derajat per step

Maka programnya utamanya (untuk setting input/output silahkan atur terlebih dahulu:


Untuk menggerakkan motor stepper sebesar 45 derajat
 
 for(i=0;i<50;i++)                  
      {
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       }





Untuk menggerakkan motor stepper sebesar 180 derajat
       for(i=0;i<200;i++)
      {
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       }   



Untuk menggerakkan motor stepper sebesar 360 derajat
 for(i=0;i<400;i++)
      {
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       }   

Untuk menggerakkan motor stepper berputar terus (continues)

  while(1)
      {
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       }   

Merancang Program Motor Stepper dengan Codevision || Program Mikrokontroler dengan bahasa C

Motor Stepper adalah sebuah perangkat pengandali yang menkonversikan bit-bit sinyal menjadi posisi rotor, motor stepper biasanya dapat kita temui di dalam CD/DVD ROM, selengkapnya untuk mengetahui prinsip kerja dan karakteristik dari motor stepper dapat membaca tulisan saya sebelumnya: Prinsip Kerja Motor Stepper.

Dalam Tulisan kali ini saya akan tuliskan program sedehana dalam mengendalikan motor stepper, pertama kita rancang sistem mikrokontroler yang kita gunakan.
Merancang Program Motor Stepper dengan Codevision || Program Mikrokontroler  dengan bahasa C


lalu Buat program dengan codevision AVR, (setelah setting wizard awal)

#include
#include
#include


PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;


PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

while (1)
      {
   
       PORTC=0x01;
       delay_ms(50);
       PORTC=0x08;
       delay_ms(50);
       PORTC=0x02;
       delay_ms(50);
       PORTC=0x04;
       delay_ms(50);
   
      
      };

Analisa Program

4 bit motor stepper kita beri logika 1 bergantian,  dengan begita motor stepper akan bergerak sebesar 1 step, misal motor stepper kita mempunyai karakteristik 1 derajat per step, maka kita butuh perulangan 180 kali untuk menggeraknya sebesar 180 derajat, begitu juga seterusnya namun kalau kita menghendaki motor setpeer berjalan continues maka kita cukup lakukangan perulangan terus menerus

Jalankan program

Merancang Program Motor Stepper dengan Codevision || Program Mikrokontroler  dengan bahasa C

Semoga Bermanfaat

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan BASCOM AVR

Setelah pada tulisan sebelumnya memuat tentang Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR, yang menjelaskan secara singkat penjelasan tentang ADC internal yang dimiliki oleh mikrokontroler ATMEGA 8535.

Dalam tulisan kali ini akan dibahas sama seperti tulisan sebelumya yaitu Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR hanya saja menggunakan bahasa basic dengan compiler Bascom AVR

Untuk simulasi, silahkan buat rangkaian minum plus LCD di proteus, seperti dibawah ini.



Lalu buka Bascom AVR,
Ketikkan program seperti berikut:

$regfile = "8535def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2
Cls

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Dim Dataadc As Word
Cursor Off
Do

Dataadc = Getadc(0)
Locate 1 , 1
Lcd "Data ADC:"
Locate 2 , 1
Lcd Dataadc
Loop

Compile, dan downloadkan ke rangkaian proteus yang telah dibuat dan jalankan program


Semoga bermanfaat

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR

Keunggulan utama mikrokontroler keluarga AVR semisal mikrokontroler ATMEGA 8535 dibanding dengan pendahulunya MCS-51 adalah mikrokontroler ATMEGA 8535 ini telah memiliki ADC internal sebesar 10 bit.

Hal diatas menguntungkan karena bila kita ingin mengolah suatu data analog seperti sensor suhu LM 35, sensor kelembaban SHT 11, intensitas cahaya dengan LDR (light dependent resistor) atau dengan photodiode, dll maka kita tidak memerlukan komponen tambahan seperti IC ADC 0804.

Lalu bagaimana cara memprogram ADC pada mikrokontroler ATMEGA 8535, sangat mudah tentunya tergantung dengan bahasa pemrograman yang dikuasai, jika mahir dalam menggunakan bahasa basic maka silahkan gunakan compiler Bascom AVR jika mahir menggunakan bahasa C maka silahkan gunakan compiler codevision AVR. Dalam tulisan kali ini akan digunakan compiler codevision AVR.

Untuk simulasi, silahkan buat rangkaian minimum plus LCD di proteus, seperti dibawah ini.

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR

Lalu buka codevision dan, setting seperti gambar berikut.

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR


Ketikkan program seperti berikut:

#include      
#include
#include

#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include

#define ADC_VREF_TYPE 0x00
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

int data_adc;
char data[8];
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
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;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;
lcd_init(16);

while (1)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Data ADC:");
data_adc= read_adc(0);
lcd_gotoxy(0,1);
ftoa(data_adc,1,data);
lcd_puts(data);
delay_ms(500);

};
}

Compile, dan downloadkan ke rangkaian proteus yang telah dibuat dan jalankan program

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR


Semoga bermanfaat

Rangkaian Antarmuka dan Program Running Led / Led Berjalan dengan Mikrokontroler

Sebagai langkah awal belajar mikrokontroler membuat berbagai proyek sederhana akan menambah pemahaman kita terhadap mikrokontroler dan dapat melatih logika kita dalam menerjemahkan sebuah algoritma menjadi bahasa pemrograman.

Led berjalan atau Running led dengan Mikrokontroler biasanya menjadi proyek awal dalam mempelajari mikrokontroler, berikut Rangkaian Antarmuka dan Program Running Led / Led Berjalan dengan Mikrokontroler , rangkaian dibuat dengan software proteus 7.8: baca tutorialnya disini Simulasi Mikrokontroler dengan Proteus 7


Rangkaian Antarmuka dan Program Running Led / Led Berjalan dengan Mikrokontroler

Rangkaian diatas terdiri :
-Mikrokontroler ATMEGA 16 (dapat juga digunakan mikrokontroler dari keluarga AVR lainnya semisal ATMEGA 8535, ATMEGA 8, atau dari keluarga MCS-51 dan PIC)
- Rangkaian clock eksternal terdiri dari crystal osilator 12 Mega HZ, dan 2 buah kapasitor 33 piko farad
- Rangkaian Reset terdiri dari push button, kapasitor 1000 mikro farad dan resistor 1 kilo Ohm
- 8 buah Led

Berikut program menggunakan compiler Bascom AVR ( silahkan baca Dasar Pemrograman Mikrokontroler dengan BASCOM AVR dan Kontrol Program dalam BASCOM AVR)



$regfile = "m16def.dat"
$crystal = 12000000


Config Portc = Output
Dim X As Integer
Portc = 0
Do


Portc = &B00000001
Waitms 10
For X = 1 To 8
Shift Portc , Left , 1
Waitms 10
Next X


Loop

Downloadkan programnya ke mikrokontroler atau downloadkan programnya ke proteus jika ingin simulasi, berikut hasil simulasinya.


Semoga Tulisan singkat ini bermanfaat.

Rangkaian Antarmuka dan Program LCD dengan Mikrokontroler

Display LCD merupakan salah satu output popular yang banyak digunakan dalam dunia control dan instrumentasi ataupun otomasi, untuk control dan instrumentasi sederhana LCD biasanya digunakan untuk menampilkan data real dari suatu nilai yang sedang kita control, missal suhu, tekanan, intensitas cahaya dan lain – lain.

Memprogram dan merangkai LCD ternyata tidak terlalu sulit,Berikut gambar antarmuka LCD 16x2 (yang banyak dipasaran bisanya bermerk TopWay, atau dapat merk lainnya, tidak masalah) yang penting terdapat datasheetnya untuk menentukan mana pin RS, R/W, Enable (E), data0 sampai data7 (D0 – D7) , kontroler yang digunakan adalah ATMEGA 16, anda juga dapat menggunakan ATMEGA 8535, atau keluarga AVR lainnya, bisa juga dari keluarga MCS-51 dan PIC

Gambar antarmuka ini digambar dengan proteus 7.8, tutorial proteus:Simulasi Mikrokontroler dengan Proteus 7

Rangkaian Antarmuka dan Program LCD dengan Mikrokontroler


Lalu buat program seperti berikut (compiler yang digunakan disini Basic Compiler, silahkan baca tutorialnya: Dasar Pemrograman Mikrokontroler dengan BASCOM AVR dan Kontrol Program dalam BASCOM AVR):

$regfile = "m16def.dat"
$crystal = 12000000


Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2
Cls


Dim Kanan As Integer
Dim Kiri As Integer


Do
Locate 1 , 1
Lcd "welcome to my blog"
Waitms 1
Locate 2 , 1
Lcd "all-thewin"
For Kanan = 1 To 16
Shiftlcd Right
Waitms 1
Next Kanan


Waitms 1


Locate 1 , 1
Lcd "welcome to my blog"
Waitms 1
Locate 2 , 1
Lcd "all-thewin"


For Kiri = 1 To 16
Shiftlcd Left
Waitms 1
Next Kiri


Loop


Lalu compile dan downloadkan ke mikrokontroler, atau jika simulasi, downloadkan ke dalam software proteus,

Berikut hasil simulasinya:

Rangkaian Antarmuka dan Program LCD dengan Mikrokontroler




Semoga tulisan sederhana ini bermanfaat

Simulasi Mikrokontroler dengan Proteus 7

Simulasi Mikrokontroler menurut saya merupakan fitur yang sangat berguna dan mengasyikkan yang di sediakan oleh software proteus ini, berbagai macam varian mikrokontroler dapat kita gunakan dari ATMEGA, MCS-51, Paralax, PIC, dll serta berbagai macam compiler dengan bahasa permrograman yang berbeda – beda pula.

Berikut contoh gamabar simulasi mikrokontroler

Simulasi Mikrokontroler dengan Proteus 7

Untuk menismulasi kan project yang akan kita buat, kita gambar/rangkaian komponen yang akan kita buat, missal input berupa push button dan output berupa led, kita gambar sesuai dengan yang ingin kita buat (sesuai Port yang kita gunakan dalam program)

Lalu kita buat program dengan compiler yang kita kuasai, dapat menggunakan codevision (untuk mikrokontroler AVR dengan bahasa C), bisa dengan BASCOM AVR ( untuk mikrokontroler AVR dengan bahasa basic), bisa dengan BASCOM 8051 ( untuk mikrokontroler MCS-51 dengan bahasa BASIC,  bisa dengan MikroC atau Mikro Basic (untuk mikrkontroler PIC) atau bahkan dengan bahsa assembly, yang penting compiler tersebut dapat di compile dan menghasilkan fie berekstensi *hex.

Lalu kita downloadkan program tersebut dengan rangkaian simulasi yang kita buat, caranya double click pada mikrokontroler, maka akan muncul gambar seperti dibawah ini, dan browse file yang berekstensi *hex tadi.

Simulasi Mikrokontroler dengan Proteus 7

Lalu jalankan program

Simulasi Mikrokontroler dengan Proteus 7

Semoga tulisan sederhana ini bermanfaat..

Belajar Mikrokontroler | Membaca Data Suhu dengan Mikrokontroler PIC 16F877

Tulisan kali ini sekedar untuk berbagi tentang salah satu aplikasi sederhana dengan menggunakan mikrokontroler PIC 16F877, yaitu membaca data suhu yang akan ditampilkan di LCD, baca juga:  Belajar Mikrokontroler PIC | Membaca Data ADC dan  Mengendalikan PWM dengan Input ADC

Pada tulisan kali ini sensor suhu DS1820, dapat juga menggunkan LM 35 D ( saran penulis jangan menggunakan LM 35 DZ, karena menurut pengalaman tipe DZ tegangan yang dikeluarkannya kurang stabil)., suhu ini akan di tampilkan pada LCD. baca juga: Rangkaian Interface Mikrokontroler PIC dengan LCD

Diagram Blok Aplikasi Membaca data Suhu
Gambar Diagram Blok Aplikasi Membaca Data Suhu

Berikut rangkaiannya

Rangkaian Aplikasi Membaca Data Suhu


Gambar Rangkaian Aplikasi Membaca Data Suhu


Berikut Listing Programnya:

sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
const unsigned short TEMP_RESOLUTION = 9;

char *text = "000.0000";
unsigned temp;

void Display_Temperature(unsigned int temp2write) {
const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
char temp_whole;
unsigned int temp_fraction;


if (temp2write & 0x8000) {
text[0] = '-';
temp2write = ~temp2write + 1;
}


temp_whole = temp2write >> RES_SHIFT ;
if (temp_whole/100)
text[0] = temp_whole/100 + 48;
else
text[0] = '0';

text[1] = (temp_whole/10)%10 + 48;
text[2] = temp_whole%10 + 48;
temp_fraction = temp2write << (4-RES_SHIFT);
temp_fraction &= 0x000F;
temp_fraction *= 625;


text[4] = temp_fraction/1000 + 48;
text[5] = (temp_fraction/100)%10 + 48;
text[6] = (temp_fraction/10)%10 + 48;
text[7] = temp_fraction%10 + 48;
Lcd_Out(2, 5, text);
}

void main() {
ANSEL = 0;
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;

Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1, 1, " Temperature: ");
Lcd_Chr(2,13,223);

Lcd_Chr(2,14,'C');

//--- Main loop
do {
Ow_Reset(&PORTE, 2);
Ow_Write(&PORTE, 2, 0xCC);
Ow_Write(&PORTE, 2, 0x44);
Delay_us(120);

Ow_Reset(&PORTE, 2);
Ow_Write(&PORTE, 2, 0xCC);
Ow_Write(&PORTE, 2, 0xBE);
temp = Ow_Read(&PORTE, 2);
temp = (Ow_Read(&PORTE, 2) << 8) + temp;

//--- Format and display result on Lcd
Display_Temperature(temp);

Delay_ms(500);
} while (1);
}


Simulasikan program diatas dengan Real PIC simulator( baca: Tutorial PIC Simulator )
Semoga bermanfaat

Sumber Refernsi: MikroElektronika


Baca Juga:

Mengendalikan PWM dengan Input ADC pada mikrokontroler PIC

Pada tulisan kali ini, saya akan mencoba mengendalikan PWM (pulse width modulation) dengan input analog dari ADC internal pada mikrokontroler PIC 16F877, Tulisan kali ini merupakan gabungan dari dua tulisan sebelumnya yaitu Belajar Mikrokontroler | Pengendalian PWM pada Mikrokontroler PIC 16f877 dan Belajar Mikrokontroler PIC | Membaca Data ADC.

Nah sekarang kita mencoba menggabungkan bagaimana input ADC yang nilainya analog juga mengatur keluaran PWM yang nilainya analog, kita tahu ADC pada ikrokontroler PIC sebesar 10 bit berarti mempunyai range antara 0 sampai 1023 dan juga PWM nilainya antara 0 - 100 persen satuan duty cycle, jadi program ini akan memberi nilai kearan pada PWM sesuai dengan nilai ADC yang masuk berdasarkan perbandingan dua nilai tersebut.
Berikut programnya, kali ini saya menggunakan compiler Ldmikro (ternyata menggunakan program ladder lebih mudah dan mengasyikkan) baca: LdMikro | Solusi Belajar Mikrokontroler dengan Ladder diagram

PWM dengan input ADC


Catatan:
Untuk memasukkan berbagai instruksii pada LdMikro, perintahnya ada pada tab instruksi dan masukkan instruksi sesuai dengan keinginan kita,
pada program diatas instruksi yang digunakan:
-  A/D Converter Read (Untuk membaca nilai ADC)
- Set PWM Output (untuk mengeluarkan nilai PWM)
- piecewise linear (untuk membuat perbandingan)

Lalu atur piecewise linear dengan 3 set point, yaitu low, medium dan hgh, perbandingannya 0 pada ADC berarti 0 pada PWM, 512 pada ADC berarti 50 dutycycle PWM, 1023 pada ADC berarti 100 dutycycle PWM, dan nilai antara minimum dan maksimum sesuai dengan perbandingan itu.
PWM dengan input ADC pada mikrokontroler
Compile program dan simulasikan dengan RealPicSimulator (Tutorial PIC Simulator | Belajar Mikrokontroler PIC)
Berikut hasilnya:

Mengendalikan PWM dengan input ADC



Baca juga:

Belajar Mikrokontroler PIC | Membaca Data ADC

Seri pembelajaran Mikrokontroler PIC kali ini adalah membaca nilai ADC (Analog to Digital Converter) yang akan di tamplkan pada LCD (Liquid Crystal Display, Mikrokontroler jenis PIC ini rata-rata telah memiliki ADC Internal 10 bit, ADC ini dapat dimanfaatkan untuk pembacaan input dengan nilai analog contoh input pada sensor suhu (akuisisi data suhu dengan Mikrokontroler ATMEGA 8535), sensor jarak, sensor ketinggian, dan lain - lain.

ADC 10 bit ini berarti nilai rentang ADC bernilai antara 0 - 1023 , 2 pangkat 10 bit, dengan asumsi tegangan pada ADC antara 0 sampai 5 Volt berarti 0 merepresentasikan nilai ADC 0 dan 5 Volt merepresentasikan nilai ADC 1023, sedangkan tegangan antara 1 - 5 Volt bernilai antara 0 - 1023.
Berikut program pembacaan nilai ADC dengan menggunakan MikroC
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
unsigned int adc;
unsigned char txt[10];
void ADC_Init();
void main() {
  ANSEL  = 0x04;              // Configure AN2 pin as analog
  ANSELH = 0;                 // Configure other AN pins as digital I/O
  C1ON_bit = 0;               // Disable comparators
  C2ON_bit = 0;
  ADCON1 = 0x80;

  TRISA  = 0xFF;              // PORTA is input
  TRISC  = 0;                 // PORTC is output
  TRISD  = 0;                 // PORTD is output
  Lcd_Init();                        // Initialize LCD
  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  Lcd_Out(1,1,"Nilai ADC");


do  {
    adc = ADC_Read(2);   // Get 10-bit results of AD conversion
    IntToStr (adc, txt);       // Ubah Nilai Integer menjadi String
    Lcd_Out(2,1,txt);
  }
while(1);
}

Berikut hasil simulasinya


Baca juga:

Rangkaian Interface Mikrokontroler PIC dengan LCD

Rangkaian Interface Mikrokontroler PIC dengan LCD, tepatnya mikrokontroler PIC 16F877A dengan LCD 16 x 2 sebenarnya sama dengan rangkaian interface antara Mikrokontroler ATMEGA, MCS-51 dengan LCD 16 x 2.

Untuk LCD jenis ini yang memiliki 16 pin ini, pin - pin yang digunakan adalah pin - pin yang dideklarasikan ke dalam program dan pin supply, pin yang di deklarasikan dalam program ini antara lain pin RS, RW, D4, D5, D6, dan juga D7.

Sama halnya dengan pendeklarasian pin - pin LCD ke dalam program baik itu menggunkan BASCOM AVR, BASCOM 8051 atau CodeVision AVR, Untuk pendeklarasian ke dalam program (mikrokontroler PIC) berikut contohnya:

Dengan Menggunakan compiler MikroC (compiler Mikrokontroler PIC)


sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB6_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB6_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;


Untuk Gambar Rangkaian Interface - nya
 



Catatan: Pin - pin bisa di ubah sesuai denan yang diklarasikan ke dalam program, untuk tipe Lcd 16 x 2 paralel umumnya memiliki 16 pin:
pin 1 dan 16 ground
pin 2 dan 15 Vcc
pin 3 Kontras Lampu Lcd, dapat dihubungkan dg trimpot yang keudian dihubungkan dengan vcc dan ground
pin 4 Rs
pin 5 R/W (hubungkan ke ground (mode Write))
pin 6 En
pin 7-10 (D1-D3 tidak dipakai)
pin 11-14 (D4-D7)


Semoga bermanfaat...


Belajar Mikrokontroler PIC | Program Counter (up and Down) Seven Segment

Salah satu aplikasi yang sangat sering digunakan dalam dunia industri dan robotika adalah aplikasi pencacah atau counter atau lengkapnya Aplikasi program Counter Up dan Down, biasa digunakan dalam konveyor, atau sejenisnya. Nah, kali ini saya ingin sedikit berbagi tentang aplikasi dasar counter yaitu menaikkan dan menurunkan nilai (counter up dan counter down) yang akan di tampilkan pada seven segment dengan mengunakan Mikro C dengan Mikrokontroler PIC 16F877A. Atau bagi yang mahir bahasa Basic dan telah akrab dengan ATMEGA dan Bascom AVR silahkan baca disini.

Berikut Listing Programnya
int segment[] = {63,6,91,79,102,109,125,7,177,111};   // array seven segment
unsigned char a;              //buat a sebagai tipe data integer tak bertanda
void main()
{
TRISC = 0;                                // port b sebagai output
TRISA = 0b111111;                // port a sebagai input
a=0;                                           //kondisi awal a = 0
while(1)
{
 if(PORTA.F0==1)                               
 {
 PORTC=segment[a+1];                
 }
 if(PORTA.F1==1)                              
 {
 PORTC=segment[a-1];             
 }
}
}

Silahkan di Build (compile) lalu silahkan disumlasikan dengan RealPicSimulator, bagi yang belum tau cara simulasi silahkan baca disini.

Hasil Simulasi


Gambar Hasil Simulasi


LdMikro | Solusi Belajar Mikrokontroler dengan Ladder PLC atau Belajar PLC dengan Mikrokontroler

LdMikro, Program yang dikembangkan oleh Jonathan W dapat menjadi solusi baru bagi penggiat ataupun pembelajar di dunia kontrol ataupun otomasi, bisa dibilang terdapat dualisme positif mempelajari program ini, pertama dapat menjadi pengembangan dalam mepelajari mikrokontroler dengan metode program Ladder pada PLC atau juga dapat menjadi metode mempelajari PLC dengan Mikrokontroler (sebagai Hardware nya).

Program ini dapat di download disini.

Cara penggunaan program ini pun sama dengan memprogram Ladder diagram PLC, sama dengan CodeSys pada Wago, Syswin pada Omron, AB,dll. software ini juga dilengkapi dengan proses simulasi sehingga memudahkan kita untuk melakukan check error program yang telah kita buat. program yang telah dibuat dalam bentuk ladder dengan LdMikro ini ketika di compile juga menghasilkan file (*hex) yang nantinya kita gunakan untuk mendownloadkan ke mikrokontroler atau mensimulasikan dengan program tambahan semisal simulasidengan RealPicSimulator atau dengan Proteus.

 Gambar Screenshot Program LdMikro

Daftar Mikrokontroler yang telah Support untuk Program LdMikro

Porgram Ladder LdMikro ini bukan hanya dapat mengolah data digital (high and low logic) tetapi juga data analog karena sebagaimana kita ketahui mikrokontroler keluaran ATMEL atau Mikrochip (PIC) biasanya sudah memiliki ADC (analog to Digital Converter) Internal, ADC ini pun dapat diolah dengan program Ladder pada LdMikro ini, tentunya dapat megasah logika kita dalam memprogram dengan menggunakan Ladder Diagram, Sekian dulu tulisan saya kali ini, untuk contoh program nanti saya tulis di lain kesempatan..

Semoga Bermanfaat...


Baca Juga:

Belajar Mikrokontroler | Pengendalian PWM pada Mikrokontroler PIC

Pulse Width Modulation (PWM) merupakan sebuah pendekatan untuk mengendalikan torsi dan kecepatan motor arus searah. Tenaga yang disuplai ke motor adalah dalam bentuk sinyal gelombang kotak dari magnet konstan dengan merubah lebar pulsa atau duty cycle. Duty cycle adalah perbandingan antara lamanya waktu on terhadap waktu off dalam suatu periode waktu
Grafik Duty Cycle
Penegndalian PWM ini biasanya sering dipakai dalam mengatur keluaran yang berbentuk analog, kecepatan motor misalnya atau kecerahan lampu.

Berikut contoh Pengendalian PWM pada Mikrokontroler PIC 16F877 dengan MikroC
Deskripsi proses
Kita menggunakan dua tombol, dimana tombol pertama digunakan untuk menaikkan duty cycle dan tombol kedua digunakan untuk menurunkan duty cycle. 

Berikut Program Pengendalian PWM pada Mikrokontroler PIC 16F877 dengan MikroC

void InitMain() {
  PORTC = 0;
  TRISC = 0;
  TRISA = 0b111111;
  PORTA = 0;
  PWM1_Init(1000);
}
int a;
void main() {
  InitMain();
while(1)
{
a=25;

do
{
 PWM1_Start();
PWM1_Set_Duty(a);
  if(PORTA.F0=1)
  {a=a+25;
  }
  if(PORTA.F1==1)
  {a=a-25;
  }
}
while(a <= 225);
}
}

Berikut hasil simulasi Pengendalian PWM pada Mikrokontroler PIC 16F877 dengan RealPicSimulator



Keyword: Belajar Mikrokontroler, Mikrokontroler PIC, PIC 16F877, simulasi mikrokontroler, PWM mikrokontroler, belajar PWM, Pulse Width Modulation, Mikro C, belajar Mikro C, program mikrokontroler, belajar program

Baca Juga:
Tutorial PIC Simulator
Belajar Mikrokontroler PIC 16F788
Blogilicious Kito Palembang
Rangkaian Sensor Suhu Sederhana
Mengukur Kecepatan dengan Rotary Encoder