Snapmaker for solder paste dispensing

Workalot has his snapmaker replicating the process of solder paste dispensing. To do proof of concept I am using the print head module and have it move over the PCB’s pads, drop to expel paste, dwell, retract to the travel level, and move to the next pad.

The program takes in a Gerber paste file and determines the G code for head movement.

Fantastic as this is, I unplugged the print head’s cable as this would be necessary when a dispensing apparatus is fitted. With the cable removed snapmaker refuses to process G code statements. Presumably a non connected print head is detected by snapmaker’s controller, and quite rightly so.

So I wonder if there is interest by others in exploring possibilities such that knowledge of equipping snapmaker with a dispensing device could be achieved.

I have a video of the action should anyone care for it.

3 Likes

yes, interested for me. How do you dosing paste?

@Michal - From Mexico comes the Dan M dispensing tool, a meaningful piece of equipment. Does that answer your question?

On other fronts I have managed to arrive at a solution to drive Snapmaker without the presence of a print head module. And I am exploring options to control the dispenser through a signal on the RJ45 connection.

I’m surprised that you had difficulty running it without a print head. I know there is a pencil holder tool that has no electronics in it. Maybe because the GCode was generated in CNC mode instead of 3D printing mode?

I know there have been several different projects to reverse engineer the communication to the print head. It would be cool if you had some electronics in your print head, and it used the “feed filament” signals to dispense paste.

I was hoping more of this documentation would have been published by now. The original promise of open source hasn’t really happened yet, and I feel like v1.0 owners are going to get left behind if v2.0 ever publishes their information.

“Maybe because the GCode was generated in CNC mode instead of 3D printing mode?”

Certainly a point to note, but when first powering up Snapmaker it seems to be in printer mode. It may well be necessary to issue commands to have Snapmaker assume CNC and Laser modes, but I’m not privy to such information.

I have determined that Snapmaker balks when it finds an open circuit thermistor (and presumably with a short circuit one as well). Confirming CthulhuLabs’s pinout of the RJ45 (Reverse Engineering the Module Wiring), I made up an outrigger PCB with an RJ45 jack and soldered an 82K SMT resistor between pins 5 and 7. This replicates a nominal room temperature and has overcome Snapmaker’s sanity test.

At this stage I was able to fit the solder dispenser and have it dry run the sequence of visiting PCB pads.

Next was to find a way to signal the dispenser to expel paste. Well there is no fan control on the printer module (as CthulhuLabs attests) so a Fan On/Off is not possible.

But there is the heater signal - and now things get interesting. The heater in the print head connects between pin 1 (+24V) and pin 3. Pin 3 I bet, connects to an open collector or open drain semiconductor switch so that pin 3 is grounded and power flows through the heater.

Now I had a signal - then there was the gotcha. Turning on the heater would have Snapmaker eventually close down with a standard Marlin heating error. Obviously the firmware determines that the heater is faulty as the thermistor (82K resistor) reading does not change.

The good news is there is many seconds of delay before the heater error kicks in. If a dispensing cycle is over (say) a second or so, the heating error will not appear.

So, at this stage I have Snapmaker dry running a solder paste session. The first/next pad is visited, Z down to the expel position, heater on, dwell, heater off, Z up to travel position.

I’ve put a halt on further development until I receive a new controller. I want to divide the functionalty of normal 3D printing etc and what I am attempting across separate controllers.

BTW. I wasn’t aware there was/is consideration for open source.

It may well be necessary to issue commands to have Snapmaker assume CNC and Laser modes, but I’m not privy to such information.

If so, it should be pretty early in the GCode output. If you create a Cura profile for the Snapmaker, it wants ~10 lines of initialization. I would guess that if you compare the first ~20 lines of 3D Printing GCode to CNC GCode to Laser Cutter GCode, something will jump out. You can try looking up the definition of anything interesting looking, but some of the codes are machine specific and probably not documented anywhere. I know that when you install the extended Z axis, they have a machine specific GCode to tell the controller which one you have installed.

The good news is there is many seconds of delay before the heater error kicks in. If a dispensing cycle is over (say) a second or so, the heating error will not appear.

Nice work around.

BTW. I wasn’t aware there was/is consideration for open source.

The FAQ says that both the module information and v2.0 firmware will be opened, but I haven’t seen any movement towards that. The v2 firmware says when it starts shipping, and kickstarter says that’ll be Jan 2020.

Their github account doesn’t have anything interesting. I was hoping to see the FAQ book code there, which might give me an idea who to reach out to. @Rainie posted the v2 firmware article, so maybe she can give us an update about the module documentation too?

Now that I think a little more, you might want to look at the start and stop GCode they recommend for printing from Cura.

A combination of the comments on the GCode and the wiki documentation about the G, E, and F opcodes makes me believe that this snippet is responsible for priming the extruder before the print starts:
G92 E0
G1 F200 E20
G92 E0

“Maybe because the GCode was generated in CNC mode instead of 3D printing mode?”

This intrigues, thank you. When running the carver or laser heads, can there be any interest by the controller on temperature? The carver spindle just spins, maybe the laser has temperature sensing, maybe not.

Indeed, comparing the G codes generated for the print/carver/laser modules is a place to look.

When I looked, I looked in the wrong place. The G code generated by Snapmakerjs for CNC work had only M3/M5 (spindle on/off) and movement records. No special commands whatsoever.

Where I next looked was the resistance value between pins 5 and 7 of the carver and laser modules. Results - print module 82K (nominal), carver 10K, laser 200 130R, laser 1600 130R.

Methinks this is how the Snapmaker firmware determines which module is attached.

If one wades through 8.8 - DIY Laser Module, one will see R4 in a PCB layout. My guess is this is 130R.

And @clewis, your “I know there is a pencil holder tool that has no electronics in it” maybe at challenge - a 10K resistor perhaps hiding in a corner.

At a later time I will test my theory by fitting a 10K resistor and issue M3/M5 to signal a dispense.

Oops, my bad, R4 is 10K, its R2 (150R).

For those following this thread, Workalot can confirm the Snapmaker firmware determines if a tool head is fitted and which tool head it is. Its all done through the resistance value that exists between pins 5 and 7 of the module’s RJ45 connector.

Laser modules are 130 ohm and the carver module is 100 ohms (erroneously stated earlier to be 10K ohm). 100R/130R values would be deemed to be outside of the expected printer module’s thermistor range.

An open circuit between pins 5 and 7 reflects an absent module.

Workalot has got to a point where PCB CAD files are processed to have G code statements to control CNC head movements for solder paste dispensing, PCB drilling and to some extent stencil cutting.

At…
https://1drv.ms/v/s!AuVu6Eq14rxMhA7evC2VB4eb-_JS
https://1drv.ms/v/s!AuVu6Eq14rxMhA-oInEBhCRi_sc8
… are videos of dry runs of paste by dollop and paste by print.

For those adventurous enough the program is in the attached zip file along with PCB documents to try.

pcbcentral.zip (2.4 MB)

1 Like

@Workalot, I missed your follow up posts. That’s a lot of good info! And congratulations on getting your module working.

link for zip file is not working, can you update please
I’m interested creating a module for dispensing glue with an external glue system; that means need to have a stop and go signal to control the dispenser

Well, Workalot first needs to apologize to @peewee for nor responding to your last post, and apologize I do.

Workalot had packed up his SnapMaker along with his ambitions soon after the discoveries and revelations, as expressed above, were made. Elsewhere duties made this so.

But now I’m renewing my purpose and endeavour to get at least the solder paste part of PcbCentral functional.

If interest by @clewis and @peewee remains I can expand on the details.

regards, Workalot.

Preliminary PCB Central user guide for those interested.

pcbcentral_ug_rev1.zip (1.7 MB)

Hi , please contact me at Lars.herrnsdorf@gmail.com
I have two sm original and want to rebuild one as your intensions . What do you provide besides the user manual

hi, I’m still interested about this solution. please contact me at droid-valenz0r@icloud.com

Hi Workalot
I have tried to contact you directly to your firm as well as here in the forum . I am super interested to try and invest time and money to test your software and get a working application for the SM original as you have implemented.
Since I’m already own the dispenser from Mexico and have the original SM hardware ,please response as quick as possible so we can test and plan for your solution .

Best Regards
Lars Herrnsdorf ( from Sweden )

LH4PI,
I had responded to your gmail account - are you saying you have not received it?
If so, then the email stated that an uncompleted web page is at dge.com.au/index.php/pcb-central. It has the latest user guide and some videos. But not yet a download.

If you wish I can bundle up a distribution for your testing.

Same for you peewee.

regards,
Workalot