The brain approch would work perfect for this because you won't need to do anything inside the G-code, It will just monitor the Z axis and activate/deactivate the pin at the correct height.
While watching I could hear an air solenoid firing then read that he use's a pnuematic dispenser connected to a 555 timer and 3 way valve to control over dispense. The Brain and Mach could be made to act as the timer but how would you control over dispense.?
My pneumatic dispenser can either be set to auto (in which case the length of 'dispense' time is controlled by a pot on the dispenser - triggered by a footswitch - or a relay under g-code control), or manual in which case it is controlled by how long the footswitch is held down. (or again a relay uinder g-code control). In other words the amount of dispense could be set by the dispenser itself or else by how long the g-code paused between on & offs.
Where it gets a little wearying is that for example, a SOT23-3 pad doesn't need anywhere near as much paste as a PLCC2 LED per pad. Therefore it'd need a bit of sorting pads into different 'dispense' runs.
If I had enough grasp of coding geometry then I could have an eagle ulp do this pad sizing decision for me....but I haven't so manual it is for now!
Lateral thought... would it work to make all the pads on the PCB the same size?
Have you used the dispenser before.? Like the guy in the Vid I would think you will need a pressure dump other wise the airline and cyclinder will still be under pressure so seepage could happen.
Regards the different pads amounts then this would be done using the G4 pause command. It could maybe done using the tool numbers.? So T1= Sot23-3 and T2=PLCC LED and so on. . . . . . . . . . . Then I don't think it would be to hard to write a script that reads the code and looks for the T number value then changes G4 P value to time required for that pad. Little like replace in note pad but more controlled.
Edit: Actually thinking about it.!! . . I bet If you altered or built a purpose post processor then it could insert the correct time into G4 P value.?
Last edited by JAZZCNC; 26-12-2011 at 02:48 PM.
Does USBCNC include the equivalent of 'brains' in mach3 as I can't see any mention of it on their website (www.planet-cnc.com)?
If not then it looks like you'll have to generate code which has a line, or point, for each pad and use dwell commands/adjust the feedrate. What I suggested originally with using the direction pin would work enable you to set the time the axis is down for. Can add a delay with a 555 or a pic or something...might be worth trying as it's quick to set up.
Doing it in the Gcode allows better control though.
Jonathan, thanks for the input....food for thought there. I'm trialing cambam which is very good for cam, so there may be some mileage there. (I asked on their forum....http://www.cambam.co.uk/forum/index....5.msg13159#new )
Re USB CNC & brains...no not yet, he mentions that there's a scripting ability that has just need introduced. (I think if I went the way of USB CNC, I'd make sure I have the ability to fallback to mach3 quickly! I really like his product & it looks like by & large it'll fit my needs well - for example I asked about Z transformation & he's onto it already, he calls it warp - http://www.youtube.com/watch?v=r-l7I...1&feature=plcp , but there's clearly not the depth of support & features if you want to go off piste. )
This would need to find the T# then replace the P# of the G4 command. The code should really only put one T# for each tool (or pad in this case) so there will be lots of proceding lines with no T# untill next pad change or T#. So just finding the T# and replacing the whole line won't work Unless everyline starts with a T# which hisn't very effficient.
The Script would need to look for the T# then replace any proceding G4 P### time values with a stored value matching that T# then repeat untill it find another different T# so on n so forth.
I don't know how to do this with the standard find-replace without using some kind of script which defeats the purpose so may as well just use the script straight off.
Jonathan If you know how then I'd be interested because like you I do use it to change code on the fly and being able to target one value and change another select value would be good info.!
Bit of a result here.
I started wading through the threacle that is Eagle user ulps....and found one written in 2001, with the obtuse name of dose-pro.ulp!
Anyway, when I run it within eagle on my pcb layout, it creates two files
1. A list of SMD pad surface areas and the pretend tool that it has married for that size of pad...
Tool Pad-X Pad-Y Square mm^2
T01 X000055 Y000120 | 000.66
T02 X000060 Y000060 | 000.36
T03 X000060 Y000220 | 001.32
T04 X000079 Y000089 | 000.70
T05 X000100 Y000140 | 001.40
T06 X000114 Y000185 | 002.12
T07 X000120 Y000120 | 001.44
T08 X000140 Y000140 | 001.96
T09 X000160 Y000160 | 002.56
T10 X000160 Y000180 | 002.88
T11 X000160 Y000180 | 002.88
and just as importantly...
2. a file containing all the SMD pad coords and auto-grouped by tool size, for example....
This latter file actually opens up just fine as a drill NC file in USB CNC (so I now have all the points the solder dispenser needs to go to)....so all I need now is for the USB CNC software to raise a output pin signal of somekind at say Z +.0.2mm (start the dispense), then dwell (pause) depending on tool number, then release the pin signal (stop the dispense).....and then I'm done!
Brilliant ... that thing you've found is in C, so we can edit it to output exactly what you want!
It looks like you've outputted the pad co-ordinates not in mm, however there's a selection thing at the beginning of the code so that shouldn't be a problem. I think you'll want the format something like this, but with the right units:
(so instead of the program outputting just X000790Y-00460, it outputs that with all the above appended)
...for each line. Where M8 macro (looking at mach3, use whatever it is for diycnc) is the coolant pin which you can connect to the dispenser, M9 switches it off. Px, x is the time for the delay using the pad area from the other file multiplied by some constant which you need to work out to get the right time.
I think that should do it?
Last edited by Jonathan; 27-12-2011 at 04:47 PM. Reason: grammar
Yes....it is brilliant (thank heavens for other people's code!)
Straight away you've established an issue that I'm trying to work around. I've never coded in C, but yes, it is outputing like thus....
whereas what I need it like this....
or even better..
I tried dicking about with the ulp code ...I got it to divide by 100, but then lost a whole lot of resolution (what it really needs is for the decimal points to be inserted at the correct points as those coords are in 10ths of a millimetre) If anyone who's an expert in C can cast their eye over the ulp I'd be *very* grateful.
Re your code....
Px - but how do I get this pause to relate to the tool number - for example if tool=1 then pause 0.3s, if tool = 2 then pause 0.5s (the longer the pause the more the solder paste is dispensed)
By dsc in forum Rails, Guideways & BearingsReplies: 14Last Post: 11-12-2013, 09:43 AM