Translate

Membuat Alat Pendeteksi Warna Dengan TCS3200

Membuat Alat Pendeteksi Warna Dengan TCS3200

          Pada kesempatan ini akan dibahas mengenai bagaimana cara membuat alat yang bisa digunakan untuk mendeteksi warna, alat ini menggunakan sensor warna TCS3200 dengan sensotifitas yang sangat tinggi sehingga bisa untuk mendeteksi warna apapun, mikrokontroller yang digunakan yaitu ATMega16, untuk bentuk alatnya seperti Gambar 6.44a berikut.


           Warna yang akan menjadi contoh untuk dideteksi oleh alat ini yaitu warna merah, biru, hijau, kuning, putih, hitam dan pink, jika mengingi nkan lebih banyak warna dapat ditambahkan lagi dengan mengubah sedikit pada bagian programnya.

Bentuk Sensor Warna TCS3200




Program BASCOM AVR
$regfile = "m16def.dat"

$crystal = 12000000
$hwstack = 40
$swstack = 16
$framesize = 32

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


Cursor Off
' **** inisialisasi penggunaan pin pada sensor warna
Config Portc = Output
Config Portd.6 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.7 = Input
Portd.7 = 1
Outhz Alias Pind.7
S2 Alias Portd.6
S3 Alias Portd.2
S0 Alias Portd.3
S1 Alias Portd.4
Oe Alias Portd.5

'*** inisialisasi frequensi
Dim Tanda1detik As Bit
Dim Frequensi As Word
Dim Fmerah As Word
Dim Fhijau As Word
Dim Fbiru As Word
Dim Fputih As Word

Portc = 255
'inisialisasi penggunaan timer 1/4 detik untuk penghitung frekuensi
Config Timer1 = Timer , Prescale = 256
Const Inisial = &HAE80                          '5740
On Timer1 Timer1_isr              ' timer0 overflow interrupt
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Disable Timer1                    ' aktifkan timer enable Ovf0
Enable Interrupts                 ' aktifkan semua interup

S0 = 0
S1 = 1

Oe = 0


Do
Cls

'*** deteksi putih
S2 = 1
S3 = 0
Frequensi = 0
Tanda1detik = 0
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Enable Timer1
Do
Bitwait Outhz , Set
Bitwait Outhz , Reset
Loop Until Tanda1detik = 1
Disable Timer1                    ' aktifkan timer enable Ovf0

'*** deteksi putih
S2 = 1
S3 = 0
Frequensi = 0
Tanda1detik = 0
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Enable Timer1
Do
Bitwait Outhz , Set
Bitwait Outhz , Reset
Frequensi = Frequensi + 1
Loop Until Tanda1detik = 1
Disable Timer1                    ' aktifkan timer enable Ovf0
Fputih = Frequensi

'*** deteksi merah
S2 = 0
S3 = 0
Frequensi = 0
Tanda1detik = 0
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Enable Timer1
Do
Bitwait Outhz , Set
Bitwait Outhz , Reset
Frequensi = Frequensi + 1
Loop Until Tanda1detik = 1
Disable Timer1                    ' aktifkan timer enable Ovf0
Fmerah = Frequensi

'*** deteksi biru
S2 = 0
S3 = 1
Frequensi = 0
Tanda1detik = 0
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Enable Timer1
Do
Bitwait Outhz , Set
Bitwait Outhz , Reset
Frequensi = Frequensi + 1
Loop Until Tanda1detik = 1
Disable Timer1                     ' aktifkan timer enable Ovf0
Fbiru = Frequensi

'*** deteksi hijau
S2 = 1
S3 = 1
Frequensi = 0
Tanda1detik = 0
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Enable Timer1
Do
Bitwait Outhz , Set
Bitwait Outhz , Reset
Frequensi = Frequensi + 1
Loop Until Tanda1detik = 1
Disable Timer1                     ' aktifkan timer enable Ovf0
Fhijau = Frequensi


'Lcd " R B G W "
Locate 2 , 1
Lcd Fmerah ; " "
Locate 2 , 5
Lcd Fbiru ; " "
Locate 2 , 9
Lcd Fhijau ; " "
Locate 2 , 13
Lcd Fputih ; " "

Locate 1 , 1
'*** Pengujian Bandingkan warna kuning
If Fmerah > 551 And Fmerah < 630 Then
If Fbiru > 221 And Fbiru < 300 Then
If Fhijau > 351 And Fhijau < 450 Then
Lcd "Warna kuning"
End If
End If
End If

If Fmerah > 201 And Fmerah < 320 Then
If Fbiru > 161 And Fbiru < 220 Then
If Fhijau > 251 And Fhijau < 295 Then
Lcd "Warna hijau"
End If
End If
End If

If Fmerah > 350 And Fmerah < 449 Then
If Fbiru > 100 And Fbiru < 160 Then
If Fhijau > 90 And Fhijau < 150 Then
Lcd "Warna merah"
End If
End If
End If

If Fmerah > 750 And Fmerah < 850 Then
If Fbiru > 380 And Fbiru < 459 Then
If Fhijau > 200 And Fhijau < 250 Then
Lcd "Warna Pink"
End If
End If
End If

If Fmerah > 150 And Fmerah < 200 Then
If Fbiru > 460 And Fbiru < 550 Then
If Fhijau > 296 And Fhijau < 350 Then
Lcd "Warna biru"
End If
End If
End If

If Fmerah > 40 And Fmerah < 80 Then
If Fbiru > 40 And Fbiru < 80 Then
If Fhijau > 30 And Fhijau < 80 Then
Lcd "Warna hitam"
End If
End If
End If

If Fmerah > 450 And Fmerah < 550 Then
If Fbiru > 650 And Fbiru < 730 Then
If Fhijau > 451 And Fhijau < 550 Then
Lcd "Warna putih"
End If
End If
End If

Wait 1
Loop
Timer1_isr:                      ' untuk 1 kali interupsi/detik
Tcnt1l = Low(inisial)            ' inisialisasi spt ini
Tcnt1h = High(inisial)
Tanda1detik = 1
Toggle Portc.0
Return

End

         

VIDEO HASILNYA





No comments:

Post a Comment