Translate

Membuat Alat Pengukur Intensitas Cahaya Menggunakan Sensor LDR dan Penyimpanan EEPROM

Membuat Alat Pengukur Intensitas Cahaya Menggunakan Sensor LDR dan Penyimpanan EEPROM


            Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk mengukur intensitas cahaya, sebenarnya alat ini tidak digunakan untuk cahaya lampu atau matahari melainkan untuk mengukur pantulan cahaya akibat gelas ukur, sehingga akan terlihat level kekeruhan air dari air yang terdapat didalam gelas tersebut. jika telah diketahui nilai tegangannya maka dimasukkan ke dalam rumus agar menjadi seperti Turbidimeter sesungguhnya. untuk lebih jelasnya berikut skema dan programnya.



 a. Minimum System




 b. Sensor LDR





c. Program Bascom AVR

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

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , 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

Dim Dataadc As Word
Dim Dataadc1 As Word
Dim Dataadc2 As Word
Dim Dataadc3 As Word

Dim Simpan1 As Eram Single
Dim Simpan2 As Eram Single
Dim Simpan3 As Eram Single
Dim Simpan4 As Eram Single
Dim Simpan5 As Eram Single
Dim Simpan6 As Eram Single
Dim Simpan7 As Eram Single
Dim Simpan8 As Eram Single
Dim Simpan9 As Eram Single
Dim Simpan10 As Eram Single

Dim W As Integer

Dim Tampil1 As Single
Dim Tampil2 As Single
Dim Tampil3 As Single
Dim Tampil4 As Single
Dim Tampil5 As Single
Dim Tampil6 As Single
Dim Tampil7 As Single
Dim Tampil8 As Single
Dim Tampil9 As Single
Dim Tampil10 As Single


Dim Teg1 As Single
Dim Teg2 As Single
Dim Teg3 As Single
Dim Teg4 As Single

Dim Z1 As Single
Dim Z2 As Single
Dim Z3 As Single
Dim Z4 As Single
Dim N As Integer

Dim Z As Single
Dim T As Single

'tombol start
Ddrb.2 = 0
Set Portb.2

'tombol reset
Ddrb.1 = 0
Set Portb.1

'tombol save
Ddrb.0 = 0
Set Portb.0

N = 1

Cls
Cursor Off

Start Adc

Simpan1 = 0
Simpan2 = 0
Simpan3 = 0
Simpan4 = 0
Simpan5 = 0
Simpan6 = 0
Simpan7 = 0
Simpan8 = 0
Simpan9 = 0
Simpan10 = 0

Main:

Wait 1

Do

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

Teg1 = Dataadc * 5
Teg1 = Teg1 / 1023

Teg2 = Dataadc1 * 5
Teg2 = Teg2 / 1023

Teg3 = Dataadc2 * 5
Teg3 = Teg3 / 1023

Teg4 = Dataadc3 * 5
Teg4 = Teg4 / 1023

Z1 = 1 * Teg4
Z2 = 1 * Teg3
Z3 = 1 * Teg1
Z4 = 1 * Teg2

Z = Z1 + Z2
Z = Z + Z3
Z = Z + Z4

T = Teg2 / Z


If Pinb.1 = 0 Then
Waitms 200
Goto Tampil
End If


Locate 1 , 1
Lcd Fusing(teg1 , "#.##") ; "  " ; Fusing(teg2 , "#.##")

Locate 1 , 12
Lcd Fusing(t , "#.##")


Locate 2 , 1
Lcd Fusing(teg3 , "#.##") ; "  " ; Fusing(teg4 , "#.##")


If Pinb.0 = 0 And N > 10 Then
Waitms 200
N = 1
End If


If Pinb.0 = 0 And N = 1 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 1"
Lowerline
Lcd T
Wait 3

Simpan1 = T

Elseif Pinb.0 = 0 And N = 2 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 2"
Lowerline
Lcd T

Wait 3

Simpan2 = T

Elseif Pinb.0 = 0 And N = 3 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 3"
Lowerline
Lcd T

Wait 3

Simpan3 = T

Elseif Pinb.0 = 0 And N = 4 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 4"
Lowerline
Lcd T

Wait 3

Simpan4 = T

Elseif Pinb.0 = 0 And N = 5 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 5"
Lowerline
Lcd T

Wait 3

Simpan5 = T

Elseif Pinb.0 = 0 And N = 6 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 6"
Lowerline
Lcd T

Wait 3

Simpan6 = T

Elseif Pinb.0 = 0 And N = 7 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 7"
Lowerline
Lcd T

Wait 3

Simpan7 = T

Elseif Pinb.0 = 0 And N = 8 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 8"
Lowerline
Lcd T

Wait 3

Simpan8 = T

Elseif Pinb.0 = 0 And N = 9 Then
Waitms 200
Incr N

Cls
Upperline
Lcd "Save data 9"
Lowerline
Lcd T

Wait 3

Simpan9 = T

Elseif Pinb.0 = 0 And N = 10 Then
Waitms 200

Incr N

Cls
Upperline
Lcd "Save data 10"
Lowerline
Lcd T

Wait 3

Simpan10 = T

End If

Waitms 200
Cls

Loop

Tampil:
Cls

W = 1

Wait 3

Do

If Pinb.0 = 0 Then
Waitms 200
Incr W
End If

If Pinb.2 = 0 Then
Waitms 200
Decr W
End If


If W = 1 Then
Cls
Tampil1 = Simpan1
Upperline
Lcd "Data ke " ; W
Lowerline
Lcd Tampil1
Waitms 500

Elseif W = 2 Then
Cls
Tampil2 = Simpan2
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil2
Waitms 500

Elseif W = 3 Then
Cls
Tampil3 = Simpan3
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil3
Waitms 500

Elseif W = 4 Then
Cls
Tampil4 = Simpan4
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil4
Waitms 500

Elseif W = 5 Then
Cls
Tampil5 = Simpan5
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil5
Waitms 500

Elseif W = 6 Then
Cls
Tampil6 = Simpan6
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil6
Waitms 500

Elseif W = 7 Then
Cls
Tampil7 = Simpan7
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil7
Waitms 500

Elseif W = 8 Then
Cls
Tampil8 = Simpan8
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil8
Waitms 500

Elseif W = 9 Then
Cls
Tampil9 = Simpan9
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil9
Waitms 500

Elseif W = 10 Then
Cls
Tampil10 = Simpan10
Upperline
Lcd "Data ke " ; W

Lowerline
Lcd Tampil10
Waitms 500

End If


If Pinb.1 = 0 Then
Waitms 200
Cls
Goto Main
End If

If W > 10 Then
W = 1
End If

If W < 1 Then
W = 10
End If

Loop




d. Cara Penggunaan Alat

           Cara penggunaan alat ini yaitu pertama hubungkan power supply 12 volt ke minimum system, kemudian hubungkan rangkaian LDR ke port ADC mikrokontroller, setelah itu akan terlihat nilai intensitas cahayanya di LCD display. terdapat rumus yang digunakan untuk mengukur tingkat kekeruhan air, nilai tersebut bisa disimpan sebanyak 10 kali. jadi tiap pengukuran bisa disimpan ke eeprom dengan menggunakan tombol save. untuk melihat data yang disimpan tekan tombol tampil.  









 

Membuat Timbangan Digital Menggunakan IC AD620

Membuat Timbangan Digital Menggunakan IC AD620


          Pada kesempatan berbahagia kali ini saya akan menjelaskan mengenai eksperiment terbaru saya dengan ditemani hujan lebat yang mengguyur deras di luar sana. Materi yang akan dibahas yaitu membuat timbangan digital menggunakan mikrokontroller. Seperti yang telah diketahui bahwa rangkaian pengkondisi sinyal atau PSA bisa bermacam-macam, ada yang menggunakan IC INA114 ada yang menggunakan HX711 dan ada pula yang menggunakan IC AD620.  Pada halaman ini sengaja saya akan menjelaskan mengenai opsi yang ketiga yaitu menggunakan IC AD620. timbangan yang digunakan bisa bermacam-macam, bisa loadcell 5Kg, 10Kg atau 200Kg pun bisa. untuk lebih jelasnya berikut adalah skema dan programnya.



a. Minimum System




b. Load Cell  5 Kg




c. Rangkaian PSA AD620 ( Amplifier )




d. 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

Dim Dataadc As Word

Cls
Cursor Off

Start Adc

Do

Dataadc = Getadc(0)

Upperline
Lcd "ADC = " ; Dataadc

Waitms 100

Loop



 
e. Cara Penggunaan Alat

            Cara menggunakan alat ini yaitu pertama hubungkan power supply 12 volt ke minimum system, kemudian hubungkan rangkaian amplifier AD620 ke port ADC0, setelah itu jika berhasil maka akan tampak nilai dari load cellnya pada LCD. berikan beban pada load cell secara bertahap dan bervariasi, maka akan tampak variasi output adc saat beban bervariasi. untuk kalibrasi timbangan agar nilai ADC menjadi nilai Kg, gr, atau mg. silahkan buka link berikut ini dan sesuaikan parameter yang digunakan, dan harus menggunakan kalibrator yang akurat dan terkalibrasi.












Cara Mengakses Sensor Humidity / kelembaban dan Suhu / temperature SHT11 Dengan Bascom AVR

Cara Mengakses Sensor Humidity / kelembaban dan Suhu SHT11 Dengan Bascom AVR


         Pada kesempatan yang berbahagia kali ini saya akan menjelaskan tentang sensor yang sangat bagus dipakai untuk pendeteksi suhu dan kelembapan, yaitu SHT11. sensor ini memang agak mahal dibanding sensor suhu - kelembaban pada umumnya namun akurasi dan sensitifitasnya sangat baik dan biasanya untuk alat-alat industri memakai sensor ini. Output sensor ini tidak berupa tegangan melainkan sebuah pulsa dan angka, sehingga cara mengaksesnya tidak lagi menggunakan ADC namun menggunakan port I/O. untuk lebih jelasnya berikut program dan skemanya.



a. Minimum System




b. Sensor SHT11 ( suhu dan kelembaban )




c. Program Bascom AVR

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

    Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4
    Config Lcdpin = Pin , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
    Config Lcd = 16 * 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 Ctr As Byte
    Dim X As Word
    Dim Y As Single
    Dim Z As Single
    Dim Suhu As String * 10
    Dim Kelembaban As String * 10
    Dim Tekanan As String * 10

    Const C1 = -4
    Const C2 = 0.0405
    Const C3 = -0.0000028
    Const S = .01
    Const H = .00008

    'sck output pada port C.0
    Sck Alias Portc.0
    Dataout Alias Portc.1

    Datain Alias Pinc.1
    Declare Sub Kirim()
    Ddrc = &B11111111

    Config Pinc.0 = Output
    Config Pinc.1 = Output
    Wait 1

    Set Dataout
    For Ctr = 1 To 12
    Set Sck
    Waitus 2
    Reset Sck
    Waitus 2
    Next Ctr

    'main program
    Do

    Gosub Data_suhu
    Print "Data suhu: " ; Suhu
    Print "Data kelembaban: " ; Kelembaban
    Waitms 200
    Gosub Tampil

    Loop

    Tampil:
    Cls
    Cursor Off

    Upperline
    Lcd "Suhu= " ; Suhu ; " " ; Chr(1) ; "C"
    Lowerline
    Lcd "Rh  = " ; Kelembaban ; " " ; "%"
    Wait 1

    Return

    Data_suhu:
    Command = &B00000011

    Call Kirim

    Tempc = S * Dataword
    Tempc = Tempc - 40
    Suhu = Fusing(tempc , "#.##")
    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
    Ddrc = &B11111101
    Config Pinc.1 = Input
    Set Sck
    Reset Sck
    Waitus 10
    Bitwait Pinc.1 , Reset
    Shiftin Datain , Sck , Databyte , 1
    Datavalue = Databyte
    Ddrc = &B11111111
    Config Pinc.1 = Output
    Reset Dataout
    Set Sck
    Reset Sck
    Ddrc = &B11111101
    Config Pinc.1 = Input
    Shiftin Datain , Sck , Databyte , 1
    Shift Datavalue , Left , 8
    Datavalue = Datavalue Or Databyte
    Dataword = Datavalue
    Ddrc = &B11111111

    Config Pinc.1 = Output
    Reset Dataout
    Set Sck
    Reset Sck
    Ddrc = &B11111101
    Config Pinc.1 = Input
    Shiftin Datain , Sck , Databyte , 1
    Ddrc = &B11111111
    Config Pinc.1 = Output
    Set Dataout
    Set Sck
    Reset Sck
    End Sub
    End



d. Cara Penggunaan Alat

           Untuk menggunakan alat ini langkah pertama yaitu hubungkan supply 12 volt ke minimum system, kemudian akan tertera nilai suhu dan kelembaban dari sensor, sebelumnya pastikan dulu port yang dipakai untuk SDA-SCL adalah benar yaitu SCK di PortC.0 dan Dout di PortC.1. jika sudah benar maka akan terlihat nilainya di LCD display. Untuk melihat via komputer bisa menggunakan kabel RS232 dan software Hyperterminal.











Mengakses Sensor Humidity / Kelembaban 808H5V6 Menggunakan Mikrokontroller

Mengakses Sensor Humidity / Kelembaban 808H5V6 Menggunakan Mikrokontroller


         Kali ini saya akan menceritakan mengenai bagaimana cara mengakses sensor kelembaban yang sudah sangat umum digunakan karena outputnya berupa tegangan analog, sensor tersebut yaitu buatan sencera.co. Ltd dengan nama 808H5V6, sensor ini sangat bagus sekali jika digunakan karena outputnya yang linear dan sangat sensitif terhadap kondisi.memang harga sensor ini lumayan mahal karena fitur yang diberikan juga bagus dan akurasi yang maksimal. untuk lebih jelasnya berikut adalah skema dan programnya. 



Spesifikasi :






a. Minimum System




b. Sensor Humidity 808H5V6




c. Cara Kalibrasi Sensor

- Dari datasheet didapat data berikut

      VOUT      Humidity

0 3
0.25 10
0.72 20
0.93 30
1.24 40
1.55 50
1.85 60
2.15 70
2.43 80
2.75 90
2.95 100



- masukkan rumusnya Y = 32.86x + 0.025



d. 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

Dim Dataadc As Word
Dim Volt As Single
Dim Hum As Single

Cls
Cursor Off

Start Adc

Do

Dataadc = Getadc(0)

Volt = Dataadc * 5
Volt = Volt / 1023

Hum = 32.86 * Volt
Hum = Hum + 0.025

Upperline
Lcd "Hum = " ; Fusing(hum , "#.##") ; "  %"

Waitms 100

Loop



e. Cara Penggunaan Alat

          Hubungkan supply 12 volt ke rangkaian, kemudian hubungkan sensor dengan mikrokontroller, jika sudah tampak hasilnya di LCD maka coba dipanaskan, jika semakin panas maka output sensor akan rendah karena berbanding terbalik dengan output sensor suhu.









Membuat UPS ( alat pengaman saat listrik PLN padam ) menggunakan aki dan auto charge

Membuat UPS ( alat pengaman saat listrik PLN padam ) menggunakan aki dan auto charge 


               Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk pengaman suatu sistem, pengaman ini akan berkerja jika listrik PLN padam, jadi saat listrik PLN padam, alat ini akan meng-cover suplai daya untuk alat, karena alat ini dilengkapai dengan sebuah aki yang mana akan menggantikan posisi listrik pln sementara. Tidak hanya itu, alat ini juga mendeteksi kondisi aki, jika aki kososng maka akan dilakukan charge otomatis, ketika sudah penuh, maka alat akan melakukan stop charge otomatis. Sebagai kontrol dan pembaca tegangan digunakan mikrokontroller ATMega8. untuk lebih jelasnya berikut adalah program dan skemanya.



a. Minimum System




b. Skema System Pengaman


Ralat:
Untuk R2 nilainya 20K dan R3 nilainya 10K 
TRIAC menggunakan BTA12



c. Program Bascom AVR

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

Config Adc = Single , Prescaler = Auto
Start Adc

Dim X As Word , Y As Single , Y1 As Single , Y2 As Single , A As Single
Dim Vol1 As String * 8

Ddrd.2 = 1  'led hijau
Ddrd.3 = 1  'led merah
Ddrd.4 = 1  'switch TRIAC

Do

 X = Getadc(0)
 Y1 = X * 1465969
 Y2 = Y1 / 100000000
 A = 314108 / 100000000
 Y = Y2 + A
 Vol1 = Fusing(y , "#.##")

If Y > 10 Then
Portd.2 = 1
Portd.3 = 0
Portd.4 = 1
Else
Portd.2 = 0
Portd.3 = 1
Portd.4 = 0
End If

Loop




 d. VIDEO HASILNYA








Membuat Alat Pengukur Jarak / Tinggi dan Berat Menggunakan Output Suara

Membuat Alat Pengukur Jarak / Tinggi dan Berat Menggunakan Output Suara


           Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana membuat alat untuk mengukur tinggi atau jarak dan berat badan dengan output suara, alat ini sebenarnya diperuntukkan bagi tuna netra yang ingin mengukur berat dan dan tinggi tubuhnya, karena jika menggunakan tampilan  display tidak bisa terbaca maka harus menggunakan suara. Alat ini menggunakan beberapa komponen utama yaitu LCD 16x4, loadcell 200kg, modul perekam suara ISD1420, sensor jarak PING dan minimum system ATMega8535. untuk lebih jelasnya berikut program dan skemanya.


Register input suara
0 - se
10 - satu
20 - dua
30 - tiga
40 - empat
50 - lima
60 - enam
70 - tujuh
80 - delapan
90 - sembilan
100 - ratus
110 - puluh
120 - belas
130 - berat
140 - tinggi
150 - kilogram



a. Minimum System




b. Sensor Jarak PING)))




c. Sensor Berat ( Load Cell )




d. Modul Record Suara ISD1420





e. Driver Relay 5v





f. Program Bascom AVR ( ISI REGISTER ISD1420 )

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

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 * 4

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

Config Timer1 = Timer , Prescale = 64

Sigout Alias Portc.7
Sigin Alias Pinc.7
Dirsig Alias Ddrc.7
Dim Data_timer As Integer

Dim Ratusan As Integer
Dim Puluhan As Integer
Dim Satuan As Integer
Dim Temp As Integer

Dim Ratusan1 As Integer
Dim Puluhan1 As Integer
Dim Satuan1 As Integer
Dim Temp1 As Integer

Dim Dataadc As Word
Dim A As Integer
A = 0

Ddrd = &B11111111
Ddrb = &B00000000
Portb = &B11111111

Cls
Cursor Off

Start Adc

Do

Dataadc = Getadc(0)

Portd = A

Locate 1 , 1
Lcd "Berat = " ; Dataadc ; " kg"

Locate 2 , 1
Lcd "Tinggi = " ; Data_timer ; " cm"

Locate 3 , 1
Lcd "Reg = " ; A

If Pinb.0 = 0 Then
Waitms 200
A = A + 10

Elseif Pinb.1 = 0 Then
Waitms 200
A = A - 10

Elseif Pinb.2 = 0 Then
Waitms 200

End If

Gosub Ambil_datatimer
Data_timer = Data_timer / 10

Waitms 100

Loop

Ambil_datatimer:
Dirsig = 1
Set Sigout                                                
Waitus 10
Reset Sigout
                    
Dirsig = 0                                               
Set Sigout                                           
Bitwait Sigin , Set
Data_timer = 0
Timer1 = 0
Start Timer1
Do
If Sigin = 0 Then
Data_timer = Timer1
Stop Timer1
Exit Do
End If
If Tifr.2 = 1 Then                                   
Stop Timer1
Tifr.2 = 1
Data_timer = 0
Exit Do
End If
Loop
Stop Timer1
Return



g. Program Bascom AVR ( Output Suara )

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

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 * 4

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

Config Timer1 = Timer , Prescale = 64

Declare Sub Regratusan
Declare Sub Regpuluhan
Declare Sub Regsatuan
Declare Sub Belakang

Sigout Alias Portc.7
Sigin Alias Pinc.7
Dirsig Alias Ddrc.7
Dim Data_timer As Integer

Dim Ratusan As Integer
Dim Puluhan As Integer
Dim Satuan As Integer
Dim Temp As Integer

Dim Ratusan1 As Integer
Dim Puluhan1 As Integer
Dim Satuan1 As Integer
Dim Temp1 As Integer

Dim Dataadc As Word
Dim A As Integer
Dim X As Integer
A = 0
X = 350

Ddrb.3 = 1

Ddrd = &B11111111

Cls
Cursor Off

Start Adc

Do

Dataadc = Getadc(0)

Locate 1 , 1
Lcd "Berat = " ; Dataadc ; " kg"

Locate 2 , 1
Lcd "Tinggi = " ; Data_timer ; " cm"

Gosub Ambil_datatimer
Data_timer = Data_timer / 10

Waitms 100

Temp = Dataadc
'Mencari angka Ratusan
Ratusan = Temp / 100
'Mencari angka Puluhan
Temp = Temp Mod 100
Puluhan = Temp / 10
'Mencari angka Satuan
Satuan = Temp Mod 10

Temp1 = Data_timer
'Mencari angka Ratusan
Ratusan1 = Temp1 / 100
'Mencari angka Puluhan
Temp1 = Temp1 Mod 100
Puluhan1 = Temp1 / 10
'Mencari angka Satuan
Satuan1 = Temp1 Mod 10

Portd = 130
Portb.3 = 0
Waitms x
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

If Ratusan = 1 Then
A = 0
Call Regratusan

Elseif Ratusan = 2 Then
A = 20
Call Regratusan

Elseif Ratusan = 3 Then
A = 30
Call Regratusan

Elseif Ratusan = 4 Then
A = 40
Call Regratusan

Elseif Ratusan = 5 Then
A = 50
Call Regratusan

Elseif Ratusan = 6 Then
A = 60
Call Regratusan

Elseif Ratusan = 7 Then
A = 70
Call Regratusan

Elseif Ratusan = 8 Then
A = 80
Call Regratusan

Elseif Ratusan = 9 Then
A = 90
Call Regratusan

End If

If Puluhan = 1 And Satuan = 1 Then
Portd = 0
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Portd = 120
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Elseif Puluhan = 1 And Satuan = 0 Then
Portd = 0
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Portd = 110
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Elseif Puluhan = 2 Then
A = 20
Call Regpuluhan

Elseif Puluhan = 3 Then
A = 30
Call Regpuluhan

Elseif Puluhan = 4 Then
A = 40
Call Regpuluhan

Elseif Puluhan = 5 Then
A = 50
Call Regpuluhan

Elseif Puluhan = 6 Then
A = 60
Call Regpuluhan

Elseif Puluhan = 7 Then
A = 70
Call Regpuluhan

Elseif Puluhan = 8 Then
A = 80
Call Regpuluhan

Elseif Puluhan = 9 Then
A = 90
Call Regpuluhan

End If

If Satuan = 1 And Puluhan <> 1 Then
A = 10
Call Regsatuan

Elseif Satuan = 2 Then
A = 20
Call Regsatuan

Elseif Satuan = 3 Then
A = 30
Call Regsatuan

Elseif Satuan = 4 Then
A = 40
Call Regsatuan

Elseif Satuan = 5 Then
A = 50
Call Regsatuan

Elseif Satuan = 6 Then
A = 60
Call Regsatuan

Elseif Satuan = 7 Then
A = 70
Call Regsatuan

Elseif Satuan = 8 Then
A = 80
Call Regsatuan

Elseif Satuan = 9 Then
A = 90
Call Regsatuan

End If

If Puluhan = 1 And Satuan <> 0 And Satuan <> 1 Then
Portd = 120
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X
End If

Portd = 150
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Waitms 500

Portd = 140
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

If Ratusan1 = 1 Then
A = 0
Call Regratusan

Elseif Ratusan1 = 2 Then
A = 20
Call Regratusan

Elseif Ratusan1 = 3 Then
A = 30
Call Regratusan

Elseif Ratusan1 = 4 Then
A = 40
Call Regratusan

Elseif Ratusan1 = 5 Then
A = 50
Call Regratusan

Elseif Ratusan1 = 6 Then
A = 60
Call Regratusan

Elseif Ratusan1 = 7 Then
A = 70
Call Regratusan

Elseif Ratusan1 = 8 Then
A = 80
Call Regratusan

Elseif Ratusan1 = 9 Then
A = 90
Call Regratusan


End If

If Puluhan1 = 1 And Satuan1 = 1 Then
Portd = 0
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Portd = 120
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Elseif Puluhan1 = 1 And Satuan1 = 0 Then
Portd = 0
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Portd = 110
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Elseif Puluhan1 = 2 Then
A = 20
Call Regpuluhan

Elseif Puluhan1 = 3 Then
A = 30
Call Regpuluhan

Elseif Puluhan1 = 4 Then
A = 40
Call Regpuluhan

Elseif Puluhan1 = 5 Then
A = 50
Call Regpuluhan

Elseif Puluhan1 = 6 Then
A = 60
Call Regpuluhan

Elseif Puluhan1 = 7 Then
A = 70
Call Regpuluhan

Elseif Puluhan1 = 8 Then
A = 80
Call Regpuluhan

Elseif Puluhan1 = 9 Then
A = 90
Call Regpuluhan

End If

If Satuan1 = 1 And Puluhan1 <> 1 Then
A = 10
Call Regsatuan

Elseif Satuan1 = 2 Then
A = 20
Call Regsatuan

Elseif Satuan1 = 3 Then
A = 30
Call Regsatuan

Elseif Satuan1 = 4 Then
A = 40
Call Regsatuan

Elseif Satuan1 = 5 Then
A = 50
Call Regsatuan

Elseif Satuan1 = 6 Then
A = 60
Call Regsatuan

Elseif Satuan1 = 7 Then
A = 70
Call Regsatuan

Elseif Satuan1 = 8 Then
A = 80
Call Regsatuan

Elseif Satuan1 = 9 Then
A = 90
Call Regsatuan

End If

If Puluhan1 = 1 And Satuan1 <> 0 And Satuan1 <> 1 Then
Portd = 120
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X
End If

Loop

Ambil_datatimer:
Dirsig = 1
Set Sigout                                                
Waitus 10
Reset Sigout
                   
Dirsig = 0                                                
Set Sigout                                                
Bitwait Sigin , Set
Data_timer = 0
Timer1 = 0
Start Timer1
Do
If Sigin = 0 Then
Data_timer = Timer1
Stop Timer1
Exit Do
End If
If Tifr.2 = 1 Then                                        
Stop Timer1
Tifr.2 = 1
Data_timer = 0
Exit Do
End If
Loop
Stop Timer1
Return

Sub Regratusan:
Portd = A
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Portd = 100
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

End Sub
Return

Sub Regpuluhan:

Portd = A
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

Portd = 110
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

End Sub
Return

Sub Regsatuan:
Portd = A
Portb.3 = 0
Waitms X
Portb.3 = 1
Waitms X
Portb.3 = 0
Waitms X

End Sub
Return



h. VIDEO HASILNYA








Membuat Alat Simulasi Perimetri ( Pendeteksi Kondisi Mata ) Menggunakan Motor Stepper dan Led

Membuat Alat Simulasi Perimetri ( Pendeteksi Kondisi Mata )  Menggunakan Motor Stepper dan Led


          Kali ini akan dibahas mengenai bagaimana cara membuat alat yang digunakan untuk mengecek kondisi mata, atau nama lainya perimetri, alat ini bisa mengecek kondisi mata apakah mata pasien nomal atau tidak. Komponen utama perimetri ini adalah motor stepper dan led, jadi prinsip kerjanya yaitu pasien akan melihat led yang akan menyala bergantian, jika pasien mulai melihat nyala led menyala maka harus menekan tombol, setelah tombol ditekan maka motor stepper akan aktif dan bergerak dengan sudut 15 derajat, step by step hingga 360 derajat. jika semua step pada motor sudah terpenuhi maka akan terlihat hasilnya. di contoh ini ada 7 step dengan led diwakili oleh upcounter pada LCD display. berikut program dan skemanya.



a. Minimum System




b. Motor Stepper + Driver L298





c. Program Bascom AVR

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

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

Cls
Cursor Off

Dim A As Integer

Dim Simpansudut1 As Integer
Dim Simpan1 As Integer
Dim Simpansudut2 As Integer
Dim Simpan2 As Integer
Dim Simpansudut3 As Integer
Dim Simpan3 As Integer
Dim Simpansudut4 As Integer
Dim Simpan4 As Integer
Dim Simpansudut5 As Integer
Dim Simpan5 As Integer
Dim Simpansudut6 As Integer
Dim Simpan6 As Integer
Dim Simpansudut7 As Integer
Dim Simpan7 As Integer
Dim N As Integer
Dim Y As Integer
Dim C As Integer
Dim V As String * 20
N = 1
A = 0

Ddrb = &B11111111
Ddrd = &B11111111

'up
Ddrc.4 = 0
Set Portc.4

'enter
Ddrc.6 = 0
Set Portc.6

'interupsi
Ddrc.7 = 0
Set Portc.7


Upperline
Lcd "Selamat Datang"
Wait 3
Cls

Main:

N = 1
Simpansudut1 = 0
Simpan1 = 0
Simpansudut2 = 0
Simpan2 = 0
Simpansudut3 = 0
Simpan3 = 0
Simpansudut4 = 0
Simpan4 = 0
Simpansudut5 = 0
Simpan5 = 0
Simpansudut6 = 0
Simpan6 = 0
Simpansudut7 = 0
Simpan7 = 0

Cls
Do

Locate 1 , 4
Lcd "PILIH MATA"
Lowerline
Lcd "Kiri" ; "       " ; "Kanan"

If Pinc.4 = 0 Then
Waitms 200
Cls
Upperline
Lcd "Mata Kiri"
Wait 3
Goto Matakiri

Elseif Pinc.6 = 0 Then
Waitms 200
Cls
Upperline
Lcd "Mata Kanan"
Wait 3
Goto Matakanan

End If

Loop


Matakiri:

C = 1
Wait 1

Cls

Do

Locate 1 , 1
Lcd "LED ke " ; A
Locate 2 , 1
Lcd "Mata kiri" ; "  " ; N
Incr A

Waitms 500

If Pinc.7 = 0 And N = 1 Then
Waitms 200
Incr N
A = 0
Simpansudut1 = N
Simpan1 = A
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 2 Then
Waitms 200
Simpansudut2 = N
Simpan2 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 3 Then
Waitms 200
Simpansudut3 = N
Simpan3 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 4 Then
Waitms 200
Simpansudut4 = N
Simpan4 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 5 Then
Waitms 200
Simpansudut5 = N
Simpan5 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 6 Then
Waitms 200
Simpansudut6 = N
Simpan6 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 7 Then
Waitms 200
Simpansudut7 = N
Simpan7 = A
Incr N
Cls
Goto Gerak

End If

If A > 100 Then
Incr N
A = 0
Cls
Goto Gerak
End If

If N = 8 Then
Cls
Goto Hasil
End If

Loop


Matakanan:
C = 2
Wait 1

Cls

Do

Locate 1 , 1
Lcd "LED ke " ; A
Locate 2 , 1
Lcd "Mata kanan" ; "  " ; N
Incr A

Waitms 500

If Pinc.7 = 0 And N = 1 Then
Waitms 200
Incr N
A = 0
Simpansudut1 = N
Simpan1 = A
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 2 Then
Waitms 200
Simpansudut2 = N
Simpan2 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 3 Then
Waitms 200
Simpansudut3 = N
Simpan3 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 4 Then
Waitms 200
Simpansudut4 = N
Simpan4 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 5 Then
Waitms 200
Simpansudut5 = N
Simpan5 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 6 Then
Waitms 200
Simpansudut6 = N
Simpan6 = A
Incr N
Cls
Goto Gerak

Elseif Pinc.7 = 0 And N = 7 Then
Waitms 200
Simpansudut7 = N
Simpan7 = A
Incr N
Cls
Goto Gerak

End If

If A > 100 Then
Incr N
A = 0
Cls
Goto Gerak
End If

If N = 8 Then
Cls
Goto Hasil
End If

Loop


Gerak:
Y = 0
Do
Portb = &B00000001
Waitms 10
Portb = &B00000010
Waitms 10
Portb = &B00000100
Waitms 10
Portb = &B00001000
Waitms 10

Incr Y

Loop Until Y = 7
Y = 0
A = 0


If N = 8 Then
Goto Hasil
End If

If C = 1 Then
Goto Matakiri
Elseif C = 2 Then
Goto Matakanan
End If

Return


Hasil:
Cls

Do

If Simpan1 > 20 Or Simpan2 > 20 Or Simpan3 > 20 Or Simpan4 > 20 Or Simpan5 > 20 Or Simpan6 > 20 Or Simpan7 > 20 Then
V = "MATA TDK NORMAL"
Else
V = "MATA NORMAL"

End If

Locate 1 , 5
Lcd "Hasil"
Lowerline
Lcd V

Wait 10

Goto Main

Loop



d. Penggunaan Alat

              Pertama hubungkan alat dengan supply, dan pastikan push button sesuai di portnya dan juga LCD display terpasang pada port sesuai program, jika semua telah terpasang maka akan terlihat up counter pada LCD, tekan tombol interupsi, maka akan otomatis memutar stepper dan menyimpan data posisi lednya, jika ada posisi led lebih dari 20 maka mata dianggap tidak normal.