make wheel thinner so it clears the screw heads
[challenge-bot] / 3d-printables / wheel-data.scad
CommitLineData
25cd00a6 1/*
2 Copyright (C) 2015 Daniel Watson
3 See the end of the file for license conditions.
4*/
3d90aff0 5// challenge-bot
6// GNU AGPLv3 (or later at your option)
25cd00a6 7// project available here:
8// https://challenge-bot.com/
3d90aff0 9
10// use $fn = 20 while developing, 100 when about to print
11// 20 will make previews fast
12// 100 will make printing smooth
13$fn = 100;
14
3cfef3f3 15wheel_square_spoke_size = 45;
16wheel_square_spoke_thickness = 2;
3d90aff0 17
18wall_width = 3;
19
c513c8ee 20wheel_width = 7;
21c36d93 21wheel_radius =
22 sqrt(2 * pow(wheel_square_spoke_size / 2, 2)) + wall_width / 2 + 1;
3d90aff0 23
24motor_shaft_radius = 3.7;
25motor_shaft_flat_width = 4.8;
26
27tread_radius = 4 / 2;
28
29module mounting_screw_flat() {
3d0dc05f 30 circle(1.1); }
3d90aff0 31
32module motor_shaft_flat(radius, flat_width) {
33 intersection() {
34 circle(radius);
35 square([flat_width, radius * 2], center = true); } }
36
37module motor_shaft(radius,
38 flat_width,
39 shaft_length) {
40 linear_extrude(height = shaft_length) {
41 motor_shaft_flat(radius, flat_width); } }
42
43module rim(radius, wall_width, wheel_width) {
44 linear_extrude(height = wheel_width) {
45 difference() {
46 circle(radius);
47 circle(radius - wall_width); } } }
48
49module motor_shaft_holder_flat(radius, flat_width, wall_width) {
50 difference() {
51 motor_shaft_flat(radius + wall_width,
52 flat_width + wall_width);
53 motor_shaft_flat(radius, flat_width); } }
54
55module motor_shaft_holder(radius, flat_width, wall_width, height) {
56 linear_extrude(height = height) {
57 motor_shaft_holder_flat(radius, flat_width, wall_width); } }
58
59module tread(wheel_radius, tread_radius) {
60 rotate_extrude(convexity = 10) {
61 translate([wheel_radius, 0]) {
62 circle(tread_radius); } } }
63
3d90aff0 64module wheel(radius,
65 width,
66 shaft_radius,
67 shaft_flat_width,
68 wall_width,
69 tread_radius) {
3d90aff0 70 difference() {
71 rim(radius, wall_width * 2, width);
72 translate([0, 0, width / 2]) {
73 tread(radius, tread_radius); } }
3cfef3f3 74 linear_extrude(height = wheel_square_spoke_thickness) {
3d90aff0 75 difference() {
3cfef3f3 76 square(wheel_square_spoke_size, center = true);
3d90aff0 77 mounting_screw_flat(); } }
3cfef3f3 78 translate([0, 0, wheel_square_spoke_thickness]) {
3d90aff0 79 motor_shaft_holder(shaft_radius,
80 shaft_flat_width,
81 wall_width,
3cfef3f3 82 width - wheel_square_spoke_thickness); } }
25cd00a6 83
84/*
85 This file is part of challenge-bot.
86
87 Challenge-bot is free software: you can redistribute it and/or modify
88 it under the terms of the GNU Affero General Public License as published by
89 the Free Software Foundation, either version 3 of the License, or
90 (at your option) any later version.
91
92 GNU Affero Emacs is distributed in the hope that it will be useful,
93 but WITHOUT ANY WARRANTY; without even the implied warranty of
94 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
95 GNU Affero General Public License for more details.
96
97 You should have received a copy of the GNU Affero General Public License
98 along with challenge-bot. If not, see <http://www.gnu.org/licenses/>.
99*/