Sistem Penjernihan Air di Rumah versi 1

Catatan: Artikel ini adalah arsip saya tentang sistem penjernih air versi lama yang saya pakai. Sistem yang baru dijelaskan di artikel Sistem Penjernihan Air versi 2.

Saya tinggal di daerah Ciwaruga, Kabupaten Bandung. Tempatnya lumayan lah, tidak terlalu jauh dari tempat kerja saya di ITB, agak dingin. Hanya saja ada masalah yaitu tidak ada akses air bersih dari PAM. Untuk air bersih saya mengandalkan air bersih yang disediakan dari komplek perumahan dan juga memiliki sumur bor sendiri. Dalam tulisan ini saya hendak membahas mengenai proses yang diperlukan agar air dari sumur ini dapat dipakai.

Sumur saya termasuk sumur dalam, sekitar 15 meter dalamnya. Air dari sumur dalam ini punya masalah, yaitu ada kandungan besi dan mangan yang larut sebagai garam. Garam besi dan mangan ini dalam keadaan tanpa oksigen larut dalam air, sehingga ketika dipompa ke atas, airnya bening, walau ada sedikit bau H2S. Setelah air ini didiamkan sekitar 1 sampai 2 jam, maka garam besi & mangan akan bereaksi dengan oksigen di udara dan mulai menggumpal membentuk endapan berwarna coklat. Air yang masih mengandung besi dan mangan ini jelas belum cocok untuk dipakai mencuci, mandi dan memasak. Untungnya, solusinya mudah saja, yaitu air tersebut perlu difilter dulu, sehingga garam yang menggumpal tersaring, dan airnya jadi jernih sehingga dapat dipakai untuk mencuci, mandi dan masak.

Berikut ini adalah proses yang saya lakukan agar air tersebut dapat dikonsumsi:

  1. Memompa air dari dalam sumur ke bak penampungan
  2. Mendiamkan air di bak penampungan sampai garam besi & mangan menggumpal, kira-kira 1 jam
  3. Melewatkan air + gumpalan garam besi & mangan melalui filter. Gumpalan garam akan tersaring.
  4. Menampung air yang sudah difilter tersebut di tangki penampungan
  5. Air dari tangki penampungan dapat dialirkan ke rumah dengan bantuan gravitasi ataupun dengan pompa

Agar proses tersebut di atas dapat berlangsung otomatis, saya menggunakan sistem mikroprosesor berbasis mikrokontroler 8051 untuk mengendalikan semua proses tersebut di atas. Mengapa perlu mikroprosesor untuk sistem ini ? Sebabnya adalah karena pada proses tersebut terdapat pengendapan selama 1 jam, sehingga perlu rangkaian digital sekuensial, tidak dapat diimplementasikan dengan rangkaian digital kombinasional saja.

Pompa air yang digunakan adalah pompa biasa: pompa sumur dalam untuk memompa air dari sumur, pompa sumur dangkal untuk keperluan lain. Pompa-pompa ini sudah saya review di website lain.

Filter yang digunakan adalah filter pasir biasa, berwujud pipa PVC dengan diameter 6 inci yang diisi pasir dan kerikil. Filter ini seminggu sekali perlu di-backwash untuk menghilangkan gumpalan lumpur yang mengganggu kelancaran filter.

Tangki yang digunakan adalah 1 tangki 1000 liter untuk menampung air dari sumur, 1 tangki 1000 liter untuk menampung air bersih. Selain itu diperlukan 1 ember 80 liter untuk menampung air hasil dari filter.

Untuk sensor ketinggian air di tangki saya menggunakan sensor air yang dikenal dengan istilah “RADAR” di toko besi. Sensor ini isinya adalah sakelar on-off yang diatur oleh ketinggian air dalam tangki. Dalam pengamatan saya sensor ini rata-rata tahan 1 sampai 2 tahun.

Software pengendali saya buat dengan bahasa C, dirancang menggunakan FSM (Finite State Machine). Maklum, selain mengajar mata kuliah sistem mikroprosesor, saya kan juga mengajar mata kuliah sistem embedded.

Kalau dilihat sepintas, tidak terlihat bahwa pada sistem penjernihan air ini menggunakan sebuah mikroprosesor 8 bit, dengan memori RAM 256 byte dan memori Flash 8 kilobyte. Jadi nampaknya sistem ini memenuhi syarat untuk disebut sebagai Pervasive Computing seperti ditulis di websitenya pak Arry. Sistem ini dapat juga disebut sistem embedded, karena pada sistem ini terdapat komputer sebagai komponennya, namun tidak terlihat bahwa ini adalah sebuah sistem komputer.

Berikut ini foto-foto komponen utama sistem penjernihan air tersebut.

Tangki Atas

Tangki Hitam
Tangki Hitam
Tangki Bawah

Tangki Bawah
Tangki Bawah
Sistem mikroprosesor sebagai pengendali

Pengendali Pompa
Pengendali Pompa
Sensor merek RADAR:

Sensor RADAR
Sensor RADAR

Bagi yang kurang mudeng dengan istilah-istilah FSM, rangkaian digital sekuensial, kombinasional, ini adalah istilah-istilah dalam teknik elektro. Jika ada yang ingin tahu lebih lanjut, silakan kontak saya.

Percobaan Arduino Dan LED Matrix 5×7

Berikut ini adalah percobaan menggunakan modul Arduino Uno untuk mengendalikan sebuah LED Matrix 5×7 tipe QDSP-L149.

Arduino Uno dan LED matrix 5x7
Arduino Uno dan LED matrix 5×7

Pada LED Matrix tersebut nampak masih ‘berbayang’ atau ‘ghosting’ karena programnya masih belum sempurna.

Ghosting atau bayangan pada LED matrix 5x7 karena masalah software
Ghosting atau bayangan pada LED matrix 5×7 karena masalah software

Berikut ini skema pin pada LED Matrix  QDSP-L149:

Pin pada LED Matrix tipe QDSP-L149
Pin pada LED Matrix tipe QDSP-L149

Alokasi Pin GPIO pada Learning Board NU-LB-NUC140

Watchdogtimer-realtimeclock-IMG_9617

Alokasi PIN GPIO adalah sebagai berikut:

Pin Function
GPA0 Key Matrix
GPA1 Key Matrix
GPA2 Key Matrix
GPA3 Key Matrix
GPA4 Key Matrix
GPA5 Key Matrix
GPA6
GPA7 ADC Interface ke potensiometer on board
GPA8 I2C0 SDA ke codec
GPA9 I2C0 SCL ke codec
GPA10 I2C1 SDA ke EEPROM
GPA11 I2C1 SCL ke EEPROM
GPA12 RGB LED
GPA13 RGB LED
GPA14 RGB LED
GPA15 I2SMCLK ke codec
GPB0 UART0 Rx
GPB1 UART0 Tx
GPB2
GPB3
GPB4 UART1 Rx ke LIN
GPB5 UART1 Tx ke LIN
GPB6 LIN transceiver wakeup function
GPB7 LIN transceiver Enable Disable
GPB8
GPB9
GPB10
GPB11 Buzzer on board
GPB12 CAN transceiver speed
GPB13 CAN transceiver speed
GPB14
GPB15 INT0, disambung ke SW_INT
GPC0 I2SLRCLK ke Codec
GPC1 I2SBCLK ke codec
GPC2 I2SDI ke codec
GPC3 I2SDO ke codec
GPC4 LED 7 Segment Column
GPC5 LED 7 Segment Column
GPC6 LED 7 Segment Column
GPC7 LED 7 Segment Column
GPC8 SD interface ke SD Card Interface
GPC9 SD interface ke SD Card Interface
GPC10 SD interface ke SD Card Interface
GPC11 SD interface ke SD Card Interface
GPC12 LED ke (LED5~8)
GPC13 LED ke (LED5~8)
GPC14 LED ke (LED5~8)
GPC15 LED ke (LED5~8)
GPD0 SPI2 ke Flash
GPD1 SPI2 ke Flash
GPD2 SPI2 ke Flash
GPD3 SPI2 ke Flash
GPD4 SPI2 ke Flash
GPD5 SPI2 ke Flash
GPD6 CAN0 Rx ke modul CAN
GPD7 CAN0 Tx ke modul CAN
GPD8 SPI3 ke LCD Panel
GPD9 SPI3 ke LCD Panel
GPD10 SPI3 ke LCD Panel
GPD11 SPI3 ke LCD Panel
GPD12 SD power ke SD Card Interface
GPD13 SD detect ke SD Card Interface
GPD14 Backlight LCD Panel
GPD15
GPE0 LED 7 Segment ROW
GPE1 LED 7 Segment ROW
GPE2 LED 7 Segment ROW
GPE3 LED 7 Segment ROW
GPE4 LED 7 Segment ROW
GPE5 LED 7 Segment ROW
GPE6 LED 7 Segment ROW
GPE7 LED 7 Segment ROW
GPE8
GPE9
GPE10
GPE11
GPE12
GPE13
GPE14 Line out Enable/Disable ke codec
GPE15 Line in plug in/out detect ke codec

Selain pin GPIO, pada learning board tersebut ada juga pin lain sebagai berikut:

  • PS2DAT ke konektor PS1
  • PS2CLK ke konektor PS1
  • ICEDAT ke modul In Circuit Emulator
  • ICECLK ke modul In Circuit Emulator

Oprekan Mikroprosesor HD63701YOP

HD63701YOP
HD63701YOP

Berikut ini tahapan yang pernah dilakukan untuk mengoprek mikroprosesor HD63701YOP

Tahap-tahapnya:
#1 mencari datasheetnya
* dari datasheetnya, dinyatakan bahwa mikroprosesor ini ternyata kompatibel dengan HD6301, jadi bisa memakai tools yang dirancang untuk HD6301

#2 Cari simulatornya untuk mencoba software yang dibuat:
http://webspace.webring.com/people/ju/um_2949/
http://hub.webring.org/hub/hc11

#3 Cari assemblernya untuk memudahkan pembuatan software
* http://shop-pdp.kent.edu/ashtml/as6801.htm dari http://shop-pdp.kent.edu/ashtml/asxdoc.htm

#4 Cari perangkat untuk dissasembly
* kandidat utama adalah Hex ray http://www.hex-rays.com/products/ida/processors.shtml

Referensi

 

Analisis Rangkaian LED 7 Segment Multiplex

Berikut ini contoh rangkaian mikrokontroler untuk mengendalikan LED 7 segment. Rangkaian tersebut diforward oleh seorang mahasiswa saya, dan nampaknya diperoleh dari situs http://www.electroons.com/8051/electroons/seven_segment.html

8051_7_segmentAnalisis rangkaian di atas:

  • Tidak ada resistor sebagai pembatas arus pada LED 7 segment.
  • Untuk men-drive pin CA ke VCC menggunakan transistor NPN sehingga drop tegangan pada transistor BC548 akan cukup besar. Sebaiknya menggunakan transistor PNP supaya drop tegangan pada transistor hanya 0,2 volt
  • Pada rangkaian tersebut tidak jelas apakah scanningnya per baris (segmen) atau per kolom (digit). Dengan membaca source code yang ada di situs sumbernya, ternyata scanningnya adalah per kolom, artinya dalam 1 saat hanya 1 digit yang aktif.
  • Jika scanningnya per kolom, artinya dalam 1 saat ada maksimal 8 LED yang aktif. Jadi perlu ditambahkan 8 buah resistor pembatas arus pada pin OUT di ULN2803
  • Dalam 1 saat maksimal 8 LED menyala, dengan asumsi 1 LED = 20 mA, artinya transistor BC548 perlu dilewati arus 8×20 = 160 mA. Menurut datasheet BC548 dapat dilalui arus max 200 mA, jadi masih dalam batas.

Nah, apakah ada lagi masalah pada rangkaian tersebut?

Referensi:

Contoh Layout ATMega Single Layer

contoh-pcb-atmega
Contoh Layout PCB Rangkaian Mikrokontroler ATMega

Hasil rangkaian yang sudah jadi dari artikel pengembangan atmega:

Rangkaian yang sudah jadi
Rangkaian yang sudah jadi

Beberapa tips membuat layout PCB:

  • Siapkan mounting hole di pojok-pojok PCB, atau sesuai dengan lubang sekrup di casing yang dipakai.
  • Ukuran mounting hole mesti cukup untuk sekrup yang digunakan. Contoh di atas adalah untuk mur baut 3 mm
  • Konektor header 2×5 lebih memudahkan dibandingkan dengan 1×10
  • pada waktu membuat layout PCB, pasanglah keepout track / keepout layer atau jalur untuk pembatas luar daerah PCB. Hal ini memudahkan auto routing supaya tidak keluar dari batas yang diinginkan, dan juga memudahkan pembuatan PCB di tempat pembuat PCB

Catatan:

Pada rangkaian di atas sebenarnya masih ada kesalahan pemasangan kapasitor, dipasang miring sehingga solderan di kaki komponen mudah copot ketika kapasitor mendapat tekanan dari arah atas. Berikut ini close up nya. Nampak bahwa sebagian jalur PCB putus karena menempel di solderan di kaki komponen.

kapasitor salah pasang
kapasitor salah pasang part 1
kapasitor salah pasang
kapasitor salah pasang part 2

 

Produk FreeRTOS untuk NXP LPC17xx dan LPC18xx

Berikut ini adalah beberapa produk dari FreeRTOS yang free jika dipakai untuk LPC17xx dan LPC18xx:

  • FreeRTOS + FAT SL
  • FreeRTOS + CLI
  • FreeRTOS+IO
FreeRTOS_Trace_With_Zoom
FreeRTOS + Trace

Produk dari FreeRTOS yang berbayar untuk LPC17xx:

 

  • FreeRTOS+UDP
  • TCP/IP libraries
  • FreeRTOS+Trace

Referensi:

Referensi Tentang Noise pada Rangkaian Elektronika

Berikut ini beberapa referensi yang pernah saya pakai untuk belajar / mengajar mengenai EMI/EMC/ESD:

Application Note

  • AN10897 A guide to designing for ESD and EMC [1]
  • AN1709 EMC DESIGN GUIDE FOR ST MICROCONTROLLERS [2]
  • AVR040: EMC Design Considerations [3]
  • AP-125 Designing Microcontroller Systems for Electrically Noisy Environments [4]
  • AP-711 EMI Design Techniques for Microcontrollers in Automotive Applications [5]
  • AN1050 Designing for Electromagnetic Compatibility (EMC) with HCMOS Microcontrollers [6]

Textbook

  • Ott, H., Noise Reduction Techniques in Electronic Systems 2nd Edition. New York: Wiley, 1988 [7]-> ini yang dulu saya pakai untuk kuliah “Derau pada sistem elektronika” tahun 1990 an. Sangat powerful.
  • Howard Johnson, High Speed Digital Design: A Handbook of Black Magic [8] -> ini pernah dianjurkan oleh seorang kawan yang ‘hardware freak’

Mirror

 

Kestabilan Frekuensi Oscilator Internal ATmega8535

Pada mikrokontroler ATMega rata-rata sudah mempunyai pembangkit clock internal yang menggunakan rangkaian RC. Keuntungannya adalah tidak perlu kristal eksternal, sedangkan kekurangannya adalah frekuensi rangkaian RC ini tergantung pada temperatur. Berikut ini contoh kurva hubungan frekuensi clock pada ATMega8535 terhadap temperatur.

 

calibrated-8mhz-rc-oscillator-frequency-vs-temperature.previewDari grafik tersebut dapat disimpulkan bahwa frekuensi bergantung pada temperatur. Jika aplikasi memerlukan pewaktuan yang tepat, penggunaan RC internal oscillator tidak disarankan. Contohnya adalah komunikasi serial asinkron yang memerlukan ketepatan frekuensi sebagai sumber baud rate.

Referensi:

Board ARM Cortex M0 Produksi Lokal

Beberapa waktu lalu sudah ada vendor lokal yang menjual perangkat pengembangan ARM berbasis LPC Cortex M0. Harganya murah juga.

Perangkat Pengembangan Mikrokontroler ATMega

Berikut ini perangkat pengembangan sistem mikrokontroler ATMega yang saya pakai:

  • Komputer laptop/desktop untuk melakukan kompilasi dan upload program
  • Rangkaian sistem mikrokontroler ATMega8535 yang dilengkapi dengan konektor ISP (In System Programming). Deskripsi rangkaian ini dapat dibaca di artikel rangkaian sederhana ATMega8535
  • Antar muka USB to Serial adapter, perangkat ini dipakai untuk menghubungkan konektor serial di rangkaian ATMega dengan konektor USB di komputer PC. Jika menggunakan desktop PC yang ada port serialnya, perangkat USB to serial adapter ini tidak diperlukan. Output dari port serial mikrokontroler sangat berguna untuk mengetahui jalannya program di dalam mikrokontroler tersebut.
  • Kabel serial RS-232 jenis ‘straight’
  • Adaptor dari jala-jala listrik ke DC 12V
  • Programmer USB-ISP merek DI-USB AVR ISP V2 (DIM.024)  buatan Depok Instruments. Dapat dibeli di Jaya Plaza Bandung. Berbagai macam programmer AVR lain dapat dibaca di artikel tentang programmer AVR secara umum dan di artikel tentang progammer AVR buatan Indonesia.

perangkat-pengembangan-mikrokontroler-IMG_5695

Rangkaian mikrokontroler:

rangkaian-prosesor-atmega8535-sederhana-IMG_5685

Implementasi dengan PCB single layer. Konektor DB9 untuk RS232 dari jenis female, dan diletakkan di pinggir PCB supaya kabel serial dapat dipasang tanpa menabrak PCB.

Fiturnya:

  • Mikrokontroler ATMega8535, bisa juga diganti dengan ATMega16 karena pin nya sama
  • Crystal 16MHz
  • Port serial untuk input output
  • 8 buah LED dihubungkan ke port C untuk debugging
  • Port ISP
  • Masing-masing port A , port B , port C dan port D dikeluarkan ke sebuah konektor 10 pin, sehingga memudahkan jika rangkaian ini dipakai untuk keperluan khusus.
  • LED hijau untuk power ON.

Penampakan modul mikrokontroler dari sudut lain:

rangkaian-mikrokontroler-atmega8535-IMG_5686

 

Pada bagian kiri bawah nampak 3 macam konektor power 12V. Konektor yang warna putih dan hitam mempunyai keunggulan tidak dapat dipasang terbalik, sehingga memudahkan pada waktu percobaan. Pada akhirnya yang paling sering dipakai adalah konektor DC warna hitam, karena lebih kuat. Konektor putih kelemahannya adalah kabelnya mudah putus.

Modul programmer:

programmer-usb-isp-avr-IMG_5691

Universal Programmer TOP 2049

Universal Programmer tipe TOP 2049 yang dapat dipakai untuk memprogram berbagai macam mikrokontroller, Flash ROM dan EEPROM.

universal-programmer-20140217_191540
Universal Programmer TOP 2049
universal-programmer-20140217_191621
Universal Programmer TOP 2049

Universal Programmer rata-rata menggunakan Zero Insertion Force Socket (ZIF) untuk menyambungkan ke IC yang akan diprogram.

729px-Textoolfassung_28_(smial)
Contoh Zero Insertion Force socket untuk kemasan DIP

Referensi

LPC1114FN28 Mikroprosesor ARM Dengan Kemasan Dual In Line Package (DIP)

ARM adalah salah satu arsitektur prosesor 32 bit yang banyak dipakai akhir-akhir ini. Prosesor keluarga ARM ini diproduksi oleh berbagai produsen mikroprosesor dengan berbagai kemasan yang berbeda. Di antara sekian banyak model prosesor ARM, setahu saya sampai saat ini hanya ada 1 model saja yang menggunakan kemasan DIP (Dual Inline Package), yaitu tipe LPC1114FN28 dari NXP. Adanya kemasan DIP ini tentu saja memudahkan para hobbiyst yang tidak sanggup menyolder kemasan SMD ataupun yang mau mencoba dulu di breadboard.

ARM Cortex M0 Dengan Kemasan DIP (foto dari http://www.adafruit.com/blog/2012/03/13/32-bit-meet-dip-arm-cortex-m0-in-dip-packages/)
ARM Cortex M0 Dengan Kemasan DIP (foto dari http://www.adafruit.com/blog/2012/03/13/32-bit-meet-dip-arm-cortex-m0-in-dip-packages/)

Fitur lengkapnya menurut website NXP adalah sebagai berikut:

  • ARM Cortex-M0 processor, running at frequencies of up to 50 MHz
  • ARM Cortex-M0 built-in Nested Vectored Interrupt Controller (NVIC)
  • Serial Wire Debug
  • System tick timer
  • 32 kB on-chip flash programming memory
  • 4 kB SRAM
  • In-System Programming (ISP) and In-Application Programming (IAP)
  • 22 General Purpose I/O (GPIO) pins with configurable pull-up/-down resistors
  • High-current output driver (20 mA) on one pin
  • Programmable WatchDog Timer (WDT)
  • 10-bit ADC with input multiplexing among 5 pins
  • UART with fractional baud rate generation
  • One SPI controller with SSP features and FIFO and multi-protocol capabilities
  • I²C-bus interface supporting full I²C-bus specification and Fast-mode Plus
  • Integrated PMU (Power Management Unit) to minimize power consumption
  • Power profiles residing in boot ROM (LPC1100Land LPC1100XL series only)
  • Unique device serial number for identification
  • Single 3.3 V power supply (1.8 V to 3.6 V)
  • Four general purpose counter/timers
Kemasan DIP28 dari NXP
Kemasan DIP28 dari NXP, sumber: http://www.nxp.com/documents/outline_drawing/sot117-1_po.pdf

Menurut seorang rekan yang bekerja di pabrik mikroprosesor, industri lebih menyukai kemasan SMD karena (a) lebih kecil dan (b) perlu material plastik lebih sedikit,  sehingga dengan kemasan SMD ini diperoleh perangkat yang lebih kecil dan harga yang lebih murah. Bagi orang yang terbiasa menggunakan kemasan DIP seperti yang banyak di ATMega, adanya ARM dengan kemasan DIP ini tentunya membuka peluang mengoprek ARM tanpa perlu belajar menyolder komponen SMD.

Referensi