Showing posts from 2013

Fighting with online shops too

Today I have got one bizarre experience. A few days ago I did shop some parts for a 3D printer I am building but I guess the site was overloaded (or poorly procured) and I got several errors till I got my order through.

So I decided to ask the seller about my order since a few days have passed without hearing from them. This is the chat transcript.

Start Time: 12/31/2013 00:06:30
End Time: 12/31/2013 00:35:14
Operators: Jayla
Please wait for a site operator to respond...
If you do not want to wait, please click here to leave us a message.
Operator Jayla has joined the chat.
[00:06:30] Jayla: Hi Miguel Sanchez, I hope you are doing fine. How may I help you? 
[00:06:38] Miguel Sanchez: HI
[00:06:54] Miguel Sanchez: I'd like to know about my order. 
[00:07:32] Miguel Sanchez: It's been a few days and it is my first order from you. But mostly the server was giving me errors while going through the order.
[00:07:45] Miguel Sanchez: 26 dic 2013 16:18:12 PST Id. de transacción: ****…

New tool for the workshop

A recent query from a local company made me revisit the work I did for reverse-engineering Ademco's
ECP bus years ago. I did not get this assignment but I learned this company was buying an inexpensive logic analyzer I have never heard of before.

After having a look a the device and its demo software (that works in Windows, OSX and Linux!!) I was sold. Even better was to learn that they do have an educational discount. Next day I bought one Logic8 8-bit USB digital analyzer.

It is not a digital osciloscope but a logic probe with 8 inputs. The beauty about the software is that it has built-in several serial protocols (ie. Async serial, I2C, SPI, etc). So going from the signals to meaningful data is time-effective and simple.

You get what you pay for ...

Last weekend I have hosted the fourth edition of a workshop where people build their own Prusa i3 3D printer. Trying to learn from past mistakes I attempted to cover all the basis, but unexpected things always come up. 

But what got me really angry was the poor quality of one of the boards we used. Once I realize that boards were like that, I double-checked each one, tracing back with the schematics the different pins involved in any faulty behavior observed. Re-soldering those pins did solve the issues discovered, but it was a painful and time-consuming operation, on hardware you already paid for and expected some QA on. (Well ... don't). 

This is the letter I sent to the manufacturer.


In my last workshop I have used 10 of your RAMPS 1.4 boards. In a previous communication I reported 3 out of 10 boards showing some fault. Because of that, this time I checked all the boards in advance. What I saw was a mess: 7 out of ten showed some malfunction. I used several hours fiddling with …

Mini UP! 3D printer, first impressions

A friend of mine recently bought a Mini UP! 3D printer from PP3DP. He was looking for a ready to use 3D printer within a budget and that model was my first advice.

Once I have seen and used the printer it meets the needs of my friend and it has impressed me on how easy it was to get the first print. However, it came almost without any instructions so many people may have a difficult time using it until they figure out that an online manual has to be available somewhere.

Print quality using defaults is very good and so is printing speed. Not so bright is the way heated bed works in this printer: no temperature sensor is there, so you have no idea how hot it is.

Large parts will warp badly unless bed is hot enough and well-leveled. Once you patiently wait for at least 15 minutes for the bed to heat up and level the bed, the adhesion is pretty good and any problems we had before were gone. Still, I do not like the idea of not having an accurate idea about the bed temperature.

On the soft…

Programming Teensylu/Printrboard from Linux

I have been testing these two boards as a posible replacement for RAMPS in my 3D printers. Nothing wrong with RAMPS, but these two boards are simpler, cheaper and smaller. But they share a problem: they are not easy to program from Arduino IDE.

After a long dance I was able to do in Windows, and I am almost positive same can be done in Linux, but I am kind of tired of trying out things.

The bottom line is that because these boards are based on ATMega1286 they lack of a USB-to-serial chip as many Arduino boards do (except Leonardo).  So that means the usual bootloader and protocol are not a choice here.

Long ago, Paul Stoffregen developed an Arduino-like board using similar chips and built all the required add-ons so they could be programmed from Arduino IDE. These tools can be adapted to be used in the AT90USB1286-based boards with LUFA CDC bootloader and they work ok in Windows (once you manage to get every detail just right).

I was not so lucky in Linux and after some small research…

Teaching Rambo how to print

I could not resist the temptation and I bought a discounted RAMBo board a while ago. Today each
attempt to upload some code ended up in a list of messages like the ones below:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

First idea was that the board might not contain a bootloader, but after using my recently acquired ICSP programmer and obtaining a dump of the ATMega 2560 from the board I could see it was exactly the same as the one from a regular Arduino Mega board. 

As it is a new board, there is a chance of being a DOA. But I was surprised that no LED was lit when I connected the USB port. However, I could see one of the LEDs from the serial port (I guessed this is what they were) blinking when I was trying (unsuccessfully) to upload a sketch to the board.

I realize that while I dumped the flash memory of the Mega, more LEDs were lit. It then hit me that maybe the only problem was that the board (the version I am usin…

My printer port is gone!

After the last change of computer I was asked for help to installed the bootloader on an ATMega 1284P processor for controlling a 3D printer. I have been using for years the Arduino Parallel Port Programmer with great success (it worked every time if I remembered to power the board through USB at the same time).

But it turns out my new desktop computer does no longer has a parallel port. Not a big deal as all my printing happens through the network, but it was a no go for any type of other fancy uses of the parallel port (no, I do not have a CNC machine controlled with EMC2, though I have EMC2 software installed in my computer).

So I finally gave in and ordered a USBASP programmer that was less than 5€ off eBay and fixes the need for a tool for uploading bootloaders to new boards. It comes with a 10 to 6pin adapter too, which was needed for Arduino boards ISP connection.

You can use it from the command line with avrdude program or from Arduino environment selecting USBASP as the type o…

System upgrade "cloud style"

I have got a new computer for my office. The old system was still up and running and so I was a bit reluctant to replace it, but I finally bite the bullet as I could say no to a free new system. I was running Ubuntu 10.04 LTS 64 bit meaning that no major upgrade happened in the last three years to my system. Over time your system also gathers lots of drivers, small utilities and fixes that you only discover you had them once you've migrated to a new one.

So last week I used some time to install Ubuntu 12.04 LTS on the new computer, just to discover it won't wake up from suspend properly. The problem was the graphics card driver (an Intel graphics card in the motherboard chipset). But the only way to get the system back to work (without logging in from another computer) was to reset it. When I asked for help to another colleague he mention he had no trouble at all with a similar system. It turned out he was using Ubuntu 13.04 instead. So after almost a week of small installs I …

Building a mini i3 LC

The first Prusa i3 I built used a 6mm-thick acrylic frame. It worked ok, but when I saw sgraber's design I thought it will add a lot of rigidity to the acrylic frame. I later bought an aluminium frame and I forgot about the matter.

Recently I came across a local business laser cutting acrylic and I decided to give it a go with a similar but smaller design. One of the things I have observed about 3D printers is that they tend to be big. Having a large surface for the print area is nice because you can print big parts, but you pay the price of the printer being bulky.

As many of the things I print at home are small parts, I thought I would be a good idea to have a small printer at home and keep the larger ones for larger printers I might have at my office. Of course it is still to be seen whether things will work out this way or not.

So I ended up building this smaller sibling of my home Prusa i3.

These are the sizes of the rods I have used:  X-axis: 2x265mm smooth rodsY-axis: 2x270m…

Flipping a vector drawing in Java

An ongoing project required some 2D vector paths to be mirrored. I was programming in Java and using Area object to represent these paths. Though the obvious thing was to do this myself, I turned to the libraries for help.  I have not used AffineTransform before, but it seemed the right tool for the job. Unfortunately, either my understanding is shrinking (which may well be the case) or the existing documentation is not good enough.

After trying several matrices from different posts online I realized I was not getting any closer to a good solution. The main problem is that while you can mirror an Area object with just one matrix (-1,0,0,1,0,0) you can't avoid the translation that will happen at the same time.

The solution to my problem ended up being quite simple (I wanted to mirror the image in the X axis).

// object a is the area I want to flip AffineTransform at = new AffineTransform(); at.scale(-1,1); Rectangle r = a.getBounds(); at.translate(-( r.width + 2 * r.x ), 0.0); a.tra…

Suspended G+ account for no reason?

I woke up this morning to a frozen G+ account. I was warned my account was blocked due to infringing user policies and that I was no longer able to post until fate was determined. I was offered all sorts of informative pages about what those policies are about but none about what I might be doing wrong. It was vaguely said that I was spamming.

Not owning a business to advertise and not knowingly advertising other businesses, beyond the casual comment of that shop seems to have good prices to friends, I was puzzled. Whether the issue was triggered by a user complain or a bot detecting some offending content, I was not told.

I was just told that some content was against Google+ policies but not flagging which that content was I was left to my own devices, in the dark. It is as if the police will arrest you saying that you know why we do this without explaining further.

Being convinced that this was a mistake and that I was not, knowingly, spamming anyone (in fact I hate spam), I decided…

What worked and what didn't.

I know I have been not posting anything for a long time but the workshop preparation first and the fact that we scheduled a second edition just finishing the first one prevented me to do much besides that and my daily work.

Certain things did not work quite right in the 3D printing workshop, like having to solder motor wires. Most people are not familiar with soldering and a soldering iron is a risk too. I ended up doing half of the soldering as another workshop attendant helped me out.

On top of that, three printers have trouble with RAMPS cards, two of them with a non working motor and a third one with hotend thermistor input. Luckily all these failures were tracked down to soldering shorts that were easy to fix once diagnosed. Even better was the fact that nothing broke in the process.

However, I failed miserably to stick to my own schedule and the software part of the workshop was much smaller that I have planned and wanted to cover. I felt a bit like a firefighter trying to help…

There is always a catch

After building several RepRap 3D printers and getting involved in several user forums about the matter I realized I was helping out other people building the same stuff I did a while ago and having a good time too. One of the good things about Open Source Hardware is that designers encourage people to build their designs whether they buy anything from them or not.

I am helping out the people who try to make FabLab Valencia a success and a workshop for building 3d printers seemed like a good fit. I have never done an activity like this before and the logistics seemed like a nightmare that rather was other people's problem. So the plan was: I do the teaching at the workshop and we use some ready made kit for building Prusa i3 models.

Just to be sure [I do not want to disappoint dudes that are shelling out almost $1,000] I decided to do a test run with one unit of the kit we have selected from a local manufacturer. That business was so brand new that ours was one of the first invoice…

LEDs getting smarter

Sometime ago, I used for a project a set of RGB LEDs that were networked and responded to a few commands sent through a shared bus. It was a lot of work but it was fun. A while ago, at a RepRap meeting, user fungus showed me how he was using new controllers for doing exactly that, controlling RGB leds through a shared bus (daisy-chain would be the exact term though). They are available either as a small PCB with the chip so you can solder your own LED, or with a built-in LED or in a long stripe of LEDs.

Other manufacturers just included the chip together with their RGB leds, so you can get a three pin RGB led that includes internal memory to be set at any desired color from a single-pin output of your favorite micro-controller. And my favorite during the last few years has been Arduino so I just downloaded the FastSPI library and try to make sense of it. Unfortunately it never is so easy, so this time I was forced to upgrade my Arduino to 1.0.4 (I was avoiding that and keeping the 02…

Running in circles with the extruders

While my Wade-type extruder works nicely in my old Prusa, I planned to use a smaller geared stepper motor for my new Prusa i3 3D printer. But the road to a reliable extruder that is lighter and smaller is paved with many different trouble.

The first problem was to source PG35L-048 motors that Josef Prusa was using for his compact extruder and shown in different youtube videos. Sourcing it in Europe was not easy but I was lucky buying some units from an Austrian supplier called Neuhold Elektronik. But my joy was brief, once I could not easily extract the gear of the motor and I ended up sawing it off, because the shaft of my motor was shorter than the version used by Prusa, so I had to adapt the 3D design of the extruder to fit my motor. I got that extruder eventually working, but in order to get consistent extrusion the motor needed a bit more current than its specs so it was overheating. An aluminium piece, part of a heat-sink of an Intel processor took care of the extra heat. Still,…

Heated bed blues

Reprap 3D printers can benefit of having a heated bed because that helps preventing part's warping. When a part is printed, it is done depositing layer after layer of fused plastic filament. Either PLA or ABS, these fused filaments will experience some contraction when the melted filament solidifies and cools down. This effect will be more dramatic the faster it happens. And the end result is that some of your printed parts will have a round bottom instead of a flat one. And that is if you are lucky, as some parts will completely detach from the print bed mid print and they will be totally ruined.

So we use a heated bed so the print bed is kept at a relatively high temperature. This way the filament will cool down not so fast and hopefully the parts will stay well grabbed to the print bed even in the corners.

There are several ways of creating a heated bed: a printed circuit board with a long copper track zig-zagging the surface that will create a resistor.

An aluminium plate with…

Getting back to SQL magic

Recently I was asked for a way of numbering a subset of records of database table. It could be done using a programming language, as I did with a small code in Visual Basic for Applications using MS Access connected through ODBC to the database server.

But I wanted the real deal, so several ideas came to my mind. The first one was to transfer the desired rows to a temporary table, while deleting them from the original one to later create a new column of type serial that will handle the numbering. However, this idea was not possible as different set of rows required to have their own counter. Let's say that different cities required to have their sales numbered using independent counters.

The solution I used was to create a temporary sequence value, to then update the table for each city value. Something like this in Postgresql:

UPDATE TABLE sales set number=n FROM (SELECT nextval('counter') AS n, order FROM sa…

Tuning extrusion values

After building the acrylic Prusa i3 3D printer is when the challenge began. I tried to get proper values for the compact extruder using a PG35L geared stepper motor and that proved to be quite a challenge. The problem was two-fold: on one hand, this is a small low-power stepper, that thanks to a 1:35 gear reduction it can achieve 0.45Nm of torque, but this motor is rated at 12V/180mA, which make it not ideal for our 12V drive voltage. But the motor needs a bit more current to create a bit more torque to obtain a consistent extrusion. The second problem is that due to the gear the motor skips if speed is too high. So retraction speed has to be dialed down to 7-10 mm/sec.

Being the motor that slow is giving me more trouble, as retraction takes a while and I am getting some ugly plastic blobs in some corners.

This time my troubles were deepened because I am using a [for me] new hotend I bought from one of my students, who bought a couple of them off eBay and only needed one. I do not lik…

A tablet that does it

I have blogged in the past on how to use iPad for viewing electronic magazines and how it failed to me with some PDF files. I have recently got a Samsung's Note 10.1 tablet and I can certainly call it a success in terms of both PDF browsing and ebook reading. Everyone I have shown how to scribble on a PDF article was amazed. Yes, this unit comes with a stylus and it is a pressure sensitive one.

Adobe reader works nicely and it does not crash. My benchmark is Circuit Cellar PDF that use to crash on the iPad (I do have an iPad1).

This together with Cool Reader free app make the unit a very useful book reading plataform as it supports the common formats FB2, EPUB and MOBI plus CHM as a nice addition.

The picture shows a screen capture at the original size, which is easy to read without zooming in.