Image-based closed-loop motor control

This was our final setup for the course Embedded System Laboratory, back then in summer 2013. It was always great to work in group with Prithivi Ram Duraisingam. Basically, the task is to make the red circle on the rotating wheel follow wherever the green mark moves. The problem was solved as follows. First, the movement of the green mark was captured by a webcam, which was controlled by Gumstix Overo Fire, an OMAP3530-based computer-on-module. Streaming of images from the webcam was then processed in order to track the position of the green mark. The Gumstix then told Altera DE0-Nano board to rotate the the smaller wheel, which was coupled with the larger one that has the red circle. To do its job, the Altera DE0-Nano board was programmed to have a CPU core and dedicated FPGA-based PWM controller and quadrature encoder. A digitally implemented PID controller was in charge to move the wheel as fast as possible with minimal overshoot.

It was quite a lot of pressure, considering the little time available and also the approaching of other assignment deadlines.There was an interesting experience during the work, and now that experience still remains in my mind. In the progress of our work, for unknown reasons our setup didn’t work. Debugging for days and night, but we could not find out what’s wrong. The codes and setups — everything looked fine.  But in the end it turned out that there was a very very small mistake that was hard to notice; a ‘1’ was in place of ‘I’. In some font types they looked the same. The feeling of relief after spotting the mistake was indescribable. From then on, we progressed pretty smoothly toward the end.

If you are interested, our final report can be found here.

And this post was on my FB wall after we finished our assignment. 🙂

esl-fb-post

It was not perfect. Sometimes the red circle went too far. Some tweaking was needed but we had not enough time. At least, the proof of concept had been shown. So we left it there, went home, and slept 🙂

Advertisements

[pictures] A wonderful week in Taiwan

These pictures tell the story of my trip to Taiwan on 17-26 June 2016. Enjoy!

Negara membiarkan

Apakah slogan ‘Negara harus hadir’ hanya tinggal slogan? Setidaknya itu yang terjadi di Jalan Baru Cisauk-Muncul, Tangerang. Kondisi jalan yang rusak parah terus dibiarkan sudah setahun ini. Semakin hari semakin parah. Jalanan cor ini patah di tengah. Akibatnya jalan jadi tidak rata, mungkin terjadi beda ketinggian sekitar 50 cm an. Kondisi diperparah lagi oleh kontur jalan yang menanjak. Apalagi waktu hujan, jalan jadi licin, dan terdapat genangan air yg cukup dalam. Mungkin bisa saya ternak ikan lele di situ.

Dalam kurun waktu 2-3 bulan ini, mungkin sudah ada 3 truk besar yang terguling. Akibatnya terjadi kemacetan panjang di jalan tersebut. Kali ini (15 Agustus 2016), terjadi lagi truk terguling dan menimpa sebuah mobil di sebelahnya. Ntah apakah ada korban jiwa atau tidak. Semoga tidak.

Sudah setahun jalan rusak tapi tidak dilakukan perbaikan. Negara sedang bangkrut, dan tidak punya uang? Entahlah. Lalu, jika jalan rusak parah seperti itu dan saat ini belum bisa perbaiki, tolonglah lakukan tindakan-tindakan antisipasi, misal dengan pengalihan jalan bagi truk-truk besar supaya tidak melintasi jalan tersebut. Pleaseeeeeee lakukan sesuatu!! Apakah harus ada korban lagi?

Negara hanya membiarkan.

#dari seorang warga yang tiap hari melintasi jalan tersebut

Mengurus Visa Taiwan

Sudah ada beberapa post yang menceritakan tentang cara apply visa berkunjung ke Taiwan, seperti di sini dan sini. Saya terbantu dari cerita kedua post tersebut.  Hanya saja ada beberapa hal lain yang saya alami.

Menurut info yang saya dapat dari website, biaya untuk visa single entry adalah sebesar Rp. 460.000. Saya juga mencoba bertanya soal biaya ke beberapa agen di area Serpong yang melayani pembuatan visa Taiwan. Kisaran harganya Rp 730.000 sampai Rp. 775.000. Saya pikir selisihnya lumayan juga dengan mengurus sendiri. Karena itu saya memutuskan untuk coba datang sendiri. Selain itu, biar ada pengalaman dan tahu seperti apa mengurus visa sendiri.

Tanggal 28 April 2016 saya berangkat menggunakan KRL. Waktu itu kira-kira jam 6.45. Dan ternyata dalam KRL luar biasa padat. Ini pertama kali saya merasakan sesak yang begitu rupa, bahkan terasa agak susah menarik nafas. Kantor TETO bertempat di lantai 12 Gedung Artha Graha. Sampai di sana, tidak ada antrian dan saya langsung menyerahkan dokumen-dokumen. Ternyata booking tiket dan penginapan tidak diminta.

Pada saat hendak membayar di kasir rupanya uang saya kurang. Di website TETO memang tertulis Rp. 460.000. Ternyata itu harga empat tahun lalu. Jadi biaya yang harus dibayar adalah Rp. 650.000. Masalah kedua adalah bahwa menurut petugas nya pasfoto yang saya pakai sudah terlalu lama. Memang itu foto tahun 2008 sih :). Untung kedua masalah tersebut bisa diselesaikan di lantai basement. Ada ATM Mandiri, dan toko yang melayani fotokopi dan pasfoto. Pembuatan pasfoto dikenakan biaya Rp. 50.000. Menurut mas yang punya toko, bahkan kadang-kadang TETO menganggap pasfoto 3 bulan tidak up to date, dan harus foto lagi.

Katanya visa saya bisa diambil tanggal 2 Mei 2016. Pengambilan visa dibuka setelah jam 13.00. Tapi saya kembali ke TETO sehari berikutnya. Dan tadaaaaaaa visa Taiwan sudah di tangan. 🙂

 

Numerically solving third-order RLC natural response

The previous post deals with a second-order RLC natural response. Whereas this one deals with a third-order RLC natural response.

page1

page2

% Numerically solving third-order RLC natural response using
% Ordinary Differential Equation (ode) solver
%% -----L---------
%  |    |        |
%  Cs   Cp      Rl
%  |    |        |
% ----------------
clear all;
Cs = 0.5 * 10^(-3);
Cp = 30 *10^-6;
L = 0.1*10^-6;
Rl = 0.1;

a = L;
b = L/(Cp*Rl);
c = (1/Cs) + (1/Cp);
d = 1/(Cp*Rl*Cs);

tspan = [0 0.00005];

init = 0;         % i(0+)
init2 = -100/L;   % di/dt(0+)
init3 = 0;        % d^2i/dt^2(0+)
y0 = [init; init2; init3];
[t, y] = ode45(@(t,y) [y(2); y(3); (-b*y(3)-c*y(2)-d*y(1))/a], tspan, y0);

i1 = y(:,1);
i1_pp = y(:,3); % i1''

% differentiating equation (3) once, we get i2
i2 = -Cp*( ((1/Cs)+(1/Cp))*i1 + L*i1_pp);
figure (2)
plot(t,i2*Rl,'r-')
grid on

X=[0 0.5];
Y=[0 0.5];
xlabel('time (s)')
ylabel('V_{RL} (volts)')

Here is the result:

thirr order RLC

I have verified the result using LTSPICE IV simulation. Here is the circuit file.

Frankly, it took me quite some time to choose which set of equations, combination of equations that will give solutions. I cannot see them immediately. It is important to choose which current (i1, i2 or i3) to be solved first because either current must be provided with its initial conditions. But not all initial conditions are available for all choice of currents. So, I did trial and error. Usually, if your differential equation is in terms of current, then you should choose the current that flows through an inductor. On the other hand, if your differential equation is in terms of voltage, then choose for voltage drop across a capacitor. By doing so, we will have the initial conditions.

If I am not mistaken, another approach using state equations provides an easier way to solve even more complex circuits.

 

Numerically solving second-order RLC natural response using Matlab

I remember that I only got a C+ for the subject of electric circuit II. It faithfully reflected my understanding of the subject. It was unclear to me, but fortunately I passed. Recently I revisited the subject of RLC natural response again because I wanted to analyze the performance of  a step up transformer based high voltage generator. For that reasons, I needed to derive RLC characteristic equations, and then solved it numerically in Matlab. After doing the problems for some time, I think now I have a better understanding.

I want to immortalize my notes in this blog. So I can look back to these notes in case I forget how to solve them in the future. Hopefully, you find them useful too 🙂

page1scan0002


% Numerically solving RLC natural response using
% Ordinary Differential Equation (ode) solver
%% -----Rp-------Rs----
%  |         |        |
%  C         L       Rl
%  |         |        |
%  --------------------
clear all;

C = 100 * 10^(-6);
L = 7 * 10^(-3);
Rl = 50;
Rs = 5;
Rp = 2;
Vc = 100;

a = (Rs+Rp+Rl)*L/(Rs+Rl);         %from equation (5)
b = (C*Rp*(Rs+Rl)+L)/(C*(Rs+Rl)); %from equation (5)
c = 1/C;                          %from equation (5)

tspan = [0 0.05];
init = 0;                             %i(0+)
init2 = ((Rs+Rl)*Vc)/((Rs+Rp+Rl)*L);  %di/dt (0+)
y0 = [init; init2];
[t, y] = ode45(@(t,y) [y(2); (-c*y(1)-b*y(2))/a], tspan, y0);
i3 = y(:,1);
i2 = y(:,2)*(L/(Rs+Rl));  %from equation (3)
i1 = -(i2+i3);            %from equation (1)

figure(2)
plot(t,i2*Rl)
grid on
xlabel('time (seconds)')
ylabel('V_{RL} (volts)')

Here is the result….

rlc natural response.png

I have verified the result by comparing with a free circuit simulation software LTSPICE IV. Here is the circuit file, if you want to check.

Pengalaman pembuatan paspor di ULP BSD, Tangerang Selatan

Pada akhir tahun 2015, saya mendapat informasi bahwa pembuatan paspor sekarang bisa dilakukan di BSD karena baru saja dibuka Unit Pelayanan Paspor (ULP) di Ruko Golden Boulevard Blok E, nomor 5-6, BSD City, Serpong, Tangerang Selatan (link berita). Sebelumnya, saya sudah berencana mengurus paspor ke Kantor Imigrasi yang ada di Tangerang, yang berada cukup jauh dari tempat domisili. Hadirnya ULP BSD ini menggembirakan, dan saya ingin coba mengurus paspor di situ.

ULP BSD

Hari Kamis, 10 Maret 2016 saya tiba di ULP BSD pukul 08.15. Walaupun menurut saya sudah cukup pagi, ternyata saya mendapat antrian yang ke 75. Petugas memberikan form aplikasi dan surat pernyataan. Kedua formulir tersebut harus diisi menggunakan tinta HITAM.  Saat itu ruangan sangat penuh dan saya terpaksa mengisi kedua formulir di emperan kantor. Setelah mengisi, saya masuk ruangan dan menunggu nomor antrian saya dipanggil.

Kantor ULP BSD ini ada 2 lantai. Di lantai 1 petugas mengecek kelengkapan dokumen kita, yaitu:

  1. KTP asli dan fotokopi 1 lembar
  2. KK asli dan fotokopi 1 lembar
  3. Akte lahir asli dan fotokopi 1 lembar
  4. Paspor lama (jika ada), dan fotokopi halaman biodata 1 lembar
  5. Formulir aplikasi
  6. Surat pertanyaan, ditempeli materai 6000 jika belum pernah membuat paspor di Kantor Imigrasi Tangerang. (di ULP BSD meterai dijual 10000 dan fotokopi 1000 per lembar)

Nomor antrian 75 akhirnya dipanggil pada pukul 10.30. Petugas mengecek semua dokumen saya dan memasukkan dalam sebuah map yang mereka sediakan. Setelah itu saya naik ke lantai 2. Di lantai 2 ini pengambilan foto dan sedikit wawancara dilakukan. Ketika saya naik ke lantai 2, antrian terakhir baru sampai sekitar 30-an. Berarti nomor antrian saya masih jauh. Setelah saya amati waktu yang dibutuhkan per nomer antrian, saya perkirakan nomer 75 baru akan dipanggil pada sore hari. Saya memutuskan untuk pulang dan datang lagi besok lebih pagi.

Besoknya, saya datang lagi pukul 07.15, dannnnnn… ternyata dari kejauhan sudah terlihat banyak orang mengantri di depan kantor, meskipun kantornya belum juga buka. Kantor buka jam 07.30 dan saya mendapat antrian ke 24. Pelayanan sebenarnya dimulai pada pukul 08.00. Jadi 30 menit pertama dipakai oleh petugas memberikan penjelasan singkat kepada semua pelamar. Dari penjelasan itu saya tahu bahwa ada beberapa orang yang mendapat prioritas layanan, yaitu orang-orang lansia, ibu hamil, bayi di bawah 1 tahun, dan orang cacat. Ternyata juga, di ULP BSD hanya ada 1 pilihan jenis paspor yaitu yang non-elektronik 48 halaman. Tidak ada yang 24 halaman maupun e-paspor.

Nomor antrian saya dipanggil kira-kira pukul 09.00. Karena semua dokumen saya sudah lengkap dari kemarin, saya langsung disuruh ke lantai 2. Kali ini antrian cukup pendek. 15 menit kemudian giliran saya masuk ruang wawancara dan foto. Tidak banyak yang ditanyakan, hanya seputar kemana tujuan ke luar negeri, untuk tujuan apa, bekerja dimana, dsb. Lima menit saja sudah selesai, dan saya diberikan selembar kertas pengantar pembayaran. Kita harus menyetor pembayaran ke teller Bank BNI atau transfer melalui ATM BNI. Namun petugas lebih menyarankan untuk membayar ke teller BNI. Entah apa alasannya. Saya tidak tahu pasti.

Di seberang jalan, tidak jauh dari kantor ULP BSD ada sebuah Bank BNI. Saya bergegas ke sana untuk membayar supaya semua urusan cepat selesai. Setelah dicek oleh teller bank, ternyataaaaaaaa… nomer referensi pembayaran milik saya belum listed dalam sistem bank. Jadi pembayaran belum bisa dilakukan.

Senin sore, 14 Maret 2016 saya coba lagi ke bank BNI. Dan kali ini pun penonton kecewa lagi karena nomor referensi masih belum ditemukan dalam sistem. Sia-sia bolak-balik ke bank :(. Teller bank menyarankan besok coba datang lagi, dan jika masih belum terdaftar, maka sebaiknya datang lagi ke kantor imigrasi. Pada saat briefing pagi yang saya bilang di atas, mbak petugasnya memberikan nomor handphone nya. Saya sudah rencanakan untuk telepon ke nomer tersebut, daripada jauh-jauh datang lagi ke ULP BSD.

Besoknya, 15 Maret 2016 saya ada urusan di Jakarta dan kebetulan ada waktu luang beberapa jam. Lalu saya memutuskan untuk coba datang ke Bank BNI, tapi dimanakah kantor bank BNI di sekitar tempat saya berada? Berkat bantuan Google Map dan search ‘near places‘, ternyata ada sebuah Bank BNI berjarak 600m. Langsung saya meluncur ke TKP. Sambil harap-harap cemas ketika dicek oleh teller bank, ternyataaaaaaa… muncul juga nomer pembayaran saya. Jumlah yang harus dibayarkan sebesar 355.000, plus 5000 administrasi bank.

Paspor bisa diambil di kantor imigrasi paling cepat pada hari ketiga (sore hari) setelah pembayaran. Artinya, semoga paspor saya bisa selesai pada hari Jumat. Namun saya rencana akan ambil pada hari Senin depan saja…

Jadi untuk mencegah waktu terbuang sia-sia datang ke bank, mungkin sebaiknya dicek dulu melalui ATM BNI atau internet banking apakah nomer pembayaran Anda sudah masuk dalam sistem.

Di berita online yang saya baca, disebutkan bahwa ULP BSD ini juga melayani aplikasi paspor yang melalui registrasi online. Namun saya pernah bertanya ke CS Kantor Imigrasi Tangerang, dan mereka bilang ULP BSD belum bisa melayani aplikasi paspor online.

Makin lama akan makin banyak warga yang tahu keberadaan ULP BSD ini. Perkiraan saya, akan ada lebih banyak lagi orang yang rela datang lebih pagi untuk menghindari antrian panjang. Mungkin satu tahun dari sekarang, meski Anda tiba pada pukul 07.15, Anda harus puas mendapat antrian di atas 40 atau 50.