Project Journal for Juho Kim
========================= Week 15 =========================
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: April 25thStart Time: 1:00 pm
Duration: 2 hour
I was mostly there to ensure that we were testing correctly and that there would be no last minute errors or damaging of the boards. I also made sure to check for faulty connections an rescure them with Alan using masking tapes. I taught Alan how to hand solder wires and had him create longer wire connections for the motors to allow for the spacing of drums. Last but not least, I helped debug some code when everyone could not come up with an idea as to where the problem was occurring in the full integration. We had all of our functionalities working and presented them at our demo. Relevant images and videos have been included in our Media page.
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: April 24thStart Time: 5:00 pm
Duration: 12 hour (5 hour)
I finished the board by connecting all the voltage regulation connections and tested that there were no errors before I conencted it to 12V. After I found out it worked, I told my teammates how to test with the current limit and made sure there were at least two people in the lab and that both of them had checked the connections and power supply settings. I then helped with the packaging design and combining and fixing the board into the packaging. Some ideas I suggested were just to create holes large enough for the cables and wires to pass by and creating pillars to allow the LCD display and keypad "float" on the packaging. I finalized all connections and made sure that everything was secured and let my team test out their code on the PCB. We were able to get the LCD PSDR checked off along with our MIDI file functionality checked off so we were going to all pass the course in the worst case scenario.
Figure 1:Finished Packaging of ADM
Duration Explanation: Time spent in lab with the team (Estimated work time)
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: April 23rdStart Time: 4:00 pm
Duration: 12 hour (8 hour)
I had Setsuna help me with reconfiguring the USB-UART connections on the board as we found out we had the UART was connected through RX-RX and TX-TX connections. We had vias available so Setsuna helped us solder the interface chip pins to the appropriate vias. This was most likely the reason why we could not program anything to the USB-UART connection and why we were not getting correct connections. However, if it was not the case, we also found out that there were potential design errors with the USB-UART design as the chip was internally coded to a certain value mode. We were going to test with the new USB-UART connections but while we were testing something out we started getting no power. There was an error in detecting the STM32 and we tested on two different computers to confirm that the same issue was occurring. Through conversations I had overheard in previous weeks, I instantly knew there was something wrong with the microcontroller.
At first, I wanted to see if only the microcontorller was fried and desoldered the microcontroller. After cleaning up the pads, I ran and failed continuity tests on the pad and realized that the board was fried. I had to resolder a new PCB board but this time I was using the hotplate. I used stencils and a ChipQuik cold solder paste to apply paste to the discrete components on the board. I used Alan's unused plastic card to apply it equally across the board and got most of the discrete components on other than the TVS diodes, and decoupling capacitors for the microcontroller. After the hotplate successfully attached the components, I had to hand solder the microcontroller, the FFC connector, and any other connections, such as the pin header and motor connectors. Due to time constraints, I told my team that we should use the USB-UART breakout board to perform the functionality as we were not sure if the USB-UART functionality was not working previously due to faulty connectiosn or a design error. Instead of implementing the design, I had to also hand solder wires for the programming header and UART connections. After I finished soldering, I ran continuity tests to check for any soldering problems and found none. I recreated current/voltage connections to allow my team to prototype on the board. We found that our previous functionalities worked and I let the team prototype and test the board under strict control of the power supply.
Figure 1: Desoldered Microcontroller on Fried PCB
Figure 2: Using Hotplate for PCB Soldering
Duration Explanation: Time spent in lab with the team (Estimated work time)
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: April 22ndStart Time: 3:00 pm
Duration: 4 hour (2 hour)
As I did not have the code, I was in the laboratory, looking through Adhiksit's code and debugging the program with him. We were able to identify where the problem was coming from and found that we were not retrieving the data from the right address. I helped track the code down and found out it was most likely an allocation issue. In addition, we had our motor PSDR checked off by Alan. I also worked on our ABET Senior Design Report while Adhiksit was debugging the LCD code and helped him whenever he got stuck.
Duration Explanation: Time spent in lab with the team (Estimated work time)
========================= Week 14 =========================
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: April 17thStart Time: 3:00 pm
Duration: 1 hour
I took a look at our PCB and the display connection that we had made. I realized that on the PCB the connections were opposite too. I would either have to desolder the connector and flip it and resolder it on the board, or we would have to use the two development boards and somehow figure out a way to cross connect to the PCB board. I first decided to desolder and resolder the connector, so that once we have the display working, we will be able to test it out. Worst case scenario, I would have to desolder it again, solder it on the right way, and then create connections using the development board to create the right connection to the display.
After, I helped Adhiksit try and debug the issue with the LCD display code. It seemed to be stuck in an infinite loop and was not giving out the right output. We were running the debugger and finding that the input address was receiving the right values and was stored correctly. However, the output was not giving the right values which made us wonder if it was reaching the wrong address or if the data type had to do with the data being lost after storing. I couldn't really help out too much as I had not written or seen the code until today, however, I made sure that when Adhiksit had to leave, Rahul was going to be able to debug it. In addition, I made sure that Alan knew how to run the current limit on the power supply to test out and integrate other functionalities on the board, such as the keypads and USB. I had to leave early and would not be available on Friday so I had to make sure that each member was careful with the PCB due to the flywiring being very fragile, and that the board would not be burned out by accident while I was gone.
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: April 16thStart Time: 3:30 pm
Duration: 2 hour
During our team meeting, there were a few problems we encountered. The biggest was that we had no programming header. This came as a surprise due to the PCB design passing every feedback we had receieved and was never a concern during the design process. So I started researching for ways that we could incorporate the USB-UART interface as our program header and using the TX/RX to program our code. As I was researching through the STM32 Forums , there were multiple users that have coded something using the USB-UART interface. They were all stating to use the USB-UART pins that had a boot functionaliy and when I looked back at our datasheet, all our UARTs did not have them. In addition, we had our boot loader constantly pulled low, meaning even if we did have the proper pins, we would not be able to code it anyways. Thankfully during our manager meeting, the proposed solution was to flywire the connections from the STM32 pins directly and the TAs would be willing to help resolve this issue. This resolved a lot of our problems and worries of having to reorder the PCB and have to resolder on everything in a very tight timeline. This problem was solved by Xiang Li who had helped us flywire the wires onto the microcontroller chip pins.
The second problem was that the LCD was not lighting up at all and it seemed that there was either a connection issue. Because the connection was made to a breakout board and that was connected using wires, there was either a problem with the breakout board soldering or the connection on the display. I checked and saw that the LCD display was connected on the wrong way, which was leading to the code not compiling and the backlight not lighting up. I had to check what the physical layout of the connections looked like and realized that we were connecting BLVDD and BLGND onto the development board. As they were only connected to general GPIO pins on the development board, nothing on the board was damaged. I had to flip the connectors and made sure that the display backlight was lighting up to make sure the display was not damaged too. The front display was still not lighting on and this most likely seemed to be a programming issue so I let Adhiksit and Rahul try to figure out the problems in the code in the meanwhile. Now, I had to make sure there were no hardware errors and help our team integrate our parts from the development board onto our PCB.
Figure 1: Debugging LED on Display
Last but not least, we had to integrate parts of the development board onto our PCB board. I helped Alan bring the motor connections, verified that everything was connected on the right way, and integrated the system onto the board. We first had to code the debugging LED and made sure that the LED was functioning to understand that the microcontroller was connected and functioning correctly. We got the motors fully connected and ran the code to try and make the motors move. It successfully worked and now we could fully integrate the motor functionality onto our PCB board.
Figure 2: Debugging LED on PCB
Figure 3: Motor on PCB
All videos demonstrating the functionality of the images can be found on our project video section (Media Tab).
To get the code for the video to work, I referenced W3Schools.
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: April 15thStart Time: 5:00 pm
Duration: 9 hour
I had not connected the microcontroller's discrete components so I came into finish that. Our LEDs had arrived so I decided to add them all on to the board. I made sure the polarity was correct by conducting diode continuity tests before hand. After connecting everything I started testing out the voltage regulators. At first, everything seemed fine. The 12V was converting to a 5V, and both the 12V and 5V heartbeat LEDs were being lit up. I had not connected the 5V to 3.3V regulator due to not wanting to fry the microcontroller so this was the next step. However, before I could move onto the next step, there was a short once again. I had no idea where this short was coming from because I had not added in anything, other than the LEDs, and seeming that the LEDs worked fine and were not put on backwards would not have resulted in the short. So I decided to take a look at the barrel jack connector. As I had not soldered it on yet, it was shaky and very faulty. Due to this, I wanted to fix the problem and decided to solder the wires onto the connector.
Figure 1: Board #2 Discrete Components Added
Figure 2: Board #2 LEDs Added
I started by soldering a red wire to the cathode part of the connector. Then, I got help from Xiang Li to put hot glue to create an insulation to not allow the wire connected to the anode to interfere with the cathode, which would cause a short within the connector. Then, I soldered a blue wire to the anode part of the connector and put hot glue on it again with the help from Xiang Li. Now it was time to put the case on and connect it. One problem occurred and it was that the glue was too big and the case was too small. To overcome this issue, I started trimming out the glue to create minimal insulation to allow for the plastic packaging to connect. I had gotten just enough glue to put the connector into one piece when the anode part snapped and the connector could not be used. So I had to solder on another one and repeated the process. This time, I only applied insulation to the cathode side, and left the anode soldered on as the plastic packaging could probably solve this issue. While I was soldering the anode part, maybe I had put the iron tip on it for too long as the anode part melted out and snapped again. Now I was left with only two connectors as I had previously damaged one in Week 12 I believe. I wanted to be very careful and decided that the plastic packaging may cause more problems, so I only soldered and glued the pieces together. Now it was time to test if the connector was working.
Figure 3: Failed Soldering & Gluing of Barrel Jack Connectors
Figure 4: Barrel Jack Connector Successfully Connected
Before connecting it to the barrel jack port, I made sure that the connector was outputting 12V. When I connected it, it suddenly output 2.5V. This meant that there was a short somewhere in the circuitry. As no new connections were made, and knowing that it worked just an hour ago, I was assuming it had to do with the barrel jack. So I tried taking the connector out and connecting it to my previous board (Board #1), and connected a voltage regulator. As the 12-5V system here worked just fine, I knew the barrel jack was the problem. I had to take out the barrel jack through the desoldering and hot air gun station, however, was not confident how the rubber would hold up. So I decided to test it out on Board #1 as I was confident that the microcontroller chip would not work due to knowing an unknown short existed on the board. I chose a square tip for the hot air gun as it could cover three of the soldering holes and would help me remove the solder quickly if I used the air pump. I quickly found out the rubber/plastic melting point as before I could get much progress in removing the barrel jack, the plastic at melted due to the surrounding heat. I carefully took out the barrel jack using the hot air gun and desoldering pump to remove the excess solder paste, and this was what the board looked like:
Figure 5: Melted Barrel Jack
I knew I had to be very careful in removing the barrel jack on the current board (Board #2) due to the plastic parts. I was already pretty disappointed with how fragile the barrel jack connectors were and had just melted a board to unrecoverable amounts. So I took a break from any action that could cause further damage to our board and tried to find an alternative solution. I looked into the cabinets to find a different connector that I could solder the wires together to, so that I would not break anymore of the connectors. I found one adapter that seemed to match the barrel jack hole, and cut the plug out to solder the wires. I cut the wires, stripped some of the insulating tape, and soldered the wires on to the cathode and anode parts of the connector. I was going to use this instead for the barrel jack connection to save myself from breaking more components, but I realized that the adapter connector didn't fully locate itself into the barrel jack. So I just finished cleaning up and decided to take a 30 minute break. Below is an image of the results of soldereing the parts together:
Figure 6: Soldered Adapter with Wires
I came back from my break, chose a diffent tip to remove the barrel jack, a much smaller one that would focus the air only onto the solder connections. With the combination of hot air and desoldering pump, I was able to blow out most of the solder paste and just needed to heat up the reaminder paste while pulling the barrel jack out. I did just that and did a continuity test on the PCB board and found out it failed. So most likely, the faulty barrel jack connector had fried the barrel jack and the board connected to it. I looked through the cabinets and found that there weren't enough discrete components to completely resolder a new board. So I decided to desolder some of the major components I did not have and reuse them on the new board. As the 5V-3.3V conversion never occurred due to never soldering the jumpers on Board #2, I knew the discrete components could not be damaged unless the heat from the hot air gun destroyed it. So I started the desoldering of the discrete components that I seemed to not have enough of (0.1 uF caps, TVS diodes, 10K resistors). After desoldering the components, I let the board cool down, along with the discrete components, and cleaned up the board. I had not connected the 191K, 49.9K, and 90.9K resistors on Board #2, in which would connect the 12V power plane to the buck converter interface due to not having those parts. I did some calculations to figure out if the replaceable resistors of 200K, 51K, 91K resistors respectively would give me a similar output voltage. I was planning on saving Board #2 to flywire a 12V input directly and see if the 5V would still convert through the buck converter. So after I cleaned it all up, I connected the resistors onto the board and put the board aside to test tomrrow.
Figure 7: Desoldered Barrel Jack & Discrete Components
Now, it was time to resolder everything on the new board. I had to do some testing to see if the hot air gun had damaged some parts and found out that there were a few TVS diodes that were missing a leg due to how thin and fragile they were. Knowing this, I started soldering everything I could to Board #3 so that at least my teammates could get some prototyping on the PCB board itself, through wired connections to a breadboard, and voltage supply. I got desolderd parts from Board #2 to replace some of the discrete components, and had almost everything done. I had everything soldered on for the microcontroller, keypad (Except for a header), USB connection, motor and LCD display connection: the basic functionalities of our project. However, while cleaning the board, I had realized I had made some mistakes with the TVS diodes, not placing them well enough, which led to only one of the legs being connected and while scraping the board with a brush, I had disconnected some of the TVS diodes. There were no spare ones left and the most important TVS diode connections for the motor and USB-UART were the ones that came off, along with one for the keypad. This means that I will have to sacrifice some in the keypad section, desolder them and resolder them onto the USB ones to provide ESD protection. As the keypad itself is already plastic covered, the keypad ESD protection is deemed a lesser priority. I will do this tomorrow during the mandatory lab hours due to the time and for my personal good as well.
Figure 8: Board #3 Progress
Instead of working on soldering, I decided to get some other work done. I worked on getting the User Manual first draft done. I just needed confirmation from the programmers of the LCD Display (Adhiksit) and the MIDI file interpretation program (Rahul). If they approve of the manual, I can submit it right away. If changes are necessary, I can incorporate them, talk about them during our mandatory lab meeting and submit it.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: April 14thStart Time: 3:00 pm
Duration: 5 hour
Our spare microcontrollers had arrived and I could start soldering again. I did not want to risk another PCB board & microcontroller chip being burnt out or damaged like last time so I started with something else. As we still did not have any PSDR checked off, I wanted to get one done, by getting the buck converter PSDR finished.
First, I started off by soldering the Buck Converter chip onto the board. I had to use a round tip to perform the soldering process due to how small it was. In addition, I had to solder it under a microscope to confirm that there were no major tilts that could cause any wrong connections onto the board. I added all the discrete components we had for the buck converter, only leaving out ones that are still being shipped such as the LEDs, resistors (191K, 49.9K, 90.9K), and jumper connection. For the inductor, I had to get some help from the ECE shop as the inductor packaging covered the padding fully and gave me no room to work with. In addition, I realized that the TVS diodes we had were unidirectional and not bidirectional, which could cause problems if connected wrong. So, I got help interpreting the datasheet and translating the connection onto our PCB board.
Figure 1: Buck Converter Interface Implemented
Second, I worked on getting the USB-UART IC chip connected fully. Once again, I had not yet asked about the problems of not connecting a polarized capacitor as recommended per datasheet. So, other than the LEDS, that was the only capacitor I did not connect for now.
Figure 2: USB-UART Interface Implemented
Third, I worked on getting all the connectiosn for the keypads as they were fully integrated on our development board. I connected all the TVS diodes correctly, doing a reverse bias test to confirm it. I connected all the 0805 resistors and the only component remaining was the debugging LED, which I will have to add once they are shipped.
Figure 3: Keypad GPIO Interface Implemented
Fourth, I connnected all the discrete components on the backside of the PCB.
Figure 4: PCB Backside Completed
Fifth, I conducted a very thorough continuity test, along with reverse bias tests, and checked the PCB under the X-Ray in the ECE shop. Once I confirmed that there were no errors, I started connecting the microcontroller. After connecting the microcontroller, I made sure there were no shorts or bridges by conducting continuity tests again. I finished up by cleaning up after myself, and organizing the soldering station.
Figure 5: PCB Microcontroller Completed
========================= Week 13 =========================
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: April 11thStart Time: 1:00 pm
Duration: 4.5 hour
I came into the lab and started working on soldering the USB-UART IC chip and the necessary connections on the top of the board. I started by drag soldering the IC chip, let the iron cool down, changed tips, and soldered the resistors and capacitors connected to the IC chip. I had to wait on one of the capacitors, as it was polarized and I wanted to check up with a TA about the safety issues of using a non polarized capacitor. Other than that I had finished soldering everything and was ready to start debugging the hardware.
Figure 1: USB-UART IC Chip Soldered
I first connected all the voltage regulators back and checked that the 12-5V conversion was correct. Then, I started testing the 5V-3.3V conversion and realized that it was incorrect. At first, when I checked the DMM, it was giving me a 0.33V. This was very strange and I checked the power supply to see that the power supply was limiting its output voltage from 12V to 4.6-4.8V. I had no clue what was going on and asked Shivham for help. He suggested that one of the pins could be shorted in the microcontroller or FFC connector, and wanted me to get an X-Ray check. I went to the ECE shop and waited for the X-Ray personnel to arrive. Sid, from the ECE shop, helped me view the PCB under X-Ray and confirmed that there were no shorts or bridges created from soldering the microcontroller. There were also no other shorts in the FFC connector or even the USB-UART IC. This was especially strange as yesterday, I had conducted a continuity test before I left and found no problems.
I had to redo another continuity test and now found that the ground pin and 3.3V output pin on the voltage regulator was shorted. I was completely clueless trying to figure out where the short had occurred, and as no TAs were around, I tried to conduct the continuity test for all the discrete components. It turns out that every capacitor connected to the microcontroller, whether it be the front or backside was now shorted. This surely meant that somewhere somehow, a 3.3V pin and a GND pin connected together. I closely looked under the microscope and camera and found no shorts or bridges once again. I tried conducting a continuity test for each pin on the FFC connector, and even for the microcontroller. As I was doing that, Shivham returned and I requested for additional help. He believed that it may have had to do with a recent connection as the day before I told him that I confirmed with Xiang Li that my PCB was working. So I took his advice and went to the desoldering station.
I started by selecting a desoldering header for the desoldering station. I chose the microcontroller one due to the FFC connector pins being as wide as our microcontroller chip. I turned the device on, let it heat, and when it was hot enough, I started blowing it onth the FFc connector. While I was desoldering it, I ran into a challenge almost immediately. The plastic around the FFC connector started to melt too due to the high heat and caused some of the plastic to melt onto the desoldering iron. Due to this, I had to lift the desoldering iron and tilt it so that the air would only blow onto the pins. I successfully took out the FFC connector and it looked like the image below:
Figure 2: FFC Connector Desoldered
Then, I let the desoldering station cool down and changed the tip of the desoldering iron to a size that fit the FT230XS. I took the USB-UART IC off and this was didn't cause too big of a problem as there was a desoldering nozzle that fit the chip size. After taking both parts off, I decided to clean up the remaining solder paste on each board. I applied flux, took the copper desoldering braid and removed the solder paste. Then, I immediately noticed a problem with our display connection on the PCB board. One of the tracks had come off with the solder paste. I had checked the board for defects before, and made sure that the copper braid was not getting attached to the PCB board. This meant that the track was most likely very weakly connected. I asked Shivham for help and he told me that this was most likely the reason that the board was acting weird. I'm assuming that, when I started soldering with solder paste, the track came off, connected to one of the other tracks underneath the flux, and created a short underneath the flux, which was uncheckable with the X-ray. So after cleaning up the desoldering, I went back to test one more time to see if I had identified the problem. Turns out, I was wrong and it still had a short somewhere. Due to applying voltage and current to debug the board, the short most likely caused damage to the microcontroller chip and so, even if I did fix the tracks and solder another FFC connector, it wouldn't matter due to the microcontroller chip being potentiall burned. In addition, I did not want to risk trying a connection to anyone's PC to check the microcontroller wasn't burnt due to knowing the short was still there. So I had to resolder on a different board. I quickly resoldered all the big connection components, the USB-A connector, Voltage Regulators and keypad headers, motor connectors, and the barrel jack for power. Then, I soldered on the FFC connector and the USB-UART IC and checked under the microscope again for any bridges. I confirmed there were none and as our spare microcontroller was still being shipped, I stopped soldering and decided to wrap it up.
Figure 3: LCD Display Connection Track Defect
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: April 10thStart Time: 4:00 pm
Duration: 3.5 hour
Now it was time to put on all the discrete components. First, I staretd by filling up the capacitors, resistors, and TVS diodes on the back side. As I had already filled in the USB connector, it was quite difficult to put in the TVS diodes that were placed right next to it. However, with a point tip, I managed to connect the TVS diodes. Next, I got the capacitors and resistors necessary for the USB-UART IC connection. This was to allow for us to connect to the microcontroller directly, and use the program header to integrate the system. For the other components, as the 0805 had enough padding and space, I could use a round tip to drop a solder droplet onto the pad with the component attached.
Second, I did the same process of soldering the 0805 components on the back of the PCB. These were necessary for the reset switch, VREF pin, and BOOT0 pin of the microcontroller.
Figure 1: Back Side of the PCB Soldered
Third, it was time to solder on the decoupling capacitors for the microcontroller on the frontside of the PCB. There were about 20 of them I had to do, including the resistors. I was unable to add in any of the LEDs as they were still being shipped. I used the round tip technique that I have been using and got all of the decoupling capacitors soldered on.
Figure 2: Microcontroller Decoupling Capacitors Soldered onto PCB
Fourth, I soldered the pull-up resistors for the keypads and the resistor and TVS diode for the motor connection. AS these have already been prototyped on the development board, I wanted to make sure these were working on our PCB too. I wanted to solder the TVS diodes onto the keypad as well, however, I could not find enough to finish the process. So, I decided to make sure that our orders were submitted with the right components and would be coming within the next week.
Figure 3: Motor TVS & Resistor Soldered
Figure 4: Pull-up Resistors for Keypad Soldered
Fifth, I started soldering the LED display connection (the FFC connector) onto the board using drag soldering. I rested about 5 minutes so that the tip and soldering iron cooled down, and I could change the round tip to the slanted tip. I used the drag soldering technique I used on the microcontroller chip onto the FFC connector. Then, I waited about a minute or two to let the soldering iron cool down and change the tip to a round tip to solder the resistor connection for the debugging LED. Last but not least, I added in the external clock (Crystal oscillator) to finish up my day. I cleaned the PCB with water, as our flux pen was water soluble, and dried it up with the air gun. I left it resting on top of a breadboard, where the voltage regulator pins were connected to avoid dragging the PCB board and scratching the header pins on the bottom of the PCB. I conducted a continuity test to see that there were no shorts and left the board to dry overnight.
Figure 5: FFC Connector Soldered
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: April 9thStart Time: 3:30 pm
Duration: 5 hour
I came into lab and we finally had our PCB. I first started off by inspecting our board, making sure that there were no defects. I started by looking at each trace and each connector and verified that it looked exactly like our PCB design. After passing the eye verification, I started doing continuity tests to check if there were any wrongly connected pads. I checked each pad and verified that certain pads were connected, while others were fully disconnected. I finished the continuity test for one of the PCBs and decided to get straight to work.
First, I got the barrel jack connector and connected the wires to the appropriate location. It was first very difficult to make the wires stay at the appropriate locations without soldering it and caused me to break one of the connectors. Then, I started soldering the barrel jack using the round tip onto the PCB. I applied flux using a flux pen before inserting the barrel jack, and then added more flux once I inserted the barrel jack into the appropriate holes. I added some solder onto the tip and dropped it onto the pins. I had to use a decent bit of solder for each part due to the shear size of the pins. Next, I started soldering the 6-pin female pin headers to connect the voltage regulators to the board. Once again, I used the round tip and added some solder onto the tip. I dropped it close to the header-PCB connections and made sure there were no big gaps between the headers and the PCB board. After I had connected each part, I cleaned the board out so that the flux would not corrode the board. Down below are photos of the soldering I have accomplished:
Figure 1: Barrel Jack Soldered onto PCB
Figure 2: 6-Pin Female Headers Soldered onto PCB
Now it was time to test if the voltage levels were being measured correctly. I hooked up the other ends of the two wires connected to the barrel jack connector as shown below:
Figure 3: Barrel Jack Connection Photo
Then, I set up the current limiter on the E3631A power supply. As our system required a 12V to allow for the motor to function, I created a 12V 0.1A limit to the power supply. I checked that the voltage regulator outputs were giving us the correct values of 5V and 3.3V each. Once I checked that these all worked, it was time for our manager meeting. Down below is an image to show what the limiter setting looks like on the DC Power Supply.
Figure 4: Barrel Jack Connection Photo
Manager Meeting Summary
- PCB Status:
- Arrived just before lab
- Started soldering parts and prototyping the PCB
- Voltage Regulators all work and pin headers / barrel jack have all been connected correctly
- PCB Soldering Status:
- Barrel Jack: Finished Soldering
- Barrel Jack Conenctor: Connected wires to power supply (did not solder)
- Voltage Regulators: Finished soldering pin headers and connected the voltage regulators
- Jumper: Added solder connection to voltage regulator jumper and left the buck converter one disconnected
- Microcontroller: Will start asap
After the manager meeting, it was clear that I had to connect the microcontroller asap due to most of our PSDR relying on it. I started drag soldering it like how I did with my practice microcontrolle breakout boards. I cleaned it all up, let it dry for a little bit and checked under the microscopes to see if I had created any shorts. I had two pins that looked awfully close together, so I decided to only redo those parts and clear the microcontroller soldering. I had removed some excess solder using copper wires, and cleaned the board up once again and waited for it to dry. Next, I tested if all the voltages were coming out right. Turns out, that there was a problem soldering the microcontroller as the 3.3V output was not outputting. I checked if it was a problem with the regulator, and verified it wasn't a regulator problem. Next, I tested if the headers were shorted by taking the header cap off, and found that there were no shorts. So there was most likely an issue with the microcontroller. I checked to see if there were any possible bridges that I had created by accident and verified with Xiang Li that there were no bridges or shorts on the microcontroller. I couldn't figure out what the problem was but Xiang Li suggested it might have to do with the orientation of the microcontroller. I checked out our dev board and realized that I had misidentified pin 1 of the microcontroller and was the reason that there was a short. Instead of pin 1, I had identified pin 109 as pin 1. This would cause a lot of problems to the microcontroller chip because I had no idea which pin was connected to which now. The images below show the problem that I had caused.
Figure 5: Correct Configuration of STM32H723ZGT6 Chip
Figure 6: Initial Configuration of STM32H723ZGT6 Chip
So I had to desolder the chip and clean the remaining solder using flux and copper wires. After doing so, I got another spare chip and soldered it onto the board. I verified with Xiang Li to check for any bridges once again, and found none. Now, I checked if the voltage regulators were working and were outputting the correct values. I verified that the voltage connectiosn were correct and that the microcontroller was not creating issues so I started soldering other connectors. I first soldered the keypad connectors (8-pin female headers) and USB-A connector as the keypad protoyping was finished by Adhiksit, and the USB connection would be needed for the program header. After these were connected and cleaned, I once again checked that the voltage regulators were working after the USB connectors. It worked and I decided to stop working and decided to add in discrete components next time due to needing concentration and I was starting to lose my concentration. Down below is an image of my progress:
Figure 7: Progress on PCB
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: April 7thStart Time: 2:30 pm
Duration: 4 hour
I came to the lab to check if our PCB had arrived as our JLC account told us that the PCB was shipped. Instead, I saw the other components that we had previously ordered from DigiKey. To start off, the FFC cable connector had arrived and now once our board prototype is assembled, we can work on prototyping the display. I have also checked that the connectors are both capable of connecting to the FFC cable that we had ordered too. In addition, our barrel jack and connector had both arrived, allowing us to start prototyping the buck converter, which will be the most essential part of our PCB. I have checked that the connectors plug into the barrel jack. Moreover, we had our motor connection port arrive as well. Once the board arrives, I can solder the barrel jack, microcontroller, motor connection, buck converter, voltage regulators, and the keypad pin header. This will allow us to check off the motors, keypads, and buck converter functionalities for our PSDR. After those functionalities are checked and working, I will assemble the USB-UART and LCD display connections and we will need to prototype those during the last two weeks. Down below are images of a one to one check for PCB footprint verification to show that the selected components would fit on the board without too big of a problem.
Figure 1: FFC Connection Cable Verification
Figure 2: Barrel Jack Connection Verification
Figure 3: PCB One-to-One Footprint Verification
After checking out all the components, I decided to practice soldering more on to a practice board. I started by practicing soldering under a microscope/camera. In previous soldering practices, I had always done it with my eyes and not with a camera or under a microscope. For soldering smaller components, such as the MP2338, I believe this experience would be necessary. Thus, I wanted to get some prior experience with it by soldering a microcontroller under the camera. I soldered one LQFP100 microcontroller onto a board with a few different components from my soldering station. First difference (other than the camera) was using a rosin flux, instead of a flux pen. Second, was that the soldering station was a different kind, having a adjustable switch to control the temperature, rather than digital one. Third, was that one of solder tips that I was using for drag soldering did not seem to be on the station. I had to choose a round tip instead of a slanted tip that I was using previously. With these changes, I finished soldering and went to clean the breakout board. As I was using a rosin flux, I knew I had to use a isopropyl alcohol to clean up the board and did so. Down below are photos taken during the soldering process and the results.
Figure 4: Microcontroller Under Camera
Figure 5: Soldering with Rosin Flux
Figure 6: Breakout Board Cleaned Up
After, I decided to get in more practice on different boards. I first practiced soldering on the other side of the microcontroller breakout board, so that I would get used to soldering parts on both sides of the board, when there are components living on the other side. I also used a different microcontroller than the LQFP100 to account for the fact that I will need to solder on a LQFP144, which would have smaller pins that would be more fragile to bend if soldered wrong. I believe the practice one also contained 144 pins, however, I am unsure of the name of the microcontroller and was no able to identify clearly. The result is show below:
Figure 7: Second Microcontroller on 1 Board
Last but not least, I started fixing my previous mistakes on previous breakout boards and practice boards. For the microcontrollers, I made sure there were no bridges/shorts and resoldered the parts by applying flux and removing it using copper wires or putting it on the tip of the iron. For the practice board, I made sure that there was sufficient solder on each pad by adding more solder to it. If there was too much solder, I would remove some by heating the solder up and pressing the desoldering braid (copper). Down below are the results:
Figure 8: Practice Board for Headers and SMD Components
Finally, I repeated the process of fixing some of the solder on the voltage regulators from Pololu. I either removed or added in more solder depending on what I saw. I made sure they were working through the continuity test. Down below are the continuity test images to verify that they work.
Figure 9: 5V Regulator Continuity Test 1
Figure 10: 5V Regulator Continuity Test 2
========================= Week 12 =========================
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: April 3rdStart Time: 1:00 pm
Duration: 3 hour
I started watching videos on how to solder using a hot plate. This video from John Aldred gave me a good foundation of how to check LED polarity, and how to deal with mistakes such as leaving the board on the hotplate for too long. In addition, it was informative in allowing me to understand how to use the solder paste necessary for the hot plate. I wanted to dive deeper into understanding soldering iron tips better so I also had a look at that. The following video from FlightClub allowed me to seek better attention to the soldering iron tips and when to use a certain type of tip. However, one problem with this video was that it was very focused on wires and battery cables and wasn't really focused on components that live on the board. I will need to dig deeper to video tutorials to get better soldering tips so that I can execute the process with minimal errors. As our team is behind schedule, this will be very crucial.
While searching through online sources for soldering tips and tricks, I came across this video from Branchus Creations. The video was informative all around for surface mount soldering and surface mount devices (SMD). I will try some of the following tricks that are listed below, the next time I am in lab. Our PCB is set to arrive on Apr 7th, Monday, so I will practice early during the day on practice boards, and try to do our board and get help during the office hours.
- Temperature: Start at around 660F and increment by 10F until solder melts at desired rate
- Soldering: Check for Oxidation & add sufficient amounts of flux & Check for Dirty surfaces
- Placing: Use pinsets for stability of holding components in place
- Technique: Hold component on board (check for polarity) and put solder from iron and transfer to component
- Magnifying: Use magnifying glasses as they help with visibility of the position
- Hot air gun: Helps with melting the solder again to liquid form to place the discrete component
This is another video that I watched about repairing broken traces by Branchus Creations. Finally this is another video that I watched about repairing broken pads by Branchus Creations. I do realize this information may not be necessary and may be hard to execute with little to no soldering experience, however, I believe just knowing some of this information will provide some beneficiaries into recognizing these problems, and even attempting to solve it in the worst case scenario.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: April 2ndStart Time: 1:00 pm
Duration: 5 hour
I came into the lab a little early to practice and get more experience in soldering parts. First, I started by soldering another microcontroller onto the practice board. I wanted to shorten the time taken to solder it, which will eventually allow me to save some time. I used the drag soldering technique again and timed myself from the moment the soldering station had heated up the iron to the desired temperature. It took around 4 minutes to solder the microcontroller on, and I made sure to clean it, as well as check for any shorts or bridges.
Figure 1: Timed Drag Soldering Microcontroller onto Board
Next, I found another practice board laying around the desoldering area and took a look at it. It seemed that someone had either not cleaned it and corrosion allowed the track to mold together, or someone had over heated it and merged the tracks together. I got a tweezer to try and separate the tracks and successfully did so. I am not too sure if these are going to work because the track is off the board. I will connect another microcontroller onto the board and perform a continuity test with the Agilent 34401A digital multimeter.
Figure 2: Breakout Board with Track Deficiency
Now, it is time for the manager meeting. As I have been continuously working, I will focus on writing about the soldering now and include the manager meeting & team meeting notes at the end. After the team & manager meetings, I went back to work and started focusing on soldering the discrete components. Before using the hot plate, I wanted to try hand soldering 0805 and 1206 SMD discrete components, as I have seen tutorials of how to do it. I found two PCB boards from previous semesters that I could try to practice soldering the discrete components on. I have seen this method where they drop a single drop of solder onto the board, and then soldered the 0805 part by placing a very small amount on the iron tip. Then, they would drop another drop of solder onto the other pad and solder it on. This technique was seen in the following video by ItsInOurKernel. Below is the initial results of trying the technique out.
Figure 3: Practice PCB Board First Discrete Components
As it can be seen, it is very out of shape, as I tried to constantly manuever the initial connection. I put int some more practice and these were the results.
Figure 4: Practice PCB Board Discrete Components
Figure 5: All Practice Board Soldering
I also started working on soldering the breakout board together with the headers Pololu provided us with. As we had two 12-5V regulator and 5-3.3V regulator, I chose to solder one of each and check that they worked. I referenced another video by wareexplained to understand the technique of soldering the pin headers.
Figure 6: Voltage Regulator Soldering
Manager Meeting
- PCB Status Check
- Order & Production Issue: Reorder ASAP
- Soldering Status Check
- Microncontroller : Good
- Discrete Components : Needs work (Hotplate)
- Connectors : Decent (Could be better)
- IC : Needs work
- Packaging Status Check
- PCB Packaging : BIDC on Friday (Alan)
- Motor Packaging : 3D Printing / Drill a hole into the drumstick
- Stands : Contact Purdue Band for spare stands & Create clamp for motors
========================= Week 11 =========================
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: March 28thStart Time: 7:30 pm
Duration: 1 hour
We had gotten our PCB board approved and ordered so I needed to get some practice in. In addition, I felt like we were a little behind schedule, so I wanted to reduce mistakes and get as much information as possible. So I decided to watch a lot of videos before I started practicing on previous team's soldering boards and the practice boards given out. These are some of the videos I ended up watching.
DENKI OTAKU
HackMakeMod
Electronoobs
Along with these videos, I will need to visit the lab during my freetime and get some soldering practice in. In addition, I have to go to Bechtel Innovation and Design Center (BIDC) to get the consultation and quizzes in for our hardware design, which will involve woodwork for our packaging. Last but not least, I have to contact Heagle Hall for some spare stands we could use, and get in some 3D print work for our drumstick holder. Some design changes will be needed to not fully modify the music stands, while also allowing enough space to allow for the drum machine to proplery function.
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: March 27thStart Time: 5:30 pm
Duration: 2 hour
While our PCB design was being processed and getting ready to be approved to be ordered, I decided to work on soldering the microcontroller and attended the soldering workshop. When I first got there, I started watching a video of soldering tutorials and techniques to get the hang of the vocabulary, the techniques, and the equipment. I was watching this video from wermy when our workshop started and Xiang Li was teaching us a technique for drag soldering. He demonstrated us how to drag solder a microcontroller chip (LQFP100) and the potential problems that could occur from it. In addition, he told us how to properly clean up after soldering, dry our PCB board, and also taught us how to desolder a microcontroller chip.
With these new techniques, I practiced right away. I got myself two practice boards, along with two practice chips and started working on soldering by myself. At first, I realized the soldering iron machine was different from the one that Xiang Li was using, so I had to ask how to use it. The preset temperature was 750 degrees Fahrenheit but when I started soldering, it seemed to burn everything a little too quick. So I decreased the temperature to 650 degrees and it was working just fine. I soldered my first board using the following techniques explained below:
First connection
- Choose the right tip for the soldering iron and preheat it
- Apply flux onto the board
- Heat up the solder and drop a little onto the board
- Align the microcontroller chip onto the traces
- Apply more flux onto the board
- Start ironing the microcontroller with the dropped solder and spread it out evenly
- Make sure there are no bridges and clean the soldering iron
- Apply flux onto the side of the microcontroller connection
- Heat up the solder and drop a little onto the microcontroller chip connection
- Spread the solder out
- Make sure there are no bridges and clean the soldering iron
- For hand soldering, rinse it with water. For heating plates, use isopropyl alcohol first.
- Clean the extra liquid out by blowing it with an airgun
- Let the board rest for a day or two
Down below are some images of my first and second soldering boards:
Figure 1: First Drag Soldering Board
Figure 2: Second Drag Soldering Board (Sideview)
Figure 3: Second Drag Soldering Experience (Frontview)
Down below is how I desoldered by first board due to too many bridges, and a picture of the desoldered board:
Desoldering- Lock the PCB to the desoldering station
- Turn on the desoldering machine
- Place the desoldering machine on top of the microcontroller and slightly move it around (Do not move it too much or it will damage the pins)
- Once the microcontroller is off, clean the PCB board and let it rest for a while
Figure 4: Second Drag Soldering Board (Desoldered)
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: March 27thStart Time: 12:00 pm
Duration: 2.5 hour
I got to the lab to finish off some PCB design feedback we had received from Dr. Walter, and incorporate the newest changes while verifying if everything was going to fit. First, I started off by making changes into the PCB design based off of the feedback. Down below is the feedback that we received:
Figure 1: Feedback
I first remembered to change the TVS diode footprint and move the components accordingly to the footprint changes. Then, I instantly created copper fills on the top and bottom layers, copying and pasting the ground layer within the In2.Cu layer. As the design was already a 4 layer design, and I did not want to create big conflicts with voltage planes, I decided to keep the 4 layer design. I renamed the fabrication text to remove all confusions. Then, I thickened the trace from the 5V layers, using the trace width calculator from CircuitBread, mentioned in previous weeks before. Next, I installed jumpers so that they could be soldered or desoldered from the board, so that we can create a single connection to either of the 5V sources. I made changes to the USB-UART design by removing a power source connection to the VBUS and moved the crystal oscillator closer to the microcontroller. Last but not least, I create an unfilled zone for the clock as recommended.
After incorporating all the feedback, it was now time to incorporate the minor changes. First, I took a look at all the connections that we had to make and did a 1 to 1 comparison with the PCB design. The MP2338, USB-A connector, FT230XS all seemed to have no issues. The voltage regulator module was a 5 pin header and so I knew I had to change my design to allow for the other connections that we wouldn't be using. In addition, the LCD display was using a FFC cable to connect and the connecting cable was much different from what I had designed. This allowed me to look up the FFC connectors and figure out which one was attached to our LCD display, and change our PCB design accordingly. Shivham, our GTA, showed me a FFC connector that I could reference (Figure 2), and Alan previously also found the connector from our display, which I was able to match accordingly. The footprint is shown below (Figure 3) and has been 1:1 matched with our display connector and spare FFC connectors found within the lab.
Figure 2: Picture of FFC Cable
Figure 3: Footprint of FFC Connector for LCD Display
Then, I saw the regulator module connector pins and figured out the spacing and hole sizes required for the pin headers. This led me to change the pin socket header size from 2.00 mm to 2.54 mm. In addition, I changed the socket header pin number from 3 (which were the only necesary ones) to 6, as these could be commonly found in the lab and the other connections could just be deemed a no connection. Last but not least, I made sure the spare pins were incorporated correctly in the case they fail to work on the microcontroller's side.
With these changes, I went to Dr. Walter's office and made sure to get these verified. I uploaded them onto the website as well and went through each change and feedback incorporation. Now, all I needed was a final approval to order the PCB and the PCB designing stage would be over.
Down below shows a picture of the various connectors, such as the FFC connector, USB-A connector, and socket header connectors. These have all been 1:1 verified on paper and have been added to a chem cup to use for soldering practices and soldering our PCB. These were, of course, verified before submitting the final PCB design to our webpage.
Figure 4: Picture of Various Connector for our PCB Design
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: March 26thStart Time: 3:30 pm
Duration: 2.5 hour
Manager Meeting Feedback
- Show Stoppers
- PDR_ON : Drive it high as required by the STM32 manual
- USB Connector : VBus should not be connected to anything as no power is driven from it. Change the connection
- Minor Design Changes
- Decoupling Capacitors : Doubly capped pins should connect to vias on the further decap
- External Clock : Should be closer to the microcontroller
- General : Thicker traces for 5V and 12V connections
I was going to incorporate all of these feedback, however, I forgot to bring my charger and my battery was running low. I was able to finish the decoupling capacitor issue, and the PDR_ON issue, when my computer was on 10% battery. So I decided to take pictures of the footprints of the discrete components we had for our design, and match it with whatever was in the cabinet. In addition, our voltage regulator module, LCD display, buck converter, USB-UART IC had all arrived so I could do some more footprint verification and change the connector pin headers, if necessary.
Figure 1: Design Footprints #1
Figure 2: Design Footprints #2
Figure 3: Design Footprints #3
I went to look through all the 0805 capacitors and resistors by value to check which ones were available and which ones were not. I gathered some of the available ones into chem cups and distinguished each and every piece accordingly.
Figure 4: Picture of Discrete Components
In addition, I took a look at TVS diodes and found out that these required some minor changes as the ones available in the labs were different from my initial design. I will have to remember to incorporate this change. The image of the TVS diode footprint is shown below:
Figure 5: TVS Diode Footprint
========================= Week 10 =========================
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: March 21stStart Time: 1:30 pm
Duration: 1.5 hour
I was waiting for Dr.Walter to give us our feedback for our PCB design and decided to change some details to our PCB design. First off, I was looking through the possible candidates for TVS diodes, switch buttons, crystal oscillators, etc. in the case that we could not acquire the pieces. I was looking through the footprints to verify the sizes and if they would be solderable to the PCB board we would get. As all other feedback was incorporated and verified by our manager, Liangcheng, I did not want to change anything too drastically. I looked through the KiCAD footprint editors to look at the various types of connectors we would be able to use.
For the TVS diodes, the initial TVS diodes I had in mind were the Nexperia DSN series. However, I saw the difficulty of soldering it and thought that it might not be common within our lab too. Thus, I kept the possibilities open with footprints such as the SMD 0805 standard, and other possible company products, such as, the Onsemi 751EP or the SOD 323 Handsoldering. Although, the finalization would only happen once I revisit the lab and see all the possible options.
Figure 1: Footprint Options of TVS Diodes
For the switch buttons, the initial design was selected as the Panasonic EVQPUL EVQPUC. I opened up to changing the design for this too, as visiting the lab and seeing what we have would probably be more beneficial, in the case that we accidentally run out of push buttons or there are many defects. So I looked through other possible candidates, such as the SPST and SPDT push buttons. I will have to look through the inventory and figure out which ones would be better for our design.
Figure 2: Footprint Options of Switch Buttons #1
Figure 3: Footprint Options of Switch Buttons #2
========================== Week 9 ==========================
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: March 14thStart Time: 12:30 pm
Duration: 5 hour
I started finishing the PCB design based on the feedback from the Manager meeting and team meeting. First, I started by changing the testpoints. I removed the the UART signal testpoints and created testing vias. Then, for the SPI signals, I created the tracks to go through the test points. Second, I rearranged all the decoupling capacitors to account for the manager meeting fedback. This applied to all other ICs so I made sure to rearrange those as well. Then, I changed the vias & traces for the overall design, making sure the tracks were thick enough. After all the minor changes were incorporated into the design, I updated my team about the status of the PCB design, and then emailed the course staff to get feedback about the design. Down below are some of the TA feedbacks we have received for our design:
Figure 1: TA Feedback #1
Figure 2: TA Feedback #2
Along with these feedbacks, we received in-person feedback from our TA, Liangcheng, and incorporated all the schematics & PCB design feedback we received. This is the final schematic & PCB design we have after incorporating all TA feedback.
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: March 12thStart Time: 3:30 pm
Duration: 3 hour
Manager Meeting Feedback
- Testpoints
- Do not include for UART signals, create testing vias instead
- Make testpoints for SPI go straight through, do not create a separate connection
- Decoupling Capacitors
- Create direct connection from microcontroller to capacitors, instead of connecting to vias first
- Remove decoupling capacitors from VREF+
- External Clock
- Create a connection to an external clock, better safe than sorry
- Check what frequency is needed for the project
- Vias & Traces & Overall Design
- Make sure they are 0.4mm or bigger holes for flywiring
- Make sure that trace widths are properly calculated
- Make sure there are extra SPI, GPIO, UART pins that could be used, in case it fails
- Make sure the buck converter implementation reflects the MP2338GTL datasheet
- Connectors
- Check if USB connector is connected properly
- Check if Voltage regulator module requires more connections
- Verify if level shifter implementation is correct
Team Meeting Feedback
- Terminal Block: Ordering problem, replace with different part
- Motor Connection: USART does not seem to work, connect to different pins that use UART
- Footprint verification: Get a printed version by Friday & verify the sizes match
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: March 10thStart Time: 7:30 pm
Duration: 2 hour
I started reworking the PCB design this time. I started off with the minor changes once again.
First, the width of the ground trace on the 12V to 5V LDO module was thickened to match the input trace.
Figure 1: Track Width Corrected
Second, the VCC pins on the microcontroller were connected directly to the decoupling capacitors and then connected them to vias.
Figure 2: Decoupling Capacitor Connections Corrected
Third, the silkscreen was updated and is now visible on the website.
Figure 3: Team Name Silkscreen Corrected
Fourth, I added the additional ground layer over the UART interface for more isolation.
Figure 4: Additional Ground Layer Included
Fifth, the via hole size was incremented from 0.3 to 0.4 and the via diameter was incremented from 0.6 to 0.8.
Figure 5: Via Sizes Incremented
Sixth, I implemented all the minor changes made to the schematics onto the PCB (changes in LED, resistors, testpoints).
Figure 6: Testpoints Included
Finally, the PCB design for the MP2338 buck converter was implemented to replace the older and outdated MP2303.
Figure 7: MP2338 Buck Converter Design
This design was implemented based on the schematic connections recommended in the datasheet, which was previously constructed within the KICAD Schematics. Then, I referenced the datasheet for the layering and design of the buck converter. As the example only has 2 layers and does not have a big ground plane & power plane, and additionally does not include every discrete component into the design, there were some minor adjustments I made. For instance, the input resistors (R3 & R4 in my PCB design & Figure 9 of the datasheet) are nowhere to be mentioned within the PCB example design. So I had to route the tracks in a way that I thought was most efficient. For the inductor, the exact recommended component is not available on KICAD so I will make a side note about this to my team. I found another component on KICAD with the same dimensions and decided to use that as the footprint instead. I will have to lay it out and compare it side by side to see if it will match or just have to use the footprint inductor with the same inductance value.
Sidenote: MPL-AL6060-6R8 = Recommended, Coilcraft XAL6030-XXX = Chosen Footprint
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: March 10thStart Time: 4:30 pm
Duration: 1 hour
From the midterm design review feedback, these were the list of things that I needed to work on.
- Schematics Related
- Diode directions are incorrect
- Mp2303 replacement with MP2338
- Boot0 pin should have a pull down resistor
- Reset pin should have a pull up resistor
- Reserve more pins for SPI, UART, and GPIO pins
- Connect an external timer
- PCB Design Related
- Width of ground trace should match trace width of 12V
- VCC pins should connect directly to decaps, rather than vias
- Upload Silkscreen of team number, project name, and team members
- Add in another layer of ground planes for extra isolation
- Via sizes can be incremented by 0.1 to allow for more flexibility
- Mechanical Design Related
- Keypad sticker or cover buttons for better interpretation of keypad
First I switched the LED directions to be correct.
Figure 1: LED Connections Corrected
Second, I connected a pull up resistor next to the Reset pin.
Figure 2: Reset Pin Corrected
Third, I connected a pull down resistor for the Boot0 pin.
Figure 3: Boot0 Pin Corrected
Fourth, I created an extra heartbeat LED connection to a GPIO pin for debugging the microcontroller.
Figure 4: Extra Heartbeat LED on Microcontroller
Fifth, I added in testpoints to the UART pins on the microcontroller after reviewing other teams' designs during the peer review sessions.
Figure 5: UART Pin Testpoints
Sixth, I added testpoints to the SPI pins on the LCD display, and also corrected the debugging LED direction.
Figure 6: Extra Heartbeat LED on Microcontroller
Now it was time to replace the MP2303 with the MP2338. I referenced the MP2338 datasheet to figure out the connections. The recommended schematic can be seen below.
Figure 7: MP2338 Schematics on Datasheet
There were some minor differences, such as the different capacitor & resistor values, along with additional resistors and capacitors, and the removal of a Schottky diode. These changes can be reflected in the figure below:
Figure 8: MP2338 Schematics Implemented
Now, I have to implement these changes to the PCB design, along with the tasks that I also have to fix.
========================== Week 8 ==========================
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: March 3rdStart Time: 5:30 pm
Duration: 10 hour
First off, to continue from where I left off, I started by creating the connections necessary for the power supply. The power supply was going to need the thickest traces due to the high current requried for the motors. Using the calculator from CircuitBread, I was able to calculate the trace width necessary to supply the required current to the motors would be approximtely 2.7mm thick in the internal layers, or 1.04mm in the external layer. As having a 2.7mm thick trace doesn't look ideal, I decided to create the trace on the external layer to make it 1.04 mm. This also meant that I would not want to create a long track so I brought in the motor connection a lot closer to the 12V plane. Next, I connected the serial pin from the motor to a resistor and TVS diode that would create a connection link to the level shifter. This was a recommended connection from the Lewansoul Bus Servo Manual, which can be referenced within the reference pages. I also connected the 12V pin from the motor to a TVS diode to resolve EMD issues that could occur as users will need to create connections to motors manually. As the supply current is not big for controlling the UART-serial connection, the trace width of this connection is left to be the default thickness. Last but not least, it was connected to the ground plane through a trace and a via, as the ground plane covered the entire board.
Figure 1: Motor Connections on PCB
Second, I created necessary connections for the power supply. All it really required was a direct connection to the 12V plane, where the power supply from the external source would connect to the plane and supply 12 V, and the ground plane. Next, I connected the Heartbeat LED to the 12V and paired it with a resistor value of 1K ohms, which was recommended from multiple sources online. This completed the connections required for the power supply on the PCB board.
Figure 2: 12V 16.6A Power Supply Connections on PCB
Third, I created connections necessary for the LDO module and Buck converter.
I realized that the LM1117 was a LDO IC and not a pre-built module, so I went on to Pololu to look for the 12V to 5V module and the 5V to 3.3V module.
I looked through the different series that they had and saw that the D24V22 series was the cheapest, and selected this module to replace the LDO IC connections that were on board.
I only needed to delete the LM1117 footprints and replace it with a 3-pin header that would connect to the module externally.
Now I could start creating the connections.
For the MP2303 buck converter, I followed the example connections given on the datasheet.
As I had a ground plane and voltage plane, I didn't need to create connections to intertwine the different vias for Vout(5V), Vin (12V), and GND.
This simplified a lot of the design and I could design it as show by figure 3.
As for the LDO, it just needs connections to Vout, Vin, and GND so those are the connections I made.
I added a heartbeat LED at the LDO module, as it was going to be the "base" functionality of our project, to check if the 5V was being supplied correctly.
Side notes:
The 5V plane was also reconstructed and moved to be able to connect to both the LDO module and the buck converter interface without clashing with the 12V plane.
The LDO module to convert the 5V into 3.3V was also designed similarly to the 12V to 5V LDO module connections.
Figure 3: 12V to 5V Buck Converter Connections on PCB
Figure 4: 12V to 5V LDO Module Connections on PCB
Fourth, I started creating connections from the motor serial pin to the voltage level shifter. As the connection for the 5V to 3.3V LDO module connection was established, I could create a 3.3V plane to cover the microcontroller and the level shifter. After the plane was reconfigured to fit the current location of components, I connected the discrete components as recommended by the TVS0104 datasheet. Then, I referenced the Lewansoul Bus Servo Manual for the connection of the serial pin to communicate via UART. The top left connection is the resistor and TVS diode connection from the motor.
Figure 5: 12V to 5V LDO Module Connections on PCB
Fifth, I edited some connections and orientation for the keypad, USB-UART, and connected direct connections for the LCD display. For the keypad, I spreadout the resistors a little more so I could create ground via connections for the TVS diodes connected to all the pins. In addition, I created two debugging LED connections, one for row 1 and one for column 4 so that we could understand if the column and row was working. For the USB-UART IC, I reduced the amount of vias underneath the USB connector and close to the DP, DM connections due to high signals. The addition of ground planes also eliminated the ground connections I had to make all over the IC. Other than that, there were no big changes made. For the Display connections, I just pinned out all of the SPI connections to the microcontroller. For the voltage, I connected it to the 3.3V LDO module through the power plane as it wasn't going to draw much current. One problem I faced is that the CS pin would need a crossover of traces so I created a via on the bottom layer and connected it underneath. Last but not least, I created connections for debugging LEDs for both the USB-UART and LCD display. For the LCD Display, it was connected to an empty GPIO pin, and for the USB-UART IC, the FT230XS had configurable bus pins to test for TX and RX LED, so I referenced the datasheet and created the connections necessary.
Figure 6: USB - UART IC Connections on PCB
Figure 7: LCD Display Connections on PCB
Finally, I created all the necessary connections for the decoupling capacitors on the microcontroller. I wanted to reduce the distance of all the traces and tried to find the optimal distance through the eye-test. After, I created debugging the LED connection to the extra GPIO pin I had set up. Last but not least, I connected an external switch for the resetting of the STM32. This summed up all the individual connections I had on the board. I ran both the ERC and DRC to check that my schematics and checked for errors or warnings. For the DRC, everything passed as there were no major issues with the connections. For the ERC, however, the level shifter logic indicates an error and says that two outputs are connected to the same pin so I will have to address this issue. There is another error on only one LDO connection that says that an input power pin is not driven by any output power pin. As this will only be a connection to a working module, I will assume this issue will not be a big problem to connect both grounds. For the DRC, I moved the USB & Motor connection ports to the edge where the silkscreen mask extended out of the circuit board, which caused all the warnings.
Figure 8: Microcontroller Connections on PCB
Figure 9: ERC of Schematics
Figure 10: DRC of PCB Design
After I had all the connections done, I wanted to minimize the distance as my initial design was nearly a foot by foot design. We do not have size constraints, however, this would mean a lot of empty space where nothing is being done. So I wanted to make the design meet the minimum requirements for distance with high speed signals, and not have too much unused space to also make the packaging easier. In addition, I wanted to make the design more comprehendable and decided to hide all the discrete component values, and I also moved the reference values so it would not be overlapped by anything else. Last but not least, I worked on the midterm design review presentation for the schematics and pcb layout part.
========================== Week 7 ==========================
------------------------------------------------------------------------------- Entry 7 -------------------------------------------------------------------------------
Date: March 2ndStart Time: 3:30 pm
Duration: 1.5 hour
I started reworking the PCB design incorporating all teh changes made into the schematics. Instead of having to recreate a netlist, I just used the updated PCB from schematics in KICAD to import in all the new symbols. After, I started to rearrange the structure of the PCB. I wanted the motor to be on the top side of the PCB, where we will have our motor connection. As the motor is the only component that requries a 12V, the top side of the PCB will be designated for the 12V plane. In addition, this meant the power supply connector, the terminal block, would be located on the top left side of the PCB board, Next, I wanted to create a 5V plane and a 3.3V plane where I would have connections for the 5V and 3.3V. The motor UART signal is the only component that needs the 5V, which made me have to locate the buck converter and LDO closer to the motor and power supply source. However, as the planes needed to be separated enough to not interfere, I made sure that the 5V plane was beneath the 12V plane on a vertical scale. In addition, the TXS0104 was located closer to the 5V plane and in between the 5V plane and the microcontroller. The 3.3V was required for everything else, so I created a 3.3V plane underneath the microcontroller, which was located around the right side. Last but not least, I made sure the SPI display connection and UART USB connection were distant from each other and the UART communication for the motor had enough room to operate between the planes. Finally, I created a ground plane to cover the entire board as it was recommended to dissipate heat and reduce impedance of signals. With the layout of the PCB somewhat organized, I decided to get some rest before I started organzing everything else.
------------------------------------------------------------------------------- Entry 6 -------------------------------------------------------------------------------
Date: March 1stStart Time: 11:30 pm
Duration: 1.5 hour
I resumed the rearrangement of the schematics. First, I separated each IC into their own connections on the schematics sheet. This meant the FT230XS, LM1117, MP2303A, TXS0104, and STM32H723ZG will all be disconnected. Then, I disconnected all the wire connections for the headers (LCD Display, Motor, Keypad, and Jack Barrel). Next, I started grouping the other connections, such as the decoupling capacitors, USB connector, and heartbeat LEDs. After I had laid these groups out all over the board, I started reannotating and creating separations to distinguish each part. I started off by focusing on the power supply. This essentially meant that the Jack barrel, MP2303ADN Buck Converter, and LM1117 LDO regulator would be prioritized. Next, I went into the high signal (UART) parts, the USB IC (FT230XS) and the motor (HTS-30HS). After those parts were finished, I focused on the other interfaces such as the level shifter (TXS0104), LCD Display (EVE3-50A-BLM-TPN-F32), and the 4x4 matrix keypad. Last but not least, I finished off by setting the microcontroller and the decoupling capacitors. The reorganization process referenced a lot of the past midterm design reviews uploaded on Brightspace, and a Youtube video from Pcb Cupid. With all the annotation changes and reorganization, my final schematics looks like Figure 1. As there are too many parts to show, I have only attached a close up view of the external AC/DC adapter connection and Buck converter interface, shown in Figure 2 and 3.
Figure 1: Complete Schematics of the ADM
Figure 2: Buck Converter Close Up
Figure 3: External AC/DC Adapter Close Up
Things to work on:
------------------------------------------------------------------------------- Entry 5 -------------------------------------------------------------------------------
Date: February 27thStart Time: 12:30 pm
Duration: 2 hour
I started reworking the design for the UART-motor schematic as this was the one part that we were still struggling to complete. We realized that the serial signal from the motor can be interpreted as UART signals by simply creating two separate connections into the serial pin. This meant that the 74HC04 and 74HC126 could be replaced by a voltage level shifter, which would allow the data signals to communicate with two devices opearting at different voltages. So I scraped off the buffer and inverter and replaced it with a TXS0104 voltage level shifter to interface the motor-UART connection.
Figure 1: Motor UART connection schematic
After, I wanted to resolve all the issues that were addressed within the team & manager meeting. I started by changing the power supply voltage levels. The 12V to 3.3V buck converter interface was changed to a 12V to 5V and a LDO module from a 5V to 3.3V was added. Due to the value changes, the MP2303A interface discrete components values changed. Most notably, the inductor, resistor values, and output capacitor values changed and the datasheet was referenced to figure out those values. Additionally, we agreed upon using the LM1117 LDO regulator, so it was added and connected on the schematics. This also allowed us to remove all the other buck converter connections we had.
Figure 2: Power Supply Schematic Changes
After, I added heartbeat LEDs everywhere to allow for a smoother debugging process. On the motor connection, a heartbeat LED was added to the RX and TX pin to indicate both communications were working. For the keypad connection, I added a heartbeat LED for one column and one row to indicate that the column or row was working. I felt that adding in 8 different LEDs would be an overkill and having only one LED would not really allow us to determine whether the row was working or the column was working. For the voltage levels, I added the LEDs to the converters to indicate if the LEDs were working right out of the conversion, as we would want to know if the conversion is working rather than if it works further down the stretch (this can be done by implementing heartbeat LEDs to other IC). For the microcontroller and monitor, I used one of the empty GPIO pins to create a connection to determine if the function was working or not. For the USB connection, I referenced the FT230XS datasheet, which was recommended by Dr. Walter during office hours, and created the LED connection for the TXD and RXD. Last but not least, as my schematic looked very hectic, I started rearranging some of the schematics by separating the connection and creating labels. Down below, the changes in the schematics can be seen:
Figure 3: LCD Display with Heartbeat LED & Rearranging
Figure 4: Keypad with Heartbeat LEDs & Rearranging
Things to Work on:
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: February 26thStart Time: 3:30 pm
Duration: 2 hour
During our team meeting, we discussed about finalizing the schematics and prototyping by the end of the week. Through the manager meeting, we got a better understanding of what to put on the schematics. These are some of the feedback that was received during both meetings.
- More heatbeat LEDs to allow for easier debugging
- Motor Connection: Connect to serial pin and check for RX/TX ability
- Keypad Connection: Connect to one of the columns or rows
- Microcontroller Connection: Connect to one empty GPIO
- Voltage Levels: Conenct to closest source (12V, 5V, 3.3V)
- Monitor Connection: Connect to LED pin for prototype ==> Connect to GPIO for actual
- USB Connection: Verify connection and make sure it works
- Add in LDO modules
- Buck Converter: Stretch PSDR, basic functionality will be from LDO module
- 5V: Necessary for interpreting UART data for Motor
- Changes to value: Make the buck converter a 12V - 5V converter to reduce heat dissipation, and make the LDO from 5V to 3.3V as the 3.3V will not draw in much current.
- Verify footprints and PCB design & make sure it has TVS diodes and heat dissipation problems resolved
- Questions to answer:
- Why would 4 layers be more beneficial?
- How will heating process be handled with high current?
- Where will the signals go? How will the layout handle the noise?
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: February 25thStart Time: 11:00 pm
Duration: 3 hour
After the lecture today, I got a clearer idea on how to place the decoupling capacitor and work with the wiring. I first started off by wiring the keypads first as they were fairly simple. Next, I took the resistors, and paired them to the keypad sockets. After, I placed TVS diodes next to the resistors due to the high current usage by the whole PCB board. Then, I connected the diodes to the resistors and the ground vias. Last but not least, I connected the microcontroller connections to the TVS diodes to complete the keypad layout. This can be seen with the following layout:
Figure 1: Keypad connection layout
The second thing I did was create the USB-UART connection due to the compact space I would need to work with. First, I placed the decaps with the TVS diodes next to the USB connector and flipped the sides to place them as closely as possible. This allowed me to create fairly straightforward connections from the decaps and TVS diodes to the connector pins. Second, I placed the resistors closest to the FT234XD and connected them to the IC and the USB connector. This also allowed me to create a direct connection from the resistors to the decaps and TVS diodes. Third, I created the connections from the IC to the microcontroller to stretch out so that I could know how to maneuver around the remaining discrete components. I realized that multiple vias may be needed for the connections due to the structure of the FT234XD and the connections I have on the schematics. I saw that the LED and the resistor would most likely need to cross paths with the IC-MCU connections, so I flipped the resistor, and kept the LED on the top. The LED would be useful for debugging so keeping it behind would defeat the purpose. Instead, I created a via connection to the other ports by making the connections happen on the other side of the board. After that connection was established, I started getting the hang of flipping components, and creating connections through vias by utilizing the other side of the board. Repetition of these tasks led to me creating the following connection layout:
Figure 2: UART-IC connection layout
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: February 24thStart Time: 10:30 pm
Duration: 1 hour
I started working on the schematic reworking. Alan had provided me a DC/DC adapter from a 12V to a 5V. The specific model was a FISM-1769205241 , which was intended to work as a 12V to 5V adapter only. Paired to this, was a common mode line filter with the specific model being the 744226S. I had to do some researching to figure out if the models he had provided were the right fit and would have the right footprints available on KICAD. After looking through both datasheets, I started looking through the KICAD footprint editor. For the DC-DC adapter, it already had a verified connection and I checked the dimensions and found out it was correct. On the other hand, the filter did not have any connections, so I had to look through the footprint notes to figure out something similar. Turns out, that the BNX025 has the same dimensions and footprint as the 744226S. So I applied the footprints, verified it before compiling it into a netlist, and then exported it into the same file that I had used previously. Then, I went back into the PCB editor, imported it and loaded it onto the PCB design and got all of the footprints that I needed. I grouped up the DC/DC adapter in between the motor connector and the 12V supply voltage, and then, I reorganized all the other groupings to account for the newly necessary IC. The image below shows the grouping of the DC/DC and the entire PCB layout along with the very rough 3D visualization.
Figure 1: DC/DC Adapter Component Grouping
Figure 2: PCB Layout
Figure 3: PCB 3D Visualization
The image below illustrates the changes made to the schematic:
Figure 4: Updated Motor Connection Schematic
Things to work on:
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: February 24thStart Time: 8:00 pm
Duration: 2 hour
I started working on the PCB layout now that I had most of the schematics done. I wanted to get at least the major components connected, such as the USB-UART IC and the motor connections. I started by exporting the net list for the schematics and saving it into a net file within the project. Then I opened up the PCB editor on KICAD and imported the netlist onto the PCB editor. This loaded up all the components onto the editor and I could work through sorting out each and every one.
The very first thing I did was move the microcontroller chip onto the center of the board. Second, I wanted to move all the decoupling capacitors, pull up resistors, TVS diodes, etc. and group them up to their IC conenctions. Next, I wanted to move the external connections onto the edge of the PCB to account for the packaging. This meant the motor connection, USB connection were going to be on the edge, while the display and keypad connection would be more free to move around. Now that these locations were set, I wanted to see where I could attach the decoupling capacitors onto the board, and how I would manage all the routing connections. I referenced the lecture slides from last week and saw that the decoupling capacitors would be on the other side of the board so I decided to not dig too deep for now. Now I wanted to make sure I had the schematics done correctly to consider for all the routing and that I could maneuver around the connections. To do this, I started by drawing traces from the microcontroller to see if it would collide with any trace from another object. After these have been done, I got an update from my team saying that they made some changes to the schematics because the motor control required a 5V from a protocol they referenced. Due to this, my schematics needed some update and I had to verify the footprints through datasheets, so I stopped my work on the PCB design. These are what I have for now:
Figure 1: Motor Component Grouping
Figure 2: Microcontroller Connections
Figure 3: Keypad Connections
Figure 4: Power Supply Component Grouping
Figure 5: USB Component Grouping
========================== Week 6 ==========================
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: February 19thStart Time: 9:00 pm
Duration: 4 hour
I took a rest after lab and got back to researching the servo connections and the power connection. For the power connection, as it only requires 2 pins to connect the V+ and V- from the NISICO AC/DC adapter, I create a 2 pin connector and needed to link it with a power connector. I looked through the footprint editor secion and came across Phoenix Contact's connetion headers. This made me look through the Phoenix Contact website to look for PCB connectors or terminal blocks. While filtering through the website, I found two possible candidates for the job: PC4/2-ST-7,62 connector and the SPT1,5/2-H-3,5 terminal block. After doing some research online, I came across the HitalTech website and found that a terminal block would be a better use as it would allow us to disconnect the external wires with more ease. Thus, I decided to view the SPT1,5/2-H-3 terminal block datasheet to understand how it works and assign the footprint to the 2 pin connector.
Figure 1: Image of Terminal Block
Next, I started looking through the servo connection and stumbled upon a GitHub page by Austin Bowen talking about the HiWonder servo motors. The page describes that the servo motors from HiWonder are half duplex while most serial interfaces are full duplex. In the image in the README document in the same page, there is a photo describing how the bus servo motors can be connected to a TTY Serial module. From this, I started to look for PWM to UART interfaces to reference how I could design our connections. After an hour of researching through the web, there seemed to be enough online websites claiming the need for a tri-state output buffer and a hex-inverter to create half duplex connection between the motor connector and the microcontroller.
An example image of what I am referencing from the Robotis Forum:
Sidenote: The reliability of these sources online are not 100% verified so only use them as reference points
Figure 2: Half Duplex UART Communication Protocol
Most of these websites were using a 74HC126, a Quadruple Buffer with a tri-state output, and a 74HC04, the hex inverter. However, there were no symbols and footprints available for 74HC126 on KICAD. I tried searching online for footprints and symbols of it, and found a website called Snap Magic which had a footprint. I downloaded and imported the footprint onto KICAD following the instructions provided by the website. I opened up the symbol and it is a little messy and not aligned with the SOIC 14 packaging on the datasheet. I went into the symbol editor and had to reference the previous connections and create a completely new design so that it would align with the datasheet. It looks very different from other schematics of ICs and I do not feel too confident so I will save this for now and try to look for viable replacements. The image below shows the result:
Figure 3: Created 74HC126 Schematic
After a brief 30 minute break, I came back to work and realized that all I need to find was a buffer with 3-state output and a hex inverter on KICAD symbols. Looking through all the possible buffers and inverters, I found two possible candidates that would allow me to do this. The first one is a 74HC244 non-inverting octal buffers and line drivers with 3-state output paired with a 74HC04 hex-inverter. The second one is a 74LS241 inverting & non-inverting octal buffers and line drivers with 3-state output. Reading through the datasheets, I realized that the 74LS241 requires a supply voltage of 4.5 - 7V. This means a secondary buck converter will be needed for 5V, which we really have no use for. So the 74HC244 IC seems to be the better replacement for the 74HC126. I have brought in the 74HC244 schematic and the 74HC04 schematic into the MCU schematic and will need to figure out the connections. In addition, from feedback during lab today, ESD protections seem to be necessary for most of our circuitry so I will also need to figure that out.
Current Motor Connection Setup:
Figure 4: PCB Schematic For Motor Connections
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: February 19thStart Time: 3:30 pm
Duration: 3 hour
I started researching parts and connection methods for the servo motor connection from serial bus to UART. I have looked through YouTube videos for Servo motor to STM32 interface by STMetraTonics and the HiWonder website to check the entire datasheet for the LX-224HV serial bus servo. In addition, I have looked through a circuit designer page by Cirkit Designer to see how I can connection the motors and control them. There wasn't much information on how to design the interface and what was necessary, so I started looking through a bus servo protocol. The Lewan Bus Servo Protocol illustrates a schematic as shown below in Figure 1.
Figure 1: Updated Schematics of PCB
It illustrates that a bus servo with a 3-pin ribbon connector, represented on the right with yellow labels, can be connected using a 74HC126 buffer with 3 state outputs and resistors to control via UART. As these are bus servos, a single servo motor connected to the UART device with serial connections of the servo motors, will allow us to control each individual motor. So, I will only need to configure 1 servo pin, which can eliminate the remainder 3 connections on the PCB. However, this design has a TXEN and RXEN pin, which do not exist along the STM32H723ZG. I'm confused as to if they will be connected to CTS and RTS pins or not have any connections. This will require more researching.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: February 19thStart Time: 11:00 am
Duration: 3 hour
I started reworking on the schematics due to the recent changes we have made. We first had to find a commercial AC/DC adapter that we could apply to power our new motors, the HTS-30HS. Our team believed that the NISICO AC/DC adapter would be able to supply enough current for all the motors, and the microcontroller itself. It is a 200W-12V-16.6A supply, where 12.8A will be used for the motors, and the remainder 3.4 can be used for the display and microcontroller. As there are no modules or connections that will happen on the PCB board, other than the two wires that signify + and -, I will need to research for the parts that will allow us to safely conenct it.
Some other changes I made were to remove the motors from the schematics, and replace them with connector pins that would connect to the motor via ribbon wires. In addition, I took a look at the XL1509 datasheet to see how the efficiency would look, now that I know the display requries a 3.3V supply voltage. It turns out that the 3.3V efficiency of the XL1509 is at 75%, which does not seem ideal. In the case that we do have any current fluctuations, I wanted to be safe so also decided to change the buck converter to a MP2303ADN, which has an efficiency of up to 95%. I implemented the buck converter MP2303ADN, which I also confirmed was available with DigiKey, to improve the efficiency issue.
After, I deleted different schematics and combined them into one and eliminated unncessary parts for the PCB board. Instead, I replaced them with connector sockets to allow for the connection of the actual modules. This included the LCD display, Keypad, and motor connector sockets, as each of them would be connected via a connector header. The only problem is that the motors are controlled via UART, and it only has 3 pins, which should be V+, V-, PWM so I will need to figure out how to connect these.
Things to do:
Figure 1: Updated Schematics of PCB
========================== Week 5 ==========================
------------------------------------------------------------------------------- Entry 5 -------------------------------------------------------------------------------
Date: February 14thStart Time: 7:00 pm
Duration: 3 hour
I took a short break before working on the motor packaging along with the the stand design. For the motors, I took a dimension calculation from the newer model we got recommended today during office hours. Instead of sticking with the GB4508MG, we decided to use the HTS-30HS from Hiwonder that has feedback and only requires 3.2A of supply current. This motor's dimension is 1.6in - 0.8in - 1.6in, so I will need to create a container of the motor, with a hole to allow the wires to connect to. One feature that will change the schematics of the PCB is that these motors only operate via a UART serial port, meaning, our microcontroller will need to communicate with a total of 5 UART connections, including the strech PSDR goals and USB interface.
So back to the 3D design, I wanted to create the container for the motor with an open top for the connection of the drumstick. To do this, I got two boxes, one to represent the motor, the other to represent the container. Then, I used the shell functionality on the container, and set the offset to 0.2 to have strong walls to contain the power of the motor. I attached a cylinder on the top of the motor to represent the rotary knob and used the union functionality to combine the two into one piece. After, I designed a very rough draft of the drumstick holder and the drumstick from one of my previous sketches.
The drumstick holder basically has a connector to the rotary knob, and has a perpendicular holding spot for the drumstick. To create the connection hole, I took another cylinder (connection cylinder), bigger than that of the rotary knob, and used the subtract function to create a hole for the connection. Then, I connected another cylinder (holding cylinder) perpendicular to the connection cylinder (opposite to surface with hole for rotary knob). Next, I created a cone with different top and bottom radius to accompany for the shape of the drumstick, and aligned it to the center of the holding cylinder. I used the subtract function to get the hole through the middle of the cylinder, and merged the two cylinders. Last but not least, I created a final cylinder, to drill a hole on the holding cylinder (opposite to connection cylinder) using the subtract function.
The image below shows the Motor Packaging that I have worked on:
Figure 1: Motor Packaging & Drumstick Holder Design on Autodesk
Things to work on: Stand 3D Modelling & Research on Commercial Products
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: February 14thStart Time: 11:30 pm
Duration: 3 hour
I started refining the 3D CAD design by adding in the motor connectors, which was hand measured, and the AC adapter & USB-A connectors by looking at the standard dimensions of each component and scaling it onto the 3D CAD design.
Figure 1: AC Adapter Dimensions
Figure 2: USB-A Connector Dimensions
Then, I started creating the walls using the polysolid functionality and the ceiling/lid of the enclosure using another flat box. Now, I wanted to create holes for all the connection ports, along with creating a ventilation system for the enclosure, so I referenced the help section on Autodesk to utilize the subtract functionality. This allowed me to also create circular holes to represent drill holes for connecting the display and keypad onto the lid of the packaging. After all of that had been done, I used the shell functionality to delete a face from the solids to indicate a hole for all the connections. Last but not least, I separated the lid/ceiling to illustrate the detaching ability of it.
Down below is an image of the PCB packaging:
Figure 3: PCB Packaging Design on Autodesk
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: February 13thStart Time: 6:30 pm
Duration: 3 hour
I started working on the 3D CAD design of our project packaging on Autodesk, as a student trial is provided for free by the university. As I am not very proficient with 3D designing, I decided to watch some tutorials online to adapt to the application environment. I started by watching the YouTube video from CAD in Black to start learning how to 3D model the packaging design. After learning the basic functionalities of Autodesk, I started looking through the dimensions of the components that would have to be added to the packaging. The only two items other than the PCB that would be beneficial to add to the packaging were the keypads and the LCD display. The LCD Display is 4.75in - 3.0in - 0.11in (Figure 1 of the manual) and the 4x4 matrix keypad is 2.5in - 2.5in - 0.5in.
Considering that the keypad would look better being on the right side of the LCD display, the packaging dimensions should take this factor into consideration. Last but not least, the motor connection ports and the USB & power supply connection ports should all be able to connect from the surface/walls of the packaging. To avoid heating problems and to space out the ports, the PCB will be better if it is larger than if it is compact, so this will also be considered during the PCB and packaging design. In addition, due to high currents, a cooling system using fans may be needed for this project, however, I believe an air ventilation system should do the job. I will have to discuss more about the design and the physical layout of the packaging with the team for confirmation.
Things to work on : Stand 3D display & Motor packaging & Enclosure & connection ports for PCB packaging
Figure 2: Layout of the PCB Packaging on Autodesk
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: February 12thStart Time: 3:30 pm
Duration: 2 hour
Team Meeting
During our team meeting, we discussed how the prototyping process would go and I gave everyone an update on the schematic and PCB design process. This week, due to having to complete the mechanical overview and CAD 3D design, I will not be able to work too much on the designing of our boards. As most of our schematic connections have been established, we will only need to verify with about if there are any missing parts or parts we would need to add. However, there was some unfortunate news and I got an update that our AC/DC adapter was not going to work as the servo motors (GB4508MG) required at least 14A for our project, each individual servo motor requiring 6.8A and 8.4V, while the HLK-5M12 can only supply a maximum of 1A at 12V DC.
This would mean that we would need to find a DC adapter that is capable of taking a 110V AC and supplying 24V or 12V at nearly 30A. Then, we would need a buck converter to supply the voltage at 8.4V, a non standard supply voltage, and still supply 30A. High current as such could cause a lot of problems with the PCB design, especially with choosing the right type of wires. I have addressed this issue with the team, as searching for products that could solve this problem would be very costly. This will require more researching of servo motor products to accompany for the torque power and the supply current limits. I believe the prototype servo motor that we have, which has a 2-3 A supply current while being powered at 12V DC will be more suitable, will be better due to having positional feedback and easier elctrical control with the tradeoff being slower rotational speed and less torque. Currently, I have disconnected the AC/DC adapter and have saved the parts, in case our plans change.
I also searched for any spare adapters and displays we could find to prototype our motor with. I was unable to find both the adapter and the LCD display so I have ordered them and they will be arriving as late as next week. This will significantly delay our prototyping process, however, as we are still pretty much ahead with the schematics design and have some depth in the PCB design process, I believe this will very soon balance out.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: February 12thStart Time: 10:30 am
Duration: 2 hour
I started finishing the schematic for the project, by working on the MCU connections to the different layers and creating the LCD display schematic. As our team has decided to use the EVE3 module for the LCD display, I referenced the module datasheet to draw in all the ports and create connections within the schematic. While doing so, I realized the LCD display only required a 3.3V supply, which would eliminate one of the buck converters I had originally within the MCU schematic. I disconnected the converter, however, did not completely delete it to prevent having to recreate and reconnect everything, in the worst case scenario that the module needs to be replaced by a different module that needs a 5V supply. After, I went back to the display module and started connecting the MOSI, MISO, SCK, VCC, and GND, and the requried decoupling of the display. The only problem is that I have yet to figure out the decoupling capacitors and required resistors for the module and during the process of trying to understand, I decided to take a break from all the schematics. Below is an image of the schematic that I was reading through (Still need to work on constructing the full schematic for the LCD display):
Figure 1: Display Schematic of EVE3 Module
After taking a 30 minute break, I came back to finish some the work necessary for the schematic. I figured the required decoupling for the LCD display by looking at the figure below.
Figure 2: EVE3 Connector Schematic
Then, I referenced the aforementioned video (Week 4 Entry 2) from Phil's Lab to start assigning the footprints to each component. For capacitors, and diodes, I decided to use the SMD standard with a metric of at least 0603 as anything smaller could be a problem for soldering in the future. For the resistors connected to the LCD display, I used the SMD standard with a metric of 0805 to avoid soldering problems. As for resistors for the keypad, I decided a THT would be better as it allows us to figure out the resistor values before soldering them into the board.
Figure 3: Display Schematic on KICAD
========================== Week 4 ==========================
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: February 8thStart Time: 1:00 pm
Duration: 1 hour
Team Meeting
Our team gathered for a meeting to finish the components report, along with the electrical overview that was due. I have worked on gathering component information for the USB-UART IC, LCD Display, and Microcontroller, and others have researched the other hardware components throughout the week. Due to having created spreadsheets for comparison throughout the week, most of our meeting was spent summarizing our individual findings and suggestion for component parts and writing the report to reflect the data each individual has gathered.
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: February 7thStart Time: 11:30 pm
Duration: 3 hours
After successfully implementing the decoupling capacitors on KICAD earlier today, I decided to resume working on the schematics and started creating different layers. This would result in a much more concise project schematic and also reduce confusion for readers, including my teammates. I successfully created separate schematic layers on my main (MCU) schmatic, and labelled each one as Display layer, USB layer, Servo layer, Keypad layers; these are the different hardware components our team will be designing. However, I did not know how to connect parts from the layers back into the microcontroller. So I referenced this Youtube video from Tech Record to understand how to accomplish the hierarchical connections. Firstly, I decided to touch upon the Servo layer as servo motors are generally of the same shape and require similar connections. I laid a total 4 motors out (our maximum goal) to connect to the MCU layer. Then, I created hierarchical labels within the Servo layer to connect the supply voltage, ground, and the PWM timers. The image below illustrates what the schematic looks like for the Servo layer.
Figure 1: Servo Layer Schematics
I projected these hierarchical labels onto the MCU layer so that it was ready to be connected to the microcontrollers. I didn't have enough time or energy to look through the pinouts and alternate functions, so I didn't create the connections with the microcontroller yet. Consequently, I decided to work on creating all the necessary hierarchial labels for each layer, and did so. The image below shows the hierarchical layer of the MCU schematic.
Figure 2: MCU Layered Schematics
After these labels were put across, I started working on the keypad layer and the USB layer. For the keypad layer, not much was needed to be done from the previous schematic I created. So I copied and pasted that design into the new layer and connected the pins to corresponding GPIO labels that I created. The image shown below demonstrates what the Keypad layer looks like:
Figure 3: Keypad Layer Schematics
As for the USB layer, I did not have the best understanding of how to interface a USB connector to a UART IC. In order to accomplish this, I looked through the FT234XD datasheet and reference the YouTube video from ELECTRONICS GLOBE to further understand how to implement this feature (I believe the YouTube video will also be helpful for actually designing the PCB design later on so I have also saved it to my bookmarks). Mostly, the connections that were implemented could be found on Figure 6.2 of the aforementioned datasheet. As our microcontroller, motors, and LCD display all take an external voltage source, there is really no power dependence on the USB to run anything. This is why I believe that the Self-Powered configuration suits the integrations that are necessary for our ADM project, and have referenced it to construct the USB layer shown below.
Figure 4: USB Layer Schematics
As we do not have our desired LCD display module on KICAD, I will have to create a schematic of the display itself on the Display Layer. Then, I will have to reference the datasheet and create the necessary connections for the display to communicate via SPI with the microcontroller. After that, I will need to create the necessary connections from the different layers back to the STM32H723ZG, and reference the datasheet Alternate Functions & Pinout sections to understand which pins can connect to which layer. In addition, A5 and A6 still need to be completed before tomorrow night so those will be my main focus for tomorrow. When those get finished, then I will resume my work on KICAD and PCB designing.
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: February 7thStart Time: 1:30 pm
Duration: 4 hours
As my previous schematic just had generic motors, displays, and used a STM32F0 series, it would certainly not match our project goals. So, I started working on creating a new schematic based on the newly decided parts over the past week. Certain parts do not exist on KICAD, such as our LCD display options, so I believe I will have to compromise by creating the schematics of each piece based on the datasheets available.
The first thing I did was take a look into the newly selected STM32H723 to execute the decoupling capacitors on the schematic using KICAD. As the microcontroller had more VDD pins, that meant more decoupling capacitors needed to be added, and the wiring and layout of these would need to be much more precise and error free than the previous schematic that I drew. There were a few new pins: VDD33USB, VCAP, and VREF+ that took some time to understand their functionalities, and how to treat them.
From the STM32H723ZG datasheet, in section 6.1 it says that unless otherwise specified, all voltages are referenced to VSS. In the pinouts of the LQFP144 for the STM32H723ZG, there is no VREF- and as VREF+ is a separate pin, I am going to assume that VREF+ is not connected to VDDA. Thus, referencing Figure 37, I could successfully create the decoupling pair for VREF+ by connecting VREF+ to VSSA. As for VCAP, Figure 12 demonstrates the necessary capacitors and resistors, and can be decoupled. For VDD33USB, as we are not intending on using it and building our own USB-UART interface, we will be decoupling as shown by the AN5419 document. All other VDD and VDDA were reference from the same document along with the manual. The YouTube video from Phil's Lab (what a coincidence!) was referenced to create the parallel decoupling capacitor design, rather than having a single capacitor attached to each and every necessary pin. This video will also be very helpful when designing the PCB as well. Here is the image that shows the decoupling design of the STM32H723ZG that I have made through KICAD schematics.
Figure 1: Decoupling MCU Schematics
From here, I will work on finishing the schematic and translating it into the PCB design. Currently, we have also yet to finish A5 and update the PSDR & Functional Description. These need to be worked upon before the end of the weekend.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: February 5thStart Time: 10:30am
Duration: 3 hours
From Sunday evening, I was experiencing heavy headaches and didn't feel too well, which led to me setting some minor goals for before our team meeting. I wanted to trim down the potential LCD displays we could use so I decided to create a spreadsheet on Excel for that. In addition, I saw that this week our component reports were due, so I also decided to create another spreadsheet for the microcontrollers too.
To start off, I based the LCD display off of the module available on the KICAD Schematic, which was an EAeDIPTFT70-A. I initially chose this for the schematic as it was the only available 800x480 resolution screen with a 5+ in diagonal. Due to meeting the necessary dimension size and having the ability to communicate via SPI led me to choose the display as a possible candidate for our project. However, when I searched for the price on DigiKey, I found that it cost around $550 and that seemed way out of our budget. This led me to search for different LCD displays available and figure out a variety of available displays for our project.
Here are the display specifications chosen with the team:
- Screen dimension: 5+ inch Diagonal
- Reasoning: 4 Mesaures of Beat (Total: 16 blocks), Indicator Bars, BPM & Configurable Settings Bar
- Interface & Communication: SPI
- Price & Affordability: $50 ~ $100
- High resolution: 800 x 480
- Reasoning: Low resolution & mundane blocks are not desirable for beginners
- Display Colors: RGB
- Reasoning: Black & White does not engage users nowadays
At first, I started looking through the internet for any LCD display that I could find. This really didn't get me far as the only LCD display I found that met the dimension and resolution features was the ER-TFTM101-1, which didn't have the best explanation to the pinouts and connection methods with the LCD display itself. Thus, I decided to look through DigiKey to find the display that we want.
I took a glimpse through the graphical LCD displays and found a few other candidates:
However, I noticed that the second one had no SPI interface and although we could use an I2C interface, I believe my teammates were more comfortable coding with the SPI so I made it a priority to look for SPI interface capability. So I started a filtered search on DigiKey with more detail and found other possible candidates, which are all listed within the Excel Spreadsheet linked below. The features I filtered for during the search were SPI interfaces, screen sizes, colors, and resolution. Then, I aligned them in order of lowest to highest price and started reading through the datasheets to see if they were capable and included them in the spreadsheet.
Through research and our needs, I started commenting about each display to start a ranking so our team can decide upon which would be the best candidate. The results and rankings have been displayed within the Excel Spreadsheet. The information to each display has been found through looking at datasheets shown within the DigiKey website of the selected ones. Some of the datasheets had to either be found online by searching the module name due to not being within the DigiKey website. In addition, some datasheets had no information about the functionality of the display itself. For the microcontrollers, the information could be easily searched upon within the STM32 Website. The research process of each microcontroller was already conducted by the team during our previous mandatory lab meeting. I just created an Excel spreadsheet for the ease of being able to complete A5.
Below are the files that can be referenced for the decision making process and the results drawn.
========================== Week 3 ==========================
------------------------------------------------------------------------------- Entry 4 -------------------------------------------------------------------------------
Date: January 29thStart Time: 3:30pm
Duration: 2 hours
During the meeting, we started discussing about acquiring components and finalizing the budget for our project. I have trimmed down most of the components and wanted confirmation from my teams end before requesting the parts. While, we were discussing the budgets, I also started working on the PCB design using KICAD once again. I was referencing online tutorials and placing down the decoupling capacitors when we starting getting feedback for our PSDR and functional descriptions.
Through feedback, I realized that I was not accounting for floating points and DSP instructions, which were not available on the STM32F091RCTx microcontroller. Thus, after getting the recommendation to look through the STM32H7 series, I started doing research on the required microcontroller to allow for the project to function. I realized that most of these STM32 pinouts were similar and served similar functionalites, with the more high-end versions having multiple functionalites, such as an LCD display communication port. Thus, I could focus on narrowing down to whether our group needed a double-precision floating point unit (FPU), and whether we required large amounts of flash memory, along with RAM. After thorough discussions, we have not yet concluded how the pre-processing of the MIDI files would work, and does could not figure out if double-precision FPUs were necessary. Keeping this in mind, I have been able to narrow down our target microcontrollers to the following:
- Single-Precision FPU Considerations
- STM32F429NG
- Double-Precision FPU Considerations
- STM32H723ZG
- STM32H735AG
My next step would be to figure out what the best way to do all those tasks would be to figure out what microcontroller our team would need. Once, that is finished, I would want to get some confirmation from the TAs and start ordering for component parts. Then, I will need to start prototyping and practice soldering the PCB, as well as help create a state transition diagram or flow chart of our software component.
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: January 28thStart Time: 7:00pm
Duration: 4 hours
I started working on the schematics using KICAD and started connecting the pieces to understand how many GPIO pins were necessary, and figure out how many pins were needed to accomapny for the different interfaces we plan to use. As these connections were made, I started accounting for the decoupling capacitors and the pull-up resistors. These would eventually help me figure out how many discrete components we would need, and determine which ones I would need to solder onto the PCB. With this schematic, I can start designing the PCB and hopefully have components ordered by the end of the week, after discussing it with my team. Down below I have attached an image of the schematic and connections I have been working on throughout the day.
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: January 28thStart Time: 12:00pm
Duration: 2.5 hours
I started working on researching for the general parts needed, such as motors/actuators, microcontroller chips, displays, and etc. As our team is accustomed to the STM32F091, I started building a schematic around the STM32F091 dev board that was already pre-constructed within KICAD. This was to first get a grasp of what components were going to be necessary for our project, and to be able to submit a request form for the component by the end of the week. From brainstorming ideas, functionality of our project, and researching of different components, these were the components that I believe our team needed:
- STM32F091 Microcontroller (3.3V)
- 4 Servo motors (5V, capable of producing 70~80N, can withstand 1kg of weight)
- 7+ in TFT LCD display (1024x600 or better resolution)
- 4x4 Matrix Keypad (8 pull-up resistors)
- Voltage regulator (3.3V for microcontroller, 5V+ for LCD & motors)
- USB to UART driver
- Bidirectional translator
- Stretch: Rotary actuator & rotary encoder
The motors needed to produce 70-80N as a drum hit was previously calculated to require around 40-50 N and wanted to accompany for loud hits. A 7+ inch LCD display was desired to allow users to clearly see what the inputs and program would look like. The most desireable would be a 10+ inch diagonal screen as visibility would clearly increase. As for the resolution, the 1024x600 resolution for a 10-inch diagonal was one example of a screen that I had found while doing research, and have marked it as a reference point.
The 4x4 Matrix keypad is a component we have and thus, are not worried about this due to the kits given out. Due to the microcontroller operating at 3.3V while the LCD display and motors having the capability to operate at higher voltages, I believed a voltage regulator may be needed. In the case that some motors or display are not capable of communicating at 3.3V from the microcontroller, a step-up converter was considered in the design to allow for the communication.
The USB to UART driver is a necessary function for our program to accept MIDI files from the computer, and thus will need to be able to have a connection to the computers. As for the bidirectional translator, I am still researching and figuring out how this would be necessary or not. In the case that the systems have to communicate different voltage levels, I believe this would be helpful and thus, have considered it for implementation; however, this feature is subject to change if considered unnecessary.
With these results, I will talk to my team about acquiring the components, and try and see if they will really be necessary or not.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: January 27thStart Time: 5:00pm
Duration: 0.5 hours
I worked on editing the website today due to the team tab not redirecting to the right links. When debugging the script, I realized the names were not formatted correctly and was causing this issue. After changing it, I uploaded the functional description from A1 and checked all other links were working. This wasn't really a big project progress that needs to be made, but at least we have the errors figured out. I have been looking through tutorials and have started utilizing KICAD, so in the upcoming days, I will be able to start building our PCB model.
========================== Week 2 ==========================
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: January 24thStart Time: 3:00pm
Duration: 1.5 hours
I started doing calculations and research for the theoretic operations of the ADM. The following image below demosntrates what I have found through calculations and research. In addition, I refined some parts of the A2 Functional Specification report that seemed unclear. Development of PCB boards will be focused throughout week 3. I have started to look through KICAD and some tutorials for prototyping a board. These hours have not been included into any work time as I have not made any significant process. During the weekend, I will be looking through more KICAD tutorials to figure out how to prototype boards, and create one.
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: January 23rdStart Time: 3:30pm
Duration: 2 hours
We have started leaning towards using stepper motors or servos instead of linear actuators. To account for this, I started creating sketches of our potential stands that could be incorporated into our project. I believe that using motors could be more beneficial as there will be more ease in implementing necssary code and physical motions. Additionally, I finished revising the functional description based on the feedback we obtained during the lab meeting. Now, I will need to focus on finishing up the report, and working on prototyping the PCB boards.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: January 22ndStart Time: 2:00pm
Duration: 3 hours
I started uploading the files for A0 & A1 into our website. In addition, I added the PSDR & functional description to the page. After uploading the documents, I started considering the power and electronic constraints to the project. These are what I ended up formulating. I believe the chosen interfaces may be the most optimal for our project, and have chosen the I/O pins baed on the interface. However, if there are better interfaces suggested, these would be subject to change.
Electronic constraints
- Using a UART interface, 2 pins are required for communication
- Inputs: 1 (Receive), Outputs: 1 (Transmit)
- Total: 1 Input, 1 Output
- The 4x4 matrix keypad will require 8 GPIO inputs to control the keypad
- Inputs: 8 (4 rows, 4 columns)
- Total: 8 Inputs
- Using a SPI interface, around 4 pins are required to control the display
- Outputs: 4 (MOSI, CLK, ENABLE, RESET)
- Total: 4 Outputs
- Using a PWM interface, around 4 pins are required to control an individual actuator
- Inputs: 1 (position), Outputs: 3 (2 for direction, 1 for speed)
- Total: 6 Inputs, 18 Outputs
- Using a stepper motor, around 4 pins are required to control an individual motor
- Outputs: 4 (STEP, DIR, ENABLE, SELECT)
- Total: 24 Outputs
Motor - Total Inputs: 9, Total Outputs: 29
Thermal & Power Constraints
========================== Week 1 ==========================
------------------------------------------------------------------------------- Entry 3 -------------------------------------------------------------------------------
Date: January 17thStart Time: 1:00pm
Duration: 3 hours
I worked on writing the whole Functional Description of the project before our team meeting. I helped with the writing and refining of the PSDRs, which are displayed below. I also refined some parts to the website, which ended up looking like the image below. Our group still only has a theoretical idea of the project and have not formulated a strong idea of what is required. Our next step will be to figure this out. I will have to figure out what parts will need to be on the PCB and what other parts would be necessary.
PSDR Statements - HardWare
- LCD Display - Output
- An ability to use an LED display to show the activation and volume of at most 8 instruments to the screen, with sixteen-time columns (4 measures) at a variable tempo (bpm).
- Standard Drum Set Capability: 1 Base, 2 Snares, 2 Toms, 2, Cymbals, 1 Hi-Hat
- 4x4 Keypad - Input
- An ability to control the bpm and activation points of each instrument through a keypad through matrix communication with debouncing.
- Linear Actuator - Output
- An ability to control the speed (Rotations per Second) and frequency (BPM) at which the actuators cause each of the sticks to swing down.
- USB port - MIDI transport from PC to Microcontroller
- An ability to transport MIDI files through the USB pipeline communication method and decode them such that the system can read them.
- Beat editor - Software from PC
- An ability to allow the user to produce rhythms/songs by controlling the timing of hits of an instrument on a timing sheet.
- Rotary Actuator - Output
- An ability to control the horizontal position of the drumstick to allow hits on the center/ edge for different sounds.
------------------------------------------------------------------------------- Entry 2 -------------------------------------------------------------------------------
Date: January 15thStart Time: 4:30pm
Duration: 2 hours
We took a lab tour and got to know our environment for the next few weeks. We also signed our FAFSA agreement for our photos and works. After the tour, I copied the Website Template into our web folder and got the website up and running. To avoid confusion with names of member1 ~ member4, I changed the names to our group member names in alphabetical order of the first name. Due to these name changes, the images or link redirection to our journal's would not work. So I changed the names in the script to account for all changes made with file names. Some of the file names had spaces in between and would not display correctly, so I figured out how to account for those by replacing a %20 for a space. Some steps that can be taken in the future is refining our PSDR statements, and formulating a stretch PSDR to see what components would be necessary.
------------------------------------------------------------------------------- Entry 1 -------------------------------------------------------------------------------
Date: January 13thStart Time: 3:00pm
Duration: 1 hour
A team meeting was held to calculate the estimated cost budget of our project. First, we brainstormed what parts we would need to acquire. I believed having 5 to 6 stands for the different parts of the drum would be required, and started researching for market prices to calculate what the total cost of all the equipment would be. I started researching prices for linear actuators, pipes to use for stands, cardboard material to test out before using the drums, drumsticks to use for the project, and USB cables for MIDI file inputs. For linear actuators, we hadn't fully done calculations on how much force & length we would need, and for PCBs, we didn't have a full grasp of what we needed on the board, so we put an estimated cost based on a reasonable price and size. I will need to first figure out what actuator would be necessary through calculations and research.