Data Logger 5 Buah Sensor Suhu Dengan ATMEGA16

Pada kesempatan kali ini penulis mencoba berbagi cara akses multi sensor pada rangkaian mikrokontroler dengan komunikasi serial. Metode yang penulis gunakan adalah komunikasi dua arah antara mikrokontroler ATMega16 dengan delphi.

Berikut adalah tampilan form pada delphi 7.



Berikut merupakan tampilan hasil uji coba aplikasi tersebut.

Untuk penjelasan lebih lanjut source code aplikasi tersebut dapat di download disini.
Terima kasih, semoga bisa bermanfaat dan dapat dikembangkan untuk aplikasi yang lebih kompleks.


Counter Digital dengan LDR Sebagai Sensor Objek

Rangkain ini berfungsi sebagai Up Counter, jadi ketika objek menghalangi LDR maka counter akan naik satu digit dan seterusnya. rangkaian ini hanya menggunakan 2 digit seven segmen. untuk pengembangan dengan digit lebih banyak juga dapat dilakukan. berikut skema rangkaian tersebut :

Klik pada gambar untuk ukuran penuh

Rangkaian ini menggunakan IC 4026 (Digital Up Counter) dan seven segmen common katoda. 

Aplikasi Proses Pengisian dan Muat Barang dengan PLC Siemens Menggunakan TIA Portal V11


Pada Kesempatan kali ini, saya akan coba mempresentasikan contoh Ladder Pemograman PLC SIEMEN'S dengan Software TIA PORTAL V11

Berikut Penjelasan nya.....:-)

Motor Conveyor1 "C1"
Motor Conveyor2 Forward "C2F"
Motor Conveyor2 Reverse "C2R"
Motor Conveyor3 "C3"
Motor Conveyor4 "C4"
Valve Pengisian Tangki1 "V1" dan "V2"
Valve Pengisian Pada Kemasan Kosong (siap isi) "V3"

Sensor Low "SL" (mendeteksi saat isi tangki hampir kosong)
Sensor Middle "SM" (mendeteksi saat isi tangki setengah penuh)
Sensor High "SH" (Mendeteksi saat isi tangki full atau penuh)
Sensor Penghitung (Counter) Pengisian Kedalam Kemasan PACK (Kardus) "S1"
Sensor Pendeteksi adanya kemasan kosong "S2"
sensor Kemasan Merah "S3"
Sensor Kemasan Putih "S4"


Pada Awal"...
PROSES TANGKI
--------------------------------------------------------------------
terdapat "Tangki" bahan baku siap kemas,
kita beri nama "T1"
pada T1 terdapat 3 buah sensor dan 2 buah Valve pengisian...

Ketika "SL" mendeteksi, maka kedua "V1" dan "V2" akan membuka katupnya untuk mengisi "T1"
ketika "SM" mendeteksi Maka "V1" akan menutup namun "V2" tetap terbuka
ketika "SH" Mendeteksi Maka "V2" akan tertutup (kedua Valve telah tertutup)

PROSES CONVEYOR1 (Membawa Kemasan Kosong siap isi)
--------------------------------------------------------------------
ketika PB (Push Button) Strar C1 di tekan, C1 ON (berjalan) menuju "V3"
ketika "S2" Mendeteksi maka "C1" akan OFF delay sejenak dan "V3" akan membuka katup nya untuk mengisi kemasan dengan Timer 5s, (Timer Off Delay) ketika Timer mencapai 5s maka "C1 secara otomatis ON kembali dan begitu seterus nya..

PROSES CONVEYOR2 (Membedakan Kemasan Melauli Warna)
--------------------------------------------------------------------
Ketika "S3" Mendeteksi Maka "C2" akan berfungsi Forward (menuju Packing Kardus Kemasan Merah)
Ketika "S4" Mendeteksi Maka "C2" akan berfungsi Reverse (Menuju Packing Kardus Kemasan Putih)


PROSES CONVEYOR3 (Menuju Packing Kardus)
Pada saat "S1" menghitung hingga 12 maka "C4" ON dam mebawa PACK KARDUS Menuju Ruangan Muat Barang



NB: C4 Disana Hanya dibuat 1 Program (untuk Kemasan Merah) tidak d buat Kemasan untuk warna Putih, Namun bentuh programnya sama dengan yang Merah, begitu pula dengan Counter nya..


Saya rasa cukup sekian dulu...

untuk kelengkapannya
Klik Disini

untuk file simulasi dengan TIA Portal belum sempat di upload.
bagi yang berminat silahkan PM ajah Via Inbox FB
nanti saya kirim Via Email..

Percobaan ini masih dalam tahap pengembangan dan penyempurnaan
next akan di posting kembali

Thank's...
salam belajar bersama...
:-)

Pengaturan Kecepatan Motor DC dengan ATMEGA16 dan L293D

Pada posting kali ini dilakukan uji coba pengaturan kecepatan putaran motor DC, menggunakan mikrokontroler ATMEGA16 sebagai prosesor, dan driver menggunakan ICL293D yang dapat di inputkan tegangan maksimum 32V, LCD karakter 16x2 sebagai user interface, berikut skema rangkaian tersebut :


Motor DC yang di kontrol berjumlah 2 buah, dengan pengaturan dengan 4buah push button, yang berfungsi menaikan dan menurunkan kecepatan.

Driver motor menggunakan IC L293D yang sudah biasa digunakan, dengan fungsi sebagai berikut :
- IN1 & IN2 = arah putaran motor 1 misal (IN1=High & IN2=Low) maka motor forward dan sebaliknya
- IN3 & IN4 = arah putaran motor 2 misal (IN3=High & IN4=Low) maka motor forward dan sebaliknya
- EN1 = Pengatur kecepatan motor 1 dengan metode PWM (Pulse Width Modulation)
- EN1 = Pengatur kecepatan motor 2 dengan metode PWM (Pulse Width Modulation)

Dengan memanfaatkan fitur Fast PWM yang terdapat dalam mikrokontroler ATMEGA16, pemrograman diawali dengan mengaktifasi Fast PWM mode OCR1A untuk motor 1, dan OCR1B untuk motor 2, kemudian nilai OCR1A dan OCR1B ditampilkan melalui LCD sebagai parameter. Berikut merupakan program lengkapnya yang saya tulis dengan bahasa C pada CodeVision AVR :
#include

// Alphanumeric LCD Module functions
#include
#include
//Deklarasi variabel
int SA,SB;
char MA[8];
char MB[8];
void main(void)
{
PORTA=0xFF;
DDRA=0x00;
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 12000.000 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

/ Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 8
lcd_init(8);

while (1)
      {   
      lcd_gotoxy(0,0);lcd_putsf("M1=");lcd_gotoxy(0,1);lcd_putsf("M2=");  
      PORTD.0=1;   //Motor 1 Forward
      PORTD.1=0; 
      PORTD.3=1;   //Motor 2 Reverse
      PORTD.4=0; 
      if(PINA.0==0){SA++;}  //Jika pushbutton A0 ditekan naikan kecepatan motor 1
      if(PINA.1==0){SA--;}   //Jika pushbutton A1 ditekan turunkan kecepatan motor 1
      if(PINA.2==0){SB++;}   //Jika pushbutton A2 ditekan naikan kecepatan motor 2
      if(PINA.3==0){SB--;}    //Jika pushbutton A3 ditekan turunkan kecepatan motor 2
      lcd_gotoxy(5,0);itoa(SA,MA);lcd_puts(MA); //Tampilkan nilai kecepatan Motor 1
      lcd_gotoxy(5,1);itoa(SB,MB);lcd_puts(MB);  //Tampilkan nilai kecepatan Motor 2
      OCR1A=SA; 
      OCR1B=SB;
      // Place your code here

      }
}

Terima Kasih, semoga membantu.

Monitoring SUHU dan Detector Smoke menggunakan ATmega16 Dengan Bahasa Basic (Bascom AVR)

Pada project kali ini adalah sedikit eksperimen menggunakan sensor suhu LM35 dan smoke detektor, rangkaian akan mendeteksi tingkat ketebalan asap dan nilai parameternya akan ditampilkan melalui LCD, dan akan menentukan tingkat bahaya dan adanya api jika terjadi peningkatan suhu. Monitoring SUHU dan Detector Smoke menggunakan ATmega16 Dengan Bahasa Basic )Bascom AVR) Berikut daftar Komponen Library nya... :-) ATMega 16 Led Button LCD 20*4 Sensor LM35 Detector Smoke Berikut Listing Program Basic nya 'Konfigurasi ATmega 16 '================================== $regfile = "m16def.dat" $crystal = 1200000 'Konfigurasi LCD '================================== Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0 Config Lcd = 20 * 4 Cursor Off 'Konfigurasi Input & Out put '================================== Config Portd = Output Config Porta = Input 'Bagian ADC '================================== Dim Y As Integer Deflcdchar 0 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 Config Adc = Single , Prescaler = Auto , Reference = Internal Dim A As Word , Volt As Word , Volt_d As Byte Dim Z As Word , I As Word , I_d As Byte Start Adc 'analisasi Port '================================== C Alias Portd.3 'Star Awal Program '================================== Cls Locate 1 , 4 Lcd "ALARM KEBAKARAN" Locate 3 , 1 Lcd " Suhu & Sensor Asap" Locate 4 , 1 Lcd " AVR ATmega16" Wait 1 Cls Waitms 500 'Mulai Program '=================================== Do 'Baca Sensor Suhu '=================================== Locate 1 , 1 Lcd "MONITORING SUHU" A = Getadc(0) Volt = A * 5 Volt_d = Volt Mod 10 Volt = Volt / 20 Locate 2 , 1 Lcd Volt ; "," ; Volt_d Locate 2 , 6 Lcd Chr(0) ; "C" 'Baca Sensor Asap '================================== Locate 3 , 1 Lcd "MONITORING ASAP" Z = Getadc(1) I = Z * 10 I_d = I Mod 10 I = I / 20 Locate 4 , 1 Lcd I ; "," ; I_d Locate 4 , 6 Lcd Chr(1) ; "ppm" 'Bagian Suhu Normal '================================== Normal: If Volt < 31 Then If Volt > 19 Then Locate 2 , 9 Lcd "SUHU NORMAL " C = 1 End If End If 'Bagian Suhu Dingin '=================================== Dingin: If Volt < 19 Then Locate 2 , 8 Lcd " SUHU DINGIN " C = 1 End If 'Bagian Suhu Siaga '=================================== Siaga: If Volt > 30 Then If Volt < 41 Then Locate 2 , 9 Lcd "SUHU SIAGA1" C = 1 End If End If If Volt > 40 Then If Volt < 51 Then Locate 2 , 9 Lcd "SUHU SIAGA2" C = 1 End If End If If Volt > 50 Then If Volt < 61 Then Locate 2 , 9 Lcd "SUHU SIAGA3" C = 1 End If End If 'Bagian Suhu Bahaya '=================================== Bahaya: If Volt > 60 Then Locate 2 , 9 Lcd "KEBAKARAN " C = 0 End If Loop Skema Rangkaian Menggunakan Proteus 7.7 SP2 Untuk pertanyaan dan kelengkapannya Klick Disini Inbox ajah

Traffic Light Menggunakan PLC OMRON CJM1A dan NS12 Progammable Terminal

Traffic Light perempatan menggunakan PLC omron, pada percobaan kali ini saya menggunakan Word area memori PLC sebagai entri timer dan Holding relay sebagai input dan Output terminal.
Berikut tampilan pada programmable terminal (touch screen panel NS12).



Time setting bisa dirubah-rubah sewaktu-waktu pada screen 2 pada touch panel. setelah memasukkan setting waktu pilih apply dan kembali ke screen2 dan tekan on untuk menjalankan.
Output lampu bisa anda sisipkan bersamaan dengan holding relay yang tersedia pada section 2 di ladder diagram.
Berikut demo video pada touch panel 

Berikut Ladder diagramnya:





Osiloskop Menggunakan Komputer (PC Osciloscope)

Merubah komputer berbasis windows menjadi dual trace osiloscope/osciloscope, bagi anda yang berkocek sedikit tetapi ingin memiliki osiloskop/osciloscope ini adalah alternatif yang paling saya rekomendasikan, karena jika anda telah memiliki komputer berbasis windows dan terinstall sebuah sound card baik onboard atau bukan anda sudah memenuhi syarat.

software ini memanfaatkan port mic pada komputer anda, jadi anda tinggal merubah jack mic komputer anda menjadi probe osiloscope/osciloscope jika diperlukan.

Fitur:
- Responsive real-time display, up to 50 fps refresh
- Single trace, dual trace, and XY (Lissajous) modes
- Bandwidth: 10 Hz - 20 kHz, AC coupling
- Timebase: 10 us - 5 s
- 8-bit and 16-bit acquisition, 11 kHz to 44 kHz sampling rate
- Spectrum analyzer: amplitude and/or phase
System Minimum
- 300 MHz or faster PC, 64MB RAM, 1MB of disk space
- Windows® XP
- sound card

Software nya bisa anda download disini
Saya telah coba di notebook berbasis windows 7 dan berjalan dengan baik, untuk sinyal audio dengan tegangan rendah tidak ada masalah.

Hati-hati
Karena keterbatasan soundcard komputer sebagai interfacenya sebaiknya anda hati-hati menggunakan perangkat lain yang ingin anda ukur dengan osiloskop ini (tidak direkomendasikan untuk menganalisis tegangan tinggi, ex: AC 220V),
Terima kasih, semoga Bermanfaat :)

Rangkaian Sensor Suhu LM35

Rangkaian sensor suhu ini menggunakan IC LM35 yang cukup presisi dan mudah didapat. kali ini penulis mencoba memanfaatkan IC ini sebagai indikator temperatur pada ruangan. untuk lebih jelasnya dibawah ini adalah skematik rangkaian sensor suhu ini :

klik pada gambar untuk ukuran sebenarnya
20 Led pada rangkaian bertindak sebagai leveling dari suhu yang terukur, jadi jika suhu semakin tinggi maka led akan bergeser ke kanan hingga batas tertinggi.
Usahakan menggunakan resistor dengan toleransi yang baik berkisar 1% supaya rangkaian presisi, setelah selesai perakitan rangkain sensor suhu ini perlu untuk dikalibrasi pada setiap kanalnya, berikut parameter yang harus anda kalibrasi :
Putar trimer potensio RB hingga VB menunjukkan 3,075V
Putar trimer potensio RC hingga VC menunjukkan 1,955V
Putar trimer potensio RA hingga VA menunjukkan 0,075V

Rangkaian membutuhkan tegangan total 7V, dan penulis mencoba menggunakan tegangan 5V alhasil rangkaian tetap bekerja dengan baik.
Terima Kasih

Kontrol Traffic Light Menggunakan 8051/AT89C2051

Mikrokontroler memiliki fungsi yang sangat luas sekali, kali ini saya akan menggunakan mikrokontroler sebagai pengontrol dari lampu lalu lintas atau traffic light,

Dengan memanfaatkan 2 port dari AT89C2051 kita sudah bisa mengontrol traffic light dengan 4 simpangan/perempatan.

Dibawah ini adalah skema dari rangkaian tersebut:
Untuk melihat ukurannya silahkan klik pada gambar

Rangkaian membutuhkan tegangan 5V yang telah diregulasi, pada proyek ini lampu yang digunakan adalah lampu led. jika anda ingin menggunakan lampu 220V atau yang lebih tinggi tegangannya anda memerlukan Relay Board sebagai penghubung mikrokontroler dengan lampu.
 Untuk Relay Board saya akan terbitkan di lain posting.

Source Kode Rangkaian :

NR    EQU    P3.5
NY    EQU    P3.4
NG    EQU    P3.3

SR    EQU    P1.2
SY    EQU    P1.3
SG    EQU    P1.4

ER    EQU    P1.5
EY    EQU    P1.6
EG    EQU    P1.7

WR    EQU    P3.7
WY    EQU    P1.0
WG    EQU    P1.1

CSEG     AT      0        ; RESET VECTOR
;---------==========----------==========---------=========---------
;              PROCESSOR INTERRUPT AND RESET VECTORS
;---------==========----------==========---------=========---------

        ORG     00H            ; Reset
        JMP     MAIN
;---------==========----------==========---------=========---------
MAIN:
       MOV SP,#40H
       MOV P1,#0FFH
       MOV P3,#0FFH
      
TOP:     CLR NR
       CLR SR
       CLR ER
       CLR WY
       SETB WG
       CALL Y_DELAY
       SETB NR
       CLR NY
       CLR WR
       SETB WY
       CALL Y_DELAY
       SETB NY
       CLR NG
       CALL DELAY
      
       CLR NY
       SETB NG
       CALL Y_DELAY
       CLR NR
       SETB NY
       SETB SR
       CLR SY
       CALL Y_DELAY
       SETB SY
       CLR SG
       CALL DELAY
      
       CLR SY
       SETB SG
       CALL Y_DELAY
       CLR SR
       SETB SY
       SETB ER
       CLR EY
       CALL Y_DELAY
       SETB EY
       CLR EG
       CALL DELAY
      
       CLR EY
       SETB EG
       CALL Y_DELAY
       CLR ER
       SETB EY
       SETB WR
       CLR WY
       CALL Y_DELAY
       SETB WY
       CLR WG
       CALL DELAY
       AJMP TOP
      
      
      
;**********************************************************
DELAY:
            MOV R3,#3FH
REPA3:    MOV R1,#0FFH
REPA2:    MOV R2,#0FFH
REPA1:    NOP
            DJNZ R2,REPA1
            DJNZ R1,REPA2
            DJNZ R3,REPA3
            RET
;  ---------==========----------==========---------=========---------
Y_DELAY:
            MOV R3,#1AH
RQPA3:    MOV R1,#0FFH
RQPA2:    MOV R2,#0FFH
RQPA1:    NOP
            DJNZ R2,RQPA1
            DJNZ R1,RQPA2
            DJNZ R3,RQPA3
            RET
;**********************************************************
     END




Kode Lengkap Rangkaian beserta Skema rangkaian dapat anda download disini

VU Meter Menggunakan AT89C2051

VU Meter (Disco Liter) atau bisa disebut juga lampu seiring dengan musik.
Gambar 1 memperlihatkan rangkaian lengkap Disco Lite, AT89C2051 dilengkapi dengan kapasitor C1, C2 dan kristal 12 MHz Y1 sebagai rangkaian oscilator, kapasitor C3 dan resitor membentuk rangkaian reset.

Resitor R17, R16 dan kapasitor C4 serta capasitor C5, C6, diode D1, resistor R36, R37 bersama dengan AT89C2051 membentuk rangkaian Analog/Digital Converter sederhana, dipakai untuk mengukur besarnya sinyal audio  yang masuk.

Bagian lain dari rangkaian terdiri dari 2 buah 74HC573, 2 buah 74LS164, 32 resistor dan 16 transistor, dan sebuah 16x16 Dot LED Display Panel. Bagian ini merupakan bagian tampilan, dalam Display Panel ukuran sekitar 8 x 8 cm itu terdapat 256 buah LED yang nyala/padamnya disesuaikan dengan irama sinyal audio yang diterima.

Sinyal audio yang diterima, di-skala-kan menjadi 10 bagian menurut besar kecilnya sinyal, setiap bagian skala mempunyai pola nyala/pdam lampu yang berlainan, sehingga kuat lemahnya sinyal audio akan membentuk gambar yang acak pada panel tampilan.

Gambar 2 menggambarkan rangkaian ekuivalen Analog/Digital Converter, sebelum diukur sinyal audio yang diterima dikondisikan dulu, potensiometer R36 dipakai untuk mengatur besar kecilnya level sinyal audio yang diterima, karena rangkaian Analog/Digital Converter ini hanya menerima tegangan positip maka sinyal audio disearahkan dengan Diode D1, sedangkan resistor R37 dan kapasitor C6 merupakan filter sederhana untuk sedikit meredam sinyal audio agar tidak terlalu fluktuatip.

Tegangan dari sinyal audio ini diumpankan ke kaki P1.1 dari AT89C2051 yang berfungsi sebagai input V- (inverting input) dari Analog Comparator.

Kaki P1.0 yang berfungsi sebagai input V+ (non inverting input) dihubungkan ke kapasitor C4, kapasitor ini diisi lewat tahanan R17 dan R16 pada saat P3.7 dari AT89C2051 dalam keadaan ‘1’, dan isinya dikosongkan lewat R16 pada saat P3.7 dalam keadaan ‘0’.

Bentuk tegangan di kapasitor C4 (terhubung ke P1.0) pada saat pengisian kapasitor dan pengosongan kapasitor terlihat di Gambar 3.

Pada saat mulai mengukur tegangan sinyal audio, kapasitor C4 dalam keadaan kosong atau tegangan kapasitor = 0 Volt, tegangan P1.1 lebih positip dibanding P1.0 sehingga output dari Analog Comparator (P3.6) = ‘0’.


Gambar 1
Rangkaian Disco Lite

Setelah itu P3.7 =’1’, tegangan kapasitor C4 mulai naik sesuai dengan grafik Gambar 3, sampai suatu saat tegangan C4 lebih positip dari tegangan sinyal audio dan output Analog Comparator P3.6 berubah dari ‘0’ menjadi ‘1’. Selang waktu saat mulai pengisian kapasitor sampai P3.6 menjadi ‘1’ setara dengan tegangan sinyal audio, makin besar tegangan makin lama P3.6 menjadi ‘1’.


Gambar 2
Rangkaian ekuivalen Analog/Digital Converter

Nyala/padam 256 LED diatur dengan cara multiplek, seperti yang dipakai dalam artikel Digital Clock - Ilhami Prinsip Dasar Microcontroller. Meminjam istilah-istilah yang dipakai di artikel itu, 16x16 Dot LED Display Panel yang dipakai bisa dianggap merupakan penampil dengan 16 ruas sebanyak 16 digit.

 16 buah Saklar digit masing-masing dibentuk dengan sebuah resistor dan transistor PNP, karena jumlahnya melebihi kaki AT89C2051 tidak bisa dikendalikan langsung lewat port yang ada, tapi lewat bantuan 2 buah IC 74HC573 (berisikan 8 buah Latch). Data yang disimpan ke dalam dua IC ini diumpan dari P1.2..P1.7 dan P3.2..P2.3, P3.4 dipakai untuk mengatur 74HC573 yang pertama (U2) jika P3.4=’1’ maka data di input IC ini akan direkam dan diteruskan ke outputnya, P3.4 untuk mengatur 74HC573 yang kedua (U4).

16 buah saklar ruas dibentuk dengan 2 buah IC 74LS164 (berisikan 8 bit shift register), resistor yang dipasangkan pada output IC ini dipakai untuk membatasi arus LED. Data ruas sebanyak 16 bit dikirim dari AT89C2051 secara seri, digeser masuk ke shift register 74LS164. Saat data digeser, semua saklar digit dimatikan sehingga proses pergeseran ini tidak nampak ditampilan.



Gambar 3  Grafik tegangan kapasitor
Pembahasan alat

     Diagram alir program Disco Lite terlihat di Gambar 4, setelah alat ini mendapat catu daya langsung program melaksanakan persiapan untuk menata kerja dari alat, hal-hal yang dilakukan antara lain adalah mematikan dulu semua lampu tampilan, mengosongkan kapasitor C4.



Bagian Utama dari program ini adalah mengatur tampilan yang dibentuk dari 256 titik LED, data ruas yang akan ditampilkan dikirim ke sistem tampilan lewat 2 buah IC shift register 74LS164, setelah itu skaklar digit yang sesuai dengan data ruas yang baru saja dikirim dinyalakan. Proses ini dilakukan terus menerus selama alat ini bekerja, agar tampilan nampak bagus tidak bergetar begian ini harus dilakukan cukup cepat.

Setelah 50 kali putaran proses pengaturan penampilan, proses ini ditinggalkan sebentar untuk mengukur tegangan sinyal audio, atas dasar besar kecilnya tegangan yang terukur dipilih pola nyala/padam lampu yang sudah disiapkan lebih dulu dalam Flas PEROM, dan pola tersebut yang akan ditampilkan.

Effek lampu yang terbentuk, bisa dengan mudah dikomposisikan dan diisikan ke dalam Flash PEROM sehingga bisa dibentuk bermacam-macam model penampilan.





 Kode Program Lengkap bisa didownload disini
Source kode menggunakan bahasa assembler

Jam Digital Menggunakan AT89C2051 dengan Tampilan Seven Segmen

Mungkin bagi sebagian pembaca Jam Digital merupakan hal yang sangat sederhana atau sudah terlalu umum, tapi dari Jam Digital bisa dipelajari prinsip-prinsip dasar kontrol dengan microcontroller, antara lain  sistem tampilan 7 ruas dan pemakaian ti­mer.
Klik pada gambar untuk ukuran sebenarnya


Rangkaian lengkap Jam Digital ini terlihat pada Gambar 1, dilengkapi 4 buah tampilan 7 ruas LED untuk menampilkan waktu, terdiri atas angka-angka puluhan jam, satuan jam, puluhan menit dan satuan menit. Tombol SW1 dan SW2 dipakai untuk mengatur tampilan waktu, saat SW1 ditekan angka pada tampilan jam akan bertambah setiap detik, sedangkan SW2 dipakai untuk mengatur angka tampilan menit dengan cara yang sama.
Kristal 12 MHz dan kapasitor C1 dan C2 membentuk rangkaian oscilator pembangkit frekuensi kerja AT89C2051, rangkaian ini merupakan rangkaian baku, artinya bentuk rangkaian oscilator ini selalu seperti ini untuk semua rangkaian AT89C51, kecuali untuk keperluan yang lain nilai kristalnya saja yang mungkin berbeda.
Kombinasi kapasitor C3 dan tahanan R8 juga merupakan rangkaian baku, komponen ini dipakai untuk membentuk rangkaian ‘power on reset’, artinya rangkaian yang akan otomatis me-reset AT89C2051 setiap kali AT89C2051 mulai menerima sumber daya listrik.
Melihat rangkaian pada Gambar 1, memang tidak bisa dijelaskan bagaimana Jam Digital ini bekerja, karena rangkaian itu hanyalah bagian tampilan dan tombol pengatur waktu waktu saja, ‘Jam’ yang sesungguh­nya berupa program yang disimpan di dalam ROM yang ada di dalam IC AT89C2051.

Program lengkap Jam Digital ini, berikut dengan gambar skema dan gambar PCB dalam format OrCAD 9, bisa download disini

Pengukur Jarak Ultrasonik Menggunakan AT89C2051 dengan Tampilan Seven Segmen

   Meminjam teknik echo sounder yang dipakai untuk mengukur kedalaman laut, bisa dibuat alat pengukur jarak dengan ultra sonic. Pengukur jarak ini memakai rangkaian yang sama dengan Jam Digital dalam artikel yang lalu, ditambah dengan rangkaian pemancar dan penerima Ultra Sonic.

    Prinsip kerja echo sounder untuk pengukuran jarak digambarkan dalam Gambar 1. Pulsa Ultrasonic, yang merupakan sinyal ultrasonic dengan frekwensi lebih kurang 41 KHz sebanyak 12 periode, dikirimkan dari pemancar Ultrasonic. Ketika pulsa mengenai benda penghalang, pulsa ini dipantulkan, dan diterima kembali oleh penerima Ultrasonic. Dengan mengukur selang waktu antara saat pulsa dikirim dan pulsa pantul diterima, jarak antara alat pengukur dan benda penghalang bisa dihitung.

     Gambar 2 merupakan Rangkaian Jam Digital dalam artikel lalu yang direvisi untuk keperluan ini. Titik desimal pada tampilan satuan dinyalakan dengan tahanan R8. Setiap kali tombol Start ditekan, AT89C2051 membangkitkan pulsa ultrasonic pada Pin P3.4 yang dipancarkan dengan rangkaian Gambar 3, selanjutnya lewat pin P3.5 yang terhubung ke rangkaian penerima ultrasonic di Gambar 4, sambil mengukur selang waktu AT89C2051 memantau datangnya pulsa pantul.
    Hasil pengukuran waktu itu, dengan sedikit perhitungan matematis ditampilkan di sistem penampil 7 ruas sebagai besaran jarak, dengan satuan centimeter dan 1 angka dibelakang titik desimal.
Klik pada gambar untuk melihat ukuran sebenarnya
 

Rangkaian Kontrol & Tampilan




Rangkaian Pemancar Ultra Sonic



Rangkaian Penerima Ultra Sonic


Potongan Program 2 - Mengukur waktu pantulan ultra sonic

      1   SET   TR1                                        Hidupkan untaian pencacah
      2   SampaiNol:    
      3    JNB   TF1,SampaiNol                   Tunggu selama TF1 masih =1
      4   ACALL PulsaUltraSonic                Bangkitkan pulsa Ultrasonic   
      5   TungguPantulan:     
      6   JB    TF1,Selesai                             TL1/TH1 melimpah? Ya, stop
      7   JB    P3.5,TungguPantulan           Tunggu selama P3.5 =1
      8   Selesai:
      9   CLR   TR1                                        Matikan untaian pencacah


Potongan Program 3 - Menghitung jarak

      1      CLR   A
      2      MOV   Operand,TL1
      3      MOV   Operand+1,TH1
      4      MOV   Operand+2,A
      5      MOV   Pengali,#10
      6      MOV   Pengali+1,A
      7      MOV   Pengali+2,A
      8      ACALL Perkalian                HasilKali := 10 * TL1_TH1
      9   ;
  10      MOV   R0,#HasilKali
  11      MOV   R1,#Operand
  12      ACALL Copy                     Copy-kan isi HasilKali ke Operand
  13      MOV   Pembagi,#58
  14      MOV   Pembagi+1,#0
  15      MOV   Pembagi+2,#0
  16      ACALL Pembagian                HasilBagi := (10*TL1_TH1) / 58

Potongan Program 4 - Jarak dalam bentuk biner dirubah ke desimal untuk ditampilkan

      1   MenampilkanHasil:
      2      ACALL HapusTampilan
      3   ;
      4      MOV   DPTR,#AngkaPembagi      Mulai dengan 1000
      5      MOV   R7,#4                   Maksimum 4 digit
      6      MOV   R4,#RuasRatusan
      7      CLR   F0                      Belum pernah simpan
      8           
      9      MOV   R0,#HasilBagi
  10      MOV   R1,#SisaBagi
  11      ACALL Copy
  12   DigitBerikutnya:
  13      MOV   R0,#SisaBagi
  14      MOV   R1,#Operand
  15      ACALL Copy
  16     
  17   * Ambil AngkaPembagi dari Tabel
  18    
  19      CLR   A
  20      MOV   Pembagi+2,A
  21      MOVC  A,@A+DPTR
  22      INC   DPTR
  23      MOV   Pembagi,A
  24    
  25      CLR   A
  26      MOVC  A,@A+DPTR
  27      INC   DPTR
  28      MOV   Pembagi+1,A
  29     
  30      ACALL Pembagian         SisaBagi dibagi 1000; 100; 10 dan 1
  31     
  32      MOV   A,HasilBagi HasilBagi=0?
  33      JNZ   SimpanRuas        Tidak, jadikan simpan ruas
  34      JNB   F0,Berikutnya     Belum pernah simpan dan 0
  35   SimpanRuas:
  36      SETB   F0               Sudah pernah simpan angka
  37      ACALL JadikanRuas
  38      MOV   R0,$04            R0 <- R4
  39      MOV   @R0,A             Simpan
  40   Berikutnya:
  41      INC   R4
  42      DJNZ  R7,DigitBerikutnya
  43      RET
  44    
  45   AngkaPembagi:
  46      DW    1000
  47      DW    100
  48      DW    10
  49      DW    1

 P          Program untuk mengendalikan AT89C2051 harus diisikan ke dalam IC microcontroller itu, untuk itu diperlukan alat yang dinamakan sebagai AT89C2051 Flash PEROM Programmer.
Program Lengkap Pengukur Jarak Ultrasonik menggunakan AT89C2051 dapat anda download disini