Kamis, 27 Desember 2012

Kunci Digital


Keypad Matrix


Kunci Digital (Electronic Code Lock) adalah piranti elektronik sederhana untuk mengontrol kunci otomatis untuk membuka dan menguncinya menggunakan password.
Untuk membuat ini hanya membutuhkan AT89C2051 sebagai mikrokontroller. LCD 2x16 sebagai tampilannya dan keypad matrix 3x4 sebagai mengaksesnya.
Cara kerjanya yaitu pertama kali dihidupkan status relay on (terkunci) relay ini nantinya dihubungkan ke mekanik kuncinya, untuk membuka passwordnya tekan (5,4,3,2,1) lalu #(enter) jika salah input passwordnya bisa tekan *(clear), jika sudah benar masukan passwordnya rekay akan off (kunci terbuka) dan untuk menguncinya kembali tekan #.
Password ini bisa dirubah terserah anda dengan cara masukan password default (1,2,3,4,5) lalu enter kemudian masukan password masternya (1,2,3,4,5,6,7,8,9,0) enter ..nah baru masukan passwordnya terserah anda....
skematik dan source code disini
lihat videonya disini video design test

Sabtu, 22 Desember 2012

Mini Oscilloscope using LCD 128x64 & ATMEGA32


Features
Frequency measurement
Voltage input
Power supply
Liquid Display Crystal
Measurement display area
Information displaying area:
10Hz - 7.7 kHz
24V AC / 30V DC
12V DC
128x64 pixels
100x64 pixels
28x64 pixels


Description
The operating voltage of the circuit is 12V DC. By this voltage, the power supply is producing 2 voltages. +8.2V for IC1 and +5V for IC2 and IC3. This circuit can measure from +2.5V to -2.5V or from 0 to +5V dependent by S1 position (AC or DC input). By using probe with 1:10 division you can measure almost 10 times higher voltages. Moreover, with S2 you can make an extra division by 2 the input voltage.

How the software triggering works
As you can see the circuit doesn't have any hardware triggering. The triggering function is been made entire in software.
    The steps for triggering are:
      1. The AVR gets up to 15000  Analog to Digital Converter samples and calculates the middle value of the waveform. The number of captured samples is depended on when a full period is completed
      2. Starts again capturing new samples but every sample value must be compared with the previous sample.
      3. If the next sample is higher than the previous sample then our waveform is rising. So AVR goes to step 4. If the next sample value is lower than the previous sample then AVR goes to step 2.
      4. Read the next sample value and compare it with the middle value had been calculated in step 1.
      5. AVR checks if the value of the next captured sample is higher than the middle value.
      6. If it's higher, the beginning of the waveform has been found. The AVR starts capturing the next 100 samples in to the RAM. I choose 100 samples because I left 100 pixels on LCD for displaying the waveform.
      7. AVR Prints these 100 samples on LCD.
      8. AVR starts again from step 1.
You will say: Why AVR starts again from step 1 and not from step 2 ?  AVR starts again the capturing  from step 1 because you can change the peak-to-peak voltage of the waveform (0V - 5V). Changing the input waveform will change the middle value of the waveform.
How is the frequency is calculated
The frequency indication of course is not very accurate. The calculation is been made by counting the time from the beginning of waveform (step 4 in  "How the software triggering works") until the next start of waveform.

Programming The ATmega32
Burn the ATmega32 with AVR_oscilloscope.hex  and select external crystal at the fuses section.
After that, you Must disable the JTAG interface from your ATmega32 microController. If you don't do that, the mega32 will show you the initial screen and when it go to the oscilloscope screen it will restart immediately to the initial screen and it will stay there for ever.
The fuses that must be set in ATmega32 microcontroller.

Calibrations
The only 2 things you have to calibrate is the LCD contrast trimmer P2 and the P1, to move the beam at the center of the LCD. To do that, apply only the power supply to the circuit and adjust the P2 up to the point you will see clear the appeared pixels on the screen. Then, adjust the P1 up to the point the beam is moved at the middle of the LCD (at the horizontal line of the cross).

Usage
   You can move the beam up or down the screen by pressing the buttons S8 or S4 correspondingly to measure the voltage of the signal. 1 volt is taking up 1 square height.
   With S7 and S3 you can increase or decrease the measurement speed. The minimum speed of a waveform that can be displayed on LCD is 460Hz. If you want to view a lower frequency waveform, for example 30 Hz,  you can press the S7 to shrink the waveform or S3 to extend the waveform up to the maximum sampling rate.
   This oscilloscope has an automatic trigger. That means, if you have a continuous signal (ex a triagle waveform) the auto trigger will work perfect. If your signal is not stable (ex a serial transmittion) you can freeze the screen by pressing S6 switch. At his case you can get a snapshoot of your measurment signal. By the time you release the S6, the snapshoot will end.





Sabtu, 08 Desember 2012

All Service Manual, Schematic, Documentation, Programs, Electronic hobby,etc



Bagi anda yang berprofesi sebagai tukang service elektronik radio, tape compo, komputer, laptop dan sejenisnya, masalah anda akan tersolusikan disini

Semua datasheet elektronik bisa anda dapatkan disini
Semua tips perbaikan elektronik bisa anda dapatkan disini
Semua chasis model elektronik bisa anda dapatkan disini
Mencari semua elektronik dalam text bisa anda dapatkan disini
Semua kabel & konektor elektronik bisa anda dapatkan disini

Senin, 03 Desember 2012

Block Interlokal menggunakan Detector DTMF

Melindungi telepon rumah agar tidak disalahgunakan oleh orang yang tidak berwenang, merupakan idaman semua pemilik telepon. Pada jaman telepon analog dulu banyak dijual alat anti interlokal, tapi setelah menginjak jaman telepon digital alat semacam itu justru jarang dijumpai lagi, hal ini disebabkan diperlukan tehnologi yang lebih tinggi untuk membuat alat tersebut.
Alat Anti Interlokal dan Pemantau nada DTMF ini disambungkan di antara pesawat telepon dan saluran telepon melalui konektor JP1 dan JP2. JP1 dihubungkan ke pesawat telepon dan JP2 dihubungkan ke saluran telepon dari Telekom.
Alat ini memantau sinyal yang ada di saluran telepon, nada DTMF yang ada di saluran telepon dikenali dan diubah bentuk menjadi kode biner. Kode biner yang diterima diubah menjadi kode ASCII dan ditampilkan di Tampilan LCD SED-1200, di samping itu kode biner tersebut diperiksa untuk menentukan apakah nomor telepon yang dituju adalah nomor telepon lokal, jika tidak maka hubungan antara pesawat telepon dan saluran telepon diputus.

 Gambar 1 Rangkaian Lengkap

Pembahasan rangkaian

Rangkaian alat ini terlihat di Gambar 1, ditinjau dari fungsinya bisa dibagi menjadi tiga bagian. Bagian pertama adalah AT89C2051 sebagai pusat pengendali alat, bagian kedua adalah Tampilan LCD SED-1200 sebagai penamping nomor telepon, dan bagian ketiga adalah sisa rangkaian yang berfungsi sebagai rangkaian interface saluran telepon.

Rangkaian Mikrokontroler

Bagian pertama merupakan rangkaian baku AT89C2051, rangkaian reset dibentuk dengan kapasitor C3 dan resistor R3, rangkaian oscilator dibentuk dengan kristal Y1 (12 MHz) dan kapasitor C1 dan C2. Resistor R6 (2K2) berfungsi untuk membuat kaki INT0/P3.2 (kaki 6 AT89C2051) menjadi ‘0’.

Rangkaian Tampilan LCD SED1200

Tampilan LCD SED-1200 di bagian kedua dikendalikan langsung dengan jalur-jalur Port 1 (P1.0 ..P1.7) dari AT89C2051, sebagian dari jalur-jalur ini dipakai juga untuk IC MT8870. Cara mengendalikan SED1200 sudah dibahas dalam artikel Teknik Interface (2) - Epson SED1200 LCD Module.
Dalam rangkaian ini, data mengalir dari AT89C2051 ke SED1200 dan dari MT8870 ke AT89C2051, aliran data ini semuanya melalui D0..D3 yang terhubung ke P1.0..P1.3 (kaki 12 sampai 15 AT89C2051). Jalur SELECT yang dikendalikan oleh kaki P1.5 (kaki 17 AT89C2051) untuk mengaktipkan SED1200 atau MT8870, SELECT=’0’ membuat SED1200 siap menerima data dari D0..D3, sedangkan SELECT=’1’ menghubungkan jalur data MT8870 ke D0..D3.

Rangkaian Interface Saluran Telepon

Rangkaian interface saluran telepon terdiri atas 3 bagian, yakni
· bagian penerima nada DTMF yang intinya adalah IC MT8870
· bagian pendeteksi gagang telepon dibentuk dengan diode bridge D3, Zener diode 12 V (D4), Opto Isolator ISO1 4N35 dan resistor R8,
· bagian pemutus saluran telepon dibentuk dengan resistor R9, tansistor NPN (Q1), dan relay K1 yang Normally Close (NC).
Rangkaian penerima nada DTMF dihubungkan ke saluran telepon lewat kapasitor C4, hal ini dimaksud untuk membendung arus searah dan hanya arus bolak-balik saja yang masuk ke MT8870. Zener Diode D1 dan D2 berfungsi untuk membatasi sinyal bolak balik yang masuk tidak lebih dari ± 3.3 Volt, mengingat sinyal bel merupakan sinyal bolak-balik yang amplitudonya puluhan Volt dan bisa merusak MT8870. Resistor R4 dan R5 dipakai untuk menentukan penguatan sinyal, karena kedua resistor ini nilainya sama (100 Kohm) maka faktor penguatannya 1. Konstanta waktu yang ditentukan dengan C5 dan R7Y2 (3.579545 MHz) dipakai sebagai pembentuk frekuensi standar untuk mengenali frekuensi-frekuensi DTMF. dipakai untuk menentukan waktu minimum nada DTMF sebelum nada itu dikenali sebagai nada DTMF yang benar. Kristal
Cara kerja MT8870 bisa dipelajari di Datasheet MT8870.
Rangkaian pendeteksi gagang telepon mendeteksi letak gagang telepon. Rangkaian ini dihubungkan langsung ke saluran telepon mengingat rangkaian ini tugasnya memantau tegangan searah di saluran telepon. Saat gagang telepon tidak diangkat tegangan searah di saluran telepon bisa mencapat 48 Volt, tegangan tersebut turun menjadi sekitar 6 Volt begitu gagang telepon diangkat.
Dipakai diode bridge untuk memudahkan pemasangan kabel antara alat ini dan sistem telepon (kabel bisa dipasang terbalik), diode Zener 12 V (D4) dipakai untuk mendeteksi tegangan searah, saat gagang telepon diangkat tegangan saluran yang hanya sekitar 6 Volt tidak akan mampu menembus diode Zener yang dipasang secara berlawanan arah, sehingga tidak ada arus yang mengalir melalui diode di dalam Opto Isolator 4N35 (ISO1) akibatnya transistor dalam ISO1 tidak mengalirkan arus dan tegangan di kaki INT0/P3.2 (kaki 6 AT89C2051) menjadi ‘0’ lewat tahanan R6. Tegangan saluran telepon yang 48 Volt pada saat gagang tidak diangkat akan mengakibatkan transistor dalam ISO1 mengalirkan arus dan tegangan di kaki INT0/P3.2 menjadi ‘1’.
Saat gagang telepon diangkat, tegangan INT0/P3.2 berubah dari ‘1’ menjadi ‘0’, perubahan tegangan ini merupakan siinyal permintaan interupsi bagi AT89C2051. Begitu menerima permintaan interupsi ini AT89C2051 akan menjalankan program layanan interupsi yang harus diletakkan di memori program nomor 3.
Rangkaian pemutus saluran telepon merupakan rangkaian relay yang dikendalikan dengan P3.1 (kaki 3 AT89C2051), relay yang dipakai adalah relay normally close (NC), yakni kontak relay sudah terhubung meskipun kumparannya tidak dialiri arus, saat P3.11’ transistor NPN (Q1) akan mengalirkan arus kumparan relay sehingga kontak relay terlepas dan saluran telepon terputus. menjadi ‘

Pembahasan alat

Di samping rangkaian di atas, kerja alat ini sepenuhnya ditangani dengan perangkat lunak, Gambar 2 memperlihatkan diagram alir program yang membentuk alat ini.
Terlihat dari Gambar 2, pada alat kecil ini sesungguhnya bekerja dua buah program yang berlainan, program pertama (bagian kiri dari gambar) merupakan program utama, program ini dijalankan begitu AT89C2051 mendapat catu daya dan bekerja terus tanpa henti. Program yang kedua adalah program layanan interupsi INT0 (bagian kanan dari gambar), program ini dijalankan pada saat gagang telepon diangkat, setelah selesai mengerjakan program ini AT89C2051 akan kembali mengerjakan program utama.
Gambar 2 Diagram alir
 Persiapan
Bagian pertama dari program utama merupakan Persiapan,
· pertama-tama relay dimatikan untuk menjamin saluran telepon tidak diputus oleh alat ini (baris 2 Potongan Program 1)
· diatur tata kerja SED1200 dan menghapus layar tampilan LCD (baris 3)
· setelah itu AT89C2051 sendiri diatur agar bisa menerima permintaan interupsi dari INT0, sehingga begitu gagang telepon diangkat AT89C2051 bisa menanggapinya dengan program layanan interupsi di memori program nomor 3
o mekanis permintaan interupsi dari kaki INT0 diaktipkan di baris 5
o yang dianggap sebagai permintaan interupsi adalah perubahan tegangan ‘1’ menjadi ‘0’ di kaki INT0 (baris 6)
o sistem interupsi AT89C2051 diaktipkan di baris 7
Gambar 3 Proses pengambilan data DTMF dari MT8870

Potongan Program 1 Mempersiapkan tata kerja alat
01:DTMFmonitor:
02: CLR Relay ; Matikan RELAY - saluran terhubung
03: ACALL SiapkanSED1200
04:
05: SETB EX0 ; pakai interupsi INT0
06: SETB IT0 ; Falling edge triggered
07: SETB EA ; aktipkan sistem interupsi AT89C2051

Baca data DTMF

Berikutnya alat ini menunggu angka dari tombol telepon yang dipencet, selama tidak ada nada DTMF ATM89C2051 akan menunggu terus di sini, memang pada saat ini tidak ada pekerjaan lain yang perlu dilakukan.
· Baris 2 Potongan Program 2 dipakai untuk menghubungkan ‘jalur data’ P1.0..P1.3 ke saluran data MT8870 D0..D7, dan melepas hubungannya ke SED1200
· Proses pengambilan data DTMF dari MT8870 digambarkan di Gambar 3, hal ini dimaksud agar AT89C2051 hanya satu kali saja mengambil dari MT8870 setiap kali ada tombol yang dipencet
o Pada saat tidak ada tombol dipencet kaki StD dari MT8870 yang terhubung ke P3.7 AT89C2051 (sinyal ini dinamakan sebagai NewData) =’0’. AT89C2051 menunggu ada tombol yang dipencet dengan instruksi JNB NewData,* (baris 3), artinya selama P.3.7 masih =’0’ AT89C2051 yang berputar terus di baris 3.
o Setelah ada data DTMF baru, Port 1 dipastikan menjadi input (baris 4) dan data dari MT8870 diambil di baris 5, karena yang dipakai hanya data dari P1.0..P1.3 maka bagian yang dipakai dibuang di baris 6.
o Untuk memastikan data dari MT8870 hanya diambil satu kali saja, AT89C2051 menunggu sinyal NewData menjadi ‘0’ dengan instruksi JB NewData,* di baris 7.

Gambar 3 Proses pengambilan data DTMF dari MT8870
Potongan Program 2 Menunggu tombol angka telepon dipencet
01:BacaMT8870:
02: SETB SELECT ; MT8870 yang aktip, SED1200 non aktip
03: JNB NewData,* ; Selama StD='0', tunggu dulu di sini
04: MOV P1,#$FF ; Membuat Port 1 menjadi input
05: MOV A,P1 ; Ambil data dari MT8870
06: ANL A,#$0F ; Yang diperlukan hanya A0..A3 saja
07: JB NewData,* ; Tunggu sampai nada DTMF sirna

Menyimpan dan menampilkan angka

Angka yang diterima dari MT8870 ditampung dulu di PanampungPanampung ditampilkan ke SED-1200, hal ini digambarkan dalam Gambar 4. Mengingat SED1200 bisa menampilkan 20 huruf/angka maka kapasitas Penampung dibuat 20 byte (Potongan Program 3). yang dibentuk di RAM, kemudian seluruh isi
· Assembler Directive (Pengatur Kerja Assember) .data (baris 1) menyatakan baris-baris berikut adalah variabel yang akan disimpan di RAM
· Baris 2 menyatakan Ram yang dipakai mulai nomor $30 (heksadesimal 30)
· Assembler Directive (Pengatur Kerja Assember) ds (baris 3) menyatakan Penampung adalah variabel yang membutuhkan tempat sebesar 20 byte
Gambar 4 Nomor telepon ditampung dan ditampilkan bersama ke SED1200

Gambar 4 Nomor telepon ditampung dan ditampilkan bersama ke SED1200
Potongan Program 3 Membentuk Memori Penampung sebanyak 20 byte
01: .data ; berikut ini dibentuk di RAM
02: ORG $30 ; mulai dari memori nomor $30
03:Penampung DS 20 ; sediakan 20 byte untuk Panampung
Tampilan angka di SED1200 dibuat seperti tampilan angka di kalkulator, yakni sebelum menampilkan satu angka baru, angka-angka lama di tampilan digeser dulu satu posisi ke kiri, setelah itu angka baru diisikan di posisi paling kanan seperti digambarkan di Gambar 5. Proses ini dilakukan dengan Potongan Program 4 :
· Di baris 2 isi akumulator A yang berisi angka baru dari MT8870 disimpan dulu ke R6, karena dalam baris-baris berikutnya A akan aktip dipakai.
· R0 dan R1 dipakai sebagai register indirect untuk mengalamati angka-angka yang digeser ke kiri. Dibaris 3 dan 4, R0 diisi dengan alamat byte pertama dari Penampung, dan R1 diisi dengan alamat byte kedua dari Penampung.
· Jumlah byte yang dipindahkan sebanyak 19, hal ini diatur di baris 5 dan baris 11
· Pemindahan data dilakukan di baris 7 sampai dengan baris 9
· Tadi yang disimpan di R6 dikembalikan ke A (baris 13) dan dijadikan ASCII di baris 14 kemudian di baris 15 disimpan ke posisi paling kanan
Isi Penampung secara keseluruhan ditampilkan ke LCD di baris 16
 
Gambar 5 Cara menyimpan angka baru

Potongan Program 4 Penyimpanan angka baru dan ditampilkan ke LCD
01:IsikanAngka:
02: MOV R6,A ; Simpan dulu angka yang didapat
03: MOV R1,#Penampung+1 ; data di Penampung+1
04: MOV R0,#Penampung ; akan dipindahkan ke Penampung+0
05: MOV R7,#19 ; digeser 19 kali
06:Pindah:
07: MOV A,@R1 ; Ambil data
08: MOV @R0,A ; Simpan ke posisi sebelumnya
09: INC R0 ; alamat berikutnya
10: INC R1
11: DJNZ R7,Pindah ; sudah 19 kali? Belum pindah lagi
12:
13: MOV A,R6 ; ambil kembali angka yang didapat
14: ADD A,#$30 ; jadikan kode ASCII
15: MOV @R0,A ; simpan ke posisi paling kanan
16: ACALL TampilkanPenampung

Memeriksa nomor telepon interlokal

Tugas program berikutnya adalah mengenali apakah nomor pembicaraan yang diminta adalah nomor telepon lokal, jika nomor lokal maka AT89C2051 meneruskan tugas menunggu tombol nomor telepon dipencet, jika ternyata nomor telepon interlokal maka relay normally close diaktipkan dan saluran telepon diputus, setelah itu progam kembali mengerjakan program dari bagian paling awal.
Nomor telepon lokal atau bukan dibedakan dengan jumlah digit yang dipencet, jika ditekan lebih dari 7 digit dianggap sebagai nomor interlokal. Untuk keperluan ini dipakai bantuan dari variabel Counter. Potongasn Program 5 dijelaskan sebagai berikut :
· Setiap ada angka baru, nilai Counter dinaikkan satu (baris 1)
· Kalau nilai counter masih <7>A masih <7.
· Program masuk ke baris 7 kalau ternyata nomor yang diminta adalah nomor interlokal, saat itu relay diaktipkan sehingga saluran telepon putus. Untuk memastikan hubungan ke kantor telepon benar-benar sudah terputus relay diaktipkan sekitar 2 detik lamanya, waktu tunggu 2 detik ini ditentukan di baris 7 sampai 13.
· Setelah itu AT89C2051 diarahkan menjalakan DTMFmonitor, yakni bagian pertama dari program setelah reset.
Potongan Program 5 Memeriksa nomor telpon, apakah nomor lokal?
01: INC Counter ; tambah lagi satu angka dipencet
02: MOV A,Counter
03: CJNE A,#8,*+3 ; sudah 8 digit?
04: JC BacaMT8870 ; belum, bukan nomor interlokal
05:;
06: SETB Relay ; aktipkan relay, saluran terputus
07: MOV R5,#20
08: MOV R6,#0
09: MOV R7,#0
10:Sebentar:
11: DJNZ R7,Sebentar
12: DJNZ R6,Sebentar
13: DJNZ R5,Sebentar
14: SJMP DTMFmonitor ; kembali seperti saat RESET

Rutin layanan interupsi INT0

Begitu gagang telepon diangkat, AT89C2051 akan menanggapi dengan rutin layanan interupsi INT0 di memori program nomor 3, seperti terlihat di Potongan Program 6.
· Baris 1 meletakkan rutin layanan interupsi ini di memori program nomor 3, yakni tempat yang disediakan untuk rutin layanan interupsi INT0.
· Baris 2 memanggil sub-rutin HapusDisplay yang bertugas menghapus isi Penampung dan me-‘nol’-kan Counter.
· Setelah menjadikan instruksi RETI di baris 3, AT89C2051 akan kembali menjalankan Program Utama.
Potongan Program 6 Rutin Layanan Interupsi INT0
01: ORG ROM+3
02: LCALL HapusDisplay ; Rutin layanan interupsi INT0
03: RETI

Created by wandi



free counters