Monitoring baterai dengan GUI

Pada dunia robotik sumber tegangan menjadi hal yang sangat penting, dimana tanpa sumber tegangan robot tidak dapat melakukan gerakan apapun bahkan IC mikrokontroler yang mana berfungsi sebagai penyimpan instruksi-instruksi robot tersebut tidak dapat bekerja. banyak kasus yang mana saat robo dijalan kan dan bebrapa saat kemudian robot mati mendadak atau tidak bergerak seuai yang telah di perintahkan, hal ini disebabkan karena robot kekurangan sumber tegangan, maka dari kasus ini sumber tegangan menjadi hal yang sangat penting. Melihat dari hal tersebut maka dalam membagun robot kita perlu memantau sumber tegangan robot tersebut. Dalam  suatu pertandingan robot hal ini sangat diperlukan. ada beberapa cara untuk mendapatkan informasi mengenai sumber tegangan tersebut mulai dari mengukurnya secara manual sampai membuat program khusus untuk memantaunya.

disini saya akan mencoba membuat suatu program sederhana pada desktop untuk memonitoring sumber tegangan pada robot. program yang saya buat menggunakan microsoft visual studio dengan bahasa program c# dan menggunakan hardwere arduino uno dan rangakaian pembagi tegangan serta komunikasinya menggunakan serial.

Langkah awal kita seting hardwere dimana kita membuat rangkaaian pembagi tegangan dan datanya akan di inputkan kedalam arduino.
rangakaian pembagi tegangan dapat dilihat di bawah ini :

 rangkaian-pembagi-tegangan

Rangakain pembagi tegangan

dari gambar tersebut Vout akan dimasukan kedalam pin analog arduino dan dtanya akan di proses oleh arduino lalu akan dikirimkan ke PC.

Setelah rangkain ini selesai maka langkah selanjutnya adalah memprogram arduino untuk mengambil data tersebut dan menyimpannya lalu mengirimkannya. Source codenya dapat dilihat di bawah ini :

 arduino

Setelah rangkain tersambung dan program telah dibuat maka langkah selanjutnya membuat program monitoring untuk di PC. Bukalah Microsoft visual studio c# dan buat lah program baru windows forms application

 c#

Setelah itu klik “OK”, maka akan keluar windows form yang siap kita isi. Langkah selanjutnya drag and drop komponen yang dibutuhkan, disini saya menggunakan komponen serialPort, timer, button, progressbar, segmen gaug, combo box dan lebel. Hasilnya dapat dilihat seperti gambar berikut

wf C#

Setelah itu klik  dua kali di komponen button dan mulai lah mengisikan program didalamnya seperti dibawah ini :

string data1 = string.Empty;

string data, tanda, dtbatt;

private double batt;

private double refmaxbatt = 8;

private double scalebatt = 1024;

private void button1_Click(object sender, EventArgs e)

{

if (comboBox1.SelectedItem == “PORT 7”)

{

button1.Text = “Disconnect”;

comboBox1.Enabled = false;

if (!serialPort1.IsOpen)

try

{

serialPort1.PortName = “COM7”;

serialPort1.BaudRate = 9600;

serialPort1.Open();

timer1.Enabled = true;

this.Invoke(new EventHandler(timer1_Tick_1));

this.Invoke(new EventHandler(pasringdata1));

}

catch

{

MessageBox.Show(“Erorr, Pastikan serial port yang digunakan benar dan telah terhubung!!!”);

}

}

else

{

button1.Text = “Connect”;

comboBox1.Enabled = true;

serialPort1.Close();

}

}

private void pasringdata1(object sender, EventArgs e)

{

data1 += serialPort1.ReadExisting();

// there could be more than one packet in the data so we have to keep looping.

bool done = false;

while (!done)

{

// check for a complete message.

int start = data1.IndexOf(“*”);

int end = data1.IndexOf(“#”);

if (start > -1 && end > -1 && start < end)

{

// A complete packet is in the buffer.

string packet = data1.Substring(start + 1, (end – start) – 1);

// remove the packet from the buffer.

data1 = data1.Remove(start, (end – start) + 1);

// split the packet up in to it’s parameters.

string[] parameters = packet.Split(‘ ‘);

data = parameters[0];//data pwmkanan

tanda = parameters[1];//data pwmkiri

dtbatt = parameters[2];//data timer

}

else

done = true;

}

}

private void timer1_Tick_1(object sender, EventArgs e)

{

//data batre robot 1

batt = Convert.ToDouble(dtbatt);

batt = (batt / scalebatt) * refmaxbatt;

segmentGauge1.Value = (Math.Abs(batt));

//max

if (batt <= 84 && batt > 80)

{

try

{

progressBar1.Value = 100;

}

catch

{

progressBar1.Value = 0;

}

}

else if (batt > 70 && batt <= 80)

{

try

{

progressBar1.Value = 80;

}

catch

{

progressBar1.Value = 0;

}

}

//med

else if (batt > 65 && batt <= 70)

{

try

{

progressBar1.Value = 50;

}

catch

{

progressBar1.Value = 0;

}

}

//low

else if (batt >= 0 && batt <= 65)

{

try

{

progressBar1.Value = 20;

}

catch

{

progressBar1.Value = 0;

}

}

}

}

}

Setelah itu sambungkan hardwere ke PC serata klik  RUN , maka hasilnya akan seperti dibawah ini :

 out

Saya rasa Cukup untuk materi dari saya ini, semoga bermanfaat 😀

Advertisements

One thought on “Monitoring baterai dengan GUI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s