{"id":1212,"date":"2023-05-13T14:35:41","date_gmt":"2023-05-13T14:35:41","guid":{"rendered":"https:\/\/geekblog.febo.com\/?p=1212"},"modified":"2023-05-13T14:35:41","modified_gmt":"2023-05-13T14:35:41","slug":"hybrid-pcb-assembly-technique","status":"publish","type":"post","link":"https:\/\/blog.febo.com\/?p=1212","title":{"rendered":"Hybrid PCB Assembly Technique"},"content":{"rendered":"<p>I&#8217;m working on a project that might become a <a href=\"https:\/\/tapr.org\">TAPR<\/a> product Real Soon Now.&nbsp; While almost all its parts are very ordinary, one is unique (and can be expensive) &#8212; a <a href=\"https:\/\/www.u-blox.com\/en\/\">u-blox<\/a> GNSS (global navigation satellite system) module.&nbsp; These come in at least three form factors.&nbsp; Two of them can be hand soldered with care, but most interesting to me are the <a href=\"https:\/\/www.u-blox.com\/en\/product\/zed-f9t-module\">ZED-F9T<\/a> and <a href=\"https:\/\/www.u-blox.com\/en\/product\/zed-f9p-module\">ZED-F9P<\/a> dual-frequency high performance modules, and the ZED footprint poses some challenges.<a href=\"http:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/ZED-F9T-top-bottom-e1683819786502.png\" data-rel=\"penci-gallery-image-content\" ><img decoding=\"async\" class=\"aligncenter size-full wp-image-1207\" src=\"http:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/ZED-F9T-top-bottom-e1683819786502.png\" alt=\"u-blox ZED-F9T GNSS module\" width=\"350\" height=\"290\" srcset=\"https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/ZED-F9T-top-bottom-e1683819786502.png 350w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/ZED-F9T-top-bottom-e1683819786502-300x249.png 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/a>You can see from the picture that unlike some other u-blox devices, the pads aren&#8217;t accessible from the side &#8212; you can&#8217;t get to them with a soldering iron, and the only option is to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Reflow_soldering\">reflow solder<\/a> them.<\/p>\n<p>DIY surface mount assembly has become relatively common, and isn&#8217;t as difficult as many people think.&nbsp; Solder paste is spread onto the board&#8217;s pads using a metal stencil and a squeegee, then the parts are placed on the pads, and finally the whole board is heated to melt the paste into liquid solder.&nbsp; Here&#8217;s an old but very good tutorial on <a href=\"https:\/\/www.sparkfun.com\/tutorials\/58\">SMD soldering using a stencil<\/a> from the good folks at <a href=\"https:\/\/sparkfun.com\">SparkFun<\/a>.<\/p>\n<p>Placing all those tiny parts by hand can be really tedious.&nbsp; PCB assembly houses like <a href=\"https:\/\/jlcpcb.com\/\">JLCPCB<\/a> now offer automated surface mount assembly services for incredibly low prices.&nbsp; JLCPCB stocks all the parts my project uses, except the u-blox module.<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_1212_1('footnote_plugin_reference_1212_1_1');\" onkeypress=\"footnote_moveToReference_1212_1('footnote_plugin_reference_1212_1_1');\" ><sup id=\"footnote_plugin_tooltip_1212_1_1\" class=\"footnote_plugin_tooltip_text\">[1]<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_1212_1_1\" class=\"footnote_tooltip\">Actually, they can source those too, but there are drawbacks, but that&#8217;s a story for a different post.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_1212_1_1').tooltip({ tip: '#footnote_plugin_tooltip_text_1212_1_1', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top center', relative: true, offset: [-7, 0], });<\/script>&nbsp; And having all those parts mounted costs only a couple of dollars per board.<\/p>\n<p>Normally all the SMT parts on the board are soldered in one pass because the stencil holes are just big enough for the solder pads, and won&#8217;t fit over components already on the board.&nbsp; It&#8217;s possible to use solder paste without a stencil, but it&#8217;s really difficult to do cleanly.<\/p>\n<p>So that ruins the idea of having JLCPCB do most of the work, leaving me just the u-blox module to deal with.&nbsp; Or does it?&nbsp;<\/p>\n<p>I&#8217;ve found a simple workaround:<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_1212_1('footnote_plugin_reference_1212_1_2');\" onkeypress=\"footnote_moveToReference_1212_1('footnote_plugin_reference_1212_1_2');\" ><sup id=\"footnote_plugin_tooltip_1212_1_2\" class=\"footnote_plugin_tooltip_text\">[2]<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_1212_1_2\" class=\"footnote_tooltip\">I don&#8217;t claim it&#8217;s original to me; I&#8217;m sure others have done the same thing.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_1212_1_2').tooltip({ tip: '#footnote_plugin_tooltip_text_1212_1_2', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top center', relative: true, offset: [-7, 0], });<\/script> make a stencil with cutouts large enough to clear the mounted parts, while leaving the cutouts for the not-yet-soldered pads alone.&nbsp; Then the stencil will drop over the parts and you can paste, place, and reflow the new components.&nbsp; (I told you&nbsp; it was simple!)<\/p>\n<p><a href=\"http:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images.png\" data-rel=\"penci-gallery-image-content\" ><img decoding=\"async\" class=\"aligncenter size-full wp-image-1234\" src=\"http:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images.png\" alt=\"Left is original paste layer, middle is new cutout overlay, right is new stencil layer\" width=\"1200\" height=\"483\" srcset=\"https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images.png 1200w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images-300x121.png 300w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images-1024x412.png 1024w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images-768x309.png 768w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images-1170x471.png 1170w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/combined_stencil_images-585x235.png 585w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/a>The <strong>left<\/strong> image (red) is the original stencil outline.&nbsp; Each of the red spots is a cutout that matches the size of the solder pad below.&nbsp; The big block of pads near the center is the ZED-F9 module.&nbsp; The <strong>middle<\/strong> image shows that the cutouts can be enlarged to make openings around the existing parts.&nbsp; The <strong>right<\/strong> image (blue) is the new paste layer after editing in cutouts for all the other components.<\/p>\n<p>To modify the stencil in <a href=\"https:\/\/www.kicad.org\/\">KiCad<\/a>, open the board file in the PCB Editor and uncheck all layers (tab on right side) except &#8220;F.Paste&#8221;, &#8220;F.Courtyard&#8221;, and &#8220;Edge.Cuts&#8221; (which provides the board dimensions).&nbsp; On the &#8220;Objects&#8221; tab, make sure &#8220;Zones&#8221; is checked.&nbsp; You should also click the box on the left side of the screen to &#8220;Show filled areas of zones&#8221;.<\/p>\n<p>Set F.Paste as the active layer, and use the &#8220;Add a Filled Zone&#8221; tool to draw boxes over the courtyard for each already-mounted part.&nbsp; There&#8217;s no harm in making the zones slightly larger than that.&nbsp; You can include several closely spaced components within a single zone.&nbsp; Try to keep the zone edges as far from the remaining pads as you can.&nbsp; It will make spreading the paste easier.&nbsp; Notice that I kept separate outlines for a few&nbsp; components rather than including them in a large cutout.&nbsp; These cutouts serve as guides to approximately align the stencil on the board and keep it from sliding around.<\/p>\n<p>When you&#8217;re finished, do File\/Plot\/Gerber.&nbsp; Make sure the box &#8220;Plot Edge.Cuts on all layers&#8221; is checked.&nbsp; Generate the gerber files and send the F_paste.gbr file to the PCB house to get a stencil.<\/p>\n<p>The picture below shows the stencil in action.&nbsp; Scrap boards form a frame to secure the work PCB tightly in place, and everything is securely taped.&nbsp; Make sure the stencil is as flat as possible against the board to keep paste from wicking underneath and making a mess.&nbsp; I arrange the tape so I can hinge the stencil up without smearing the paste.<\/p>\n<p><a href=\"http:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil.jpg\" data-rel=\"penci-gallery-image-content\" ><img decoding=\"async\" class=\"aligncenter size-full wp-image-1236\" src=\"http:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil.jpg\" alt=\"\" width=\"1280\" height=\"961\" srcset=\"https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil.jpg 1280w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil-300x225.jpg 300w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil-1024x769.jpg 1024w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil-768x577.jpg 768w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil-1170x878.jpg 1170w, https:\/\/blog.febo.com\/wp-content\/uploads\/2023\/05\/zed_stencil-585x439.jpg 585w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/a>I use an infrared preheater.&nbsp; My process isn&#8217;t scientific &#8212; I keep an eye on the board and once the paste melts and the existing solder reflows I maintain the heat for two or three minutes, then cool the board down gradually to reduce thermal stress.&nbsp; I don&#8217;t know if I&#8217;m getting anything like the correct thermal profile, but so far all the modules I&#8217;ve placed this way have worked.<\/p>\n<p>By the way, my theory is that using a hotplate rather than an oven or hot air gun is better for the health of the u-blox module, which has its own soldered components inside.&nbsp; Heating from below causes the solder on the bottom to flow first, minimizing the heat in the module above.<\/p>\n<p>It took me a long time to find this simple way to assemble these boards without major headaches.&nbsp; This idea has worked well and saved many hours of placing tiny parts with tweezers.&nbsp; I hope you find it useful, too.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<div class=\"speaker-mute footnotes_reference_container\"> <div class=\"footnote_container_prepare\"><p><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_label pointer\" onclick=\"footnote_expand_collapse_reference_container_1212_1();\">References<\/span><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_collapse_button\" style=\"display: none;\" onclick=\"footnote_expand_collapse_reference_container_1212_1();\">[<a id=\"footnote_reference_container_collapse_button_1212_1\">+<\/a>]<\/span><\/p><\/div> <div id=\"footnote_references_container_1212_1\" style=\"\"><div class=\"pcrstb-wrap\"><table class=\"footnotes_table footnote-reference-container\"><caption class=\"accessibility\">References<\/caption> <tbody> \r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_1212_1('footnote_plugin_tooltip_1212_1_1');\"><a id=\"footnote_plugin_reference_1212_1_1\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8593;<\/span>1<\/a><\/th> <td class=\"footnote_plugin_text\">Actually, they can source those too, but there are drawbacks, but that&#8217;s a story for a different post.<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_1212_1('footnote_plugin_tooltip_1212_1_2');\"><a id=\"footnote_plugin_reference_1212_1_2\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8593;<\/span>2<\/a><\/th> <td class=\"footnote_plugin_text\">I don&#8217;t claim it&#8217;s original to me; I&#8217;m sure others have done the same thing.<\/td><\/tr>\r\n\r\n <\/tbody> <\/table><\/div> <\/div><\/div><script type=\"text\/javascript\"> function footnote_expand_reference_container_1212_1() { jQuery('#footnote_references_container_1212_1').show(); jQuery('#footnote_reference_container_collapse_button_1212_1').text('\u2212'); } function footnote_collapse_reference_container_1212_1() { jQuery('#footnote_references_container_1212_1').hide(); jQuery('#footnote_reference_container_collapse_button_1212_1').text('+'); } function footnote_expand_collapse_reference_container_1212_1() { if (jQuery('#footnote_references_container_1212_1').is(':hidden')) { footnote_expand_reference_container_1212_1(); } else { footnote_collapse_reference_container_1212_1(); } } function footnote_moveToReference_1212_1(p_str_TargetID) { footnote_expand_reference_container_1212_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_1212_1(p_str_TargetID) { footnote_expand_reference_container_1212_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } }<\/script>","protected":false},"excerpt":{"rendered":"<p>I&#8217;m working on a project that might become a TAPR product Real Soon Now.&nbsp; While almost all its parts are very ordinary, one is unique (and can be expensive) &#8212;&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","ngg_post_thumbnail":0,"footnotes":""},"categories":[87,6,54,5,2],"tags":[85,65,88,86],"class_list":["post-1212","post","type-post","status-publish","format-standard","hentry","category-construction","category-general","category-gps","category-tapr-projects","category-time-and-frequency","tag-gnss","tag-gps","tag-smt","tag-u-blox"],"_links":{"self":[{"href":"https:\/\/blog.febo.com\/index.php?rest_route=\/wp\/v2\/posts\/1212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.febo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.febo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.febo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.febo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1212"}],"version-history":[{"count":42,"href":"https:\/\/blog.febo.com\/index.php?rest_route=\/wp\/v2\/posts\/1212\/revisions"}],"predecessor-version":[{"id":1265,"href":"https:\/\/blog.febo.com\/index.php?rest_route=\/wp\/v2\/posts\/1212\/revisions\/1265"}],"wp:attachment":[{"href":"https:\/\/blog.febo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.febo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.febo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}