Commit c870529e authored by Jack Hollingsworth's avatar Jack Hollingsworth
Browse files

embedded programming final update

parents 7b5ddceb b6c4b7e3
Pipeline #227801 passed with stage
in 38 seconds
......@@ -47,12 +47,17 @@ In the overhang, bridge, and surface tests, we again observed impressive results
### Clearence
### Infill
<center>
![](../images/week03/image0.jpg){: style="width:250px"}
![](../images/week03/image1.jpg){: style="width:250px"}
![](../images/week03/image2.jpg){: style="width:250px"}
![](../images/week03/image3.jpg){: style="width:250px"}
</center>
The next key step in characterizing the Creality Ender 3 printer was the infill test. The term infill refers to the amount of material that fills in something; in the case of 3d printing, infill means how much PLA lies in between the walls of the print. In this case, we used four variants of 100%, 50%, 15%, and 0% to visually demonstrate the different infills. Typically, one does not use a 100% infill, as it uses more PLA and it takes substantially longer; however the infill of a 3d print depends on the intended application of it. For example, if someone wants a stronger print with PLA and does not mind the slight additional print time and weight, then they may consider using a higher percentage infill. On the contrary, if someone aims for a more lightweight print or they just want to print something more quickly, a lower infill percentile could be used. In our test, the 100% infill of a cube smaller than an inch by inch, it took over an 1 hour and 30 minutes to print at regular speed on the Creality Ender 3. As the infill decreased though, the print time decreased exponentially to under 20 minutes for the 15% infill. The 0% infill is not very practical for most desgns, but it was included in the test to demonstrate what no infill would look like. There are obviously other factors which factor into print time, such as the other settings expressed in this assignment, but infill should be considered for each print to optimize each print produced.
......
......@@ -77,7 +77,9 @@ Radial runout occurs when the drill bit is not perfectly centered in the spindle
### Testing runout
To test both types of runout, we are using the [Mitutoyo 513-402-10T test indicator](https://shop.mitutoyo.eu/web/mitutoyo/en/mitutoyo/1303999270156/Dial%20Test%20Indicator,%20Horizontal%20Type/$catalogue/mitutoyoData/PR/513-402-10T/index.xhtml). All information about the test indicator can be found at [this link](https://ecatalog.mitutoyo.com/Dial-Test-Indicators-SERIES-513-Horizontal-Type-C1258.aspx)
To test both types of runout, we are using the [Mitutoyo 513-402-10T test indicator](https://shop.mitutoyo.eu/web/mitutoyo/en/mitutoyo/1303999270156/Dial%20Test%20Indicator,%20Horizontal%20Type/$catalogue/mitutoyoData/PR/513-402-10T/index.xhtml). All information about the test indicator can be found at [this link.](https://ecatalog.mitutoyo.com/Dial-Test-Indicators-SERIES-513-Horizontal-Type-C1258.aspx)
To test for runout, we used the test indicator to determine how the angle of the bit changes as the machine runs. As the bit spins, if it is even barely misalligned, it will have a different position along the bit at different angles. Ideally, we would have a change of 0, but it is difficult to get it perfect. We found that our bit was slightly misalligned, but it was such a miniscule amount that it could be ignored.
![](../images/week05/RunoutMeasuer.jpg)
......@@ -89,6 +91,12 @@ To test both types of runout, we are using the [Mitutoyo 513-402-10T test indica
<b>Toolpaths</b>: The path/ directions a tool follows as it cuts through material to achieve a desired geometry of a shape.
To test our lab's shopbot, we used our lab's desktop max shopbot to run a few simple toolpaths. We designed the toolpaths in aspire, and cut out a square, circle, star, and a crescent shape out of wood. The shapes came out fairly well. Our toolpath ran 4 passes, which means that each pass it cut out 1/4 of the material. This is important becuase with materials as thick as 3/4" wood, cutting out too much material at once can damage the mill bits. With 4 passes, the machine cut out 1/4*3/4=~.19", which is safe for our bit.
Another important thing to add to toolpaths is a tab. This holds the material in place on the last path so that the material is not moving while a part is being cut out. We added 2 tabs for each part on opposite ends of the cut, and the material was held in place.
Since the ShopBot can only read files in the *.spb* format, we had to export all of the designs from [Aspire](https://www.vectric.com/products/aspire) in that format.
![](../images/week05/GroupAspireTest.png)
![](../images/week05/CutShapes.jpg)
......
# 6. Architecture Types
<<<<<<< HEAD
This week's assignment was to learn about and analyze different workflows for diferent types of architectures. As we had only programmed microcontrollers with variants of C thus far in Fab Academy, we decided to configure and program an LED to blink on a Raspberry Pi 4 and a Raspberry Pi Pico in order to investigate the programming and uploading process using different form factor boards and a different language from what we are used to.
=======
This week's assignment was to learn about and analyze different workflows for different types of architectures.
>>>>>>> refs/remotes/origin/master
## PI Setup
## Raspberry Pi
The first type of architecture we wanted to try was Raspberry Pi.
### PI Setup
![](../images/week06/RaspPI_Imager.jpg)
......@@ -18,12 +26,13 @@ After booting a fresh OS on the Pi, we verified that all of the modules, program
After downloading the necessary programs, we began researching the pinout of the GPIO array on the rPi 4 in order to know how to wire our LED to properly address it via a python script. We used <a href="https://roboticadiy.com/how-to-blink-led-with-raspberry-pi-4/">this guide</a> as a reference for the wiring of our LED to our rPI 4.
## GPIO Control
### GPIO Control
![](../images/week06/raspberry_pi_photo_of_code.jpg)
![](../images/week06/raspberry_pi_troubleshooting.jpg)
<<<<<<< HEAD
We decided to write the python using an internal text-editor, nano, that is included in the base installation of most Linux distros, including base installations of Ubunto and Debian, that can be opened with the command 'sudo nano *filename*' and executed by simply typing the filename into an active Linux shell. This method does not require an external IDE that must be installed by a user, and due to the simplicity of the code that was necessary for our LED to blink, it made total sense to utilize this basic text editor rather than using alternative environments like Thonny or IDLE.
After repeated troubleshooting with very simple codes, we finally found 2 possible reasons the LED was not blinking. The first thing we found was that instead of using a 330 ᘯ resistor, we were accidentally using a 1,000,000 ᘯ resistor. While the LED would technically still turn on, it would be so dim that the change would not be visible to humans, which defeated the purpose of making the LED blink. We ultimately discovered that the 1,000,000 ᘯ resistors were mixed with the 330 ᘯ resistors in our lab, and an incorrect resistor had been selected from the box. After swapping the 1,000,000 ᘯ for a 330 ᘯ resistor that we verified did have the correct resistance value with a multimeter, the LED still did not blink.
......@@ -92,4 +101,17 @@ while jackAttractsLotsOfWomen:
<iframe src="https://player.vimeo.com/video/543402489?title=0&amp;byline=0&amp;portrait=0&amp;speed=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen title="pico blink external LED Fab Group Site Week 6 Attempt 001"></iframe>
## Conclusion
After successfully uploading a code that effectively accomplished an identical task using two vastly disparate workflows for two different boards, our group reflected on the stark differences that exist between the Raspberry Pi 4 and Raspberry Pi Pico. Firstly, we felt that our task was not intensive enough for the performance differences between the two devices to be noticeable in their ability to complete the task, meaning that the Pico made far more financial sense as it costs roughly 10% that of its mircocomputer counterpart. We found that the rPi 4 made rapid re-iteration significantly easier, as the Pico requires a multi-step process in order to be ready to receive fresh code injections via PuTTy. Ultimately, our group work for embedded programming week in comparing similar tasks on two different architectures provided an intriguing glimpse into the processes outside of the Arduino IDE and Atmel ecosystem, which many of us hope to utilize in our final projects as well as in future endeavors outside of Fab Academy.
\ No newline at end of file
After successfully uploading a code that effectively accomplished an identical task using two vastly disparate workflows for two different boards, our group reflected on the stark differences that exist between the Raspberry Pi 4 and Raspberry Pi Pico. Firstly, we felt that our task was not intensive enough for the performance differences between the two devices to be noticeable in their ability to complete the task, meaning that the Pico made far more financial sense as it costs roughly 10% that of its mircocomputer counterpart. We found that the rPi 4 made rapid re-iteration significantly easier, as the Pico requires a multi-step process in order to be ready to receive fresh code injections via PuTTy. Ultimately, our group work for embedded programming week in comparing similar tasks on two different architectures provided an intriguing glimpse into the processes outside of the Arduino IDE and Atmel ecosystem, which many of us hope to utilize in our final projects as well as in future endeavors outside of Fab Academy.
=======
After a good bit of troubleshooting with very simple codes, we finally found 2 sources of error. The first thing we found was that instead of using a 330 ᘯ resistor, we were accidentally using a 1,000,000 ᘯ resistor. While there would still be some amount of current passing through the LED, it would be so slight that there would be no visible change. The reason we were using the incorrect resistor was that the 1,000,000 ᘯ resistor were in the 330 ᘯ resistor box and we did not check the value with a multimeter. This, however, did not solve our issue.
Our second possible issue was the LED itself. To test out this theory, we made a very simple circuit consisting only of a power source, ground, the LED, and a 330 ᘯ resistor. If the LED was working correctly, it should turn on immediately after completing this circuit. Since it did not, however, turn on, we identified that the problem was the LED. When we tried the same circuit with a different LED, it turned on. When we used this new LED in the blink circuit that was connecte to the Raspberry Pi, it worked flawlessly.
[INSERT WORKING RASPBERRY PI VIDEO]
## Raspberry PI Pico
<iframe width="560" height="315" src="https://www.youtube.com/embed/gcQldlUCLuM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Kc4uWvPPsAE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
>>>>>>> refs/remotes/origin/master
# 8. Input Probing
This week for group work we needed to probe an analog and digital input device using an oscilloscope. For our analog input we chose to use a potentiate. We wired everything up and then intercepted the signal wire with the probe. Once we had everything wired, we started testing, During our testing, we weren't able to adjust the axis to get a smooth curve but were able to see that the value was increasing and decreasing as we adjusted the position.
<iframe width="900" height="650" src="https://www.youtube.com/embed/XZpvqM4mp1E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
For the digital input we tested it with a button. We wired the probe to one side and then grounded it on the other. When the button was pressed we could see the signal passing through. It would become a straight line when low and then would show some waves when the button was high. We finally found a way to adjust the axis so that we got distinct waves.
<iframe width="900" height="650" src="https://www.youtube.com/embed/Ya4m2pfaF3w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
# 9. Molding & Casting
## General
This week's group assignment was to review the safety data sheets of several different types of molding and casting materials, and then testing them out and comparing the results.
## Data Sheet Reading
<iframe src="https://drive.google.com/file/d/1IHOmytiUM8FNJdP9NZBQzmAlZ0Rx9HHU/preview" width="700" height="600"></iframe>
## Molding & Casting Tests
### Milling
Once we had the vectors created we started to work on the toolpaths. the first step was to set up the material. We were using 3/4th inch wood and the length and width were made a little bigger than what we needed. Once we verified that everything could fit, We used the 2d outline tool and selected the edge of each vector. The bit was already setup on the machine so we selected the 1/2th inch flat end tool and Aspire generated the toolpaths. We then exported the toolpaths from Aspire using the *.SBP* format after simulating. As mentioned in our [week 5 page](http://fabacademy.org/2021/labs/charlotte/Group%20Assignments/week05/) (characterizing the CNC machine), this is the format of files that the ShopBot can read.
![](../images/week10/milledpart.jpg)
### 20T
The first type of casting material we tried was [Mold Star 20T by Smooth-On](https://www.smooth-on.com/products/mold-star-20t/). This is a silicone rubber, meaning it is a soft and flexible material. As you can see in the picture below, there is a "Part A" and a "Part B". To cast this material, you need a ratio of 1:1 (by volume) between the two parts. Applicable to all types of casting materials, we have to mix these two parts thoroughly. It is also very important to remember to always stir horizontally, meaning not moving the dowel (or any other mixer) up and down to prevent air bubbles.
<center>
![](../images/week10/20t.jpg)
</center>
![](../images/week10/20tmold.jpg)
![](../images/week10/20tmolddone.jpg)
### Dragon Skin
[Dragon Skin 10NV](https://www.smooth-on.com/products/dragon-skin-10-nv/), like the Mold Star 20T, is a silicone rubber. It is very common to have tiny bubbles with this material specifically. This is usually not a problem if you gently shake the mold
<center>
![](../images/week10/dragonskin.jpg)
</center>
![](../images/week10/dragonskinmold.jpg)
![](../images/week10/dragonskinmoldcasted.jpg)
### Smooth-Cast 300 Casting
The [Smooth-Cast 300Q](https://www.smooth-on.com/products/smooth-cast-300q/), unlike the 2 previous materials, is a hard material. This means that once it has cured, it will be solid and completely rigid. As you can see from the 3rd image below, the only slight issue was just a bit of overflow which can easily be resolved by sanding down that edge.
![](../images/week10/tempincrease.jpg)
![](../images/week10/Testcast.jpg)
![](../images/week10/dragonskincast.jpg)
\ No newline at end of file
# 10. Output Devices
This week, our group assignment is to measure the power consumption of an output device. We measured the power consumption from a 9V DC motor.
![](../images/OutputDevices/dcmotor.jpg)
We used our lab's [WANPTEK DC Power Supply](https://www.amazon.com/Adjustable-Three-Window-High-Precision-Switching-Regulated/dp/B08LYHJKJV) to test the motor since it provided current, voltage, and power that it produced while running.
![](../images/OutputDevices/powersupply.jpg)
We hooked up the leads of the motor to power and ground through alligator clips to test it.
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOj7PX0BJnA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
We found that power consumption increases exponentially as voltage increases. This makes since because power is the product of voltage and current, and current increases as voltage increases. At 9V, the motor consumed on average 2.4 watts of power. At 5V, below the rating of the motor, it consumed on average 1.2 watts. We also put the motor to its limits at 12V, where it consumed on average 4.2 watts of power.
![](../images/OutputDevices/graph.jpg)
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment