1. Dasar Teori
LM35 merupakan salah satu dari sekian banyak sensor analog untuk mengukur suhu. Perubahan suhu disekitar sensor menyebabkan terjadinya perubahan nilai tahanan pada sensor, sehingga turut menyebabkan perubahan nilai tegangan output dari sensor. Perubahan nilai tegangan inilah yang dimanfaatkan oleh komponen Analog to Digital Converter (ADC) pada mikrokontroler untuk menyediakan data digital berupa data suhu yang kemudian bisa dibaca oleh mikrokontroler.
Data digital yang telah diterima oleh mikrokontroler dalam hal ini masih berupa sampel data (data mentah) sehingga perlu dilakukan kalibrasi. Kalibrasi dilakukan dengan cara memasukan sampel data tersebut ke sebuah fungsi yang didapat dari hasil perhitungan dengan kondisi suhu pada pengukuran sebenarnya (perbandingan antara hasil terukur dan aktual). Setelah data suhu sebenarnya diketahui, data suhu tersebut dikirim ke komputer menggunakan komunikasi serial untuk ditampilkan pada interface.
Aplikasi interface pada komputer selanjutnya membaca port serial (COM) tempat dimana data suhu tersebut akan dikirim oleh mikrokontroler. Data serial yang telah diterima kemudian ditampilkan pada sebuah grafik sehingga bisa terlihat data suhu pada rentang waktunya.
2. Alat Dan Bahan
a. Perangkat Keras
1 Arduino Uno R3 x 1
2 Kabel USB A to B x 1
3 Kabel Jumper x 3
4 Sensor Suhu LM35 x 1
b. Perangkat Lunak
1 Arduino IDE Ver. 1.0.5 >
2 Microsoft Visual Studio Ver. 2008 >
3 ZedGraph class library Ver. 5.1.5 (Lihat tutorial setupnya disini)
3. Ranah Kerja
Proses pengerjaannya akan dibagi menjadi tiga bagian, yaitu :
Perakitan Perangkat Keras
Pemrograman arduino
Pemrograman Interface
3.1 Perakitan Perangkat Keras
Perangkat keras dirakit berdasarkan gambar berikut :
3.2 Kode Progam pada Arduino
Kode Program LM35 Arduino
/** Workshop Dasar Mikrokontroler 2014
RADE - Robotics AnD Embedded Systems STMIK STIKOM Bali
**/
//Pin wiper pada sensor LM32 (terminal tengah) tersambung ke Analog //Pin 3
//Yang disamping tersambung ke 5V dan Ground
int analogPin = 3;
//Variabel untuk menyimpan data suhu
float suhu;
void setup()
{
//Setup serial dengan baud 9600
Serial.begin(9600);
}
void loop()
{
//Baca pin input
suhu = analogRead(analogPin);
//Lakukan kalibrasi
suhu = suhu * 0.48828125;
//Kirim ke komputer melalui serial
Serial.println(suhu);
//Delay sebelum melakukan pembacaan selanjutnya
delay(50);
}
3.3 Pemrograman Antarmuka
Buka Visual Studio IDE, buat proyek baru dengan tipe Visual C# dan pilih Windows > Windows Forms Application. Ketik nama proyek Monitor Suhu kemudian OK.
Mulai membuat interface dengan mendrag-and-drop masing-masing kontrol ke form. Kemudian untuk kode pada form1 atau form utama gunakan kode berikut :
Kode Program Antarmuka Arduino C#
/** Workshop Dasar Mikrokontroler 2014 RADE - Robotics AnD Embedded Systems STMIK STIKOM Bali
Ditulis Oleh : Aditya Suranata
untuk Public Domain
**/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//namespace untuk zedGrpah
using ZedGraph;
//namespace untuk class serial
using System.IO.Ports;
//namespace untuk melihat setting global komputer
using System.Globalization;
namespace Monitor_Suhu
{
public partial class Form_utama : Form
{
/**Inisialisaisi arduino
* Setup port serial dengan nama port COM65,
* dan baud rate sebesar 9600.
* Baud rate disini dengan di arduino harus sama
* **/
SerialPort arduino = new SerialPort("COM1",9600);
//waktu mulai dalam milidetik
double waktuStart = 100;
//konstruktor
public Form_utama()
{
InitializeComponent();
}
//event ketuka tombol start diklik
private void btn_kontrol_start_Click(object sender, EventArgs e)
{
//start detak untuk mulai mengaktifkan grapher
try
{
//matikan tombol start
btn_kontrol_start.Enabled = false;
//nyalakan tombol stop
btn_kontrol_stop.Enabled = true;
//set batas waktu pembacaan serial sebelum dinyatakan gagal
arduino.ReadTimeout = 1000;
//set batas waktu penulisan serial
arduino.WriteTimeout = 1000;
//nyalakan detak
Detak.Enabled = true;
//mulai detak
Detak.Start();
}
catch (Exception gagal)
{
//Error handling
//MessageBox.Show(gagal.ToString());
}
}
//event ketika detak dimulai
private void Detak_Tick(object sender, EventArgs e)
{
try
{
//Mulai komunikasi dengan arduino
arduino.Open();
//get item kurva pertama pada grafik
LineItem kurvaSuhu = zedGraphSuhu.GraphPane.CurveList[0] as LineItem;
//get PointPairList
IPointListEdit listSuhu = kurvaSuhu.Points as IPointListEdit;
//waktu yang terlewati
double waktu = (Environment.TickCount - waktuStart) / 1000.0;
//baca data suhu yang dikirim arduino,
//konversi data tersebut (string) ke double,
//dan tambahkan ke listSuhu
float dataSuhu = float.Parse(arduino.ReadLine(), CultureInfo.InvariantCulture.NumberFormat);
listSuhu.Add(waktu,Convert.ToDouble(dataSuhu));
//Tutup komunikasi dengan arduino
arduino.Close();
//Buat scale X tetap rolling dalam interval 30 detik, dengan satu
//langkah besar antara nilai X maksimal dan akhir dari axis
Scale xScale = zedGraphSuhu.GraphPane.XAxis.Scale;
if (waktu > xScale.Max - xScale.MajorStep)
{
xScale.Max = waktu + xScale.MajorStep;
xScale.Min = xScale.Max - 30.0;
}
// Pastikan Y axis di scale ulang untuk mengakomodir data aktual
zedGraphSuhu.AxisChange();
// Redraw paksa
zedGraphSuhu.Invalidate();
}
catch (Exception gagal)
{
//error handling
//tutup komunikasi dengan arduino jika masih terhubung
if (arduino.IsOpen)
{
arduino.Close();
}
//MessageBox.Show(gagal.ToString());
}
}
//event ketika tombol stop diklik
private void btn_kontrol_stop_Click(object sender, EventArgs e)
{
try
{
//nyalakan kembali tombol start
btn_kontrol_start.Enabled = true;
//matikan tombol stop
btn_kontrol_stop.Enabled = false;
//stop detak
Detak.Stop();
//matikan detak
Detak.Enabled = false;
//jika komunikasi masih terbuka, tutup komunikasi
if (arduino.IsOpen)
{
arduino.Close();
}
}
catch (Exception gagal)
{
//error handling
//MessageBox.Show(gagal.ToString());
}
}
//event ketika form utama dibuka
private void Form_utama_Load(object sender, EventArgs e)
{
try
{
//catat waktu pertama sebagai referensi
waktuStart = Environment.TickCount;
//Inisialisasi ZedGraph
GraphPane grafikSuhu = zedGraphSuhu.GraphPane;
grafikSuhu.Title.Text = "Grafik Suhu";
grafikSuhu.XAxis.Title.Text = "Waktu (Detik)";
grafikSuhu.YAxis.Title.Text = "Suhu (Celcius)";
//Simpan 120 point. Pada 500 ms sampel rate.
//RollingPointPairList adalah class penyimpanan yang efisien
//dengan tetap merolling kumpulan point data tanpa perlu
//men-shift nilai data apapun
RollingPointPairList listSuhu = new RollingPointPairList(120);
//Inisialisasi kurva
LineItem kurvaSuhu = grafikSuhu.AddCurve("Suhu", listSuhu, Color.Red,SymbolType.None);
}
catch (Exception gagal)
{
//error handling
//MessageBox.Show(gagal.ToString());
}
}
}
}
Lakukan pengujian dengan menghubungkan Arduino ke komputer. Periksa nama port COM yang digunakan oleh Arduino dari Device Manager, kemudian pastikan tidak ada program lain yang menggunakan port tersebut termasuk Arduino IDE agar tidak bentrok. Kemudian cocokan nama port serialnya dengan yang tertulis di program. Run program untuk memulai debugging.
Jika terjadi kesalahan atau program tidak bekerja, uncomment syntax MessageBox pada block catch masing-masing kode untuk mentracing kesalahan yang menyebabkan program tidak bekerja.
Rabu, 12 Desember 2018
PC Serial Arduino dan LM35 Dengan Visual C#
Tags
# Tutorial C#
About Unknown
Soratemplates is a blogger resources site is a provider of high quality blogger template with premium looking layout and robust design. The main mission of templatesyard is to provide the best quality blogger templates.
Tutorial C#
Label:
Tutorial C#
Langganan:
Posting Komentar (Atom)
Assalammualaikum wr.wb
BalasHapusNama :Riyan Fauzi Ashari
NIM :30601800037
Alamat blog :tentangteknikelektro.blogspot.com
Assalammualaikum wr. Wb
BalasHapusNama : mulyono
Nim : 30601800032
Alamat blog : mymuly.blogspot.com
Assalamualaikum wr.wb
BalasHapusNama:Nur AndiAnsyah
Nim:30601800033
alamat blog :http://andiansyahelektronika.blogspot.com/
assalamualaikum wr.wb
BalasHapusnama : muhamad ilham alfarizi
nim : 30601800025
alamat blog saya :https://seputarglobalisasite.blogspot.com/
assalamualaikum wr.wb
BalasHapusNAMA : VICKY ADI PUTRA
NIM : 30601800041
ALAMAT BLOG : orangdesasukses.blogspot.com
Assalamualaikum wr.wb
BalasHapusNur Mu'alim
30601800034
bocahmbelingan.blogspot.com
assalamualaikum wr.wb
BalasHapusNAMA : RISKI BUDI SUJITO
NIM : 30601800036
ALAMAT BLOG SAYA : https://industripati.blogspot.com/
Assalamualaikum Wr Wb
BalasHapusNAMA: MUHAMAD SINGGIH RAHARJO
NIM : 30601800026
Alamat blog :https://listrikbagikehidupan.blogspot.com/
Assalamualaikum Wr.Wb
BalasHapusNAMA : RAMADHAN S.P
NIM : 30601800035
Alamat blog : https://infoelektrosmg.blogspot.com/
Assalamualaikum Wr. Wb.
BalasHapusNama : Samsul Wahab
NIM : 30601800039
Alamat Blog : https://profesionalnew.blogspot.com/
Assalamuakaikum Wr.Wb
BalasHapusNama : Muhammad Khoirun faza
Nim : 30601800031
Alamat Blog : https://patiutarateknik.blogspot.com/
Assalamu'alaikum wr. wb.
BalasHapusNama : M. Ilham Yasin Romadon
Nim : 30601800029
Alamat blog saya adalah : https://mbangundesa3.blogspot.com/?m=1
Assalamualaikum Wr. Wb.
BalasHapusNama : Vicky Putra Laksana
NIM : 30601800042
https://belajarelektroasiikk.blogspot.com/
Assalamualaikum Wr. Wb.
BalasHapusNama : Adhitio Ekatama Putro
NIM : 30601401523
Alamat Blog : https://listrik999.blogspot.com
Assalamualaikum Wr. Wb
BalasHapusNama : Nur Wakhid
NIM : 30601401567
Alamat Blog :http://elektro8.blogspot.com/
Assalamualaikum Wr. Wb
BalasHapusNama : Nur Wakhid
NIM : 30601401567
Alamat Blog :http://teknikelektro8.blogspot.com/
Balas
Assalamualaikum. Wr. Wb
BalasHapusNama : Ana Syifaurrahmi
Nim : 30701501588
https://dukungansosial29.blogspot.com/2019/01/httpunissula_10.html?m=1
Assalamualaikum. Wr. Wb
BalasHapusNama : ana syifaurrahmi
Nim : 30701501588
Https://efikasidiri29.blogspot.com
https://pendidikananakautisme.blogspot.com/2019/01/autisme.html
https://penyesuaiandiri29.blogspot.com/2019/01/httpunissula.html
Https://dukungansosial29.blogspot.com
Assalamualaikum. Wr. Wb
BalasHapusNama : Anissa Prisma Chaaerani
Nim : 30701501599
https://kiat-kiatmenjagakesehatanmental.blogspot.com/
https://psikologiklinis97.blogspot.com/
https://manfaatitbagimahasiswa.blogspot.com/
Assalamualaikum wr.wb
BalasHapusNama : Muhammad chisamuddin alkholish
Nim : 30601800028
Alamat blog :https://cbteyeng.blogspot.com/
Assalamualaikum wr.wb
BalasHapusNama : Muhammad ivan nanda saputra
Nim : 30601800030
Alamat blog :https://elektronikaunissula.blogspot.com/