Pcbnew / Kicad

User avatar
7bit

14 Aug 2014, 16:25

Things I hate with kicad:
- Can't use $PWD as working path for library files. I always have to enter that manually.
- When the file has changed, I can't reload the file. (resizing is not possible afterwards)
- Generating netlist-file from scheme file at commandline not possible.
If this is still the case in later versions, one day, I will write a script to generate the netlist file myself!

Most other trouble I've solved the usual way.
:ugeek:

bpiphany

14 Aug 2014, 17:15

Last big thing they did was to add ".pretty"-libraries for footprints. That's was a big step forward. Not to mention the move to the new .kicad_mod file type. Now the footprints are actually readable, and fun and easy to modify by hand... The globbed mod-files never made much sense. Most improvements have been to pcbnew, eeschema still needs a lot of work done to it.

Code: Select all

(module MX_plate_visible (layer F.Cu)
  (at 0 0)
  (fp_text reference SW (at 0 3.7) (layer F.SilkS) (effects (font (size 1.2 1.5) (thickness 0.24))))
  (fp_text value VAL** (at 0 3.7) (layer B.SilkS) hide (effects (font (size 1.2 1.5) (thickness 0.24))))

  (fp_line (start -6.5 -6.5) (end -4.5 -6.5) (layer F.SilkS) (width 0.4))
  (fp_line (start 4.5 -6.5) (end 6.5 -6.5) (layer F.SilkS) (width 0.4))
  (fp_line (start 6.5 -6.5) (end 6.5 -4.5) (layer F.SilkS) (width 0.4))
  (fp_line (start 6.5 4.5) (end 6.5 6.5) (layer F.SilkS) (width 0.4))
  (fp_line (start 6.5 6.5) (end 4.5 6.5) (layer F.SilkS) (width 0.4))
  (fp_line (start -4.5 6.5) (end -6.5 6.5) (layer F.SilkS) (width 0.4))
  (fp_line (start -6.5 6.5) (end -6.5 4.5) (layer F.SilkS) (width 0.4))
  (fp_line (start -6.5 -4.5) (end -6.5 -6.5) (layer F.SilkS) (width 0.4))
  (fp_line (start -6.5 -6.5) (end 6.5 -6.5) (layer Cmts.User) (width 0.16))
  (fp_line (start 6.5 -6.5) (end 6.5 6.5) (layer Cmts.User) (width 0.16))
  (fp_line (start 6.5 6.5) (end -6.5 6.5) (layer Cmts.User) (width 0.16))
  (fp_line (start -6.5 6.5) (end -6.5 -6.5) (layer Cmts.User) (width 0.16))

  (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.3 2.3) (drill 1.5) (layers *.Cu B.Mask))
  (pad 2 thru_hole circle (at -3.81 -2.54) (size 2.3 2.3) (drill 1.5) (layers *.Cu B.Mask))
  (pad HOLE thru_hole circle (at 0 0) (size 4 4) (drill 4) (layers *.Cu))
)

User avatar
7bit

14 Aug 2014, 17:22

Does it still support old files?

I ask, because the footprints are all generated by a script, so changes here, don't make sense at all.

Also, I don't like that dataformat.

Code: Select all

$MODULE	CHERRYMX150x192x0
Po	0	0	0	15	4FDE2BFA	00000000	~~
Li	CHERRYMX150x192x0
Sc	0
AR	
Op	0	0	0
T0	0	1250	400	600	0	80	N	V	21	N	"0"
T1	0 	0 	100 	100 	0 	20 	N 	V 	22 	N	"MX"
T2	0	1250	400	600	0	80	M	V	20	N	"0"

DS	-5575	-3700	5575	-3700	60	24
DS	5575	-3700	5575	3700	60	24
DS	5575	3700	-5575	3700	60	24
DS	-5575	3700	-5575	-3700	60	24

DS	-3437	-2500	2500	-2500	60	25
DS	2500	-2500	2500	2500	60	25
DS	2500	2500	-3437	2500	60	25
DS	-3437	2500	-3437	-2500	60	25

DS	-3437	-2500	-2737	-2500	150	21
DS	1800	-2500	2500	-2500	150	21
DS	2500	-2500	2500	-1800	150	21
DS	2500	1800	2500	2500	150	21
DS	2500	2500	1800	2500	150	21
DS	-2737	2500	-3437	2500	150	21
DS	-3437	2500	-3437	1800	150	21
DS	-3437	-1800	-3437	-2500	150	21


$PAD
Sh	"1"	C	900	900	0	0	0
Dr	590	0	0
At	STD	N	00F0FFFF
Ne	0	""
Po	63	-2000
$EndPAD
$PAD
Sh	"2"	C	900	900	0	0	0
Dr	590	0	0
At	STD	N	00F0FFFF
Ne	0	""
Po	-2437	-1000
$EndPAD
$PAD
Sh	""	C	1575	1575	0	0	0
Dr	1575	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	-937	0
$EndPAD
$PAD
Sh	""	C	669	669	0	0	0
Dr	669	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	1063	0
$EndPAD
$PAD
Sh	""	C	669	669	0	0	0
Dr	669	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	-2937	0
$EndPAD





$PAD
Sh	""	C	1200	1200	0	0	0
Dr	1200	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD
$PAD
Sh	""	C	1575	1575	0	0	0
Dr	1575	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD
$PAD
Sh	""	C	1200	1200	0	0	0
Dr	1200	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD
$PAD
Sh	""	C	1575	1575	0	0	0
Dr	1575	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD

$PAD
Sh	"1"	C	900	900	0	0	0
Dr	590	0	0
At	STD	N	00F0FFFF
Ne	0	""
Po	1000	-2000
$EndPAD
$PAD
Sh	"2"	C	900	900	0	0	0
Dr	590	0	0
At	STD	N	00F0FFFF
Ne	0	""
Po	-1500	-1000
$EndPAD
$PAD
Sh	""	C	1575	1575	0	0	0
Dr	1575	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD
$PAD
Sh	""	C	669	669	0	0	0
Dr	669	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	2000	0
$EndPAD
$PAD
Sh	""	C	669	669	0	0	0
Dr	669	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	-2000	0
$EndPAD





$PAD
Sh	""	C	1200	1200	0	0	0
Dr	1200	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD
$PAD
Sh	""	C	1575	1575	0	0	0
Dr	1575	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD
$PAD
Sh	""	C	1200	1200	0	0	0
Dr	1200	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD
$PAD
Sh	""	C	1575	1575	0	0	0
Dr	1575	0	0
At	HOLE	N	0000FFFF
Ne	0	""
Po	0	0
$EndPAD

DS	-3687	-2750	2750	-2750	60	27
DS	2750	-2750	2750	-2250	60	27
DS	2750	-2250	3100	-2250	60	27
DS	3100	-2250	3100	-1000	60	27
DS	3100	-1000	2750	-1000	60	27
DS	2750	-1000	2750	1000	60	27
DS	2750	1000	3100	1000	60	27
DS	3100	1000	3100	2250	60	27
DS	3100	2250	2750	2250	60	27
DS	2750	2250	2750	2750	60	27
DS	2750	2750	-3687	2750	60	27
DS	-3687	-2750	-3687	-2250	60	27
DS	-3687	-2250	-4037	-2250	60	27
DS	-4037	-2250	-4037	-1000	60	27
DS	-4037	-1000	-3687	-1000	60	27
DS	-3687	-1000	-3687	1000	60	27
DS	-3687	1000	-4037	1000	60	27
DS	-4037	1000	-4037	2250	60	27
DS	-4037	2250	-3687	2250	60	27
DS	-3687	2250	-3687	2750	60	27
$EndMODULE	CHERRYMX150x192x0

^^^ looks complicated, but is quite easy to handle.

bpiphany

14 Aug 2014, 17:36

An other huge thing was the move to metric millimeters down to 8 decimal places. Enough to split an inch in all sort of ways. No more rounding on switch locations =)

To me the new format is quite script readable. There are more string constants in my script, but on the other hand I understand what they do... Even if I am new to perl =D

Code: Select all

#!/usr/bin/perl
$scale = $ARGV[0];
foreach (<STDIN>) {
    s/\(xy (-*[0-9.]+) (-*[0-9.]+)\)/"(xy ".sprintf("%.6f", $1*$scale)." ".sprintf("%.6f", $2*$scale).")"/ge;
    print;
}

User avatar
7bit

14 Aug 2014, 17:46

Yes, it is possible to generate that be scripts, too. Just annoying if I need to start from scratch because they change their data format from time to time. One more reason for me to stick with what I have and not change the software. I want to design the PCBs and not chase new data formats.
:-)

User avatar
DiodeHead

22 Sep 2014, 14:45

7bit wrote: I want to design the PCBs and not chase new data formats. :-)
Did you guys use the development brach of kicad? they added a dxf importer in pcbnew, that makes really nice to import a plate and make the pcb to align with that plate. I just discovered a couple of days ago but it has some time now, i post it in case someone missed it like me.

I´ll try to post tonight and explain myself a little more with pictures and how it worked for me.

hope it helps :)

bpiphany

22 Sep 2014, 15:24

I have always generated my plate dxf's from KiCAD =D I can see the point, but I am much more familiar with KiCAD. Some time ago now they added the nano meter as the base unit instead of thousands of inches. This allows to set switches at exact positions in 16th's of 3/4's of inches withuot any rounding errors. (Due to one of my bug reports!) Someone also fixed the grid dimensions to allow for full nm support. This way the custom grid can be set to suitable parts of 3/4". I use (3/4)*(1/16)=0.046875" to place components and (3/4)*(1/60)=0.0125" for traces and small stuff.

User avatar
DiodeHead

22 Sep 2014, 16:08

I see, it even makes more sense to start from kicad, so you make your plate acording to your component layout, the good thing is now you can plot to dxf work on a mechanical cad ( in case you need more drawing tools ) and come back to check that still everything lines up.

bpiphany

22 Sep 2014, 18:37

Yeah, I'm not trying to say it isn't useful. But the times I have designed plates they haven't included any features I didn't already have coded into my KiCAD footprints or very simple outlines and holes. I use the Drawings layer or some other extra layer to keep all the plate information. Then I plot it to dxf and be done with it =) Only some checking up in LibreCAD to see that everything looks good.

Post Reply

Return to “Workshop”