Minggu, 20 September 2015

ATtiny2313 Capacitive Touch Switch Sebagai Kunci Rahasia Sepeda Motor

Lama sekali tidak menulis dan berbagi masalah elektronika.
Kali ini saya berbagi masalah kunci rahasia yang saya gunakan di motor baru saya. Banyak project - project mengenai masalah kunci rahasia untuk kendaraan, tapi saya ingin membuat sendiri lain dari yang sudah ada. Kalau umumnya kunci rahasia berupa saklar sentuh / touch switch, magnetic switch, kode lampu dan lain-lain. Khusus saklar sentuh umumnya harus ada metal yang harus di sentuh, lain halnya project yang saya berikan justru bidang sentuh berada di balik plastik body kendaraan.



Dengan menyentuh body plastic yang dirahasiakan, maka relay akan 'ON'. Berikut adalah schematic rangkaian yang saya buat untuk kendaraan saya:


Rangkaian bekerja sesaat setelah power supply 12volt dari kunci contact kendaraan diaktifkan. Buzer atau lampu akan menyala 3x setelah itu saya harus menyentuh bidang sentuh yang dirahasiakan untuk mengunci relay, setelah itu kendaraan baru bisa di start. Jika saya telat menyentuh, artinya saya tidak ada kesempatan lagi untuk mengaktifkan relay, jalan satu-satunya harus mematikan rangkaian melalui kunci kontak. Jadi penyentuhan touch switch memang saya buat demikian supaya hanya saya yang tahu :D :D :D. Untuk variasi penghubungan contact point relay bisa mengacu project-project yang di bagi di internet.

IC ATtiny2313 harus diprogram / diisi dulu supaya bisa bekerja sesuai dengan fungsi diatas. Berikut adalah data flash yang dimasukkan di chip attiny2313 (copy ke notepad dan di save sebagai namefile.hex):

:020000020000FC
:100000000FED0DBF00E601BF8E9A96988D9A9598D8
:10001000A0980AE0002E23D005E0502E1AD05A9462
:10002000E9F777D016D06BD010D073D00ED071D046
:100030000CD06FD06ED06DD016D0A09901C0FFCF7C
:10004000969A959A66D09698FFCF969A6CD0969885
:10005000089519D0A0926400B0926500089513D05D
:100060000A94E9F70895A0980ED0009064001090CB
:1000700065003B2C2A2C26D0112D002D023808F4C7
:100080000895A09A0895AA24BB24C698C798BE9A3A
:10009000BF9A2BD0BE98C79ABF9A27D0B69B05C0EF
:1000A000BF98C798BE9A06D0F5CFC698C798BE9A93
:1000B000BF9A0895DD2401E0C02EAC0CBD1C0A2DB2
:1000C0001B2D08950218130808F008950024112428
:1000D000089505D004D003D002D001D0089540E2A5
:1000E0004A95F1F700000000089512E01A95F1F723
:1000F0000000000008953EE13A95F1F708954FE0C1
:100100002FEF3FEF3A95F1F72A95D9F74A95C1F7C6
:10011000089515E024E63FEF3A95F1F72A95D9F7CF
:100120001A95C1F7089512E024E63FEF3A95F1F7EA
:0A0130002A95D9F71A95C1F7089532
:00000001FF



Selamat mencoba

Rabu, 27 November 2013

Digital Touch Switch dengan ATTiny2313

Touch switch ala QTOUCH menggunakan ATTiny2313
Telah lama tidak membuat mainan baru :D ....
Kali ini saya membuat sebuah project tentang touch switch yang idenya berasal dari aplikasi QTOUCH dari Atmel. Dengan menggunakan uC yang murah ini saya mencoba membuat rangkaian yang sederhana untuk memfasilitasi empat buah touch switch dengan keluaran data serial. Dari empat touch switch ini bisa memberikan kombinasi data output yang berbeda, semisal kalau di sentuh satu touch switch akan memberikan data out yang berbeda dengan jika menyentuh dua atau tiga touch switch secara bersamaan.

Rangkaian sangat sederhana yang meliputi sebuah uC ATTiny2313, empat buah capacitor 100nF untuk sensor touch switch-nya dan PCB tentunya.  Berikut schematicnya:



contoh layout PCB:



Dan berikut adalah foto - foto pembuatannya:
merangakai komponen


mempersiapkan transparant isolasi:

menandai touch pad:

Merakit transparant dengan PCB:

Dan menjalankannya seperti berikut contohnya:

Selamat mencoba


Jumat, 29 Juli 2011

SMART AVR dengan Tiny I2C Stepper Controller

Project baru saya untuk mengisi blog ini adalah bagaimana mengakses pengendali motor stepper yang berbasis I2C yang saya namakan "tiny stepper controller" (TSC). TSC ini saya rancang mempunyai spesifikasi sebagai berikut:


  • protocol data menggunakan komunikasi I2C

  • 2 motor stepper dengan kerja secara individual

  • 4 mode yang dapat di aplikasikan ke masing - masing motor

  • addressable sampai dengan 8 buah device tiny stepper conctroller

Ragkaian tiny stepper conctroller dapat dengan mudah dihubungkan dengan SMART AVR seperti gambar berikut:

protocol untuk tiny stepper conctroller menggunakan I2C, dimana protokol ini sudah tersedia di dalam Smart AVR dan beberapa contoh program telah saya berikan misalnya mengakses real time clock RTC DS1307.

Di dalam TSC ini menggunakan komunikasi I2C dalam satu kali frame pengiriman data meliputi I2CDEV, I2CAL dan I2CDAT seperti ditunjukkan gambar berikut



Dalam aplikasi program Device address dari tiny stepper conctroller adalah 01100xxx0 dimana nilai x adalah posisi switch dari S2, S1 dan S0. I2CDAT adalah referensi speed yang merupakan lebar delay sebesar 0.5mS/step I2CAL merupakan Address Low yang berfungsi sebagai pengatur mode masing masing motor yang dapat dijabarkan sebagai berikut:



  • 1000 0000 --> motor B dir. X

  • 0100 0000 --> motor B dir. Y

  • 0010 0000 --> motor B hold

  • 0001 0000 --> motor B no power

  • 0000 1000 --> motor A dir. X

  • 0000 0100 --> motor A dir. Y

  • 0000 0010 --> motor A hold

  • 0000 0001 --> motor A no power

Untuk dir X maupun Y adalah arah putar motor ke kiri atau ke kanan tergantung dari wiring motor yang digunakan.

Pengoprasian TSC dengan menggunakan SMART AVR Basic sangat mudah, hanya menggunakan perintah WRITE I2C, maka motor steper akan melakukan perintah - perintah yang kita berikan.

Contoh tampilan video dapat di download di:
https://www.youtube.com/watch?v=Z_Sq5gD_oqk


Contoh program untuk TSC ini saya berikan dengan posisi S2, S1 dan S0 terbuka sehingga I2CDEV = 01101110B = 110Dec.
Listing programnya:

'*****************************

INIT:
GOSUB DEVICE_ADD
DELAY = 10

START:
I2CAL = 4
I2CDAT = 30
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 10
I2CAL = 64
I2CDAT = 3
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 10
I2CAL = 128
I2CDAT = 30
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 25
I2CAL = 64
I2CDAT = 2
WRITE I2CIF I2CEF = 1 THEN ERROR0
DELAY = 40
I2CAL = 4
I2CDAT = 10
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 25
I2CAL = 8
I2CDAT = 2
WRITE I2C
IF I2CEF = 1 THEN ERROR0
GOSUB WAIT
I2CAL = 128
I2CDAT = 150
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 50
I2CAL = 4
I2CDAT = 2
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 20

FOR VAR5 = 1 TO 5
I2CAL = 128
I2CDAT = 20
WRITE I2C
GOSUB WAIT
I2CAL = 8
WRITE I2C
DELAY = 10
I2CAL = 64
I2CDAT = 10
WRITE I2C
GOSUB WAIT
I2CAL = 4
WRITE I2C
DELAY = 10
NEXT VAR5

I2CAL = 1
WRITE I2C
GOSUB WAIT
I2CAL = 16
WRITE I2C
DELAY = 100
GOTO START
DEVICE_ADD:
I2CDEV = 110
I2CCA = 1
I2CAH = 0
I2CEF = 0
RETURN
ERROR0:
DELAY = 10
GOTO START
WAIT:
DELAY = 1
RETURN
'******* END of Program *************


Demikian contoh project yang bisa saya bagikan semoga bermanfaat.

Salam

Hendryawan

henel.automation@gmail.com


Minggu, 13 Juni 2010

Smart-AVR sebagai Kontrol temperatur ON/OFF menggunakan LM35





Seperti telah dibahas dalam contoh sebelumnya tentang pembacaan temperature dengan LM35, dalam contoh kali ini saya akan memberikan rancangan sederhana bagaimana memfungsikan LM35 sebagai control on/off. Dengan acuan rangkaian di atas, set point dimasukkan melalui pemutaran variable resistor yang akan langsung ditampilkan di LCD modul (2 x 20 atau 4 x 20) untuk mengetahui seberapa besar set point yang diinginkan. Sebagai output saya menggunakan relay 12volt dan status relay ini juga akan di tampilkan di layar LCD.
Untuk programnya sangat sederhana mirip dengan contoh sebelumnya, hanya saja dalam contoh sebelumnya data temperature dikirim melalui port komunikasi sedangkan contoh kali ini data temperature dikirim ke LCD modul. Berikut listing programnya:

‘***********************************************************************
DELAY = 2
CLRLCD
TEXT: SUHU LM35 + SP
CLR PB1

MAIN:
LOCATE = 64
'baca temperature
READ AIN4
VAR1 = ADCL / 2
TEXT: T:
VAR10 = VAR1
VAR2 = VAR1
GOSUB TAMPIL
TEXT: C

'baca set point
READ AIN2
AH = ADCH
AL = ADCL
BH = 0
BL = 4
FN:DIV16

TEXT: SP:
VAR11 = CL
VAR2 = CL
GOSUB TAMPIL

'baca status relay
GOSUB REL_STAT

'membandingkan PV dengan SP
IF VAR10 > VAR11 THEN RELAY_OFF
VAR12 = 1
SET PB1
GOTO MAIN

RELAY_OFF:
CLR PB1
VAR12 = 0
GOTO MAIN

REL_STAT:
IF VAR12 = 0 THEN OFF_STAT
TEXT: RL:ON
RETURN
OFF_STAT:
TEXT: RL:OFF
RETURN

TAMPIL:
'MENAMPILKAN BILANGAN VAR2 KE LCD
HHI = 0
HLO = VAR2
FN:HEX2BCD
VAR0 = BCD43 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD21 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
LCDDATA = D2ASC
WRITE LCD
VAR0 = BCD21 AND 15
D2ASC = VAR0
FN:DASC
LCDDATA = D2ASC
WRITE LCD

RETURN

‘***********************************************************************
Setelah di kompil dan didownload ke Smart-AVR akan mempunyai tampilan seperti berikut:


Demikian contoh program yang bisa saya berikan dan selamat mencoba.


Regards,

Hendryawan
henel.automation@gmail.com
0812 17 13 025

Jumat, 11 Juni 2010

Membaca Sensor Temperature LM35 dengan SMART-AVR Basic



Dalam contoh kali ini saya akan memberikan cara membaca sensor temperature LM35. Selain murah LM35 cukup mudah untuk di olah dengan SMART-AVR Basic.
LM35 mempunyai output berupa tegangan analog dengan spesifikasi 10mV/ ÂșC.
Dalam contoh project ini saya menggunakan rangkaian seperti di atas. Informasi temperature saya tampilkan melalui serial data yang bisa di baca dengan hyperterminal dengan setting 4800,8,N,1.
Dari rangkaian di atas, tegangan analog di baca oleh ADC chanel 4 seperti ditunjukkan dalam program berikut:



‘****************************************************************
DELAY = 2

START:

HHI = 0

GOSUB ENTER

SEND: BACA SENSOR LM35

GOSUB ENTER
MAIN:

READ AIN4

VAR2 = ADCL / 2

SEND: TEMPERATUR =

GOSUB TAMPIL

SEND: CELCIUS

TCOM = 13

WRITE COM

DELAY = 10

GOTO MAIN
ENTER:

DELAY = 1

TCOM = 13

WRITE COM

TCOM = 10

WRITE COM

RETURN

TAMPIL:

'MENAMPILKAN BILANGAN VAR2 KE COM

HHI = 0

HLO = VAR2

FN:HEX2BCD

VAR0 = BCD43 AND 15

D2ASC = VAR0

FN:DASC

TCOM = D2ASC

WRITE COM

VAR0 = BCD21 AND 240

SWAP = VAR0

FN:SWAP

D2ASC = SWAP

FN:DASC

TCOM = D2ASC

WRITE COM

VAR0 = BCD21 AND 15

D2ASC = VAR0

FN:DASC

TCOM = D2ASC

WRITE COM

RETURN
‘****************************************************************


Setelah program dicompile dan didownload kalau dijalankan dengan hyperterminal akan menjadi seperti berikut:


Demikian contoh program yang bisa saya berikan dan selamat mencoba.


Regards,

Hendryawan
henel.automation@gmail.com
0812 17 13 025














Sabtu, 15 Mei 2010

Multi sensor 1-wire DS18B20 dengan SMART-AVR Basic





Dalam contoh sebelumnya telah saya berikan contoh bagaimana membaca single 1-wire temperature sensor dengan menggunakan SMART-AVR Basic. Sekarang akan saya berikan contoh bagaimana menggunakan fasilitas 1-wire SMART-AVR Basic digunakan untuk membaca multi sensor temperature DS18B20 (max16 pcs), dalam contoh ini saya menggunakan 3pcs DS18B20. Dalam menggunakan mengakses multi sensor ini ada beberapa perintah yang digunakan dalam SMART-AVR Basic yaitu:
FN:OWRESET, yang berfungsi untuk me-reset 1-wire device
FN:OWWRITE, yang berfungsi menulis 1byte data ke 1-wire device
FN:OWREAD, yang berfungsi membaca 1byte data ke 1-wire device
FN:OWSEARCH, yang berfungsi mencari dan memetakan ”64-BIT LASERED ROM CODE” 1-wire device ke dalam internal rom table SMART-AVR Basic. Dalam perintah ini juga menghasilkan informasi berapa banyak device yang tersambung dalam 1-wire bus, informasi ini tersimpan dalam variable OWAMOUNT.
FN:OWMATCROM, yang berfungsi untuk mengakses 1-wire yang bersesuaian dengan 64bit ROM yang terkirim, dalam perintah ini harus di tentukan device numbernya dulu dengan memberi nilai dalam variable OWNUMBER dalam SMART-AVR Basic ini dibatasi dari 0 s/d 15 device saja. Seperti biasa saya membuat rangkaian uji coba seperti rangkaian terdahulu, mudah dan pengembangannya tergantung masing-masing pengguna, untuk rangkaian multi sensor bisa dilihat diatas. Berikut listing program multi sensor DS18B20:

'****************************************
'READ temperature 3pcs 1WIRE DS18B20
'****************************************
DELAY = 5
SEND: membaca 3 pcs DS18B20
GOSUB ENTER
DELAY = 50

PREMAIN:
FN:OWRESET
VAR0 = OWPRESENCE
IF VAR0 = 0 THEN LOOP1

FN:OWSEARCH
SEND: 1WIRE device found =
VAR2 = OWAMOUNT
GOSUB TAMPIL
SEND: pcs
GOSUB ENTER

MAIN:
OWNUMBER = 0
SEND: temp.1=
GOSUB PERDEVICE

OWNUMBER = 1
SEND: temp.2=
GOSUB PERDEVICE

OWNUMBER = 2
SEND: temp.3=
GOSUB PERDEVICE

TCOM = 13
WRITE COM

DELAY = 25
GOTO MAIN

PERDEVICE:
FN:OWMATCHROM

'COMMAND 44Hex / 68Dec CONVERT TEMP
OWBUF0 = 68
FN:OWWRITE

FN:OWRDROM

VAR0 = OWBUF0
VAR1 = OWBUF1
VAR0 = VAR0 AND 240
SWAP = VAR0
FN:SWAP
VAR0 = SWAP
VAR1 = VAR1 AND 15
SWAP = VAR1
FN:SWAP
VAR1 = SWAP
VAR2 = VAR0 OR VAR1
GOSUB TAMPIL
RETURN

LOOP1:
SEND: 1WIRE chip tidak ditemukan
GOSUB ENTER
DELAY = 200
GOTO PREMAIN

TAMPIL:
HHI = 0
HLO = VAR2
FN:HEX2BCD

VAR0 = BCD43 AND 15
D2ASC = VAR0
FN:DASC
TCOM = D2ASC
WRITE COM

VAR0 = BCD21 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
TCOM = D2ASC
WRITE COM

VAR0 = BCD21 AND 15
D2ASC = VAR0
FN:DASC
TCOM = D2ASC
WRITE COM

'3X SPACE CHAR
TCOM = 32
WRITE COM
TCOM = 32
WRITE COM
TCOM = 32
WRITE COM
RETURN

ENTER:
DELAY = 5
TCOM = 13
WRITE COM
TCOM = 10
WRITE COM
RETURN
'****************************************

Dalam listing program di atas terlihat lebih mudah dalam mengakses multi 1-wire sensor. Program akan mengirim hasilnya melalui RS232 dan bias dilihat dengan menggunakan program hyperterminal biasa, berikut contoh tampilannya:

Demikian contoh program yang bias saya berikan dan selamat mencoba.


Regards,

Hendryawan
henel.automation@gmail.com
0812 17 13 025

single 1-wire temperatur sensor DS18B20 dengan SMART-AVR Basic



Dalam SMART-AVR juga telah tersedia fasilitas untuk mengakses one-wire (1-wire) bus. Dalam contoh kali ini saya akan memberikan bagaimana mengakses single 1-wire device. Devicde yang saya gunakan dalam contoh ini adalah temperature sensor DS18B20. Dengan menggunakan rangkaian di atas, terlihat rangkaian sangat sederhana, hanya menggunakan 3 komponen pokok (controller, sensor dan rs232 chip), ini saya maksudkan untuk rangkaian uji coba, setelah mengerti cara menggunakannya bias dikembangkan sendiri dengan menggunakan lcd module atau yang lainnya. Ada baiknya untuk memulai project ini membaca terlebih dahulu datasheet DS18B20. Dalam menggunakan single 1-wire ini ada beberapa perintah yang digunakan dalam SMART-AVR Basic yaitu:
FN:OWRESET, yang berfungsi untuk me-reset 1-wire device
FN:OWWRITE, yang berfungsi menulis 1byte data ke 1-wire device
FN:OWREAD, yang berfungsi membaca 1byte data ke 1-wire device
Dalam proses menulis maupun membaca data tersimpan di OWBUF0. Maksudnya dalam proses write, data yang terkirim adalah nilai dari variable OWBUF0. Demikian pula sebaliknya, dalam proses read, data yang terbaca disimpan dalam variable OWBUF0. Dalam contoh program yang saya berikan akan menampilkan nilai temperature yang bisa dilihat dengan menggunakan hyperterminal yang umum ada dalam program MS Windows. Berikut contoh listing programnya:


'****************************************
'READ temperature single 1WIRE DS18B20
'****************************************
DELAY = 5
SEND: membaca single DS18B20
GOSUB ENTER
DELAY = 50

MAIN:
FN:OWRESET
VAR0 = OWPRESENCE
IF VAR0 = 0 THEN LOOP1
'COMMAND SKIP ROM CCHex / 204Dec
OWBUF0 = 204
FN:OWWRITE

'COMMAND CONVERT TEMP 44Hex / 68Dec
OWBUF0 = 68
FN:OWWRITE

FN:OWRESET
'COMMAND SKIP ROM CCHex / 204Dec
OWBUF0 = 204
FN:OWWRITE

'COMMAND READ SCRATCHPAD BEHex / 190Dec
OWBUF0 = 190
FN:OWWRITE

FN:OWREAD
VAR0 = OWBUF0

FN:OWREAD
VAR1 = OWBUF0

VAR0 = VAR0 AND 240
SWAP = VAR0
FN:SWAP
VAR0 = SWAP
VAR1 = VAR1 AND 15
SWAP = VAR1
FN:SWAP
VAR1 = SWAP
VAR2 = VAR0 OR VAR1
SEND: TEMPERATURE =
GOSUB TAMPIL

TCOM = 13
WRITE COM
DELAY = 100
GOTO MAIN

LOOP1:
SEND: 1WIRE chip tidak ditemukan
GOSUB ENTER
DELAY = 200
GOTO MAIN

TAMPIL:
HHI = 0
HLO = VAR2
FN:HEX2BCD

VAR0 = BCD43 AND 15
D2ASC = VAR0
FN:DASC
TCOM = D2ASC
WRITE COM

VAR0 = BCD21 AND 240
SWAP = VAR0
FN:SWAP
D2ASC = SWAP
FN:DASC
TCOM = D2ASC
WRITE COM

VAR0 = BCD21 AND 15
D2ASC = VAR0
FN:DASC
TCOM = D2ASC
WRITE COM

TCOM = 32
WRITE COM
TCOM = 32
WRITE COM
RETURN

ENTER:
DELAY = 5
TCOM = 13
WRITE COM
TCOM = 10
WRITE COM
RETURN
'****************************************

Dan berikut adalah hasil yang bisa dilihat dengan hyperterminal.

Selamat mencoba dan tunggu contoh program untuk multi-point sensor 1-wire DS18B20 pada waktu yang akan datang.

Regards,

Hendryawan
henel.automation@gmail.com
0812 17 13 025