Snapmaker for solder paste dispensing


#1

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.


#2

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


#3

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


#4

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.


#5

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


#6

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?


#7

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


#8

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


#9

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.


#10

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