Posts

Showing posts from November, 2013

Moving code from ESP8266 to ESP32

Image
A while ago I made a mashup of Dan Royer's code CNC 2 Axis Demo with my own code for trapezoidal motion stepper and servo control for ESP8266.

I assumed porting the code to the ESP32 would be trivial, and that was true for the most part: changes like library name being Wifi.h instead of Wifi8266.h were not a problem. UDP now does not like multicharacter writes but you can use print instead. So far so good.

However, when it came to the interrupt code I was stuck with the stepper interrupt causing an exception sometimes. And to make things weirder, the servo interrupt worked flawlessly (both of them had the IRAM_ATTR directive if you ask me).

Going little by little, I could narrow down the culprit to a floating point operation during the interrupt, that would cause problems sometimes but not always. Browsing around I found this post. Where the solution was simple: do not use floats within the interrupt routines but doubles. The reason was the float calculation would be performed by…

You get what you pay for ...

Image
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.


Hi,

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

Image
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…