Translate

Membuat Alat Blood Shaker dengan Load Cell , Solenoid Valve dan Motor Stepper

Membuat Alat Blood Shaker dengan Load Cell, Solenoid Valve dan Motor Stepper


          Pada malam ini adalah malam penuh kebimbangan dan sakit yang begitu mendalam, tapi tak mengapa semuanya kan baik2 saja. Kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat blood shaker menggunakan beberapa komponen utama yaitu motor stepper, load cell dan solenoid valve, jadi prinsip kerjanya yaitu alat akan nge-shake selama nilai berat belum terpenuhi, tapi jika nilai berat sudah terpenuhi maka alat akan berhenti dan membunyikan alarm.


 
a. Minimum System dan Skema





b. Driver Stepper





c. Load Cell + Amplifier INA114







d. Solenoid Valve 





e. Program Bascom AVR

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

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

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

Ddrb = &B11111111

'relay
Ddrc.1 = 1

'led
Ddrd.0 = 1
Ddrd.1 = 1
Ddrd.2 = 1

'buzzer
Ddrd.3 = 1

'button
Ddrd.7 = 0
Ddrd.4 = 0
Ddrd.5 = 0

Set Portd.7
Set Portd.4
Set Portd.5

Cls
Cursor Off

Dim Dataadc As Word
Dim A As Integer
A = 0

Start Adc

Menu:

Portd.3 = 1
Wait 3
Portd.3 = 0

Do
Portc.1 = 1

Portd.0 = 1
Portd.1 = 1
Portd.2 = 1

Upperline
Lcd "PILIH MENU"

If Pind.4 = 0 Then
Upperline
Lcd "Dipilih Shake "
Lowerline
Lcd "Sampai 250 ml"
Wait 3
Goto Shake250

Elseif Pind.7 = 0 Then
Upperline
Lcd "Dipilih Shake "
Lowerline
Lcd "Sampai 350 ml"
Wait 3
Goto Shake350

Elseif Pind.5 = 0 Then
Upperline
Lcd "Dipilih Shake "
Lowerline
Lcd "Sampai 450 ml"
Wait 3
Goto Shake450

End If

Loop

Shake250:
Cls
Portd.0 = 0
Portd.1 = 1
Portd.2 = 1

Portc.1 = 0

Do

Dataadc = Getadc(7)

Locate 1 , 1
Lcd Dataadc

Portb = &B00000001
Waitms 15

Portb = &B00000010
Waitms 15

Portb = &B00000100
Waitms 15

Portb = &B00001000
Waitms 15

Loop Until Dataadc >= 400 And Dataadc <= 415

Goto Menu

Return

Shake350:
Cls
Portd.0 = 1
Portd.1 = 0
Portd.2 = 1

Portc.1 = 0

Do

Dataadc = Getadc(7)

Locate 1 , 1
Lcd Dataadc

Portb = &B00000001
Waitms 15

Portb = &B00000010
Waitms 15

Portb = &B00000100
Waitms 15

Portb = &B00001000
Waitms 15

Loop Until Dataadc >= 380 And Dataadc <= 395

Goto Menu

Return

Shake450:
Cls
Portd.0 = 1
Portd.1 = 1
Portd.2 = 0

Portc.1 = 0

Do

Dataadc = Getadc(7)

Locate 1 , 1
Lcd Dataadc

Portb = &B00000001
Waitms 15

Portb = &B00000010
Waitms 15

Portb = &B00000100
Waitms 15

Portb = &B00001000
Waitms 15

Loop Until Dataadc >= 370 And Dataadc <= 380

Goto Menu
Return




f. VIDEO HASILNYA










Mengakses Sensor Magnetometer dan Servo Menggunakan Arduino

Mengakses Sensor Magnetometer dan Servo Menggunakan Arduino


                   Malam ini saya akan menjelaskan mengenai bagaimana cara mengakses sensor magnetometer dan servo menggunakan arduino, alat yang akan dibuat ini aplikasinya yaitu untuk penunjukan arah mata angin utara dan selatan, jadi alat ini akan memberikan arah posisi utara dan selatan dimanapun berada sehingga akan memudahkan orang dalam melangkah. Alat ini bagus dipakai untuk nelayan atau orang yang lagi berada di hutan, sehingga jika ingin melihat arah utara hanya perlu melihat alat dan mengikuti petunjuknya, alat penunjuk menggunakan motor servo dan sensor untuk menentukan arah utara dan selatan adalah sensor HMC5883L. Untuk lebih jelasnya berikut penjelasan program dan skemanya.



1. Arduino Uno




b. Sensor HMC5883L




c. Motor Servo




d. Program Arduino

#include <Wire.h> //I2C Arduino Library
#include <Servo.h>
#define addr 0x1E //I2C Address for The HMC5883

Servo servo1; Servo servo2;

void setup(){
 
  Serial.begin(9600);
  Wire.begin();
 
  Wire.beginTransmission(addr); //start talking
  Wire.write(0x02); // Set the Register
  Wire.write(0x00); // Tell the HMC5883 to Continuously Measure
  Wire.endTransmission();
 
  pinMode(13,OUTPUT);
  servo1.attach(14); //analog pin 0
  servo2.attach(15); //analog pin 1

}

void loop(){
 
  int x,y,z; //triple axis data

  //Tell the HMC what regist to begin writing data into
  Wire.beginTransmission(addr);
  Wire.write(0x03); //start with register 3.
  Wire.endTransmission();
 

 //Read the data.. 2 bytes for each axis.. 6 total bytes
  Wire.requestFrom(addr, 6);
  if(6<=Wire.available()){
    x = Wire.read()<<8; //MSB  x
    x |= Wire.read(); //LSB  x
    z = Wire.read()<<8; //MSB  z
    z |= Wire.read(); //LSB z
    y = Wire.read()<<8; //MSB y
    y |= Wire.read(); //LSB y
  }
 
  // Show Values
  Serial.print("X Value: ");
  Serial.println(x);
  Serial.print("Y Value: ");
  Serial.println(y);
  Serial.print("Z Value: ");
  Serial.println(z);
  Serial.println();
  
  delay(500);
 
  if ((y >= 400) && (y <= 600)) {
    servo1.write(85);
    servo2.write(85);
    digitalWrite(13, HIGH);
  }
 
  else if ((y >= -550) && (y <= -400)) {
    servo1.write(85);
    servo2.write(85);
    digitalWrite(13, LOW);
   
  }
 
  else
  {
   servo1.write(200);
   servo2.write(200); 
  
   digitalWrite(13, HIGH);
 
  }
  }



e. Cara Penggunaan Alat

            Hubungkan alat dengan supply adaptor 12 volt, kemudian untuk supply servo 5 volt menggunakan UBEC 3A sehingga jalannya lebih stabil dan tidak panas, kemudian baca nilai output dari sensor HMC5883L, jika sudah ditentukan nilai untuk utara dan selatan maka upload program arduino dan uji coba menggunakan motor servo. jika diarahkan ke utara harusnya dia akan menghadap keutara, kemudian hadapkan sensor ke barat, harusnya servo tetap akan menunjuk arah utara, begitu seterunya, dan jika sensor menunjuk arah selatan maka led arduino akan hidup.








Membuat Alat Monitoring Gas Menggunakan AVR dan VB.NET / visual studio 2010 - MS. ACCESS 2007 VIA BLUETOOTH

Membuat Alat Monitoring Gas Menggunakan AVR dan VB.NET / visual studio 2010 - MS. ACCESS 2007 VIA BLUETOOTH


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk monitoring gas menggunakan komputer dengan interface visual studio, media transfer data yang digunakan adalah bluetooth dengan baudrate 9600. alat ini menggunakan mikrokontroller ATMega16 dan bluetooth HC-05. jadi alat ini akan mengirimkan data gas yang masih berbentuk nilai ADC satu detik sekali, kemudian di interface visual studio akan menampilkan nilai gas, jam dan tanggal, setelah menampilkan maka akan disimpan secara otomatis di database microsoft access 2007. untuk lebih jelasnya berikut program dan skemanya.

Software pairing bluetooth HC-05 ( Bluesoleil )
Download Link

Tutorial Pairing Bluetooth
https://www.youtube.com/watch?v=FVIUOoE9GNo



a. Minimum System




b. Sensor Gas 




c. Bluetooth HC-05



d. Program Bascom AVR

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

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

Dim Dataadc As Word

Start Adc

Do

Dataadc = Getadc(0)

Print Dataadc

Wait 1
Loop



e. Program VB.NET



Public Class Form1
    Dim WithEvents SerialPort As New IO.Ports.SerialPort
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    Sub connectDB()
        con.Open("provider=microsoft.jet.oledb.4.0;data source=Database1.mdb")
        rs.Open("Select * From tblgas", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'Database1DataSet.tblgas' table. You can move, or remove it, as needed.
        Me.TblgasTableAdapter.Fill(Me.Database1DataSet.tblgas)
        ConnectSerial()
    End Sub

    Private Sub ConnectSerial()
        Try
            SerialPort.BaudRate = 9600
            SerialPort.PortName = "COM5" 'notice how the ports are named? they HAVE to have COM in front of the number
            SerialPort.Open()
        Catch
            SerialPort.Close()
        End Try
    End Sub

    Delegate Sub myMethodDelegate(ByVal [text] As String)
    Dim myD1 As New myMethodDelegate(AddressOf myShowStringMethod)

    Sub myShowStringMethod(ByVal myString As String)
        'display text to our textbox called SerialText
        SerialText.AppendText(myString)
        gastxt.Text = SerialText.Text

    End Sub

    Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
        Dim str As String = SerialPort.ReadExisting()
        Invoke(myD1, str)
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Call connectDB()
        rs.AddNew()
        rs(0).Value = gastxt.Text
        rs(1).Value = TextBox4.Text
        rs(2).Value = TextBox5.Text
        rs.Update()
        con.Close()

        SerialText.Text = " "
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        TextBox5.Text = Format(Now, "dd / MMM / yyyy")
        TextBox4.Text = Format(Now, "HH:mm:ss")

    End Sub

End Class




f. Tampilan Database





g. VIDEO TUTORIAL

    Link = https://www.youtube.com/watch?v=qN3GyEa-efU




h. VIDEO HASILNYA







Membuat Alat Simulasi Matematika Relasi dan Fungsi

Membuat Alat Simulasi Matematika Relasi dan Fungsi


       Pagi yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat peraga untuk guru matematika tentang Relasi dan Fungsi, jadi desain alat seperti gambar diatas yang mana terdapat 4 buah anggota domain dan 16 buah anggota kodomain. ada dua buah led dan dua buah push button. sistem kerjanya seperti berikut.

Konsep Materi Relasi dan Fungsi
•    Relasi dari himpunan domain ke himpunan kodomain adalah aturan yang memasangan anggota himpunan domain dan anggota himpunan kodomain dengan aturan tertentu   

•    Fungsi/pemetaan dari himpunan domain ke himpunan kodomain adalah relasi yang memasangkan setiap anggota himpunan domain dengan tepat satu anggota himpunan kodomain   

Keterangan Alat Peraga
•    Jika tombol fungsi yang ditekan hanya fungsi yang berlaku
•    Jika tombol Relasi yang ditekan hanya relasi yang berlaku
•    Untuk fungsi, jika suatu fungsi maka akan ditunjukkan oleh lampu indikator hijau, dan jika bukan fungsi maka lampu indikator tidak menyala
•    jika suatu Relasi maka akan ditunjukkan oleh lampu indikator merah, dan jika bukan relasimaka lampu indikator tidak menyala
•    Untuk relasi, tidak ada batasan banyaknya kabel dari domain menuju kodomain
•    Untuk fungsi, kabel dari domain menuju kodomain satu kabel yang menuju ke tepat satu menuju kodomain (tunggal)
•    Jika ada domain yang menggunakan lebih dari satu kabel sebagai penghubung dan satu domain dapat menyalakan dua lampu maka hanya disebut sebagai relasi
•    Tanda panah adalah kabel yang menghubungkan sekaligus menunjukkan relasi ataupun fungsi







1. Skema Rangkaian




2. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600

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

Cls
Cursor Off

'adc0 = 1023
'adc1 = 686
'adc2 = 343
'adc3 = 0

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

'led merah
Ddrb.0 = 1
'led hijau
Ddrb.1 = 1

'button merah relasi
Ddrb.2 = 0
'button merah fungsi
Ddrb.3 = 0

Dim Dataadc0 As Word
Dim Dataadc1 As Word
Dim Dataadc2 As Word
Dim Dataadc3 As Word

Set Portb.2
Set Portb.3

Start Adc

Main:

Do
Cls
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 1
Portb.1 = 0

If Pinb.2 = 0 Then
Cls
Goto Relasi

Elseif Pinb.3 = 0 Then
Cls
Goto Fungsi

End If

Loop

Relasi:

Do

Dataadc0 = Getadc(0)
Dataadc1 = Getadc(1)
Dataadc2 = Getadc(2)
Dataadc3 = Getadc(3)

If Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 680 And Dataadc0 < 690 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 340 And Dataadc0 < 500 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 < 10 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 1000 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 340 And Dataadc1 < 500 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 < 10 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 680 And Dataadc2 < 690 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 < 10 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 340 And Dataadc3 < 500 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Setengah Dari"

Elseif Dataadc0 > 1000 And Dataadc1 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Faktor Dari"

Elseif Dataadc3 > 1000 And Dataadc2 > 1000 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Lebih Dari"

Else

Ddrb.0 = 0
Ddrb.1 = 0
Portb.0 = 0
Portb.1 = 0

Upperline
Lcd "SALAH "
Lowerline
Lcd "Bukan Relasi"

End If

If Pinb.3 = 0 Then
Wait 1
Goto Main
End If

Loop

Return

'===============================

Fungsi:

Do

Dataadc0 = Getadc(0)
Dataadc1 = Getadc(1)
Dataadc2 = Getadc(2)
Dataadc3 = Getadc(3)

If Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 1000 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 680 And Dataadc3 < 690 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 1000 And Dataadc2 > 1000 And Dataadc3 > 1000 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 680 And Dataadc0 < 690 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 680 And Dataadc2 < 690 And Dataadc3 > 680 And Dataadc3 < 690 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 340 And Dataadc0 < 500 And Dataadc1 > 340 And Dataadc1 < 500 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 340 And Dataadc3 < 500 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "

Elseif Dataadc0 < 10 And Dataadc1 < 10 And Dataadc2 < 10 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "

Elseif Dataadc0 > 680 And Dataadc0 < 690 And Dataadc1 > 1000 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "

Elseif Dataadc0 < 10 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 1000 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 340 And Dataadc3 < 500 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 340 And Dataadc1 < 500 And Dataadc2 > 680 And Dataadc2 < 690 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Else

Ddrb.0 = 0
Ddrb.1 = 0
Portb.0 = 0
Portb.1 = 0

Upperline
Lcd "BUKAN FUNGSI "

Waitms 200

End If

If Pinb.2 = 0 Then
Wait 1
Goto Main
End If

Loop

Return




3. VIDEO HASILNYA