Lab #4: RGB LED PCB Design and PWM

Hardware PWM Quiz preview

The Launchpad MSP430 FR2433 does not have a built in RGB LED, though it does have two regular LEDs, which are connected to pins P1.0 and P1.1. As we discussed in class, these correspond to the outputs for TA0.1, and TA0.2. TA0.0 can’t be used for PWM (which is why its presumably not broken out)!!!

In class, we will write a program which cycles one LED in brightness then the other. To do this, create an array of at least length 32 which contains LED1 and LED2 values.

Using the watchdog timer in timer mode with the VLO and the /8192 divider, cycle through the values. You will need to:

You do not need to use LPM3 in this lab!

We will solve this in class and then have a quiz about it!

Some sample code for the launchpad that generates a heart-beat effect using PWM of the red channel of the RGB led and the WDT for timing is in template_code.c.

Designing a RGB Trinket PCB

You will likely find useful to clone the ELEC327 reposistory from GitHub (if you have not done so yet).

Your task is to design a PCB with Eagle which includes the following parts from the ELEC327 library:

Eagle comes with a good number of parts, but not all that you need. You can either create a personal library for parts you make or add them to the ELEC327 library. Once you have created/opened the library, start with the “symbol”. Make sure to adequately labels the various connections. For reference, note that Digikey may provide an Eagle part design for the deisgn using an “Ultralibrarian” script or a SnapEDA file. Feel free to make use of these, but you MUST DOUBLE CHECK the design!!!! You shouldn’t need to do this for this lab.

Next, then create a .brd file and route all of the connections. Keep in mind that the battery package is solid and plastic, so you should not place any parts on top of it. One solution is to put everything but the battery on one side of the PCB and the battery on the other. Try to make the final board approximately square/circular, with a diameter of 20-40 mm. After routing, check to make sure that it passes the electrical rule check (ERC) and design rule check (DRC), using the DRC rules given in the PCBS/AdvancedCircuitsBarebones.dru rule file in the github repository.

After you place your components and route traces, please put your initials or some other identifying mark on the board on either the top or bottom copper layer (since this is a barebones process, there is no silkscreen).{: style=”text-decoration:underline”}

When you’re finished, run the CAM job in PCBs/AdvancedBarebones.cam to create the necessary files for manufacturing. We will submit a panel of the class’s designs for manufacturing, and in a subsequent lab, you will assemble and test your PCBs. Thus, late submissions of this portion of the assignment will mean that you lose points not only for this lab but also a subsequent one!!!!

PCB Design Patterns and Anti-Patterns

A “Design Pattern” is an approach for a design task that will help you put small steps together into a full hole. When routing the traces on a PCB, straight lines, symmetry, and right angles are one possible pattern to follow. Note that this requires not just rotely following a rule - think about how you will make the routes while placing the components and deciding their rotation/orientation.

An “Anti-Design Pattern” is the opposite: rules of thumb that end up causing more problems than they solve. For the PCB example below, I imagine the student placing the components then thinking, “I will make the routes as straight as possible and introduce only minimal bends when necessary to avoid vias.” The result is a number of places where traces and vias are minimally separated, or parallel traces travel very closely (minimal separation) for a long distance. A piece of conductive junk ended up between two traces on this board, causing hours and hours of confused debugging.

PCB Example Front

Anti-design PCB front

PCB Example Back

Anti-design PCB back

Upload the following PCB files to Canvas:

Please do NOT zip these, just upload them individually. If you do not follow this instruction I will deduct points from your score. (I use an automated script to extract these files.)