diff --git a/README.md b/README.md index 18ab21a..3788f68 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,19 @@ A 'magnetic gearing' approach increases the resolution of the low-cost magnetic The device can be controlled via simple G-Code commands over a USB serial interface and is thus easily integrated into other projects. The firmware implements a complete motion planning stack with look-ahead for smooth and accurate path following capabilities. +## Getting Started -## 💬 NEW: Discord Server +Below is a list of high level steps you can follow if you want to replicate the project. +If you have questions or problems with the build or just want to discuss subjects related to the project, +joint the projects community [Discord Server](https://discord.gg/maRvMVpa2Q'). -Visit the projects community [Discord Server](https://discord.gg/maRvMVpa2Q) to meet and discuss subjects related to the project, -get help for the build or share ideas and applications. +1. Read this Document and watch the linked videos +2. Get the parts listed in [Bill of Materials](documentation/bom/bom.md) +3. Build the device and electronics +4. Upload firmware using VSCode with PlattformIO plugin +5. Calibrate axis -## 🐍 NEW: Python-API +## 🐍 Python-API The lightweight Python API handles all serial communication and provides convenient command execution and debug message printing. The interface includes functions to home, move, and calibrate the device, as well as to query device information. @@ -71,7 +77,7 @@ set_max_acceleration(linear_accel, angular_accel) set_servo_parameter(pos_kp, pos_ki, vel_kp, vel_ki, vel_filter_tc) ``` -## ✨ NEW: Firmware v1.0.1 +## ✨ Firmware v1.0.1 This update improves calibration, homing, logging, and adds several new G-Code commands. @@ -114,7 +120,7 @@ Please check the dimensions of your build against the values set in the construc ## ⚙ Electronics -IMPORTANT: If you fabricated PCB verion v1.2 (see version label on the board) you need to drill out a misplaced via on diode D1 that shorts 5V rail to ground (See [repair image](electronics/pcb_v1.2_fix.jpg) ). The problem was fixed in v1.3. +IMPORTANT: If you fabricated PCB version v1.2 (see version label on the board) you need to drill out a misplaced via on diode D1 that shorts 5V rail to ground (See [repair image](electronics/pcb_v1.2_fix.jpg) ). The problem was fixed in v1.3. The electronics are designed in **KiCAD** and only commonly available modules (motor drivers and MCU boards) are used and connected by a simple PCB. No SMD soldering is required to populate the board to make the build extra accessible. For usual winding resistance of your motors, the device should be powered by $${\color{lightgreen} 5V-6V }$$ (2A) to keep current and heating to a reasonable level. @@ -124,6 +130,10 @@ For usual winding resistance of your motors, the device should be powered by $${ Image 2 +## ⚙ Bill of Materials (BOM) + +See the full [BOM here](documentation/bom/bom.md). + ## ⚙ Firmware The firmware is written in C++ and takes some inspiration from the 'SimpleFOC' project. It aims to be streamlined and readable without any extra fuss, focusing on the hardware used in this project. diff --git a/bom.txt b/bom.txt deleted file mode 100644 index 9e21e01..0000000 --- a/bom.txt +++ /dev/null @@ -1,56 +0,0 @@ -(Incomplete - work in progress...) - ---- Mechanics ------------------------------------------------------------------- - - Qty. Name Size Comments - -* 12 Steel ball D=1.25mm (0.05") Precision of G10 or better. - Can be sourced from small ball bearings - -* 1m PU stretch cord D=1mm e.g. 'Stretch Magic' or 'Magic String' - -* 70 Neodym Cylinder Magnet D=3mm h=4mm - -* 1m Brass Pipe OD=2mm ID=1mm - -* 12 M2 Screw M2x12mm, Countersunk - -* 6 M3 Grub Screw M3x4 - ---- Electronics ------------------------------------------------------------------- - - Qty. Name Comments - -* 1 DC-DC Step Down Module 4.75-23V Step-Down Buck Converter Module -* 1 (1N5819) OR (PMEG4010) Diode (either through hole or SMD can be used) -* 1 RaspberryPi Pico 2 - -* 3 MT6835 Magnetic Encoder Module - -* 3 TB6612FNG Driver -* 3 470 μF Electrolytic Capacitor (anything > 100µF will work well) -* 3 10.0 μF Ceramic Capacitor 0603 (optional) - -* 2 4.7k Resistor 0603 (optional) - -* 1 2 Pin Power Header 7.5 mm pitch -* 4 4 Pin Header 2.5 mm pitch -* 1 8 Pin Header 2.0 mm pitch - -* 3 NEMA 17 Stepper Motor (Body length <= 38mm) - ---- 3D Printing ------------------------------------------------------------------ - - Qty. Name Comments - -* 3 WireFlexureMount 0.4mm+ nozzle will probably require post-processing. - -* 3 RubberBandCollet 0.4mm+ nozzle will probably require post-processing. - -* 3 BallJointMount 0.4mm+ nozzle will probably require post-processing. - -* 3 Motor Mount - -* 1 EndEffector - -* 1 Base Block diff --git a/documentation/bom/bom.md b/documentation/bom/bom.md new file mode 100644 index 0000000..dbf7c78 --- /dev/null +++ b/documentation/bom/bom.md @@ -0,0 +1,37 @@ +# Bill of Materials (BOM) + +## Mechanics +| Name | Qty | Description | Comments | Suggested link | Image | +|------|-----|-------------|----------|----------------|-------| +| Steel ball | 12 | Ø1.25 mm (0.05") | Precision G10 or better. Can be sourced from small ball bearings | | +| PU stretch cord | 1 m | Ø1mm | e.g. "Stretch Magic" or "Magic String" | [Aliexpress](https://www.aliexpress.us/item/3256805953910514.html)| ![Pu strech cord](images/PU_StretchCord.png)| +| Neodym Cylinder Magnet | 70 | Ø3mm h=4 mm | N42 Grade | [Ebay Link](https://www.ebay.de/itm/365333642187?var=635110190027)| +| Brass Pipe | 1 m | OD=Ø2mm ID=Ø1 mm | | [Amazon](https://a.co/d/1pRFmtf)| ![Brass Pipe](images/BrassPipe.png)| +| M2 Screw | 12 | M2×12 mm, Countersunk | | | +| M3 Grub Screw | 6 | M3×4 | | | + +## Electronics +| Name | Qty | Description | Comments | Suggested link | Image | +|------|-----|-------------|----------|----------------|-------| +| DC-DC Step Down Module | 1 | 4.75–23 V Step-Down Buck Converter | | [Aliexpress](https://www.aliexpress.us/item/3256806752772875.html)| ![DC-DC Step Down](images/DC_DC-StepDown.png)| +| (1N5819) OR (PMEG4010) | 1 | Diode (through-hole or SMD) | | | +| Raspberry Pi Pico 2 | 1 | Microcontroller board | | | ![Raspberry Pi Pico 2](images/RaspberryPiPico2.png)| +| MT6835 Magnetic Encoder Module | 3 | Magnetic encoder | | [Aliexpress](https://www.aliexpress.us/item/3256808005140674.html)| ![MT6835 Magnetic Encoder Module](images/MT6835.png)| +| TB6612FNG Driver | 3 | | | [Aliexpress](https://www.aliexpress.us/item/3256806060073976.html)| ![TB6612FNG Driver](images/TB6612FNG.png)| +| 470 µF Electrolytic Capacitor | 3 | > 100 µF | anything > 100µF will work well | | +| 10 µF Ceramic Capacitor 0603 | 3 | Optional | | | +| 4.7 k Resistor 0603 | 2 | Optional | | | +| 2 Pin Power Header | 1 | 7.5 mm pitch | | | +| 4 Pin Header | 4 | 2.5 mm pitch | | | +| 8 Pin Header | 1 | 2.0 mm pitch | | | +| NEMA 17 Stepper Motor | 3 | Body ≤ 38 mm | Body length <= 38mm | | + +## 3D Printing +| Name | Qty | Description | Comments | Image | +|------|-----|-------------|----------|-------| +| WireFlexureMount | 3 | | 0.4 mm+ nozzle may require post-processing | ![Wire Flexure Mount](images/WireFlexureMount.png)| +| RubberBandCollet | 3 | | 0.4 mm+ nozzle may require post-processing | ![Rubber Band Collet](images/RubberBandCollet.png)| +| BallJointMount | 3 | | 0.4 mm+ nozzle may require post-processing | ![Ball Joint Mount](images/BallJointMount.png)| +| Motor Mount | 3 | | | ![Motor Mount](images/MotorMount.png)| +| End Effector | 1 | | | ![End Effector](images/EndEffector.png)| +| Base Block | 1 | | | ![Base Block](images/BaseBlock.png)| diff --git a/documentation/bom/images/BallJointMount.png b/documentation/bom/images/BallJointMount.png new file mode 100644 index 0000000..a5d1de2 Binary files /dev/null and b/documentation/bom/images/BallJointMount.png differ diff --git a/documentation/bom/images/BaseBlock.png b/documentation/bom/images/BaseBlock.png new file mode 100644 index 0000000..9f0808d Binary files /dev/null and b/documentation/bom/images/BaseBlock.png differ diff --git a/documentation/bom/images/BrassPipe.png b/documentation/bom/images/BrassPipe.png new file mode 100644 index 0000000..4c7ca27 Binary files /dev/null and b/documentation/bom/images/BrassPipe.png differ diff --git a/documentation/bom/images/DC_DC-StepDown.png b/documentation/bom/images/DC_DC-StepDown.png new file mode 100644 index 0000000..3e4db97 Binary files /dev/null and b/documentation/bom/images/DC_DC-StepDown.png differ diff --git a/documentation/bom/images/EndEffector.png b/documentation/bom/images/EndEffector.png new file mode 100644 index 0000000..91d6557 Binary files /dev/null and b/documentation/bom/images/EndEffector.png differ diff --git a/documentation/bom/images/MT6835.png b/documentation/bom/images/MT6835.png new file mode 100644 index 0000000..d03b57a Binary files /dev/null and b/documentation/bom/images/MT6835.png differ diff --git a/documentation/bom/images/MotorMount.png b/documentation/bom/images/MotorMount.png new file mode 100644 index 0000000..dca0220 Binary files /dev/null and b/documentation/bom/images/MotorMount.png differ diff --git a/documentation/bom/images/PU_StretchCord.png b/documentation/bom/images/PU_StretchCord.png new file mode 100644 index 0000000..9a8f831 Binary files /dev/null and b/documentation/bom/images/PU_StretchCord.png differ diff --git a/documentation/bom/images/RaspberryPiPico2.png b/documentation/bom/images/RaspberryPiPico2.png new file mode 100644 index 0000000..72fa214 Binary files /dev/null and b/documentation/bom/images/RaspberryPiPico2.png differ diff --git a/documentation/bom/images/RubberBandCollet.png b/documentation/bom/images/RubberBandCollet.png new file mode 100644 index 0000000..3ffecdd Binary files /dev/null and b/documentation/bom/images/RubberBandCollet.png differ diff --git a/documentation/bom/images/TB6612FNG.png b/documentation/bom/images/TB6612FNG.png new file mode 100644 index 0000000..4294111 Binary files /dev/null and b/documentation/bom/images/TB6612FNG.png differ diff --git a/documentation/bom/images/WireFlexureMount.png b/documentation/bom/images/WireFlexureMount.png new file mode 100644 index 0000000..a698c5e Binary files /dev/null and b/documentation/bom/images/WireFlexureMount.png differ