Hello,
I just ordered a kit yesterday and started to get acquainted to the upcoming work by trying to prepare one of my current PCBs in the software "dry dock".
As a full-time IT Pro using C# since 2008 and selling a productive CRM solution based on > 500.000 lines of C# code, I of course had to put together the necessary VS 2010/13 libraries and start analyzing the source code in the VS Debug IDE.
I plugged in my web cam and voilá it started to work.
(BTW: my due respect to Juha, your code is very well written and easy to understand.)
I use Eagle 5.6 and there are several ways to create a centroid file but I found none that creates a 5 column CSV.
The most common suggestion I found is to use the mountsmd.ulp (a .ulp file is a User Language Program script file you can execute on your current PCB board and or schematic) which comes quite close the the expected CSV file format. It doesn't have commas but spaces between the values. I also have to check whether the dimensions are in mm or mil.
The output files the ULP produces only contain the PCBs SMD components with two separate files for top and bottom layer. I suggest to build the input on this unmodified output instead of creating a new .ulp.
The newer eagle versions (Version 7 by now, but expensive to upgrade from 5.6 ) will certainly also support this ulp.
Maybe one of the other Eagle users has V6 or 7 and can confirm this?
I will create the necessary reader part myself because I don't want to wait for Juha to implement it. He probably has enough other tasks on his agenda and I want to test drive the software to learn how it works asap.
@juha: I will forward you the modified source when I am finished so you can integrate and check the modifications. Is that OK with you?
File format and samples wanted
Re: File format and samples wanted
best regards
Manfred
Manfred
Re: File format and samples wanted
Hi mawa,
welcome - LitePlacer is a great machine, you will have fun with it for sure
Find my script here - it works fine for my purposes:
http://liteplacer.com/phpBB/viewtopic.php?f=4&t=65
Currently, it only outputs one CSV for the top layer components - but that could easily be enhanced.
Cheers
Malte
welcome - LitePlacer is a great machine, you will have fun with it for sure
I also use Eagle and followed the opposite approach. A few lines ULP were much quicker to produce than an input filter for LitePlacer software...I suggest to build the input on this unmodified output instead of creating a new .ulp.
Find my script here - it works fine for my purposes:
http://liteplacer.com/phpBB/viewtopic.php?f=4&t=65
Currently, it only outputs one CSV for the top layer components - but that could easily be enhanced.
Cheers
Malte
Re: File format and samples wanted
That looks great Malte,
I'll test drive your ulp right away.
I have not been involved in creating ULPs yet although I have been using eagle since 2005. I had to create several parts (e.g. APDS 9960 and BMP180 / BME 280 MEMs, WS2812B LEDs) in an own Eagle parts library because of (still) using the legacy Eagle 5.x file format and most new Eagle files (e.g. from Sparkfun et al) are at least V6.
@juha: maybe you can collect files and information like Maltes in a kind of "How To" section of your documentation.
I'll test drive your ulp right away.
I have not been involved in creating ULPs yet although I have been using eagle since 2005. I had to create several parts (e.g. APDS 9960 and BMP180 / BME 280 MEMs, WS2812B LEDs) in an own Eagle parts library because of (still) using the legacy Eagle 5.x file format and most new Eagle files (e.g. from Sparkfun et al) are at least V6.
@juha: maybe you can collect files and information like Maltes in a kind of "How To" section of your documentation.
best regards
Manfred
Manfred
Re: File format and samples wanted
@Malte:
I tried the ULP and unfortunatly the ULP creates a Syntax-Error in Eagle 5.6.0.
It seems the be in this line 46
it works after changing it to:
As far as I can see The CAD data look good except for:
I tried the ULP and unfortunatly the ULP creates a Syntax-Error in Eagle 5.6.0.
It seems the be in this line 46
Code: Select all
B.elements(E) if (E.populate) {
Code: Select all
B.elements(E) {
- * the fiducials, which are not recognized due to my wrong component name (has to start with FI or FID)
* it also sees solder jumpers as components
* it puts red and green LEDs (CHIPLED_0805) into the same components
* it shows 100µ values with a nonprintable character in the component value of a SMC_D cap.
best regards
Manfred
Manfred
Re: File format and samples wanted
Hi Manfred,
happy to hear the ULP now works for you. It was written for Eagle 6 and newer.
The E.populate checks for an attribute that was obviously introduced in a later version than you have. Basically, this tells if a given component should be populated in the assembly variant. Helpful if you use the same PCB but only populate a subset of components depending on use case...
Regards
Malte
happy to hear the ULP now works for you. It was written for Eagle 6 and newer.
The E.populate checks for an attribute that was obviously introduced in a later version than you have. Basically, this tells if a given component should be populated in the assembly variant. Helpful if you use the same PCB but only populate a subset of components depending on use case...
You could change your designator prefix in library. But you can also tell LitePlacer software that a given component is a fiducial after importing the CSV.* the fiducials, which are not recognized due to my wrong component name (has to start with FI or FID)
No problem. You can tell LitePlacer to ignore a component.* it also sees solder jumpers as components
This is a problem you have to fix in the library or component value.* it puts red and green LEDs (CHIPLED_0805) into the same components
I guess, for the export it is a matter of codepage and charset. But that seems to be a common problem with Eagle files also. My PCB fabber told me not to use special characters at all - so I just put uF instead...it shows 100µ values with a nonprintable character in the component value of a SMC_D cap
Regards
Malte
Re: File format and samples wanted
I just double-checked:
The "Component Type" is generated as a combination of footprint and component value (column comment in my export).
Juha's idea must have been to place components of same type in one go - and as long as value and footprint are the same, they must be identical.
Once you set a value for your LEDs (e.g. RD and GR) in Eagle, LitePlacer should group them correctly on import.
The "Component Type" is generated as a combination of footprint and component value (column comment in my export).
Juha's idea must have been to place components of same type in one go - and as long as value and footprint are the same, they must be identical.
Once you set a value for your LEDs (e.g. RD and GR) in Eagle, LitePlacer should group them correctly on import.
Re: File format and samples wanted
> @juha: I will forward you the modified source when I am finished so you can integrate and check the modifications. Is that OK with you?
Of course, and appreciated.
Of course, and appreciated.
Re: File format and samples wanted
I already fixed the fiducial naming and - you are right - setting the LEDS values to their color will create two separate entries and tapes. I left many component values empty in the PCB design because they showed up in the silkscreen - which as you probably experienced yourself can give lots of overlap errors in the Eagle DRC.
The µF or uF is only important for silkprint. The u could be falsely recognized as an n.
But I know my very few large Caps in my circuits by their names.
To keep Liteplacer setup work down it could be advisable to create an "ignore component type" list. Then you don't have to handle all the solder jumpers, measure points or whatever non - placeable components may show up in the centroid csv. But for now I can live with switching them off manually.
@JuKa: As you may have seen mrandts ULP file for Eagle works fine. Therefore I no longer see a need to modify that part of your code.
There are some minor pitfalls in the UI I would like to help you fix (you should know I create and test UIs all day at my normal CRM software job and just did some simple - lets see what happens if I press this enabled button - tests on your UI. I will help fix these small pitfalls as soon as I have learned how git works because we are using SVN since we stepped off Sourcesafe many years ago.
The µF or uF is only important for silkprint. The u could be falsely recognized as an n.
But I know my very few large Caps in my circuits by their names.
To keep Liteplacer setup work down it could be advisable to create an "ignore component type" list. Then you don't have to handle all the solder jumpers, measure points or whatever non - placeable components may show up in the centroid csv. But for now I can live with switching them off manually.
@JuKa: As you may have seen mrandts ULP file for Eagle works fine. Therefore I no longer see a need to modify that part of your code.
There are some minor pitfalls in the UI I would like to help you fix (you should know I create and test UIs all day at my normal CRM software job and just did some simple - lets see what happens if I press this enabled button - tests on your UI. I will help fix these small pitfalls as soon as I have learned how git works because we are using SVN since we stepped off Sourcesafe many years ago.
best regards
Manfred
Manfred
Re: File format and samples wanted
Hi Manfred,
as you seem to be a UX guy, maybe you do not have to code everything yourself but could also help a great deal by formulating your ideas for usability improvements and maybe create some mockups and post them here?
Juha and others could then comment your ideas and drafts and implement the necessary changes - would put the work on multiple shoulders...
If you start coding, regarding git you might want to talk to user thereza - he seems ready to start a git fanclub here *scnr*
If you come from SVN, mabye the following tipps I compiled for reza are helpful:
http://liteplacer.com/phpBB/viewtopic.p ... p=353#p353
After all, git follows a slightly different philosophy than "traditional" version control. It is more geared towards distributed and diverse teams and open-source projects with many forks. Once you get your head around the concepts, it is not rocket science. I remember using CC (clearcase) some years ago and still think that was complicated
For the component ignore list, I think the advantages would be small. I have to configure all components in LitePlacer anyways, clicking ignore for a few of the lines only takes a few seconds extra - doesn't it? Compared to the time you spend designing the board it is really neglectable - especially as it is a one-time effort per board as you can save the LPJ file afterwards. If we made an ignore list, I think it should reside in LitePlacer and not Eagle.
Bit off-topic:
When doing PCB layouts, I usually do not put component values on the silkscreen at all. Space is often a constrain and I do not think it is necessary to have that info printed on the board in most situations. When placing by hand, I usually just go by component designator. Automatic pick & place makes it even less relevant - unless you're building DIY kits for others to assemble
You probably know the "smash" function in Eagle? This allows you to move or delete the value print and designator independently from the component - thus allowing you to get around DRC errors. I have some script somewhere that "smashes" all comps and deletes all values from components in PCB layout, let me know if you're interested. This way, you can keep the value in schematic and for pick & place but remove it from the PCB.
Regards
Malte
as you seem to be a UX guy, maybe you do not have to code everything yourself but could also help a great deal by formulating your ideas for usability improvements and maybe create some mockups and post them here?
Juha and others could then comment your ideas and drafts and implement the necessary changes - would put the work on multiple shoulders...
If you start coding, regarding git you might want to talk to user thereza - he seems ready to start a git fanclub here *scnr*
If you come from SVN, mabye the following tipps I compiled for reza are helpful:
http://liteplacer.com/phpBB/viewtopic.p ... p=353#p353
After all, git follows a slightly different philosophy than "traditional" version control. It is more geared towards distributed and diverse teams and open-source projects with many forks. Once you get your head around the concepts, it is not rocket science. I remember using CC (clearcase) some years ago and still think that was complicated
For the component ignore list, I think the advantages would be small. I have to configure all components in LitePlacer anyways, clicking ignore for a few of the lines only takes a few seconds extra - doesn't it? Compared to the time you spend designing the board it is really neglectable - especially as it is a one-time effort per board as you can save the LPJ file afterwards. If we made an ignore list, I think it should reside in LitePlacer and not Eagle.
Bit off-topic:
When doing PCB layouts, I usually do not put component values on the silkscreen at all. Space is often a constrain and I do not think it is necessary to have that info printed on the board in most situations. When placing by hand, I usually just go by component designator. Automatic pick & place makes it even less relevant - unless you're building DIY kits for others to assemble
You probably know the "smash" function in Eagle? This allows you to move or delete the value print and designator independently from the component - thus allowing you to get around DRC errors. I have some script somewhere that "smashes" all comps and deletes all values from components in PCB layout, let me know if you're interested. This way, you can keep the value in schematic and for pick & place but remove it from the PCB.
Regards
Malte
Re: File format and samples wanted
Ignore List (if any) of coarse in LitePlacer. But you are right if you can delete the job step with non-placing components its faster than specifying the component in such a list. Result = forget the idea.
Well before I come up with any proposals I have to build the machine and run the software and produce one or two boards first.
It only was my frist impression that I can easily crash the software by pressing buttons on an unloaded job list because of null values.
Well before I come up with any proposals I have to build the machine and run the software and produce one or two boards first.
It only was my frist impression that I can easily crash the software by pressing buttons on an unloaded job list because of null values.
best regards
Manfred
Manfred