When the nozzle puts the SMD parts down, the part height actually has some tolerance associated with it. This looks to be between 0.1mm and 0.5mm of deviation I will need to account for. I do have fine control over the Z axis with my chosen motion platform here, so that helps though.
For commercial nozzles, the springy-ness of the nozzle is built into the nozzle itself. I won't have that.
The P1 handled this by having a spring loaded rotator shaft. I think I might have a better solution here using the BLDC part rotator.
The rotor and stator tend to stay aligned naturally in a BLDC motor, as the magnets pull on the iron stator and keep it centered. I think I can use this to provide the required spring-ness to my static/cheap choice of nozzles.
I got out the scale and measured 80g of force at 1mm of travel as I pushed on the shaft of the motor, which in turn pushed the stator out of alignment with the rotor. Beyond that, I had an additional ~3mm of travel where it pretty much stayed at 80g of force. Further still, the force required started to drop off and I'm pretty far out of alignment at that point. 1mm should be enough anyway.
80g of force is a little low from what the OpenPNP community is saying, but it certainly feels like a lot to me. I'm going to give it a try.
I'm also wondering if I could modulate the current going to the stator (for all 3 phase so I don't affect the rotational positioning) and control the placement force provided. My gut says no as I'm both pulling and pushing on the magnets in the rotor with the energized stator and so having a stronger stator field strength would probably just cancel out. I'll just have to measure it and find out... :) That would be really cool if that does work.
I will have to flip my part rotator over and use the other end of the shaft to make this happen as I don't have enough travel with the rotor on the bottom side. This will complicate the mounting a little, and also means fabricating something fairly accurately for my retaining nut to attach to the shaft with.