12. Mechanical and machine design¶
Mechanical Design (part 1 of 2)¶
Group Assignment¶
- Design a machine that includes mechanism + actuation + automation
- Build the mechanical parts and operate it manually.
- Document the group project
Individual assignment¶
- Document your individual contribution.
Machine Design (part 2 of 2)¶
Group Assignment¶
- Actuate and automate your machine.
- Document the group project
Individual assignment¶
- Document your individual contribution.
Group videos¶
Dan Meyer: Foam Crawler¶
Alan Han: Urumbu Crawler¶
Kyle-Pierre: Bend Crawler¶
Design¶
FoamCrawler CNC I designed the Foam Crawler machine in Onshape. It has two X Axis rollers covered in grip tape It has two Y Axis drive rollers no platen at all. It has two un-driven upper rollers. The Z axis is 8mm Metric Acme Lead Screw, X Axis is belt drive on makerslide. These 3 different drive types will be interesting to actuate manually by hand.
I went through a few iterations of the Y roller drive. The first was PVC pipe spiral wrapped with emery cloth glued onto PVC pipe.
Manual Operation¶
Here I am holding the parts in place to run each axis by hand.
When run by hand with a piece of foam this setup has a few issues.
- the foam would work it’s way along the x axis due to the spiral and the PVC pipes were hard to buy without bending and roundness defects, leading to a kind of clapping onto and off of the foam sheet while being driven.
- The hand operation also revealed that accelerating and decelerating the rollers took a surprising amount of force.
- The M8 bolts were also loose in the bearings leading to slop.
Other uses¶
Kyle-Pierre Nfr would like to modify the foam crawler to index acrylic sheets over a heating element. Once the acrylic is soft paddles would bend the acrylic to a specific angle and let the acrylic cool. Then the acrylic would advance and the process would repeat. One use for this process would be for machine covers. Even with this modification the Foam Crawler could be used as originally designed
727 Glider Cutting¶
I cut some 727 gliders on the foam crawler to test it out.
Individual Assignment¶
Actuate and automate your machine¶
GRBL gSheild Setup¶
I have a lot of Synthetos gShield CNC controllers in stock, so that’s what I used to actuate the Foam Crawler. The instructions for connecting the gShield I used are here: Using grblShield
I compiled, flashed, programmed and setup the gShield cnc control using grbl.
Installing and getting USB to work with the Arduino IDE on Linux is not well documented. Here is a good post to help: Arduino IDE on Linux Mint
The GRBL wiki has good instructions on how to compile and install GRBL: Grbl wiki!
Universal Gcode Sender(UGS)¶
To send gcode I decided to use Universal Gcode Sender(UGS) software in the “platform” flavor. The download for linux platform UGS was located at: https://github.com/winder/Universal-G-Code-Sender.
After wiring up my 24VDC power supply, I plugged a USB cable between my computer and the Arduino UNO with gShield.
I fired up UGS and clicked the Port: to select the port the Arduino UNO was on.
Then I clicked the “Machine” and then “Connect”… and GRBL initialized and talked back! YES!
It’s Alive!¶
I then executed some jog moves, they worked moving my X and Y axis along with lighting up the green lights on the gSheild stepper outputs! Although the movements were very weak. I needed to set my stepper driver currents.
Setting Stepper Currents¶
I used the procedure on the synthetos/grblShield wiki Setting Motor Current to intially set the stepper motor currents.
Later I will verify the current settings with Vref measurements. This is a good guide on that process: Setting the stepper motor current limit from this page “The gShield (version 5) uses a 0.1 ohm current sense resistor so the formula is Vref = 0.8 * I.
The maximum current the driver chip can deliver with appropriate cooling is 2.5 amps. To use this current value you would set the Vref voltage at (0.8 * 2.5 amps) = 2 volts. This is the theoretical current limit.”
Note: the gSheild stepper driver are limited to 2.5 amps
Stepper | Multiplier | Target Amps | Vref |
---|---|---|---|
NEMA 28 X&Y Axes KL23H251-28-4A | 0.8 | 2.5 A | 2.0 V |
NEMA 17 Z Axis SM42HT47-1684B | 0.8 | 1.68 A | 1.3 V |
Steps per mm¶
Next I used the GRBL settings calculator to get the correct distance movements. I also found the Norwegian Creations Tutorial: Calibrating Stepper Motor Machines with Belts and Pulleys useful for the roller drive calculations. Grbl v1.1 commands can be found here: (https://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands) I also found the FABLAB León LE-CAR-BIL MACHINE documentation useful.
My steps per mm calculations:
X axis¶
Steps/rev: 360 deg / Step Angle 1.8Deg = 200
Microsteps: 4 micro steps per step
Belt Pitch: 3mm
Pulley Teeth: 20
srev is the number of steps per revolution for the motor fm is the microstepping factor (1, 2, 4, 8 etc.) p is the pitch Nt is the number of teeth on the pulley attached to the motor shaft.
srev * fm / p * Nt
200 * 4 / 3 * 20 =
800 / 60 =
13.333 steps per mm
Y axis¶
Belt Pitch: 3mm
Steps/rev: 360 deg / Step Angle 1.8Deg = 200
Roller Diameter: 42.9mm
Microsteps: 4 micro steps per step
srev is the number of steps per revolution for the motor
Nf is the number of teeth on the final (passive) pulley
fm is the microstepping factor (1, 2, 4, 8 etc.)
Nm is the number of teeth on the motor pulley
Dr is the diameter of the roller
srev * Nf * fm / Nm * piDr
200 * 20 * 4 / 20 * (3.14159 * 42.9) =
16000 / 2695.48422 =
5.936 steps per mm
However, as expected, the variable slip vs grip nature of the grip taped Y Axis rollers needed steps per mm adjustment.
Using the helpful info GRBL Steps Per mm – How to Fine Tune Your Settings I re-calibrated.
On a 441.7 mm move the actual cut length was 444.5
Updated Steps/mm = (Current Steps/mm) x (Commanded Travel) / Actual Cut Length
5.936 * 441.7 / 444.5 = 5.899
5.899 Adjusted steps per mm
Z axis¶
8mm Metric Acme Lead Screw This Tr8*8-2p(4 starts) trapezoidal Lead Screw results in a pitch of 8mm. Pitch of a lead screw is the distance traveled with one revolution. In this case one revolution results in 8mm movement. If you are not sure of a threaded rod pitch simply put a nut on it and rotate it 1 revolution and measure the distance moved.
Z motor (steps/rev): 360 deg / Step Angle 1.8Deg = 200
Z Microsteps: 8 micro steps per step
Z threaded rod pitch (mm): 8
Pulley Teeth: 1 (direct drive)
srev is the number of steps per revolution for the motor fm is the microstepping factor (1, 2, 4, 8 etc.) p is the pitch Nt is the number of teeth on the pulley attached to the motor shaft. For direct drive use 1.
srev * fm / p * Nt
200 * 2 / 8 * 1 =
400 / 8 =
50 steps per mm
Axis | Steps per mm | Setting Command |
---|---|---|
X | 13.333 | $100=13.333 |
Y | 5.899 | $101=5.899 |
Z | 50 | $102=50 |
Inverting Axes¶
The Z axis was inverted, So I issued the following command to Invert Z:
$3=4
Carefully read the documentation at: (https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration#3–direction-port-invert-mask) and you will be able to understand how the code above works.
Max Feed Rates¶
Jogging the machine was painfully slow. So I updated the following Max rate, mm/min
X $110=8000
Y $111=8000
Z $112=4000
Acceleration¶
Acceleration could be increased as well
X $120=3000
Y $121=3000
Z $122=200
Dan’s Foam Crawler Video¶
Above is a video of the Foam Crawler CNC Machine being actuated and run. In the video the Foam Crawler is cutting a simple example to demonstrate its basic capabilities. See my main Foam Crawler page for further work on how the Foam Crawler was designed, fabricated and built.
CAD Files¶
FoamCrawler CNC Onshape CAD Assembly Files
Exploded View & BOM¶
Above: Isometric View of Foam Crawler Assembly
Click the image above to view or download a PDF Exploded View & BOM to help assemble your Foam Crawler core.
Foam Crawler Core Exploded View & BOM
BOM Chart¶
Item | Quantity | Name | Part number | Description | Process | Material | Vendor | Cost Per | Multi Cost | Link |
---|---|---|---|---|---|---|---|---|---|---|
9 | 1 | Z Drive Mount 17 | 3D Printed | PLA | You | 0.22 | 0.22 | |||
11 | 3 | Stepper Spacer | 3D Printed | PLA | You | 0.1 | 0.30 | |||
14 | 1 | XDriveMount | 3D Printed | PLA | You | 0.5 | 0.50 | |||
19 | 1 | Idler Bracket Mirror | 3D Printed | PLA | You | 0.1 | 0.10 | |||
23 | 8 | RollerEndCap | 3D Printed | PLA | You | 0.2 | 1.60 | |||
27 | 4 | Roller Cradle | 3D Printed | PLA | You | 0.5 | 2.00 | |||
32 | 2 | Clamp XBelt | 3D Printed | PLA | You | 0.1 | 0.20 | |||
33 | 1 | Cover Left Lower | 3D Printed | PLA | You | 5 | 5.00 | |||
34 | 1 | Cover 24V | 3D Printed | PLA | You | 2 | 2.00 | |||
35 | 1 | Cover 48V | 3D Printed | PLA | You | 2 | 2.00 | |||
39 | 1 | Frame Left Window | 3D Printed | PLA | You | 0.1 | 0.10 | |||
40 | 1 | Front Frame Electronics | 3D Printed | Acrylic | You | 0 | 0.00 | |||
41 | 1 | Spindle Clamp | 3D Printed | PLA | You | 0.2 | 0.20 | |||
43 | 3 | Vent | 3D Printed | PLA | You | 0.2 | 0.60 | |||
49 | 1 | Plug Y Drive | 3D Printed | PLA | You | 0.2 | 0.20 | |||
50 | 1 | zip tie mount makerslide | 3D Printed | PLA | You | 0.1 | 0.10 | |||
4 | 1 | Spindle | B01F86IKXO | DC Spindle 24vdc preferred | As is | Copper | Inventables | 29.88 | 29.88 | https://www.amazon.com/spindle-12-48v-Spindle-Engraving-Machine/dp/B01F86IKXO |
5 | 2 | Nema 23 Stepper Motor | 518 | Nema 23 Stepper Motor | As is | Carbon Steel | Inventables | 27.99 | 55.98 | https://openbuildspartstore.com/nema-23-stepper-motor/ |
8 | 1 | Nema 17 Stepper Motor | 623 | Nema 17 Stepper Motor | As is | Carbon Steel | Inventables | 17.99 | 17.99 | https://openbuildspartstore.com/nema-17-stepper-motor/ |
13 | 1 | IdlerPlate | 30162-01 | Idler Pulley Bracket | As is | Aluminum ## BOM | Inventables | 5 | 5.00 | https://www.inventables.com/technologies/idler-pulley-bracket |
2 | 1 | MakerSlideX | 25142-14 | MakerSlide | Chop Saw Cut | Aluminum | Inventables | 13.49 | 13.49 | https://www.inventables.com/technologies/makerslide#25142-14 |
15 | 2 | 40x20 Extrusion | 26047-02 | 20 x 20 Extrusion | Chop Saw Cut | Aluminum | MSI | 9 | 18.00 | https://www.inventables.com/technologies/aluminum-extrusion-20mm-x-20mm-clear#26047-02 |
1 | 2 | SidePlate | 30364-01 | SidePlate | CNC Milled | HDPE (High-Density Polyethylene) | Inventables | 7.17 | 14.34 | https://www.inventables.com/technologies/two-color-hdpe-white-on-green#30364-01 |
3 | 1 | SpindleMount | 8492K674 | CNC Milled | Acetal (Delrin) | McMaster Carr | 9.17 | 9.17 | https://www.mcmaster.com/8492K674 | |
16 | 6 | Flanged Ball Bearing | 688ZZ | 688ZZ Flanged Bearing 8x16x5mm | Hardware | Hardened Alloy Steel | Amazon | 1.2 | 7.20 | https://www.amazon.com/uxcell-Bearing-8x16x5mm-Shielded-Bearings/dp/B07Z3F68H4 |
28 | 12 | M8 Washer | 93475A270 | 18-8 Stainless Steel Washer for M8 Screw Size, 8.4 mm ID, 16 mm OD | Hardware | Steel Grade 2 | McMaster Carr | 0.1095 | 1.31 | https://www.mcmaster.com/93475A270/ |
36 | 1 | Back Plane Electronics | Laser Cut | Acrylic | You | 0 | 0.00 | |||
37 | 1 | Bottom Plate Electronics | Laser Cut | Acrylic | You | 0 | 0.00 | |||
38 | 1 | Electronics Window | Laser Cut | Acrylic | You | 0 | 0.00 | |||
42 | 1 | Top Plate Electronics | Laser Cut | Acrylic | You | 0 | 0.00 | |||
6 | 3 | GT3 Timing Pulley 20 Tooth 9mm Belt 8mm Clamp Bore | 2130 | 3GT (GT2-3M) Timing Pulley - 20 Tooth - 9mm Belt - 8mm Clamp Bore | Purchased | Aluminum - 1060 | OpenBuilds / SDP/SI | 9.99 | 29.97 | https://openbuildspartstore.com/3gt-gt2-3m-timing-pulley-20-tooth-9mm-belt-8mm-clamp-bore/ |
7 | 1 | 8mm Acme Nut Block | 740-Set | Nut Block for 8mm Metric Acme Lead Screw | Purchased | Acetal (Delrin) | OpenBuilds | 7.49 | 7.49 | https://openbuildspartstore.com/nut-block-for-8mm-metric-acme-lead-screw/ |
10 | 2 | BeltLoop | 2120 | 3GT (GT2-3M) 9mm Timing Belt - Closed Loop | Purchased | Fluoroelastomer (FKM) | OpenBuilds | 8.99 | 17.98 | https://openbuildspartstore.com/3gt-gt2-3m-9mm-timing-belt-closed-loop/ |
12 | 2 | GT3 Timing Pulley 20 Tooth | 712 | 3GT (GT2-3M) Timing Pulley - 20 Tooth - .250” Bore - 9mm Belt | Purchased | Aluminum - 1060 | OpenBuilds | 7.99 | 15.98 | https://openbuildspartstore.com/3gt-gt2-3m-timing-pulley-20-tooth-250-bore-9mm-belt/ |
17 | 1 | Coupler | 155 | 1/4” x 8mm Flexible Coupling | Purchased | Aluminum | OpenBuilds | 6.99 | 6.99 | https://openbuildspartstore.com/1-4-x-8mm-flexible-coupling/ |
18 | 1 | 8mm Lead Screw | 25-LP | 8mm Metric Acme Lead Screw | Purchased | Hardened Alloy Steel | OpenBuilds | 10.99 | 10.99 | https://openbuildspartstore.com/8mm-metric-acme-lead-screw/ |
20 | 2 | Pulley | 550 | Smooth Idler Pulley Wheel | Purchased | Acetal (Delrin) | OpenBuilds | 5.99 | 11.98 | https://openbuildspartstore.com/smooth-idler-pulley-kit/ |
21 | 1 | 24VDCPowerSupply | LRS-350-24 | 24VDC Single Output Switching Power Supply, can be used for stepper motors and 24VDC spindles | Purchased | - None - | MEAN WELL/Amazon | 38 | 38.00 | https://www.amazon.com/MEAN-WELL-LRS-350-24-Switching-Printer/dp/B07SQLJG5L |
22 | 1 | 48VDCPowerSupply | SE-450-48 | Not used unless 48 VDC Spindle is used | Purchased | - None - | MEAN WELL/Amazon | 75 | 75.00 | https://www.amazon.com/MEAN-WELL-SE-450-48-Supply-Single/dp/B005T7NDXU |
24 | 2 | 8mm Shaft Long | 4634T34 | 5/16 in. x 36 in. Zinc-Plated Round Rod | Purchased | Stainless Steel 18-8 | McMaster Carr | 2 | 4.00 | https://www.mcmaster.com/4634T34 |
25 | 2 | Lower Roller | #669669 | 1-1/4 in. Aluminum Rigid Conduit | Purchased | Aluminum - 6061 | Home Depot | 0 | 0.00 | |
26 | 2 | 8mm Shaft Mid | 4634T34 | 5/16 in. x 36 in. Zinc-Plated Round Rod | Purchased | Aluminum - 6061 | McMaster Carr | 2 | 4.00 | https://www.mcmaster.com/4634T34 |
29 | 4 | 8mm Shaft Short | 4634T34 | 5/16 in. x 36 in. Zinc-Plated Round Rod | Purchased | Aluminum - 6061 | McMaster Carr | 2 | 8.00 | https://www.mcmaster.com/4634T34 |
30 | 2 | Upper Roller | #669669 | 1-1/4 in. Aluminum Rigid Conduit | Purchased | Aluminum - 6061 | Home Depot | 30.2 | 60.40 | https://www.homedepot.com/p/1-1-4-in-Aluminum-Rigid-Conduit-732303/100192934 |
31 | 1 | X Belt | 470 | 3 feet of GT2-2M Timing Belt | Purchased | Fluoroelastomer (FKM) | OpenBuilds | 7.47 | 7.47 | https://openbuildspartstore.com/gt2-2m-timing-belt-by-the-foot/ |
44 | 8 | Spring Loaded Tee Nut | Purchased | Aluminum - 1060 | Inventables | 1.049 | 8.39 | https://www.inventables.com/technologies/post-assembly-t-slot-nuts#26016-01 | ||
45 | 4 | Joining Strip Plate 3 Hole | 646 | 3 Hole Joining Strip Plate | Purchased | Aluminum - 1060 | OpenBuilds | 1.99 | 7.96 | https://openbuildspartstore.com/3-hole-joining-strip-plate/ |
46 | 1 | IEC Power Entry Module | JR-101-1F | Un-Filtered IEC Power Entry Module, IEC C14, 6.3 A, 250 VAC, 1-Pole Fuse Holder | Purchased | - None - | Newark | 2.56 | 2.56 | https://www.newark.com/multicomp-pro/jr-101-1f/fused-iec-power-connector-plug/dp/38K3208 |
47 | 1 | USB - Type B - Female - Panel Mount | B071P2BGK5 | USB 2.0 B Female Panel Mount to 90 Degree USB B Male 0.5m length. | Purchased | - None - | Amazon | 8 | 8.00 | https://smile.amazon.com/gp/product/B071P2BGK5/ or https://www.aliexpress.com/item/32764330008.html 5 pcs |
48 | 1 | L Bracket Double | 485 | L Bracket, Double | Purchased | Aluminum - 1060 | OpenBuilds | 1.49 | 1.49 | https://openbuildspartstore.com/l-bracket/ |
51 | 1 | SWITCH ROCKER SPST 16A 125V | PRASA1-16F-BB0BW | Rocker Switch, On-Off, SPST, Panel Mount, Black, PRA Series | Purchased | - None - | Newark | 0.503 | 0.50 | https://www.newark.com/alcoswitch-te-connectivity/prasa1-16f-bb0bw/switch-operation-on-off/dp/14J6535?st=prasa1-16f-bb0bw |
52 | 1 | 24VDC Fan | 2410SB-05W-B40-B00 | DC Axial Fan, 24 V, Square, 60 mm, 25 mm, Ball Bearing, 19.8 CFM | Purchased | - None - | Newark | 9.4 | 9.40 | https://www.newark.com/nmb-technologies/2410sb-05w-b40-b00/fan-axial-60mm-x-60mm-x-25mm-24vdc/dp/55T9978 |
53 | 1 | Socket button head screw M8x1.25 x 35 | 92095A292 | Socket button head screw M8x1.25 x 35 Stainless Steel 18-8 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.959 | 0.96 | https://www.mcmaster.com/92095A292 |
54 | 16 | Socket button head screw M5x0.8 x 8 | 92095A292 | Socket button head screw M5x0.8 x 8 Stainless Steel 18-8 Black Oxide | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.1633 | 2.61 | https://www.mcmaster.com/92095A207 |
55 | 8 | Socket button head screw M5x0.8 x 12 | 92095A210 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.202 | 1.62 | https://www.mcmaster.com/92095A210 | |
56 | 4 | Socket button head screw M5x0.8 x 14 | 94500A298 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.1406 | 0.56 | https://www.mcmaster.com/94500A298 | |
57 | 3 | Socket button head screw M5x0.8 x 16 | 92095A212 | Socket button head screw M5x0.8 x 16 Stainless Steel 18-8 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.2264 | 0.68 | https://www.mcmaster.com/92095A212 |
58 | 16 | Socket button head screw M5x0.8 x 25 | 94500A299 | Socket button head screw M5x0.8 x 25 Stainless Steel 18-8 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.185 | 2.96 | https://www.mcmaster.com/94500A299 |
59 | 1 | Socket button head screw M5x0.8 x 35 | 97654A222 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.176 | 0.18 | https://www.mcmaster.com/97654A222 | |
60 | 4 | Hex socket head cap screw M5x0.80 x 16 | 91292A126 | Hex socket head cap screw M5x0.80 x 16 Stainless Steel | Purchased | Stainless Steel | McMaster Carr | 0.1363 | 0.55 | https://www.mcmaster.com/91292A126 |
61 | 3 | Hex socket head cap screw M5x0.80 x 35 x 22 | 91292A193 | Purchased | Stainless Steel | McMaster Carr | 0.2928 | 0.88 | https://www.mcmaster.com/91292A193 | |
62 | 4 | Socket button head screw M4x0.7 x 8 | 92095A189 | Socket button head screw M4x0.7 x 8 Stainless Steel 18-8 Black Oxide | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.0919 | 0.37 | https://www.mcmaster.com/92095A189/ |
63 | 10 | Socket button head screw M4x0.7 x 10 | 92095A190 | Socket button head screw M4x0.7 x 10 Stainless Steel 18-8 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.0859 | 0.86 | https://www.mcmaster.com/92095A190/ |
64 | 4 | Socket button head screw M3x0.5 x 10 | 92095A182 | Socket button head screw M3x0.5 x 10 Stainless Steel 18-8 | Purchased | Stainless Steel 18-8 | McMaster Carr | 0.0796 | 0.32 | https://www.mcmaster.com/92095A182/ |
65 | 2 | Hex socket countersunk head screw M3x0.5 x 8 | 92125A128 | Hex socket countersunk head screw M3x0.5 x 8 Stainless Steel Black Oxide | Purchased | Stainless Steel | McMaster Carr | 0.0565 | 0.11 | https://www.mcmaster.com/92125A128/ |
66 | 4 | Hex socket countersunk head screw M3x0.5 x 10 | 92125A130 | Hex socket countersunk head screw M3x0.5 x 10 Stainless Steel Black Oxide | Purchased | Stainless Steel | McMaster Carr | 0.0695 | 0.28 | https://www.mcmaster.com/92125A130/ |
67 | 1 | Hex nut grade A & B M8x1.25 | 93625A300 | Hex nut grade A & B M8x1.25 Stainless Steel | Purchased | Stainless Steel | McMaster Carr | 0.2326 | 0.23 | https://www.mcmaster.com/93625A300/ |
68 | 13 | Hex nut grade A & B M5x0.8 | 93625A200 | Hex nut grade A & B M5x0.8 Stainless Steel | Purchased | Stainless Steel | McMaster Carr | 0.0886 | 1.15 | https://www.mcmaster.com/93625A200/ |
69 | 4 | Hex nut style 1 grade A & B M3x0.5 | 93625A100 | Hex nut style 1 grade A & B M3x0.5 Stainless Steel | Purchased | Stainless Steel | McMaster Carr | 0.0694 | 0.28 | https://www.mcmaster.com/93625A100/ |
70 | 1 | Plain washer large grade A M5 | 91116A140 | Plain washer large grade A M5 Stainless Steel | Purchased | Stainless Steel | McMaster Carr | 0.1296 | 0.13 | https://www.mcmaster.com/91116A140/ |
71 | 1 | Plain washer normal grade A M5 | 98689A114 | Plain washer normal grade A M5 Stainless Steel | Purchased | Stainless Steel | McMaster Carr | 0.0371 | 0.04 | https://www.mcmaster.com/98689A114/ |
Total | $538.79 |