Rabu, 26 Agustus 2009

USART : Kirim dan Terima Data

.
Setelah membahas mengenai Inisialisasi USART untuk komunikasi Serial Asinkron, selanjutnya mengenai kirim dan terima komunikasi data secara USART.
Kirim dan terima data untuk komunikasi secara USART, anda bisa membuat fungsi sendiri tetapi pada CoViAVR, telah ada library yang bisa digunakan untuk input dan output data yaitu library stdio.h. Akan saya bahas keduanya.

Library stdio.h
Coba anda buka Help CoViAVR (versi 2.03.9 dengan windows XP) dengan kata kunci stdio, maka akan ditampilkan daftar fungsi-fungsi yang terdapat pada stdio.h yang dapat anda gunakan.
  • dataRX = getchar() : menunggu karakter yang diterima dari port serial, menggunakan polling. Masalah penggunaan fungsi ini adalah jika tidak ada data serial yang diterima maka selalu looping dalam fungsi ini hingga mendapatkan data serial.
  • putchar(dataTX) : mengirimkan data serial berupa karakter C (data 8 bit), menggunakan polling.
  • puts(buffer_char) : mengirim data berupa kata atau kalimat yang tersimpan dalam buffer (disimpan dalam memori SRAM) hingga bernilai null (karakter dengan nilai 0x00).
  • putsf("kata") : mengirim data berupa kata atau kalimat yang ditulis diantara tanda " petik dua (disimpan dalam Memori FLASH).

Fungsi Read Write
Umumnya ada 2 fungsi yaitu mengirim dan menerima data, gambar berikut menunjukkan cara pengiriman dan penerimaan data secara umum :
Program Read dan Write menggunakan type data unsigned char (char tidak bertanda 0-255) karena data karakter yang digunakan tidak mungkin benilai negatif.
char pada CoViAVR, default-nya secara otomatis akan diubah menjadi unsigned char tetapi untuk membiasakan diri maka gunakan data sesuai dengan range-nya karena suatu saat anda akan menggunakan data bernilai negatif.

Coding pada gambar, untuk program pengiriman data (USART_WRITE) tidak masalah tetapi untuk fungsi menerima data (USART_READ) akan mengalami kasus yang sama dengan fungsi getchar() yaitu program akan menunggu atau looping dalam perintah while(!(UCSRA & ..... hingga 1 byte data serial diterima.
Hal ini akan sangat mengganggu apabila fungsi USART_READ digunakan hanya untuk mengecek "apakah ada data serial yang diterima ?". Yaitu jika ada data, ambil lalu proses dan jika tidak ada data, lanjut ke perintah selanjutnya dan bukannya menunggu terus-menerus.

Gambar disamping ada adalah solusi untuk masalah tersebut, yaitu mengecek flag RXC dengan menggunakan counting. Jika setelah i hitungan (100 hitungan) tidak ada data yang diterima maka lanjut ke baris program selanjutnya.

Hal inilah yang membuat saya pribadi lebih suka menggunakan sistem polling dan tidak menggunakan interupsi serial, karena programmer bisa mengetahui kapan USART akan dicek dan digunakan selain itu bisa merancang RTOS dengan sistem penjadwalan waktu (timer scheduling).


Yang perlu menjadi catatan penting adalah kapan anda memilih, apakah menggunakan fungsi yang tersedia pada stdio.h atau anda menggunakan fungsi sendiri, karena kedua penggunaan ini penting untuk kasus-kasus tertentu.

Senin, 24 Agustus 2009

USART : Inisialisasi USART pada AVR

.
Baca dulu posting :
- Komunikasi USART Mode Asinkron.
- Komunikasi USART : TTL - RS232.

Setelah membuat hardwarenya, sekarang tinggal Codingnya.
Saya hanya akan membahas penggunaan USART secara umum dengan protokol 9600,8N1 : Baud Rate 9600 bps (bit per second), 8 data bits, No Parity, 1 Stop bits.
Untuk penggunaan USART pada mikrokontroller AVR ATmega8535 diperlukan inisialisasi. Ada 2 cara inisialisasi yang dapat digunakan yaitu dengan menggunakan CodeWizardAVR dan dengan membuat fungsi sendiri.

Inisialisasi CodeWizardAVR
Konfigurasi gambar disamping adalah konfigurasi dasarnya tanpa interupsi dan single speed. Yang perlu diperhatikan yaitu nilai persentase Baud Rate Error-nya. Nilai-nilai kristal (Xtall) tertentu akan menghasilkan error yang cukup besar pada nilai baudrate tertentu, dan batas maksimal error yang diperbolehkan adalah 1 %.

Dengan penggunaan CodeWizardAVR, jika melebihi batas masimal huruf-nya akan berwarna merah seperti ini : Baud Rate Error: 1,4%.

Langkah-langkah Coding USART Asinkron pada AVR ada di Memulai CoViAVR (CodeVisionAVR).

Inisialisasi dengan CodeWizardAVR baik digunakan jika komunikasi yang anda inginkan hanya menggunakan 1 Baud Rate saja dan tidak berubah-ubah. Bagaimana jika ingin mengganti Baud Rate sedangkan programnya sudah panjang dan tidak ingin memulai dari awal lagi ? yaitu cukup dengan mengubah nilai-nilai inisialisasi USART seperti berikut :
  • Klik Toolbar CodeWizardAVR.
  • Rubah nilai Baud Rate yang diinginkan atau nilai lainnya.
  • Klik File - Program Preview dan copy paste nilai-nilai untuk inisialisasi USART-nya.





Inisialisasi Dengan Fungsi
Inisialisasi dengan fungsi lebih fleksibel dibandingkan inisialisasi dengan CodeWizardAVR karena Fungsi ini dapat digunakan untuk mengubah nilai Baudrate disaat yang anda inginkan tanpa perlu mengubah coding yang telah ada.
Misalkan dengan menekan keypad A maka baudrate yang digunakan 4800 kbps, keypad B 9600 kbps, atau pada event-event tertentu sehingga baudrate berubah secara otomatis, dst.

Akan tetapi untuk cara ini, programmer setidaknya harus memahami beberapa register-register penting yang akan digunakan untuk komunikasi serial USART. Pada setiap register saya hanya akan bahas beberapa bit pada register tersebut.
Beberapa register yaitu :

http://extremeelectronics.co.in
- UDR : USART Data Register
Register 8 bit terdiri dari 2 buah register dan bukan 1 register, 1 register untuk proses membaca data USART yang diterima (reciever buffer) dan 1 register untuk menyimpan data yang akan dikirimkan (transmit buffer). Hal inilah yang menyebabkan mengapa USART pada AVR adalah full duplex yaitu dapat melakukan pengiriman dan penerimaan data secara bersamaan.

- UBRR : Baud rate register.
Register 16 bit sehingga dibagi menjadi 2 yaitu bit0 - bit7 UBRRL dan bit8 - bit15 UBRRH. Register ini digunakan untuk menyimpan nilai kecepatan transmisi data. Nilai Baud rate pada UBRR didapatkan dengan rumus UBRR=(fosc/16xBaudrate) - 1 (asinkron kecepatan normal). Hal yang harus diingat adalah UBRR bernilai 16 bit sehingga menggunakan tipe data unsigned integer bukannya float dan juga hasil perhitungan dengan pembulatan kebawah bukan keatas (jika float), hal ini untuk mencegah error pada komunikasi data.

- UCSRA : USART Control dan Status Register A.
  • Bit 7 RXC : sebagai flag (tanda) bahwa penerimaan data1 byte telah selesai dan data bisa dibaca pada register UDR.
  • Bit 6 TXC : sebagai flag (tanda) bahwa pengiriman data1 byte telah selesai dan data selanjutnya bisa diberikan pada register UDR.
- UCSRB : USART Control dan Status Register B.
  • Bit 7 RXCIE : mengatur interupsi penerimaan data serial. Nilai awal 0 dan akan bernilai 1 jika RXC = 1.
  • Bit 6 TXCIE : mengatur interupsi pengiriman data serial. Nilai awal 0 dan akan bernilai 1 jika TXC = 1.
  • Bit 4 RXEN : mengaktifkan penerimaan RX.
  • Bit 3 TXEN : mengaktifkan pengiriman TX.
  • Bit 2 UCSZ2 : menentukan panjang karakter yang akan dikirimkan. Register ini digunakan bersamaan dengan register UCSZ0 dan UCSZ1 yang terdapat pada register UCSRC. Akan dibahas dibawah.
- UCSRC : USART Control dan Status Register C.
  • Bit 7 URSEL : karena UCSRC dan UBRRH memakai alamat yang sama maka fungsi bit ini adalah memutuskan register mana yang akan "ditulis". Jika bernilai 1 maka data akan ditulis ke UCSRC dan jika bernilai 0 maka data akan ditulis di UBRRH.
  • Bit 6 UMSEL : menentukan apakah komunikasi sinkron atau asinkron. Bernilai 0 maka komunikasi asinkron dan jika bernilai 1 maka komunikasi sinkron.
  • Bit 3 USBS : Usart Stop Bit Select jika bernilai 0 maka stop bit-nya 1 dan jika bernilai 1 stop bit-nya 2.
  • Bit 2 UCSZ1 dan bit 1 UCSZ0 : bersamaan dengan UCSZ2 menentukan panjang bit yang akan digunakan. Umumnya 8 bit tetapi anda bisa memilih 5,6,7,8, atau 9 bit.









Gambar di samping adalah fungsi untuk komunikasi USART.
Selamat mencoba.
;)

Minggu, 23 Agustus 2009

Komunikasi USART : TTL - RS232

.
Beberapa aplikasi atau sistem yang akan dibuat mungkin membutuhkan suatu sistem monitoring, pengendalian, penyimpanan data, pembuatan database, metode, atau hal-hal lain yang lebih kompleks dan mikrokontroller tidak dapat atau tidak mampu untuk menangani hal tersebut.
Bagaimana menangani hal ini ? Tentu saja dengan komputer.

Untuk meng-komunikasikan komputer dengan mikrokontroler adalah dengan interface (antar muka) antara komputer dengan mikro. Beberapa interface yang biasa digunakan antara lain melalui port serial (port COM) , port paralel (LPT), dan port USB pada komputer.
Saya hanya akan membahas port serial komputer saja (Port COM).

Level Comverter Port COM
Port serial COM pada komputer menggunakan level tegangan RS232 yaitu saat berlogika 0 nilai tegangannya antara +3 hingga +25 volt dan saat berlogika 1 tegangannya antara -3 hingga -25 volt sedangkan pada port mikrokontroler menggunakan level TTL yaitu logika 0 bernilai 0 volt (pendekatan) dan saat logika 1 bernilai 5 volt (pendekatan).









Perbedaan level tegangan ini menyebabkan dibutuhkannya level konverter agar tegangan antar perangkat yang berkomunikasi sama, sehingga komunikasi dapat dilakukan dan tidak terjadi data error.
Konverter RS232 - TTL digunakan untuk menyesuaikan level tegangan port COM komputer dengan port UART pada mikrokontroler. Ada beberapa rangkaian yang bisa digunakan sebagai konverter RS232 -TTL antara lain :
  • Menggunakan IC konverter RS232 - TTL seperti MAX232, ICL232, dsb. Penggunaan IC ini disarankan jika komunikasi yang dilakukan untuk jarak cukup jauh.
  • Menggunakan rangkaian transistor. Sebaiknya kabel tidak lebih panjang dari 1 meter.
  • Menggunakan IC gerbang Logika. Sebaiknya kabel tidak lebih panjang dari 1 meter.
Link-linknya:
- freecircuitdiagram.com
- www.scienceprog.com
- benybee.wordpress.com

Menggunakan IC konverter.













Menggunakan Transistor.













Menggunakan IC Gerbang logika.





















Beberapa hal penting lainnya pada komunikasi UART dengan RS232 menggunakan Port COM komputer yaitu :
  • RS232 HandShaking dengan RTS, CTS, dan DTR.
  • Kecepatan transfer data (Baud Rate) pada komunikasi mempengaruhi panjang kabel.
  • Nilai kapasitansi antar kabel yang mempengaruhi Noise saat transfer data dan mempengaruhi panjang kabel yang akan digunakan.
Link bacaan :
- www.radio-electronics.com
- www.lammertbies.nl

Selasa, 18 Agustus 2009

Komunikasi USART Mode Asinkron.

.
Jika pada Komunikasi USART AVR Mode Sinkron menggunakan 3 buah jalur maka komunikasi USART AVR mode asinkron menggunakan 2 buah jalur untuk komunikasi data yaitu RxD (PORTD.0) untuk menerima data dan TxD (PORTD.1) untuk mengirim data dan konfigurasi ini adalah konfigurasi secara umum untuk komunikasi UART (Serial asinkron).







Komunikasi serial asinkron berbeda dengan serial sinkron yaitu tidak adanya sinyal Clock yang mensinkronkan komunikasi data, hal yang mensinkronkannya adalah protokol komunikasi data dan kecepatan transfer yang dinyatakan dengan bit per second (bps) atau dikenal dengan nama baud rate. Kedua hal tersebut harus sama untuk setiap perangkat yang akan berkomunikasi secara serial asinkron, jika tidak maka kesalahan data akan terjadi bahkan komunikasi data tidak dapat dilakukan.

Kecepatan Transfer Data (Baud Rate)
Beberapa perangkat telah memiliki baudrate standar atau baudrate tertentu yang tetap (tidak dapat diubah) sehingga perangkat yang lebih fleksibel harus mengikuti-nya.
Contohnya adalah komputer memiliki nilai-nilai baudrate tertentu sehingga mikrokontroller sebagai perangkat yang fleksibel mengikuti nilai baudrate yang dimiliki komputer.

Apabila akan dilakukan komunikasi serial asinkron antar perangkat yang fleksibel, misal mikro dengan mikro maka kecepatan transfer data dapat diberikan pada nilai berapapun asalkan kedua mikro memiliki baudrate yang sama.
Beberapa nilai standar baudrate antara lain :
  • 1200
  • 2400
  • 4800
  • 9600
  • 19200
  • 38400
  • 57600
  • 115200
  • .. dst
Jika kecepatan transfer data 9600 bit per second maka 1 bit membutuhkan 1/9600 detik atau 0,000104 detik atau 104 uS (microsecond= 10^-6 detik).

Protokol Komunikasi Data
Komunikasi asinkron antar perangkat harus memiliki protokol yang sama antara perangkat 1 dengan perangkat yang lain, apabila protokolnya berbeda maka akan terjadi kesalahan komunikasi data.

Protokol komunikasi data antara lain :
  • Start Bit Selalu bernilai 0 : Ketika komunkasi UART (serial asinkron) akan diberikan, terlebih dahulu dimulai dengan pemberian Start Bit. Fungsinya sebagai pemicu (tanda) kepada penerima (RxD) bahwa akan ada data yang diberikan oleh pemancar (TxD) dan juga akan memicu clock pada reciever sehingga disinkronkan dengan clock pada transmitter. Clock penerima dan pemancar haruslah akurasi dengan toleransi 10% sehingga tidak terjadi kesalahan data.
  • Data Bits : adalah data yang akan dikirimkan secara UART dimulai dari LSB (bit ke 0) hingga MSB (bit terakhir). Jangan lupa menentukan banyaknya bit tersebut haruslah sama antara pemancar dengan penerima. Banyaknya data bits pada AVR bisa bernilai 7,8, atau 9 data bits.
  • Parity(keseimbangan) : berfungsi sebagai pengecekan error data yang ditransfer. Parity bisa bernilai ODD (ganjil), EVEN (Genap), dan NONE selain itu pemancar dan penerima harus menggunakan parity yang sama. Jika ODD parity maka jumlah total nilai 1 pada data bits + parity berjumlah ganjil, contoh ODD, jika data bits 00110101 maka parity bernilai 1. Sedangkan jika EVEN parity maka jumlah total nilai 1 pada data bits + parity berjumlah genap. Contoh even, jika data bits 00110101 maka parity bernilai 0.
  • Stop Bit Selalu bernilai 1 : berfungsi sebagai akhir dari komunikasi data dan kamudian masuk pada IDLE state. Pengiriman data selanjutnya dapat dilakukan setelah stop bit diberikan.
  • IDLE state : adalah kondisi tidak terjadinya komunikasi data dan jalur data berlogika 1 secara terus menerus (marking).
Silahkan lihat link Tutorial lengkap mengenai Serial and UART Tutorial.

Level Tegangan Komunikasi UART
Komunikasi data serial asinkron (UART) dapat dilakukan dengan 3 level tegangan yaitu level tegangan TTL, RS232, dan RS485. Gambar dibawah ini memperlihatkan perbedaan level tegangan tersebut.

Gambar disamping hanya menunjukkan perbedaan level tegangan untuk logika 1 dan logika 0 sehingga pada level RS232 tidak ditunjukkan starbit, parity, dan stopbit.
Level konverter TTL - RS232 pada
Komunikasi USART : TTL - RS232

Link Bacaan:
- www.lammertbie.nl
- www.rs485.com
- www.bb-elec.com

Tabel perbandingan UART pada level tegangan yang berbeda.

Senin, 17 Agustus 2009

Komunikasi USART AVR Mode Sinkron.

.
Komunikasi data antar perangkat seperti mikro-mikro, mikro-PC, atau antar perangkat lain merupakan hal yang selalu digunakan. Apalagi jika memiliki sistem monitoring, Analisis, ataupun kontrol interface yang user friendly yaitu menggunakan komputer sebagai input ataupun output data.
Hampir semua perangkat telah memiliki interface untuk saling berkomunikasi data, baik berupa I2C, TWI, USART, SPI, dll. Oleh sebab itu, pengetahuan komunikasi data suatu hal yang wajib.
NB: ada banyak istilah-istilah tentang komunikasi data yang penting memahami prinsip dan konsepnya

Pada topik ini akan dibahas mengenai SCI(Serial Communication Inteface) yaitu USART(Universal Synchronous Asynchronous Receiver Transmitter).

Mikrokontroller ATmega8535 memiliki USART yang dapat berfungsi sebagai serial sinkron ataupun serial asinkron dengan operasi Full Duplex yaitu penerima dan pengirim memiliki register tersendiri. Artinya dalam satu waktu dapat melakukan pengiriman data sekaligus menerima data.

Serial Sinkron (Synchronous ) :
Komunikasi serial sinkron menggunakan Clock dan data line (jalur data) untuk berkomunikasi. Pengiriman setiap datanya selalu disertai pemberian sinyal clock, Artinya suatu nilai (logika 1 ataupun 0) tidak akan dianggap suatu data jika belum diberikan sinyal Clock.

Oleh sebab itu pada komunikasi serial sinkron harus ada Master dan Slave, yaitu Master sebagai pemberi Clock dan Slave sebagai penerima Clock, bahkan jika komunikasi hanya 2 mikro atau kasus tertentu bisa saja master dan slavenya berganti-gantian tergantung siapa terlebih dahulu yang akan memulai komunikasi data baik menerima ataupun memberi data.






Pada gambar tersebut terlihat bahwa pada komunikasi secara Serial sinkron yang diberikan data terlebih dahulu kemudian disertai Clock, Hal ini agar data yang diterima valid dan tidak error, gambar selanjutnya akan menjelaskan hal ini.







Pada gambar terlihat adanya pergeseran saat pengiriman data. Mengapa pada bit ke-3 datanya sesuai sedangkan pada bit ke-5 terjadi kesalahan yang seharusnya bernilai 1 tetapi yang diterima 0 ?

Hal ini tergantung dari komunikasi yang anda gunakan yaitu saat pengambilan data (sampling), apakah anda mengambil data saat clock low-high (rising edge) atau saat clock high-low (falling edge), dan pada gambar tersebut pengambilan data saat rising edge oleh sebab itu bit ke-3 datanya sesuai meskipun terjadi pergeseran data.

USART mode Sinkron :
Pada USART AVR mode sinkron, komunikasi data dan clock telah diatur secara internal oleh AVR. Komunikasi USART mode Sinkron pada AVR, RxD (PORTD.0) dan TxD (PORTD.1) berfungsi sebagai pemberi dan penerima data sedangkan XCK (PORTB.0) sebagai pembangkit Clock-nya.

Beberapa hal mengenai USART mode serial sinkron pada AVR, antara lain :
  • Sebagai Master atau sebagai Slave.
  • Nilai Clock kristal (XTALL) antara master dan slave minimal sama dan jika tidak sama maka Clock kristal Slave harus lebih cepat dari Master agar Slave bisa mengikuti Clock Master.
  • UCPOL diatur set (logika 1) atau low (logika 0).
  • Format komunikasi datanya.
  • Saat IDLE logika pada RxD dan TxD haruslah berlogika 1 (High).






Gambar tersebut menjelaskan penggunaan UCPOL, yaitu :
  • UCPOL = 0 maka data yang dikirim pada TxD akan berubah saat clock rising edge sedangkan data akan diterima pada RxD saat clock falling edge.
  • UCPOL = 1 kebalikan yaitu data yang dikirim pada TxD akan berubah saat clock falling edge sedangkan data akan diterima pada RxD saat clock rising edge.
Baca posting tentang : Komunikasi USART Mode Asinkron.

Sabtu, 08 Agustus 2009

Scanning 8 Digit Seven Segmen

.
Sebelum memulai coding 8 Digit Seven Segmen dan untuk meminimalkan kesalahan program, maka sebaiknya dikerjakan "diatas kertas" terlebih untuk pengaturan tampilannya.











Konfigurasi seven segmen memungkinkan untuk menampilkan semua angka dari 0 - 9 dan beberapa karakter antara lain :
A,a,b,C,c,d,E,e,F,H,h,I,J,L,n,o,P,q,r,t,U,u,Y,-,_.
Beberapa huruf tetapi bisa menimbukkan kerancuan yaitu :
G dgn 6, g dgn 9, O dgn 0 (nol), dan S dgn 5.

Untuk huruf M dan W bisa diakali dengan menggabungkan 2 buah tampilan segmen sehingga untuk tampilan M adalah 2 buah segmen dgn tampilan n dan untuk tampilan W adalah 2 buah segmen dgn tampilan u atau mengubah posisi segmen dari vertikal menjadi horizontal (untuk kasus tertentu).

Tabel disamping adalah nilai biner yang akan diberikan kepada segmen untuk menampilkan angka-angka tertentu.

Saya hanya akan membahas tampilan angka saja dengan konfigurasi common anode dan kondisi awal segmen DOT (titik) adalah mati.


Lihat dulu rangkaian Schematik 8 Digit 7 Segmen.
Dari gambar schematic di dapatkan konfigurasi yang diinginkan yaitu:
PORTB.0 - PORTB.7 adalah A,B,C,D,E,F,G,DOT
PORTC.0 - PORTC.7 adalah DRV0 - DRV7
Port DRV atau driver adalah port yang digunakan untuk mengaktifkan segmen yang akan menampilkan suatu angka.
PORTA tidak dipilih karena memiliki ADC sedangkan PORTD karena ada PWM dan USART yang mungkin bisa digunakan nantinya.

Coding disamping berfungsi untuk menampilkan angka pada Seven Segmen dan tidak termasuk mengatur segmen mana yang menampilkan angka tersebut.


Angka yang akan ditampilkan berada pada variable nilai yang nilainya bisa berupa nilai 0 - 9 atau berupa karakter ASCII '0' - '9', karena jika anda memberikan nilai 0 - 9, pada fungsi ini akan di konversi-nya menjadi nilai ASCII '0' - '9' yaitu ditambahkan dengan 0x30 (48 desimal).

Coding ini untuk menguji apakah program menampilkan angka pada semua segmen berhasil atau tidak.

Mula-mula semua segmen akan menampilkan angka 0 - 9 dengan tundaan selama 1 detik kemudian semua segman akan menampilkan angka 0, 8, 5, lalu 6 secara bergantian dengan waktu tunda 1 detik.

Ini menunjukkan penggunaan nilai berupa angka dan karakter ASCII.

Scanning 8 DIGIT
Coding ini akan menampilkan suatu nilai dengan type data float pada seven segmen.

Oleh sebab itu fungsi ini hanya untuk menampilkan bilangan pecahan saja (ada komanya).

Coba anda buat sendiri menampilkan bilangan bulat saja atau bahkan berupa huruf.

Penggunaannya fungsi diatas cukup sederhana sebagai contoh :
...............
while(1)
{
DISPLAY_SEGMEN(1234.5678);
}
Selamat mencoba.

Jumat, 07 Agustus 2009

Display : 7 Segmen dan 16 Segmen

.
Display selain menggunakan LCD juga terdapat display jenis lain seperti 7 segmen, 14 segmen, 16 segmen, dan dot matriks, tatapi saya hanya akan membahas seven segmen
Beberapa kelebihannya antar lain :
  • Harganya relatif murah.
  • Tampilan lebih terang dan jelas sehingga bagus sebagai indikator pada industri
  • Lebih tahan lama jika terus menerus diaktifkan.
Silahkan lihat link-link ini :
16 Segmen : Konfigurasi segmen
7 Segmen : Common anoda dan common catode
Display-display lainnya.

Seven Segmen
Seven segmen terdiri dari 7 buah Segmen LED + 1 Dot dan disusun sedemikian rupa sehingga menjadi Display seven segmen yang dapat menampilkan angka dan huruf-huruf tertentu.
Ada 2 konfigurasi seven segmen pada umumnya yaitu common anode (anoda bersama) dan common catode (katoda bersama). Gambar disamping menunjukkan konfigurasi tersebut.








Konfigurasi common anode :
  • Kaki anoda dihubungkan ke VCC.
  • Kaki tiap-tiap segmen ke-driver segmen.
  • Kondisi awal pin driver berlogika 1 agar semua segmen tidak menyala.
  • Segmen dinyalakan dengan memberikan logika 0 pada pin segmen.
Konfigurasi common catode :
  • Kaki katoda dihubungkan ke GND.
  • Kaki tiap-tiap segmen ke-driver segmen.
  • Kondisi awal pin driver berlogika 0 agar semua segmen tidak menyala.
  • Segmen dinyalakan dengan memberikan logika 1 pada pin segmen.
Driver seven segmen bisa berupa IC 7447, IC 7448, IC Latch 74HC573, ULN2803, mikrokontroller, dll. Setiap penggunaan driver tersebut masing-masing memiliki kelebihan dan kekurangan, antara lain:
  • Penggunaan IC7448 atau IC7447 yaitu decoder BCD ke seven segmen bagus digunakan untuk tampilan seven segmen 4 digit karena hanya akan menggunakan 1 buah port mikrokontroller saja akan tetapi tampilan hanya berupa angka dan tidak dapat tampilan lainnya.
  • Penggunaan mikrokontroller bagus untuk sistem scanning seven segmen hingga 8 digit atau 24 digit dengan tampilan berupa angka atau karakter-karakter tertentu dan sangat fleksibel selain itu rangkaian menjadi lebih sederhana karena hanya membutuhkan resistor dan transistor saja. Tetapi karena menggunakan sistem scanning maka untuk program yang panjang dan apabila pada program tersebut terdapat penggunaan delay yang cukup lama maka seven segmen akan mati selama delay tersebut karena Seven segmen tidak discanning.
  • Penggunaan IC Latch 74HC573 atau IC latch lainnya bagus untuk sistem scanning dengan tampilan berupa angka atau karakter-karakter tertentu dan sangat fleksibel dengan jumlah digit yang banyak (misal 8 digit, 16 digit, 24 digit, atau lebih). Karena menggabungkan sistem scanning dan Latch maka untuk program yang panjang atau terdapat delay sekalipun tidak akan berpengaruh pada tampilan seven segmennya, akan tetapi karena menggunakan IC latch tambahan yang memperbesar rangkaian keseluruhan.
  • Penggunaan IC ULN2803 sama seperti pada penggunaan mikrokontroller dengan sistem scanning akan tetapi arus dan tegangannya bisa lebih besar untuk mengendalikan seven segmen yang membutuhkan arus atau tegangan besar.
Scanning dengan Uc
Jika anda merancang display seven segmen dengan menggunakan sistem scanning ada beberapa hal yang harus diperhatikan antara lain :
  • Konfigurasi menggunakan common anode yang terhubung dengan VCC untuk memperoleh arus dan tegangan dari power supply agar tampilan lebih terang. Jika menggunakan konfigurasi common catode maka tegangan dan arus dari pin mikrokontroler sehingga tampilan lebih redup.
  • Setiap pin segmen terdapat resistor dengan nilai tertentu yaitu saat cahaya segmen cukup terang, biasanya 330 ohm.
  • Scanning setiap segmen jangan terlalu cepat karena tampilan akan redup selain itu tampilan akan tumpang tindih, juga jangan terlalu lambat karena segmen akan berkedip atau terlihat satu persatu.
  • Konfigurasi pin berurutan antara pin mikro dengan pin segmen dari LSB ke MSB (port 0 mikro ke port 7 mikro) yaitu A, B, C, D, E, F, G, DOT.
Untuk coding akan dibahas pada Scanning 8 Digit Seven Segmen
Berikut schematik display 8 digit Seven segmen.

Topik yang Populer