About

Ahmad Edi Saputra

Monday, January 19, 2015

Arduino dan RTC DS1307 di Proteus

RTC DS1307 merupakan salah satu jenis RTC yang banyak dijumpai di Indonesia, khususnya jogja:).
RTC ini dapat diakses menggunakan Arduino melalui interface I2C. apa itu I2C? lihat DISINI

Singkat cerita, karena I2C merupakan jalur yang bisa dimanfaatkan untuk banyak slave ada kasus dimana beberapa librari Arduino yang menggunakan Wire.h (library I2C arduino) mengalami crash. sehingga alangkah baiknya untuk menulis sendiri biar enak dan dijamin tidak crash. hehe

Langsung saja keproteusnya


berikut ini contoh program untuk membaca data dari RTC, untuk nulisnya nyusul

#include <Wire.h>

void setup(){
      Serial.begin(9600);
      Wire.begin();
}
void loop(){
      bacaWaktu();
      delay(1000);
void bacaWaktu(){
      Wire.beginTransmission(0x68);
      Wire.write(0x00);
      Wire.endTransmission();
      Wire.requestFrom(0x68,7);
      int data[7];
      for(byte i=0;i<7;i++){
          data[i]=Wire.read();
      }
      for(byte i=0;i<7;i++){
          byte temp = ((data[i]/16)*10)+(data[i]%16);
          Serial.print(temp);
          Serial.print(" ");
      }
      Serial.println();
}

I2C (Inter Intgrated Circuit)

I2C merupakan komunikasi serial dua kabel yang menggunakan SDA sebagai jalur data dan SCL sebagai jalur clock. pada komunikasi ini, clock untuk mengirimkan data bersumber dari master atau host. host lah yang mengatur jalanya aliran data baik mengirim maupun menerima data sampai memilih slave yang akan berkomunikasi dengan host. Karena I2C merupakan komunikasi antar IC maka komunikasi ini mampu digunakan untuk beberapa IC seperti terlihat pada gambar dibawah ini.
SDA dan SCL merupakan pin open drain/kolektor sehingga membutuhkan pull-up agar sinyal dapat dihasilkan dengan baik. keuntungan dari sistem pull-up adalah hanya tinggal mengganti VCC pada pull-up untuk menghasilkan level sinyal yang berbeda.

Agar host (misalnya Device1) mampu menunjuk slave yang akan diajak berkomunikasi, maka masing-masing slave memiliki slave address. slave address ini harus ditunjuk pertamakali sebelum pertukaran data dilakukan. setelah slave addres ditunjuk. misalnya Device2, maka slave lain akan mengabaikan data apapun yang diterimanya.


Frame data pada pengiriman data I2C dapat dilihat pada gambar diatas. pertama-tama, I2C host mengirim sinyal start ataupun repeat start jika start gagal. setelah sinyal start berhasil dikirim, host mengirim addres untuk menunjuk slave. addres slave ini hanya 7 bit MSB tetapi dalam pengirimanya address menjadi 8-bit karena memiliki 1-bit kondisi komunikasi yaitu untuk read (bit 0 = 1) atau write (bit 0 = 0). setelah penunjukan slave address berhasil, slave akan mengirim ACK(ACKnowledge) dan host hanya bisa menerima/ mengirim data setelah ACK ini diterima.  selanjutnya host siap mengirim data.

berikut ini sinyal start dan stop dari I2C
sinyal start ditandai dengan transisi turun pin SDA saat pin SCL masih tinggi sedangkan sinyal stop ditandai dengan transisi naik pin SDA saat SCL masih tinggi. hal ini terjadi karena pada dasarnya SCL merupakan clock yang akan naik dan segera turun setelah sampling selesai sementara SDA hanya akan bertransisi saat sampling sudah selesai atau SCL rendah.

Tuesday, January 13, 2015

Arduino dengan ATMega32

Pada kesempatan kali ini, kita akan membahas cara membuat board arduino sendiri dengan ATMega32. sementara, kita tidak memakai bootloadernya dulu. pada banyak kasus, semua berjalan lancar.

Arduino IDE pada dasarnya memiliki kesamaan dengan WINAVR2000, mulai dari makefile sampai library. pada makefile Arduino, penentuan chip, besarnya clock yang digunakan sampai fusebit yang dipakai dilakukan pada file "board.txt". Untuk itu, langkah pertama untuk membuat Arduino dengan ATMega32 hanyalah dengan mengedit file tersebut. File tersebut terletak pada \..\Arduino\hardware\arduino



lalu paste code dibawah ini tepat di tempat paling bawah lalu simpan perubahan.

##############################################################

mega32-16.name=ATmega32-External 16mhz
mega32-16.build.mcu=atmega32
mega32-16.build.f_cpu=16000000L
mega32-16.build.core=arduino:arduino
mega32-16.build.variant=mega32
mega32-16.upload.maximum_size=3200
mega32-16.bootloader.low_fuses=0xEF
mega32-16.bootloader.high_fuses=0x89
mega32-16.bootloader.extended_fuses=0xFD

##############################################################
langkah selanjutnya adalah definisi pin I/O, timer, dan lainya. Buat folder baru di \..\Arduino\hardware\arduino dengan nama mega32


paste file pin_arduino.h didalam folder mega32 tersebut. file tersebut dapat didownload DISINI

Langkah selanjutnya, restart IDE arduino jika sedang dibuka. lalu ganti board seperti biasa maka akan muncul seperti gambar berikut

kita sudah siap meprogramnya sesuai dengan deskripsi PIN dibawah ini. misalnya pin digital dimulai dari 0 sampai 23. sehingga untuk mengakses PORTC7(D23) maka hanya perlu

pinMode(23,OUTPUT)


Sunday, January 11, 2015

membuat line follower dengan kendali PID



bagaimana videonya? hehe itu waktu masih jaman suka mainan robot kira-kira 2 tahun yang lalu...

baiklah sobat toluent yang ingin membuat LF atau Line Follwer dengan kendali PID. Hal pertama adalah dengan membuat hardware LF-nya terlebih dahulu.

pada dasarnya kendali PID hanya mengolah error atau galat yang didapat dan mengatur kecepatan aktuator agar error menurun sampai errornya hilang. untuk membuat error dari sensor LF akan kita bahas nanti sekarang hanya perhitunganya kecilya saja. ya, perhitungan diskrit sederhana dari PID

Proporsional= error *KP
Integral=error*KI
Derivatif=rate*KD


Driver H-bridge dengan MOSFET POWER IRF

MOSFET merupakan jenis transistor efek medan karena memanfaatkan medan listrik untuk membuka dan menutup kanal penghantarnya. transistor jenis mosfet ini memiliki 3 pin yaitu G atau GATE, D atau DRAIN, dan S atau SOURCE. MOSFET mengalirkan arus dari drain ke source sehingga arus aktif mosfet biasa disebut IDS, sehingga memungkinkan adanya IDS negatif

Mosfet power IRF (internal rectifier) merupakan jenis transistor efek medan yang sudah terdapat penyearah didalamnya (lebih tepatnya semacam freewheeling) dan cocok digunakan untuk elektronika daya besar. Mosfet yang akan digunakan adalah mosfer jenis IRF9540 (P-channel MOSFET) dan IRF540 (N-channel MOSFET)

MOSFET channel N dan P memiliki kinerja yang komplement. MOSFER N akan aktif jika VGS tidak sama dengan nol atau sebesar 10V untuk IRF540 sedangkan untuk MOSFET P aktif saat VGS sama dengan -10V (IDS channel P biasanya negatif).


dari gambar diatas, VGS MOSFET IRF9530 mendapat tegangan VGS negatif (VGS=VG-VS) karena G tersambung dengan ground sedangkan S tersambung dengan VCC sehingga arus IDS mengalir (IDS= negatif, jadi arus dari S ke D). untuk MOSFET IRF540 karena G tersambung dengan GROUND maka VGS=0 sehingga MOSFET tidak aktif, tidak ada IDS.

untuk lebih jelasnya tentang sistem kerja H-bridge silahkan klik disini

Friday, January 9, 2015

Driver motor H-bridge

Assalamualaikum sahabat toluent yang ingin mengembangkan diri dibidang elektronika, kali ini kita akan mengulas tentang driver motor H-bridge atau sering juga disebut dengan driver jembatan H karena bentuknya yang memiliki dua buah lengan dan satu jembatan sehingga serupa dengan huruf H. driver ini banyak digunakan untuk mengendalikan arah putaran motor DC bahkan sampai ada yang menggunakanya sebagai inverter (pengubah DC ke AC).

Cara kerja driver ini dapat dilihat pada gambar dibawah ini
Kali ini kita hanya akan mengulas tentang cara kerja driver H-bridge untuk motor DC dimana motor DC hanya memerlukan perubahan polaritas untuk dapat merubah arah putaranya. perubahan polaritas ini jugalah yang mendasari sistem kerja inverter. untuk dapat merubah polaritas dengan sistem elektronik, sangat mudah jika menggunakan driver H-bridge. H-bridge dapat dirangkai dengan mosfet sebagai pengganti saklarnya karena mosfet mampu menghantarkan arus yang besar dan memiliki frekuensi penyaklaran yang besar.

Untuk membuat motor diam, artinya tidak ada arus yang mengalir melewati motor (gambar1) dapat terjadi saat keempat saklar (a, b, c, dan d) terbuka sehingga tidak ada arus yang mengalir dari VCC (+) ke GND (-).

Untuk membuat putaran kearah kanan (searah jarum jam) maka dapat dilihat pada gambar 2 dimana polaritas lilitan motor yang tersambung dengan saklar a memiliki potensial yang lebih tinggi dibandingkan dengan potensial lilitan yang tersambung dengan saklar b. Hal ini terjadi karena saklar a sehingga tersambung dengan VCC dan saklar c membuka sehingga tidak terjadi short-circuit. saat yang bersamaan saklar b membuka sehingga tidak mendapat potensial tinggi dan saklar b tertutup sehingga mendapat potensial rendah. sehingga arus akan mengalir melalui saklar a dan saklar d. begitu juga dengan gambar 3

secara elektronik, driver motor H-bridge dapat di rangkai seperti gambar berikut

Thursday, January 1, 2015

Membuat pergeseran bit untuk Arduino pada Running Text

Baiklah sahabat toluent yang bersemangat membangun wawasan elektronikanya, kali ini kita akan membahas tentang algoritma pergeseran bit dari ASCII pada Running Text/Moving sign/display LED DOT Matrik.

Running text yang menggunakan sistem scan kolom membutuhkan nilai perhitungan dari ASCII data yang akan ditampilkan. Misalnya data yang akan ditampilkan adalah "toluent", jika diubah ke data ASCII akan menjadi array heksa 0x74,0x6F,0x6C,0x75,0x65,0x6E,0x74. untuk lebih jelasnya tentang ASCII lihat di SINI. Nilai tersebut akan di hitung dengan sebuah algoritma yang masing-masing nilai array akan menunjuk indek tertentu dan lima indeks setelahnya (untuk DOT Matrik 5x7).

Untuk dapat memahami algoritma perhitunganya, mari kita simak bahwa ASCII yang unsigned dari 0-255. Huruf 'a' sampai 'z' diwakili dengan ASCII 0x61 sampai 0x7A. Angka ini masih tidak akan dimengerti oleh LED DOT matrik kita, dengan artian tidak bisa langsung diproses begitu saja. Karena DOT matrik yang digunakan 5x7 maka satu ASCII harus dikali dengan 5 untuk mengakses indeksnya
lihat di cara pembuatan karakter DOT matriks.