I'm going to start this thread to place the results of my work and links to the latest software. I've been doing some serious hacking at trying to get the liteplacer more useful for me including a lot of UI changes. I'm still a long ways from releasing something stable, but if people want I can check-in changes to git. And git still sucks. Keeps deleting random files so I have to backup my entire work directory between check-ins.
So for placing some components from tape, you'll need to find the actual position of the component in the tape, and it's degree of rotation. The software currently only supports a single 'component' view which will not scale for different parts. I've tried setting up some code to detect a QFN in tape and the results are good - but the code needs to be generalized so that each tape can have a specific routine for both circle detection and optionally part detection. This is a big undertaking so I would love some volunteers. Here's that I'm talking about. To place these parts
fairly simple to find the rectangle center and angle offset
LitePlacer-rmod Updates
Re: LitePlacer-rmod Updates
I've added support for visualizing various calibration steps to make sure you know what's going on. I noticed that there is a big error in the needle position when the direction is changed and added similar slack compensation code to deal with it - now the calibration is smoother.
I also wanted to see if the needle actually went to the place it was supposed to and the needle calibration worked. I found a systemic error which was equal to the offset error for the upcamera location and the scatter of points is equal to the max pickup error.
Here is a video of the code in action
https://youtu.be/jXzWGIKerms
I also wanted to see if the needle actually went to the place it was supposed to and the needle calibration worked. I found a systemic error which was equal to the offset error for the upcamera location and the scatter of points is equal to the max pickup error.
Here is a video of the code in action
https://youtu.be/jXzWGIKerms
Part-Pickup Detection
I'm not sure which needles people are using for different parts, but I"m finding that I'm not always picking up parts which makes a mess when the needle goes down on the solder paste with the vacuum on.
I did some preliminary tests using pressure sensors that I have in the lab and found this one did a good job of detecting the pressure difference between nothing on the needle and something on the needle - http://cache.freescale.com/files/sensor ... X4250A.pdf
I'm added a T to the tube going from the solenoid to the needle that goes to this sensor. Only problem is that the tinyG has no analog inputs (as far as I can tell). I've got a spare teensy 3.1 that I'll just as an ADC (overkill) but I suspect it'll be the fastest way to get it operational. I'll make the code changes to support detection and add retry logic.
The code I'm working on is still in flux - I'm removing the homography estimation code and replacing it with simpler code to detect a affine transformation (rotation + translation) using singular value decomposition from the opencv library. I don't expect my board to move in 3D nor for it to warp, so I suspect hat the holography estimator is giving me errors associated with detected movements that are not possible.
I'm also working on migrating all the cad stuff into classes that are used as datasources for the grids rather than keeping all the data as text strings in grids - it greatly simplifies most all the code and removes the need to try to reparse text so many times.
I did some preliminary tests using pressure sensors that I have in the lab and found this one did a good job of detecting the pressure difference between nothing on the needle and something on the needle - http://cache.freescale.com/files/sensor ... X4250A.pdf
I'm added a T to the tube going from the solenoid to the needle that goes to this sensor. Only problem is that the tinyG has no analog inputs (as far as I can tell). I've got a spare teensy 3.1 that I'll just as an ADC (overkill) but I suspect it'll be the fastest way to get it operational. I'll make the code changes to support detection and add retry logic.
The code I'm working on is still in flux - I'm removing the homography estimation code and replacing it with simpler code to detect a affine transformation (rotation + translation) using singular value decomposition from the opencv library. I don't expect my board to move in 3D nor for it to warp, so I suspect hat the holography estimator is giving me errors associated with detected movements that are not possible.
I'm also working on migrating all the cad stuff into classes that are used as datasources for the grids rather than keeping all the data as text strings in grids - it greatly simplifies most all the code and removes the need to try to reparse text so many times.
Re: Part-Pickup Detection
If you are doing this why not go a step further and persist the data in an sqlite Database and add a kind of PCB management?thereza wrote: I'm also working on migrating all the cad stuff into classes that are used as datasources for the grids rather than keeping all the data as text strings in grids - it greatly simplifies most all the code and removes the need to try to reparse text so many times.
Using the CAD folders for the liteplace job files is IMHO suboptimal.
I would prefer to have a front end grid with a list of my liteplacer pcbs. If an entry exits a single click will load the job data and any other settings and I'm up and running to build the next board.
Other wise I just add a new PCB, enter some Informations and optional handling instructions. Then I specify the path to the appropriate centroid CSV file (the file is saved and on later reloading checked for eventual modifications so my CSV and LPJ files are always consistent.).
After that the rest is as already documented (setup the LP job file and so on).
What do you think about that?
Topic pressure sensor: I am working with BMP180 and BME 280 MEMs Sensors. The BMP180 measures pressure and temperature and is connected via I2C. Although a simple ADC approaceh would do fine I prefer the mere digital approach as it delivers reproducible pressure measurement. You can get the BMP180 from adafruit as a breakout board. I does not have a tube connector but to glue a cap with a short tube on top of the break out is easy to do.
best regards
Manfred
Manfred
Re: LitePlacer-rmod Updates
i was thinking of going with a sqlite database for components (tapes). how hard is it to just throw an object into mysql via bindings - or do you have to build the table first? not sure if vs does the hard work for you.
and i dont know if you have i2c lines exposed on the tinyg - but you do have 2 adc lines that are broken out. Also, i don't care what the actual (reproducible) value is - i just want there to be a change before an after i try to pick up the part (i think i was seeing like 50mV change with the blue needle using my part). also, i loathe i2c. will avoid it as much as possible. spent too many hours trying to debug i2c code - spi is so much easier by comparison.
Just be sure to test them out to see if you can detect a change in the pressure. Of the 5 or so sensors I had, that was the only one with a reasonable change in output - the others were 'maxed out' even with no part attached. this included one that was rated to +-30"H20
-reza
and i dont know if you have i2c lines exposed on the tinyg - but you do have 2 adc lines that are broken out. Also, i don't care what the actual (reproducible) value is - i just want there to be a change before an after i try to pick up the part (i think i was seeing like 50mV change with the blue needle using my part). also, i loathe i2c. will avoid it as much as possible. spent too many hours trying to debug i2c code - spi is so much easier by comparison.
Just be sure to test them out to see if you can detect a change in the pressure. Of the 5 or so sensors I had, that was the only one with a reasonable change in output - the others were 'maxed out' even with no part attached. this included one that was rated to +-30"H20
-reza
Re: LitePlacer-rmod Updates
I am with Reza here. No need to know the absolute values, we just need to detect relative changes.
As for the sensor, have a look at this model by Freescale:
MPXV6115
http://www.freescale.com/webapp/sps/sit ... lang_cd=en
The V is for vacuum. It detects -115kPa, which would equal absolute vacuum at sea level in standard atmosphere. I am unsing the exact same part to control the negative pressure (or however a physicist would call that) in my vacuum storage tank without any issues.
For interfacing it, I will probably choose another route. I had the idea of creating a "daughterboard" with it's own MCU and firmware, which would then connect to TinyG via SPI - so we would not have to hack TinyG firmware that much.
I envision that board to fulfill multiple purposes, pickup detection being one of them. Other ideas are controlling PWM for the camera lights and maybe automatic feeders at some point.
What do you think?
As for the sensor, have a look at this model by Freescale:
MPXV6115
http://www.freescale.com/webapp/sps/sit ... lang_cd=en
The V is for vacuum. It detects -115kPa, which would equal absolute vacuum at sea level in standard atmosphere. I am unsing the exact same part to control the negative pressure (or however a physicist would call that) in my vacuum storage tank without any issues.
For interfacing it, I will probably choose another route. I had the idea of creating a "daughterboard" with it's own MCU and firmware, which would then connect to TinyG via SPI - so we would not have to hack TinyG firmware that much.
I envision that board to fulfill multiple purposes, pickup detection being one of them. Other ideas are controlling PWM for the camera lights and maybe automatic feeders at some point.
What do you think?
Re: LitePlacer-rmod Updates
the tinyg code already supports pwm output - it's in the code, no idea how to use it.
one concern about your unit might be that the dynamic range might be so high that you'll see a small voltage difference output and will need to add a gain stage to detect it.
the tinyg also supports spi but i also have no clue to how to us it - by the looks of it you'll have to modify the firmware to enable outside control of the spi interface. looks like they dropped RS485 support for SPI (from v7->v8) and didn't really flush it out in the firmware.
I still prefer my one wire solution to a daugherboard.
-r
one concern about your unit might be that the dynamic range might be so high that you'll see a small voltage difference output and will need to add a gain stage to detect it.
the tinyg also supports spi but i also have no clue to how to us it - by the looks of it you'll have to modify the firmware to enable outside control of the spi interface. looks like they dropped RS485 support for SPI (from v7->v8) and didn't really flush it out in the firmware.
I still prefer my one wire solution to a daugherboard.
-r
Re: LitePlacer-rmod Updates
For TinyG issues, the support forum is at https://www.synthetos.com/forums/tinyg/ and the development forum at https://groups.google.com/forum/#!forum/devtinyg.
Re: LitePlacer-rmod Updates
Hi Reza,
I wanted to go ahead and test your latest additions to LitePlacer codebase. Found out that your last update to your github fork is 9 days old.
Will you publish the more recent changes as well or is it not ready yet?
Thanks
Malte
I wanted to go ahead and test your latest additions to LitePlacer codebase. Found out that your last update to your github fork is 9 days old.
Will you publish the more recent changes as well or is it not ready yet?
Thanks
Malte
Re: LitePlacer-rmod Updates
i'll do a push in a few but i can't guarantee it'll work. happy to have you test it out and help debug. a lot of things have changed and are still untested (i've got 2 weeks till i get my boards in so that's my deadline for finishing it)