Sabtu, 24 Oktober 2009

Ask : Operasi per-bit Bahasa C

.
Asker : Abi
About :
Perintah akses per-bit pada sebuah register USART.
Question :



Too PayZ:

Ada pepatah dulu yang kira-kira seperti ini:
"Jika tidak ingin dibodohi orang Inggris belajarlah bahasa Inggris, tidak ingin dibodohi orang Belanda belajarlah bahasa Belanda, tidak ingin dibodohi orang Indonesia belajarlah bahasa Indonesia." dsb. Oleh sebab itu jika ingin memahami pemrograman mikrokontroller Bahasa C maka pelajarilah Bahasa C.

Jangan salah, CoViAVR ataupun compiler lain bisa "membodohi" anda jika kurang paham penggunaannya, secara penulisan dan aturan benar bahkan tidak ada warning ataupun error tetapi program tidak jalan atau tidak sesuai sehingga anda "pusing" dan bertanya-tanya "dimana salahnya program ini?".

Contoh yang mudah : PORTB.3 = 1234 ;
tidak akan error padahal nilai yang mungkin hanya 1 atau 0.

Baca dulu : USART : Inisialisasi USART pada AVR

UCSRA adalah data 1 byte atau terdiri dari 8 bit seperti pada gambar berikut (datasheet hal 165) :




bit RXC berada pada posisi bit 7 dan TXC berada pada posisi 6, untuk mengaksesnya ada 2 cara yaitu dengan cara byte atau manipulasi bit.

Klik gambar untuk memperbesar.
Biar jelaaaaasssss...
semoga membantu

Met Mencoba ;)

Ask : ADC dan karekter LCD 16x2 pada AVR

.
Asker : Dhani_Wae
System :
Sensor garis dengan ADC atau DVM (Digital Voltmeter), dll
Question :
mas payz mau tanya neh, gimana caranya buat baca input ADC di atmega8535 lalu dihitung & hasil hitungannya ditampilkan di LCD?
Jumlah input ADC yang saya pake 6 input, semua akan dihitung dan ditampilkan hasilnya pada LCD 2x16.
saya menggunakan software "flowcode v3.3.5.45 for AVR", jadi saya harus membuat flowchartnya dulu. terima kasih sebelumnya...

Too PayZ :
Saya akan mencoba menjelaskan pembacaan ADC dan menampilkannya pada LCD.
Aplikasi ini bisa digunakan pada sensor garis pada robot line tracing, DVM (Digital Voltmeter) 8 channel lalu ditampilkan ke komputer, dan sebagainya.
Saya akan membahas menggunakan CodeVisionAVR dan tidak menggunakan flowcode.

Silahkan lihat blog berikut : Sensor Garis ADC : Membaca Data

Met Mencoba ;)

Ask : Membuat Help pada Mikrokontroller

.
Asker : NewBie
System :
Semua sistem secara umum.
Question :
Saya ingin membuat cara penggunaan alat saya atau langkah-langkah pengoperasian alat saya (Help) yang ditampilkan LCD 16x2 sehingga tanpa perlu petunjuk manual ataupun tidak perlu saya beri tahu orang awam pun bisa mengetahui cara penggunaan alat tersebut.

Masalahnya, saya ingin tampilan Help-nya berganti-ganti setiap 1,5 detik dan selalu ditampilkan tanpa henti-henti tetapi ketika Keypad ditekan langsung menuju operasi yang diinginkan dan keluar dari Help saat itu juga tanpa menunggu 1,5 detik selesai.
Saya menggunakan Delay_ms(1500) dan masalahnya jika pakai delay maka harus menunggu delay selesai dulu.
Gmana mas ?

Too PayZ :
Memang rata-rata tugas akhir yang pernah saya lihat atau alat lainnya selalu menggunakan Manual Book sebagai petunjuk. Apabila manual booknya hilang dan saat pameran dilakukan oleh juniornya atau orang awam ingin mengetahui penggunaan alat, menjadi kesulitan.
Jika ada tampilan Perancang Alat, Judul Alat, Link Website, Help, dll, itu merupakan nilai tambah dan siapapun tertarik mencoba alat anda.

Jika menggunakan perintah delay_ms(1500) maka tetap menunggu 1,5 detik sebelum pindah ke perintah selanjutnya. Oleh sebab itu triknya yaitu dengan mengganti delay_ms(1500) dengan program Scanning Keypad dan looping terus menerus hingga kira-kira 1500mS.

Silahkan lihat blog berikut : HELP Pada Aplikasi Mikrokontroller

Met Mencoba ;)

Kamis, 22 Oktober 2009

Ask : Up Down Counter dgn IC Digital

.
Asker : Dady
System :
Up Down Counter dgn IC 74HC192 tampilan Seven Segmen
Question :
mo nanya rangkaian 7 segment menggunakan 7447 dan decadenya 74192 gimana ya rangkaiannya tolong bantu dong ko aku dah rangkai tapi ga jalan mohon pencerahannya thank's

Too PayZ :
Lagi sibuk n bingung mo bahas apa, Dady tanya tentang Up Down Counter, Jadi ingat masa lalu ketika pertama kali merancang alat dengan IC digital.
"Ok lah kalo begitu"

Silahkan ke posting tentang IC Digital Project : Up/Down Counter

Selasa, 20 Oktober 2009

Ask : Delay untuk Scan Keypad, baca sensor, dan USART.

.
Asker : DanZDev
System :
Pengukuran kadar alkohol dengan sensor TGS2620
Pengukuran kadar alkohol dan menampilkannya pada LCD16x2 dan memberikan data pembacaan ADC(0) ke komputer secara serial USART.
Question :
Pembacaan data ADC setiap 1000 ms dan menampilkannya pada LCD16x2 sebagai informasi ke user, sedangkan data diberikan ke komputer dan ditampilkan setiap 30 detik (30000 ms) karena karakteristik sistemnya baru memiliki perubahan yang signifikan setelah kira-kira 30 detik. Selain itu sistem harus selalu scanning tombol, dan jika saya menekan 'A' maka saat itu pula harus melakukan suatu pengiriman data USART.

Bagaimana menggabungkan Pembacaan ADC, display data ADC ke LCD setiap 1 detik, mengirim secara serial ke PC setiap 30 detik dan sekaligus Scanning keypad tersebut.

Too PayZ :
Saya akan menunjukkan dua cara yaitu sistem polling dengan pengaturan waktu (scheduling) dan pemicuan melalui komputer.
Untuk kedua cara tersebut langkah pertama yaitu menentukan daftar timing-nya dulu biar jelas :
  • ADC(0) = 1000 ms / 1 detik
  • Refresh Display LCD = ADC (0) = 1 detik
  • UART komputer = 30 detik
  • Keypad = 100 mS : nilai ini anda tentukan sendiri (bisa saja 50 mS atau 200 mS) karena penekanan keypad berdasarkan kecepatan jari menekannya.
Dari daftar diatas terlihat bahwa waktu terkecil adalah Scanning Keypad dengan waktu 100 mS selain itu 30 detik dan 1 detik merupakan kelipatan 100 mS, sehingga waktu 100 mS menjadi waktu acuan.
Silahkan lihat dulu blog sebelumnya :
- Keypad Matriks
- Keypad Matriks : Konsep Dasar
- Keypad Matriks : Scanning Keypad
- LCD Karakter
- Tips n Trik Coding LCD Karakter
- USART : Inisialisasi USART pada AVR
- USART : Kirim dan Terima Data (Perhatikan fungsi terima data)

Sistem Polling

Dengan menggunakan waktu acuan yaitu Polling setiap 100 mS dan global variable time_count sebagai indikatornya maka Scanning Keypad dilakukan setiap time_count bertambah nilainya atau setiap 100 mS, baca ADC(0) dan menampilkannya di LCD jika time_count berkelipatan10 (100mS x 10 = 1000mS), dan komunikasi UART setiap time_count berkelipatan 300 (100mS x 300 = 30000 mS).
Setelah mencapai waktu maksimal dari sistem (yaitu 30 detik) maka jangan lupa mereset nilai pada variabel time_count = 0.

Kelemahan cara ini adalah jika pewaktuannya berubah maka mikrokontrollernya harus diprogram kembali.

Pemicuan Oleh Komputer
Cara kedua yang bisa dilakukan dan lebih fleksibel yaitu dengan pemicuan melalui komputer yaitu komputer yang menentukan suatu event pada mikrokontroller.
Fleksibel karena timing-nya bisa dilakukan dengan mengubah nilai timer secara software (tinggal klik saja). Tapi kelemahannya yaitu sistem harus selalu terkoneksi dengan komputer dan tentunya harus membuat software di komputer.
Tapi masalah "harus terkoneksi dengan komputer" dapat diatasi dengan menambahkan saklar toggle yang berfungsi memilih apakah sistem dipicu oleh komputer atau berdiri sendiri dengan program asalnya (default).

Langkah dan cara kerjanya :
  • Buat Hardware dan Software (AVR dan Komputer).
  • Pada Software komputer untuk Timer Scanning Keypad, Timer baca ADC(0) + display LCD, dan Timer Komunikasi USART harus fleksibel atau dapat diubah nilainya (di klik-klik saja) seperti menggunakan komponen Tedit atau TCombobox (Delphi).
  • Setelah aplikasi di RUN dan dengan perintah if then selanjutnya membandingkan pewaktuannya (timingnya) yaitu jika Timer Sekarang = Timer Scanning Keypad maka kirim karakter 'K' ke mikrokontroller berarti pemicuan perintah Scanning Keypad dilakukan.
  • Jika Timer Sekarang = Timer ADC+LCD maka kirim karakter 'A' ke mikrokontroller berarti pemicuan perintah Pembacaan ADC(0) dan menampilkannya ke LCD dilakukan.
  • Jika Timer Sekarang = Timer Komunikasi UART maka kirim karakter 'U' ke mikrokontroller berarti pemicuan perintah kirim data dari mikrokontroller ke kompuetr dilakukan.
Met Mencoba ;)

Minggu, 18 Oktober 2009

Ask : Pengukuran Tinggi Badan Otomatis

.
Asker : Adrianus Wahyudi(E-mail)
System :
Pengukuran tinggi badan otomatis menggunakan sensor PING tampilan seven segmen.
nb : Dari salah satu alat yang pernah di kerjakan Too_PayZ (Baca blog-nya)
Question :
Bagaimana menentukan tinggi seseorang yang diukur?
Bagaimana cara menampilkannya di Seven segmen?


Too PayZ :
Range pembacaan sensor PING adalah 3 - 300 cm, dengan mengambil rata-rata tinggi manusia (Indonesia) maka maksimal 200 (atau 255). Dari gambar plant tersebut maka tinggi orang adalah
A = C - B, dengan C = 200 cm.
Saya yakin untuk pengukuran tinggi manusia Adrianus tidak kesulitan tetapi yang masalah adalah menampilkannya pada seven segmen.

Fungsi pembacaan tinggi dengan sensor PING tidak saya bahas.
Pada topik posting Mobil Robot & Sensor PING, hasil pengukuran PING-nya berupa bilangan bulat jadi tidak saya sarankan untuk digunakan di sistem ini, tentu saja ada caranya pengukuran sensor PING dengan hasil pecahan baik menggunakan Timer ataupun Looping. Silahkan searching (maaf belum diposting).

Untuk hardware Seven Segmen dan Codingnya sudah saya posting, silahkan baca :
Display : 7 Segmen dan 16 Segmen
Scanning 8 Digit Seven Segmen

Good Luck ;)

Topik yang Populer