This is Part Two of my LTE GNSS Asset Tracker project. In part one, I identified the right components for the project and captured the schematics. In this part, we are going to finish the project up with the PCB layout and routing.
In the last article, I had stated my goal of making this board as small as possible with the intention of making a high density board, expecting I’d need 6 layers for the routing. However, a board’s total size is determined by the largest components, regardless of the wishes of the designer. The 18650 lithium-ion battery holder and LTE antenna alone define the footprint of this board, with the LTE antenna having specific spacing and layout requirements that combine with the 18650 battery to determine the length, and the LTE antenna alone determining the width.
The project is still relatively compact, and the larger than anticipated size does allow fewer engineering tradeoffs as far as component placement is concerned.
Before we dive into the layout and routing, I’d like to reiterate what was mentioned in the previous part of this article—this project is open source, and is available under the permissive MIT license. You can find the project files on GitHub. The components for this project are from my open source Altium Designer® component library, the Celestial Altium Library. You can use this project as the starting point for your own project/product, or use any portion of it as you wish.
Given that this is an RF board, the first thing I’m going to set up on the board is the layer stack. It needs to be at least 4 layers to allow a small enough track for the RF traces. I’m going to use essentially the same layer stack as I used in my CC1125 Sub-1GHz Transceiver project. You can find a setup guide for the layer stack and impedance in that article.
One thing I am doing differently in this project to the Sub 1Ghz project is not using a symmetrical stackup. Under the top layer I have a plane layer, yet above the bottom layer I have a signal layer. By default, Altium uses a symmetrical stack, which will change matching pairs of layers to both be planes or signals as you change one of the layers.
To disable this function, you can look in the properties panel under the Board section, and deselect Stack Symmetry.
With the board stack set, the impedance rules and classes set, I’m ready to start the layout.
Continuing on from the previous part of this project, I have transferred the components to the PCB. For this project, I’m not using rooms—rooms are incredibly handy for many projects, especially anything multi-channel, for example, my Current Monitor and Controller Project makes good use of rooms for quick routing. In this project, however, I’d probably just end up hiding the rooms and making each room cover the entire board, as I have no room related rules and I’m not using any room related features in Altium.
To disable rooms getting generated on the PCB when updating the board, you can turn them off by going to Project -> Project Options and selecting Ignore Differences from the ECO Generation tab.
This results in all 141 components in the design transferred to the board, I always love how they look when first transferred.
As I’ve mentioned in previous articles, I really like to start a layout by grouping components together as blocks that I’ll layout individually. These are typically finer groupings than just by schematic sheet. I find it helps me to get a better understanding of spacing and layout doing it this way.
For example, the microcontroller schematic will group the decoupling and power filter components together, and the microcontroller and any passives associated with it next to that group, and then finally the Single Wire Debug port and reset button. The schematic sheet for the microcontroller in this project also includes an SPI flash chip, which I don’t necessarily need to have right next to the microcontroller in the layout, so I also group that separately. If I had grouped the flash IC with the microcontroller, it could limit my layout options when I come to assemble the jigsaw puzzle of components.
This then gives me little blocks to individually layout. While this board only has 140 components, if you apply this strategy to boards that have many hundreds of components it can make the project of layout and routing look a lot less daunting and complicated.
Being able to focus on many small sections in isolation and then bringing those sections together bit by bit makes the layout much more approachable.
Once all the component blocks are individually laid out, it's mostly a jigsaw puzzle of how to fit them all together on the board. While assembling the component blocks, it's always a good idea to have some forethought with regard to how to get signals between the sections. It's easy to get carried away with packing things in tightly and not leaving any room for sufficiently sized conductors or vias.
The input layout with the TVS diodes and fuse took a lot of experimenting, unlike the modules and ICs, this is the most flexible section as far as positioning goes. It's critical that the TVS diodes are between the load connection and the source, so they can mitigate any transients prior to the sensitive circuits getting damaged. The ground/return path needs to be large and low impedance to allow a large current spike to be effectively managed without damaging the board itself.
The bottom of the board is fairly sparse, mostly because the position of the battery holder is fairly restricted due to the mounting posts it has for mechanical stability. The posts severely affect where other components can go on the board, which only allows a small section of board to be usable on one side of the holder. I was originally planning to put one of the regulator modules under the GNSS, but really hated that position, as I was worried about switching noise coupling up to the GNSS module. Luckily, I wanted to get the SIM card socket on the bottom of the board as well, and under the GNSS module worked very well. I wanted the SIM card socket on the same side as the battery and power input terminal block so that if this was in an enclosure, it would allow the serviceable components to be on the same side, and to be easily accessible by a technician.
I also placed the LTE antenna on the opposite side of the board to the GNSS antenna to try to use the board to shield some of the directly radiated noise. It’s not going to make much difference, but I’ll take what I can get.
Once I have a rough layout, I like to route anything that is critical to the performance of the board—for this board, it’s the RF networks, the higher current nets, such as the input power and LTE power, and the single switched mode power supply that is not a module.
This makes sure those nets are in place and what they need to be, so IO nets that don’t have any special requirements can make their way around those areas.
The Texas Instruments TPS61089 is an interesting regulator, it’s layout is a little different to many boost converters in that the voltage output comes through the chip itself. As always, we try to follow the manufacturer’s layout recommendations as closely as possible, unless you have a very good reason not to. The manufacturer’s layout is typically going to give you the highest chance of a successful, stable, low noise implementation of a switched mode regulator.
The LTE antenna also has a layout recommendation, however I did have to deviate from this due to placement of the module and antenna. I left the LTE module on the top side of the board, with the antenna on the bottom side of the board, as it left the shortest distance between the antenna pads and the LTE antenna port pads. I still followed the layout, however it’s on a 45 degree angle after the inductor, and has a via to change sides of the board at the capacitor.
Here’s a quick guide to setting up impedance matching for your circuit board in Altium. I’ve provided step by step instructions in a previous project, but I know that some people prefer video.
As with all things RF, you should evaluate the first prototype’s performance and routing with a network analyzer to see what tuning might be required. The manufacturers, or a reference design’s routing, should only be considered an initial starting point for your first prototype to get you close to an optimal design. Simulation tools such as Microwave Studio, HFSS and others are also a great way to get a good starting point—but real copper on substrate will always have some variances compared to a simulation. Simulations are not perfect, and neither is manufacturing.
This is my first pass routing of the top and bottom of the board.
Unfortunately, it quickly became apparent that there was no way I’d be able to get all the connections through the input section of the schematic.
The polygons here are just too dense to allow any vias for other nets to come through, and there’s no room to add more.
The question is, do I really need that much copper area? I mentioned a PCB trace width calculator in my quick and dirty current density article, so I’ll take some of my own advice and head to it to calculate what I actually need.
For my top and bottom layers, I need less than 1mm of trace width, which is fantastic news. I can clean those polygons up a lot. It’s worth noting that many low cost PCB manufacturers will use 17uM internal layers, and therefore the internal layers need to be twice as wide to carry the same current as an outer layer of copper
It’s nice to dream about large copper areas, but in this case it’s not possible to implement. A smaller conductor is still going to be more than sufficient.
To compare, here are the same areas of the board once the routing was completed.
The majority of the changes are on the bottom layer which allowed me to get some power out to the battery charger IC and make all the connections for the various regulator modules that were needed.
The completed layout for this board ended up being quite similar to what I initially started with. I was quite surprised, as I had thought I’d be moving things around a little as I went, but with limited space and requirements to keep certain parts away from each other, there were not really many alternatives to go for without a complete change of every component's position.
The LTE module will receive much higher strength signals than the GNSS module will see, therefore it was critical to ensure the GNSS module and it’s antenna stayed on a relatively clean section of the board. I’d much rather have the majority of the switched mode regulators and their associated electromagnetic interference near the LTE module and its antenna than near the GNSS. The end of the board with the GNSS module only really has the battery capacity monitor and the CAN transceiver, neither of which should impact the navigation reception.
I spent quite a bit of time tidying up traces once the final ground pours were on the board, in order to ensure a more continuous, unbroken ground on each layer. While there is a full ground plane layer, I always like to go through and highlight the ground net and look through each layer to see where I can potentially clean up the design somewhat. Often, a small nudge of a trace in one direction or another can open up gaps to allow a ground pour to run through, giving a more complete pour.
This is where the new Gloss Selected tool comes in incredibly handy, combined with hug and push interactive routing. Some of the traces I placed early on—just to make a connection and see what happened—later got moved around significantly during routing. as the trace and/or vias connected to it were shifted around to make room for other connections. Many of these traces when using the gloss took up less room and hugged together better, allowing a more complete ground pour.
I had hoped to achieve at least an 80% density on the board on this project, just as a personal goal, however without changing the board shape just to cut down on surface area, it wasn’t going to happen. The board would still have taken up the same amount of physical space. I ended up getting to 60% density, which in my opinion is a fairly sparse board. But, because of this, I was able to use just 4 layers and also achieve a more optimal layout with the number of switching regulator modules this board has.
Despite the larger size, the tracker is still significantly more compact than commercially available trackers and remote diagnostic devices that I have used in the past. In a piece of equipment, such as a light tower or generator, this would still be easy to conceal, and if placed into an enclosure, could be robustly mounted, which would greatly reduce the chances of a removal or damage, especially in the case of a theft.
With the accelerometer and CAN data being sent to the right cloud platform leveraging a tool (such as IBM Watson), it would be possible to identify a maintenance need early on, before a critical component could be damaged beyond repair. Rather than reacting to a complete failure or break down, the machine learning system could alert technicians to the need for action. If implemented correctly, this feature could easily save a company far more money than lower insurance costs for the equipment could save.
Combining preventative maintenance predictions from machine learning with rapid recovery of the equipment/plant in the event of theft could greatly reduce down time, and improve equipment availability rates.
I could happily spend another week or more tinkering with the routing, making slight improvements here and there, but at some point, a design needs to be called finished, at least for a first revision. If you use this design and make some changes after testing, feel free to submit a pull request on GitHub, so others can enjoy your implementation too.
This project is open source, as mentioned at the start of the article, you can grab the design files on GitHub under the MIT license.
Would you like to find out more about how Altium can help you with your next PCB design? Talk to an expert at Altium.