Powered By Blogger
Tampilkan postingan dengan label BERBAGI ILMU. Tampilkan semua postingan
Tampilkan postingan dengan label BERBAGI ILMU. Tampilkan semua postingan

Minggu, 06 Oktober 2013

ALAT PENDETEKSI KADAR AIR DAGING SAPI BERBASIS MIKROKONTROLER AVR ATMEGA16

Alat pendeteksi kadar air daging dengan menggunakan AVR ATMEGA16 untuk perencanaan programnya. Alat pendeteksi ini menggunakan 2 buah elektroda logam sebagai sensornya dengan. Kemudian tegangan dari elektroda dikuatkan oleh Op-Amp dan diubah ke digital dengan menggunakan ADC internal dari mikrokontroler. Data dari ADC disimpan dan diproses di dalam Mikrokontroler AVR ATMEGA16. Hasilnya ditampilkan dalam bentuk display LCD berupa parameter atau angka tingkat kadar air .


Peralatan :
1.      Sensor Elektroda tembaga atau kuningan yang disterilkan dengan alcohol
2.      Mikrokontroler AT MEGA 16
3.      ADC internal 10 Bit
4.      LCD
5.      Power Supply
6.      Pengkondisi sensor
7.      probe tembaga kemudian pada sisi yang lain arus yang mengalir kita ukur. KADAR AIR mempengaruhi resistansi pada daging. Resistansi ini jika dilewati arus akan mengakibatkan perubahan Mini Power Cuurent injector

Prinsip kerja sitem adalah dengan menginjeksikan arus ke DAGING dengan menggunakan nilai arus terukur.Oleh karena itu dapat menjadi indikasi nilai kadar air normal atau tidak.
Nilai tegangan dari output probe kemudian dimasukkan ke mikrokontroler setelah sebelumnya melalui penguat dan ADC. Selanjutnya mikrokontroler akan mengolah menjadi nilai kadar air. 

Kamis, 03 Oktober 2013

ALAT DETEKSI GEMPA BUMI (EXPERIMENTAL) DENGAN MIKROKONTROLER ATMEGA8535

$regfile = "m8535.dat"
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2

Config Portd.0 = Input
Portd.0 = 0


Dim I As Byte , B As Byte
Dim Sret As String * 66 , Stemp As String * 6
Dim A As Word , Volt As Word , Volt_d As Byte

Config Adc = Single , Prescaler = Auto , Reference = Internal
Declare Sub Tweet()


Start Adc                                                   ' memulai ADC

 Cls
    Cursor Off Noblink
    Lcd "  ALAT DETEKSI  "
    Wait 2
    Lowerline
    Lcd "   GEMPA BUMI   "
    Wait 5

Amplitudo:

Do
Waitms 100
If Volt => 7 Then Gosub Tweet
Waitms 200
Cls
Locate 2 , 1
Lcd "A:"

A = Getadc(1)
Volt = A * 5
Volt_d = Volt Mod 10
Volt = Volt / 20
Locate 2 , 4
Lcd Volt ; "," ; Volt_d
Locate 1 , 2
Lcd "Rata-rata Getar"

Waitms 100

Locate 2 , 15
Lcd "MMI"
Wait 1
Loop

Sub Tweet()
Cls
Portd.0 = 1
Lcd "     BAHAYA     "
Wait 1
Portd.0 = 0
Cls
Wait 1
Lcd "     BAHAYA     "
Portd.0 = 1
Wait 1
Portd.0 = 0
Cls
Portd.0 = 1
Lcd "     BAHAYA     "
Wait 1
Portd.0 = 0
Cls
Wait 1
Lcd "     BAHAYA     "
Portd.0 = 1
Wait 1
Portd.0 = 0
Cls
Goto Amplitudo

End Sub

COS PHI METER BERBASIS AVR ATMEGA 16 DENGAN BASCOM AVR

Seringkali ketika dihadapkan pada pengukuran Faktor daya (co phi) kita mengalami kesulitan ketika membuat cos phi sensor. Salah atu metodenya adalah dengan menggunakan zerro crossing detektor yang kemudian dihubungkan ke pin T0 atau T1 dari Mikrokontroler. Berikut ini adalah listing program dari COS PHI METER




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

Dim S As Single
Dim Y As Word

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2

Config Lcd = 16 * 2

 Cursor Off
 Cls
 Config Timer1 = Counter , Edge = Falling
 Lcd "FAKTOR  DAYA"
 Lowerline
 Lcd "COS Phi=  "                                           '
Do
Start Counter1
Wait 1
Stop Counter1

S = Counter1 / 100

Locate 2 , 10
Lcd Fusing(s , "#.#")


Counter1 = 0
Loop
End

PENGUKUR SUHU DAN KELEMBABAN ATMEGA16 BASCOM AVR





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

Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0

Config Lcd = 16 * 2

 Cursor Off
 Cls
 Lcd "    PENGUKUR    "
 Lowerline
 Lcd "SUHU-KELEMBABAN "
 Wait 2


Deflcdchar 1 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32 ‘      'membuat Karakter Derajat

Dim Dataword As Word
Dim Command As Byte
Dim Calc As Single
Dim Calc2 As Single
Dim Rhlinear As Single
Dim Rhlintemp As Single
Dim Tempc As Single
Dim Tempf As Single
Dim Tempf0 As Single
Dim Ctr As Byte
Dim X As Word
Dim Y As Single
Dim Z As Single
Dim Suhu As String * 10
Dim Suhuf As String * 10
Dim Kelembaban As String * 10




Const C1 = -4
Const C2 = 0.0405
Const C3 = -0.0000028
Const S = .01
Const H = .00008
Sck Alias Portb.0                                           'sck output pada port C.0
Dataout Alias Portb.1                                       'ketika memanggil dataout portc.1 menjadi output
Datain Alias Pinb.1                                         'ketika memanggil datain portc.1 menjadi input

Declare Sub Kirim()

Ddrb = &B11111111                                           'port c sebagai output
Config Pinb.0 = Output
Config Pinb.1 = Output
Wait 1
Set Dataout
For Ctr = 1 To 12
Set Sck
Waitus 2
Reset Sck
Waitus 2
Next Ctr




'================================ MULAI ALATNYA ========================================================


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

Do

Gosub Data_suhu

Waitms 100

   Locate 2 , 1
   Lcd "t:"
   Locate 2 , 3
   Lcd Suhuf ; "F"


   Locate 2 , 9
   Lcd "Rh:"
   Locate 2 , 11
   Lcd Kelembaban ; "%"

  Waitms 100


Loop



Data_suhu:                                                  'sub program untuk mengambil data suhu dan kelembaban dari sht11
Command = &B00000011
Call Kirim                                                  'memanggil fungsi kirim
Tempc = S * Dataword
Tempc = Tempc - 40

Tempf0 = Tempc * 1.8
Tempf = Tempf0 + 32
Suhu = Fusing(tempc , "#.#")
Suhuf = Fusing(tempf , "#.#")                               'mengubah Data Single Menjadi String Dengan 2 Angka Dibelakang Koma
Command = &B00000101
Call Kirim
Calc = C2 * Dataword
Calc2 = Dataword * Dataword
Calc2 = C3 * Calc2
Calc = Calc + C1
Rhlinear = Calc + Calc2
Calc = H * Dataword
Calc = Calc + S
Calc2 = Tempc - 25
Calc = Calc2 * Calc
Rhlintemp = Calc + Rhlinear
Kelembaban = Fusing(rhlintemp , "#.##")
Return

Sub Kirim()
Local Datavalue As Word
Local Databyte As Byte
Set Sck
Reset Dataout
Reset Sck
Set Sck
Set Dataout
Reset Sck
Shiftout Dataout , Sck , Command , 1
Ddrb = &B11111101
Config Pinc.1 = Input
Set Sck
Reset Sck
Waitus 10
Bitwait Pinb.1 , Reset
Shiftin Datain , Sck , Databyte , 1
Datavalue = Databyte
Ddrb = &B11111111
Config Pinb.1 = Output
Reset Dataout
Set Sck
Reset Sck
Ddrb = &B11111101
Config Pinb.1 = Input
Shiftin Datain , Sck , Databyte , 1
Shift Datavalue , Left , 8
Datavalue = Datavalue Or Databyte
Dataword = Datavalue
Ddrb = &B11111111
Config Pinb.1 = Output
Reset Dataout
Set Sck
Reset Sck
Ddrb = &B11111101
Config Pinb.1 = Input
Shiftin Datain , Sck , Databyte , 1
Ddrb = &B11111111
Config Pinb.1 = Output
Set Dataout
Set Sck
Reset Sck
End Sub

MEMBUAT JAM DIGITAL TANPA RTC DENGAN ATMEGA32

Kadangkala kita membutuhkan aplikasi jam digital tanpa menggunakan real time clock untuk pewaktuan-pewaktuan yang tidak membutuhkan presisi tinggi.



Berikut adalah program jam digital tanpa RTC yang dibuat dengan Bascom AVR


$regfile = "m32def.dat"
$crystal = 11059200
$baud = 9600

Config Portd = Input

T_jam Alias Pind.2
T_menit Alias Pind.3
T_set Alias Pind.4

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

 Cursor Off
 Cls
 Lcd "     JAM     "
 Lowerline
 Lcd "   DIGITAL   "
 Wait 2


Dim Pengali As Word
Dim Detik_1 As Byte
Dim Detik As Byte
Dim Menit As Byte
Dim Hari As Byte
Dim Jam As Word


Config Timer0 = Timer , Prescale = 256
Config Debounce = 3

'========================ATUR WAKTU==============================================================================

Set_waktu:
Cls
Cursor Off
Upperline
Lcd "    Atur Jam   "

Waitms 300

Do
Jam_set:

Waitms 300

Locate 2 , 6
Lcd Jam ; " : " ; Menit

If T_jam = 0 Then
Jam = Jam + 1
Waitms 100

Else
If Jam = 24 Then
Jam = 0

Else
If T_set = 0 Then

Waitms 100
Goto Menit_set
Else
Goto Jam_set

End If
End If
End If

Loop


Menit_set:
Cls
Locate 1 , 1
Lcd "   Atur menit   "

Menit_set2:
Do

Waitms 300

Locate 2 , 6
Lcd Jam ; " : " ; Menit

If T_menit = 0 Then
Menit = Menit + 1
Waitms 100

Else
If Menit = 60 Then
Menit = 0

Else
If T_set = 0 Then

Waitms 100
Cls
Goto Mulai
Else
Goto Menit_set2

End If
End If
End If
Loop


'================================ MULAI ALATNYA ========================================================

Mulai:

'pengaktifan interupsi timer
On Ovf0 Int_timer0
'pengaktifan timer0
Enable Timer0

Enable Interrupts

Wait 2

Cls
'========================================================================

Do
Waitms 100

 Locate 1 , 1
   Lcd "T "
   Locate 1 , 3
   Lcd Jam ;
   Locate 1 , 5
   Lcd ":" ;
   Locate 1 , 6
   Lcd Menit ;
   Locate 1 , 8
   Lcd ":" ;
   Locate 1 , 9
   Lcd Detik ;
Wait 1
Loop


Int_timer0:
   Incr Pengali
   If Pengali > 0 Then
      Pengali = 0
      Incr Detik_1
   End If
   If Detik_1 > 99 Then
      Detik_1 = 0
      Incr Detik
   End If
   If Detik > 59 Then
      Detik = 0
      Incr Menit
   End If
   If Menit > 59 Then
      Menit = 0
      Incr Jam
   End If

   If Jam > 24 Then
   Jam = 0
      Incr Hari
   End If
Return