Value of Bits and Firmware Upgrades

This is an educational thread with no ending. I start it based on my own full satisfaction with RAMPS 1.4 and Marlin-Marlin_v1-20141114 that I am going to use long along the OpenMultibot development.

I have successfully used both with screw driven delta of different pitch:

And till today no issues with Cartesian (have more links if interested):

So the Mega question I’d like you to educate:

1 - what for for 3D printing one may need 32 bit controller

2 - what for are the firmware upgrades since 2104 - for supporting new LCD screens?

Please educate.

32 bit controllers are used mostly due to increased clock speed and faster step rates. Smoothieware is good, but the old 8 bit controllers can be really fast with Klipper and a dedicated raspberry pi

1 Like

Developers of 32 bit add overhead not necessary for 3D printing killing the CPU or MHz that is so and so faster than mechanical movements. Bells and whistles sounds to me till now. Please educate further

Mark Rehorst talked about benefits he saw from moving to a 32 bit platform

About 4 years ago I switched from the 8 bit A/R setup to a 32 bit SmoothieBoard controller. It was a huge improvement in usability, reliability, and ease of reconfiguring the machine. There was no need to compile firmware- configuration changes were as easy as editing a single text file containing all variables, and rebooting the board. I do a lot of experimentation in my printers with different extruders, different drive mechanisms, etc., so it’s really been nice to be able to make changes quickly. Motor driver chips were soldered to the board and adequately heatsinked, so there was no more blowing up crappy little motor driver modules. Motor currents were set in the config file, so there was no trying to adjust microscopic, easily broken pots.

Every once in a while I try to repair a printer at the makerspace that uses an 8 bit controller and I am reminded how far things have come. A recent extruder upgrade to a machine at the makerspace had me hunting for obsolete Arduino IDE, obsolete plugins, obsolete USB driver, and obsolete firmware, all so I could change the steps/mm in the extruder. Ugh!

Really, 32-bit doesn’t need to mean more expensive. If someone is really price-sensitive, ESP32 is very cheap and has good performance.

And honestly if you are printing from an sd card, you have at least one 32-bit processor on your printer; there’s at least one 32-bit CPU inside your sd card.

If you don’t see value in (for example) changing settings dynamically, then it might be bells and whistles for you, but not for others. :smiling_face:

Nice to know what others like: therefore is this thread and please feel free to convince.
I have over 14 operational printers at different locations all run with Marlin 2014 on RAMPS and never anything blue up or I needed experimentation because I need operational printers.
Regarding Klipper it requires Raspi with Octoprint and that is an additional hardware cannot see how it competes with printing from SD card.
I read and experienced that Smoothieware prints with Repetier via USB only in ping-ponf mode. Smoothie does not send ‘ok’ back to host what Repetier expects but Marlin does and buffers 4 commands.
One day may come for me to upgrade the electronics and I want to be well informed about the pros and cons of available solutions.
I come to the community to learn showing where I stand now, not to insult or be insult :wink:

And allow me please to know from your experience with “advanced” 3D printer controllers: when and if an onboard stepper driver or the onboard SD card get damaged then the whole board is to scrap?

Most of the 32 bit advanced controller boards also break out Step, Direction, Enable, lines so that you can wire in external steppers in the event that this happens.

As it turns out - these are actually LESS likely to fail in some circumstances because the 4-layer boards on the big boards have more copper area to work with and actually have better heat characteristics.

2 Likes


Please make a thread with links to originals because when Amazon supports selling clones what can we expect from Ali.

1 Like

I read " ESP32 is created and developed by Espressif Systems, a Shanghai-based Chinese company, and is manufactured by TSMC" so when I buy it from China I am buying from the “original” and not “knockoff”, correct?

https://www.duet3d.com/ for the benefit of this thread…

I’d like separate discussion, I suggest in the Site Help / Feedback category, about the best way to collect community-curated external links. Seems like a good goal.

I’m not aware of ESP knockoffs being a huge problem — but I haven’t looked either. They are inexpensive enough as originals, I guess? The ESP category might be a good place to ask?

1 Like

More sense of what you can do on ESP32: Expressif (as I understand it) hired Sprite to develop the SDK, and he wrote an emulator and built a tiny ~1:6 scale Mac Plus clone that is running an entire Mac Plus in emulation on an ESP32. This in a part I can buy from mouser.com in the US for $4 (external antenna required) or $5 (integrated antenna), or complete development boards (essentially the equivalent of an Arduino) for about $5 on Aliexpress, or $10-$15 in the US with various features depending on what I’m looking for.

Look at all the I/O options!

2 Likes

I suggest you look into Marlin 2.x

Current board under support our building support is attached in this link:https://github.com/MarlinFirmware/Marlin/issues/7076

I personally use the re-arm from Panucatt to with a RRFGD LCD.

I’m happy with the setup

2 Likes

Hi Shauki,

I have a reply for you and have posted it on my blog. It is too long to post here.

Basically I think it boils down to cost ,quality and performance issues that can no longer be addressed by 8 bit processors.

2 Likes

Thanks @shorai for that summary. TL;DR would be “Better, faster, cheaper: choose all three.” I’d recommend reading the whole thing to anyone wondering what the fuss is about.

2.3 ADC ARM ADC are 12 bits (1:4096) and can resolve 0.05mm in a 200mm axis. This enables software to run the steppers as servos and automatically detect and correct for missed steps.

This one is new to me. How does this work?

(Vis-a-vis “too long to post here” not sure whether you are saying “inconvenient to type here” or “we don’t want long-form content here”, but if it’s only the former, you could select-all/copy in browser and paste here and it will even preserve formatting; long-form content is perfectly fine here.)

1 Like

@mcdanlj Thanks for the note. I like your summary.

A suitably geared potentiometer on an axis can read the absolute position of the carriage in real time. Good quality ones are reasonably priced. Linearity issues can be calibrated out during setup much like bed levelling.

ARM ADC are 12 bit, which converts to 4096 values or 0.05mm over a 200mm travel, sufficient for correcting many 3DP. I’m busy working on this as an add on to RAMPS (watch this space). With MHz sampling rates, DMA and interrupts, servo control of many axes simultaneously is possible.

ATMEGA ADC are 10 bit (1024 values), and only marginally accurate enough, they do not have the sampling rate, DMA and interrupt structures to make servo control feasible, specially if running the rest of the printer.

One can alternately use a resolver for which ARM processors have built in functionality, but this offers relative rather than absolute position readout and is prone to integration errors (i.e. is the difference due to missed step or missed resolver move) and recalibration is required to correct discrepancies. bResolvers / encoders are currently more expensive than pots.

TL;DR - expected. :slight_smile: Second option - I find that after the first really long post on a forum I never get to the other posts. I like to keep topics open to discussion rather than encyclopedias. If you’d like or prefer the post here, I can happily oblige.

2 Likes

You can post either way, we just wanted to make sure that you understood that you have the choice, that we will not jump all over someone for posting a 20 page essay. :slight_smile:

1 Like

Thanks. You better just hope I don’t take you up on your kind offer :joy:

2 Likes

@shorai This is super fascinating! More questions… What’s “reasonably priced” here? Links to specimens?

Pondering… Why not just buy dual-shaft steppers and mount the geared potentiometer on the back of the stepper? Seems like that would be the typical closed-loop approach, and would give you higher resolution? It’s not absolute positioning exactly, but you’re not going to have skipped revolutions so it’s effectively absolute in practice (modulo reboots/power outages), and would combine higher resolution with support for larger sense envelope, like the 330mm square in my current build. :smiling_face:

What mechanism are you thinking of for avoiding backlash when reading absolute position across travel?

I’m wondering how the whole system compares in cost to things like Tarocco or ODrive, where you say the encoder costs more than a geared potentiometer, but should be able to use a substantially less expensive motor and maybe get smoother movement? (Those use dedicated controller per drive or two; Tarocco uses PIC but PSoC4, and ODrive uses STM if I recall correctly, so both ARM cores.) I have a Tarocco set and was thinking of experimenting with it when this whole G+ import project is over and I get back to my mainly-custom printer build.

(Maybe this should move to a new thread…)

1 Like

Hi @mcdanlj I was thinking of something like these multiturn or Continuous turn pot from my local supplier.

Here are encoders Shaft encoder from same supplier.

Your 330mm is very similar to my builds on 132 column dot matrix mechanics. If you sacrifice 10mm, you could use a 10 turn pot on a 16 tooth GT2 pulley for 320mm at best resolution, or 400mm for full width plus. There is an APP note to ‘improve’ the ADC resolution by oversampling and skewing the input with a DAC. This yields 1-2 more bits. I also have STM32F373 that has 16 bit ADC.

Our Rand i through the floor andtrades 15 to the $, so ODrive is out of my budget, someone could always send me a dozen to test :wink;. I’ve got a few STM Nucleo BLDC boards I plan to use in the next round. I blew 2 and have now replaced them.

A problem with encoders is they are incremental so some errors can go undetected. For example any break in LED light (could be dust or power glitch) will be accepted and lead to erroneous positioning by any number of steps until the fault clears. It is undetectable.

Some can be fitted over the shaft, and that is an option. Unfortunately the 10 turn pots I have in mind come with shafts. I have fitted these as the distal end pulley.

On occasion I have set acceleration a shave too high and had my belts slip on T5 pulleys :scream:. Motor shaft is OK but not perfect. I got some 100mm ALPS pots from RS for a smaller machine, but they were nowhere near linear (though marked as such). I need to go back there.

I have thought of backlash, but my initial idea is to take baby steps first, and only correct when more than some limit out of sync. e.g. 0.5mm.

The ARM has many analogue inputs (12-30) and up to 4 ADC channels that can be used simultaneously. You could fit a 10 turn pot for coarse measurement and one or two continuous rotation pots 180 degrees out of phase to cater for the gaps / steps at the zero positions. Even preset pots will do if you replace often - they are rated for 10K or 100K revs. There’s no sense in over resolution on a printer that won’t ever do much better than 0.2mm. I always remember the Rolls Royce specification for BHP on their cars ‘Adequate’. Adequate for cruising at 100MPh in 1928.

I’ve got lots of ideas, but no time to implement them! Please pm me crowse on my gmail account.
I’ve got a proof of concept ready for firmware and testing.

Tomorrow I am off to an ST ARM training session on the new 2.4GHz devices that I hope will resolve my wiring nightmare. … Ever tried wiring 4 gantries of 4 gondolas in a 500mm cube? :rofl:

1 Like

@shorai that makes a lot of sense!

Here are what look like similar parts I find available in the US, $18 for 1K or $14 for 2K if slightly higher noise is OK. They are both 5% tolerance parts.

The ODrive (yeah, I agree, expensive, but way more powerful than the Tarocco, as well as not apparently abandoned) use absolute 8192 CPR capacitive encoders that currently list for $39. I’ve also seen absolute magnetic encoders but not finding a link right now.