Tool Addition: 3D Printer

Up to several months ago, I’m considering to buy myself a 3D printer. I thought it’s nice to make enclosure for my electronic prototypes.

One of the Chinese import kits are priced around $350 here. It’s a variation of the popular Prusa i3. Some of the reviews basically says that they are not too satisfied with the performance and reliability of the product (broken electronics or power supply, snapped acrylic frame on arrival, etc). I decided to look for another printer, and then I stumbled on Rostock-type printer on RepRap Wiki.

The construction is simpler than the Prusa-style printer. Three pair of parallel beam, no moving bed, etc. Moreover, one of my old flashlight supplier now is a Reprapper. He developed a mini Rostock with MDF board as base and 6mm steel beam. So, I bought them.

Initial impression is… well, how do I say it? Looks so amateur-ish with cable dangling here and there, backlash because of using brass bushing instead of linear bearing, only 10cm dia. with 17cm height build area, those 6mm rods has noticable flex when I try to move with speed more than 200mm/s… but I cannot complain since it’s priced under $100.

Yes, you read it correctly. $100.

With this printer, I’m gonna make another printer. It will be another delta… maybe Griffin-based? Anyway, I’ve printed several object with this printer, opened a service on 3D Hubs, taking orders from locals, so this printer has paid itself.

Oh, and here is my hub. If you live in Jabodetabek area and need to print something, please place your order there! I print on varying layer size, starting from ultrafine 100 micron to super-thick 1mm. Ultrafine are good for decorations and art projects, where the thicker ones are good for expressing the “lo-fi-ness” of 3D printing. Oh, and thicker layer are better for structural parts, too.

See ya on another post!

Eagle Library

Hello fellas.

I want to share some of my Eagle footprint. Some of the unique parts are:

  • Buck/boost converter module that looks like this:
converter module

Usually fitted with LM2596, LM2577, XL6009, XL4015, XL4005, or other compatible chips

  • ADE7953 28-pin LFCSP package

TP4056 5V 1A Lithium Battery Charger + Protection

  • TP4056 5V 1A Lithium Battery Charger + Protection Module (Oct 5 2015)

I will update this post if I add another component. Download at Github.

Chinese clone. It’s cheap, it works. With a little headache.

Some days ago, I ordered an Arduino clone equipped with Prolific PL2303HX chip here. It sells at IDR 170k (shipping not included) , which is quite a bargain. FYI, this Prolific chip is famous for its application for cheap USB-Serial bridge.

When I plugged the board to my computer, Windows automatically searched and installed  Prolific USB-serial driver. But when I looked at device manager, a yellow triangle warning mark appeared on the Prolific device. There was error 10 showing up on the device properties.

Google result for that error lead me to Prolific PL2303 Driver Page. There’s an official warning about Chinese counterfeit Prolific IC with no visual difference when it’s compared to the original IC. It seems that my USB-serial IC is fake and will not work. Or will it?

Apparently, Chinese companies have managed to create a working clone of Prolific PL2303HX chip (which is cheap already). Of course, Prolific didn’t like this and released driver update to prevent the clone chip from reaching working state. I guess everything I need is an older driver version of this chip.

Further Google search results lead me to this site. I downloaded XP 64-bit version of the driver, uninstalled the “new” driver from my computer, disable driver signature enforcement in my Windows 8 installation, restarted my computer, and plugged in the Arduino board. Voila! The USB-serial chip worked as I uploaded “blink” sketch to my  Arduino.

Update: Here is some link on how to disable driver signature enforcement on Windows so you don’t have to restart everytime you want to use the PLX chip:


Electronic Workbench

Sebelumnya mohon jangan salah paham dulu… Ini bukan software yang biasa dicr@ck untuk kepentingan pendidikan, hehehe. Post kali ini adalah workbench beneran yang disetup di rumah saya. Ada bor tangan, beberapa tang, osiloskop, multimeter, rak komponen, kabel-kabel, obeng set, electrical tape, kit programming, dan tidak lupa yang paling penting solder dan timah.

CIMG5364 (Large)


Lumayan kan buat kerjaan… hehehe

AVR Tiny Buck Converter

Recently, I was involved in a underwater ROV project. I was assigned to handle voltage conversion from up to 54V to 12V 12A, a pretty challenging task for someone who are not used to design power conversion circuit. The converter must be non-isolated to make sure that the communication line ground level is connected to the surface console.

I searched for dedicated buck converter IC that could handle 54V at the local component store, but it seems no manufacturer produce that IC. So, I built my own buck converter.

The theory behind the operation of [my] buck converter is as simple as this: switch on the transistor if the output voltage fall under target voltage, and switch off the transistor if the output voltage rise above target voltage. Analog comparator is used here to compare feedback voltage and a known reference voltage. No complicated calculation for PID, determining duty cycle, switching speed, etc.

So, here is the circuit:

Buck Converter

I used ATtiny 13 for the main buck controller. The MCU is powered by a simple zener regulator and resistor because it only need 6mA at 5V supply. The value of the resistor is calculated from sum of MCU current consumption and zener regulation current. For example, if the zener requires 3mA to regulate the voltage and the MCU requires 6mA to operate, the total current passing through the R5 resistor is 9mA. You could then calculate the required resistance if you know the expected range of input voltage. In this schematic, 2.2k will provide total current of 19mA  @48V for zener regulation and MCU supply. The power dissipated at the resistor well be quite high (P=VI=817mW) so make sure to choose high wattage resistor to avoid problems.

The MCU in configured to use its internal analog comparator and its internal 1.1V voltage reference. The output voltage is compared to the internal voltage reference to determine switching state of small power MOSFET Q5. I used voltage divider to provide voltage feedback from the output line to the MCU. Since the current leak of the MCU is low, you can choose high resistance value and low wattage resistors for the voltage divider.

Inrush current is an issue for every circuit with big capacitor. When the converter is switched on, the capacitor is fully discharged. The input line will try to fill this capacitor and this results in surge current, damaging the switching transistor. An NTC (R7) is placed at the input line to suppress surge current and prolong the MOSFET’s life.

And here comes the important parts: inductors, capacitors, diode, and switching transistor. I chose MOSFET over BJT as the switching element to prevent any current fluctuation flowing through the MCU. The high-side MOSFET (the one connected to input line) must be a high-current P-channel MOSFET with low ON resistance and high blocking voltage. You can choose your MOSFET according to your needs and market availability. For the low side, choose an N-channel MOSFET. Current rating is not important here because of the high resistance of the P-channel gate drive mechanism. Just remember that the resulting output voltage of the voltage divider does not exceed the VGS rating of the high side MOSFET.

The inductor must be chosen accordingly to fulfill your regulator need. The wire gauge size of the inductor determine the current of the converter can supply. I put an inductor that was  scavenged from an old computer power supply. For the capacitor, just buy one with the biggest capacitance you can find at the local component store :D. And for diode, buy a good fast-switching diode (schottky) with the same current rating as the maximum current output of the regulator.

And here is the source code (only 10 lines in GCC):

#include <avr/io.h>
int main (void) {
  else PORTB=0;}