Hi,

Guest

BB

Bruno Boettcher

Sun, Mar 10, 2024 2:14 PM

Hello!

i am in the process of building my own pet-tennisball-launcher, and am

playing around with different shapes of friction wheels.

as with the other examples i found, i too am struggling with enough

friction between the rolls and the ball, especially when dealing with

chewed and utterly salivated tennis balls (i have a "deutsche dogge" who is

able to keep the ball in its mouth without you noticing its there, and

she's loving chewing the thing through for hours) ....

So i found one design interesting, which incurvated the wheel around the

ball shape to maximise contact surface...

and that's what i try to achieve, so i reused the last example, and instead

of just linear_extruding it, (yes, i designed it in 2D ;) ) i begun to

stack it with increasing diameters to fit the ball shape:

```
// Friction Acceleration Wheel for Tennis Ball with Gripping Profile
include <BOSL2/std.scad>;
// Parameters
wheel_radius = 3.4 + 1.5; // Radius of the wheel, considering a new tennis
ball with diameter of approximately 6.8cm
wheel_thickness = 10; // Thickness of the wheel
shaft_hole_radius = 5; // Radius of the hole for the shaft
shaft_hole_distance = 15; // Distance from the center to the shaft hole
rim_width = 5; // Width of the rim
grip_depth = 1; // Depth of the gripping profile
grip_width = 2; // Width of each gripping ridge
ball_diameter = 68; // Diameter of the tennis ball
//wheel_profile();
%translate([-ball_diameter/2, 0, 0]) sphere(r=ball_diameter/2, $fa=.1);
friction_wheel(r= ball_diameter/2, h = 2/3*ball_diameter,fn = 5);
//------------------- modules and other lib stuff
// Create the wheel profile
// 2D profile of the wheel
module wheel_profile( r=ball_diameter/2, num_teeth = 36,grip_depth =
grip_depth,grip_width=grip_width, fn=80) {
assert(num_teeth >0,"use a valid number of teeth's");
// Main wheel body
circle(r=r, $fn=fn);
// Gripping profile
step = 360/num_teeth;
for (angle = [0:360/num_teeth:360])
{
rotate([0,0,angle])
translate([(r+0.49*grip_depth ) ,0,0 ])
square([grip_depth,grip_width ], center=true);
}
}
// 3D friction wheel snugging to the ball
module friction_wheel(r= ball_diameter/2, h = 3/4*ball_diameter,fn = 5,
center = false)
{
max_z = h/2;
translate([(center)?-r:0,0,0])
for(z = [-max_z:2*max_z/fn:max_z])
{
delta = r-sqrt(r^2-z^2);
translate([r+grip_depth, 0, z])
wheel_profile(r=ball_diameter/2+delta);
}
}
```

and now looked for a sweep function....

well i found one in bosl2, but, well... that looks kinda chinese to me :(

so if someone would be kind enough to show me how to put a skin around my

stack of disks?

or tell me what i did wrong in my thought processes

thanks in advance!

--

ciao

Bruno

---==========

http://nohkumado.eu/, http://bboett.free.frhttp://aikido.nohkumado.eu/,

http://bboett.free.fr

http://aikido.zorn.free.fr

Hello!
i am in the process of building my own pet-tennisball-launcher, and am
playing around with different shapes of friction wheels.
as with the other examples i found, i too am struggling with enough
friction between the rolls and the ball, especially when dealing with
chewed and utterly salivated tennis balls (i have a "deutsche dogge" who is
able to keep the ball in its mouth without you noticing its there, and
she's loving chewing the thing through for hours) ....
So i found one design interesting, which incurvated the wheel around the
ball shape to maximise contact surface...
and that's what i try to achieve, so i reused the last example, and instead
of just linear_extruding it, (yes, i designed it in 2D ;) ) i begun to
stack it with increasing diameters to fit the ball shape:
```
// Friction Acceleration Wheel for Tennis Ball with Gripping Profile
include <BOSL2/std.scad>;
// Parameters
wheel_radius = 3.4 + 1.5; // Radius of the wheel, considering a new tennis
ball with diameter of approximately 6.8cm
wheel_thickness = 10; // Thickness of the wheel
shaft_hole_radius = 5; // Radius of the hole for the shaft
shaft_hole_distance = 15; // Distance from the center to the shaft hole
rim_width = 5; // Width of the rim
grip_depth = 1; // Depth of the gripping profile
grip_width = 2; // Width of each gripping ridge
ball_diameter = 68; // Diameter of the tennis ball
//wheel_profile();
%translate([-ball_diameter/2, 0, 0]) sphere(r=ball_diameter/2, $fa=.1);
friction_wheel(r= ball_diameter/2, h = 2/3*ball_diameter,fn = 5);
//------------------- modules and other lib stuff
// Create the wheel profile
// 2D profile of the wheel
module wheel_profile( r=ball_diameter/2, num_teeth = 36,grip_depth =
grip_depth,grip_width=grip_width, fn=80) {
assert(num_teeth >0,"use a valid number of teeth's");
// Main wheel body
circle(r=r, $fn=fn);
// Gripping profile
step = 360/num_teeth;
for (angle = [0:360/num_teeth:360])
{
rotate([0,0,angle])
translate([(r+0.49*grip_depth ) ,0,0 ])
square([grip_depth,grip_width ], center=true);
}
}
// 3D friction wheel snugging to the ball
module friction_wheel(r= ball_diameter/2, h = 3/4*ball_diameter,fn = 5,
center = false)
{
max_z = h/2;
translate([(center)?-r:0,0,0])
for(z = [-max_z:2*max_z/fn:max_z])
{
delta = r-sqrt(r^2-z^2);
translate([r+grip_depth, 0, z])
wheel_profile(r=ball_diameter/2+delta);
}
}
```
and now looked for a sweep function....
well i found one in bosl2, but, well... that looks kinda chinese to me :(
so if someone would be kind enough to show me how to put a skin around my
stack of disks?
or tell me what i did wrong in my thought processes
thanks in advance!
--
ciao
Bruno
===========================================
http://nohkumado.eu/, <http://bboett.free.fr>http://aikido.nohkumado.eu/,
<http://bboett.free.fr>
http://aikido.zorn.free.fr

BB

Bruno Boettcher

Sun, Mar 10, 2024 4:20 PM

Hello again!

stupid me solved it with plain linear_extrude!

```
// Friction Acceleration Wheel for Tennis Ball with Gripping Profile
// Parameters
wheel_radius = 3.4 + 1.5; // Radius of the wheel, considering a new tennis
ball with diameter of approximately 6.8cm
wheel_thickness = 10; // Thickness of the wheel
shaft_hole_radius = 5; // Radius of the hole for the shaft
shaft_hole_distance = 15; // Distance from the center to the shaft hole
rim_width = 5; // Width of the rim
grip_depth = 1; // Depth of the gripping profile
grip_width = 2; // Width of each gripping ridge
ball_diameter = 68; // Diameter of the tennis ball
//wheel_profile();
%translate([-ball_diameter/2, 0, 0]) sphere(r=ball_diameter/2, $fa=.1);
friction_wheel(r= ball_diameter/2, h = 2/3*ball_diameter,fn = 20);
//------------------- modules and other lib stuff
// Create the wheel profile
// 2D profile of the wheel
module wheel_profile( r=ball_diameter/2, num_teeth = 36,grip_depth =
grip_depth,grip_width=grip_width, fn=80) {
assert(num_teeth >0,"use a valid number of teeth's");
// Main wheel body
circle(r=r, $fn=fn);
// Gripping profile
step = 360/num_teeth;
for (angle = [0:360/num_teeth:360])
{
rotate([0,0,angle])
translate([(r+0.49*grip_depth ) ,0,0 ])
square([grip_depth,grip_width ], center=true);
}
}
// 3D friction wheel snugging to the ball
module friction_wheel(r= ball_diameter/2, h = 3/4*ball_diameter,fn = 5,
center = false)
{
max_z = h/2;
step =
2*max_z/fn; translate([(center)?-r:0,0,0])
for(z = [-max_z:step:max_z-step])
{
delta = r-sqrt(r^2-z^2);
dnext = r-sqrt(r^2-(z+step)^2);
translate([r+grip_depth, 0, z])
linear_extrude(height=step,
scale=(ball_diameter/2+dnext)/(ball_diameter/2+delta))
wheel_profile(r=ball_diameter/2+delta);
}
}
```

i was so fixated on a sweep function i forgot the basics.... and the result

looks ok:

[image: friction_wheel.png]

i will probably add a taper in and out....

still, a bosl2 based solution, just to learn how that stuff is supposed to

work, would be nice to know! and as usual, if i did something awkward,

please tell me!

ciao

bboett

Am So., 10. März 2024 um 15:14 Uhr schrieb Bruno Boettcher <bboett@gmail.com

:

Hello!

i am in the process of building my own pet-tennisball-launcher, and am

playing around with different shapes of friction wheels.

as with the other examples i found, i too am struggling with enough

friction between the rolls and the ball, especially when dealing with

chewed and utterly salivated tennis balls (i have a "deutsche dogge" who is

able to keep the ball in its mouth without you noticing its there, and

she's loving chewing the thing through for hours) ....

So i found one design interesting, which incurvated the wheel around the

ball shape to maximise contact surface...

and that's what i try to achieve, so i reused the last example, and

instead of just linear_extruding it, (yes, i designed it in 2D ;) ) i

begun to stack it with increasing diameters to fit the ball shape:

```
// Friction Acceleration Wheel for Tennis Ball with Gripping Profile
include <BOSL2/std.scad>;
// Parameters
wheel_radius = 3.4 + 1.5; // Radius of the wheel, considering a new tennis
ball with diameter of approximately 6.8cm
wheel_thickness = 10; // Thickness of the wheel
shaft_hole_radius = 5; // Radius of the hole for the shaft
shaft_hole_distance = 15; // Distance from the center to the shaft hole
rim_width = 5; // Width of the rim
grip_depth = 1; // Depth of the gripping profile
grip_width = 2; // Width of each gripping ridge
ball_diameter = 68; // Diameter of the tennis ball
//wheel_profile();
%translate([-ball_diameter/2, 0, 0]) sphere(r=ball_diameter/2, $fa=.1);
friction_wheel(r= ball_diameter/2, h = 2/3*ball_diameter,fn = 5);
//------------------- modules and other lib stuff
// Create the wheel profile
// 2D profile of the wheel
module wheel_profile( r=ball_diameter/2, num_teeth = 36,grip_depth =
grip_depth,grip_width=grip_width, fn=80) {
assert(num_teeth >0,"use a valid number of teeth's");
// Main wheel body
circle(r=r, $fn=fn);
// Gripping profile
step = 360/num_teeth;
for (angle = [0:360/num_teeth:360])
{
rotate([0,0,angle])
translate([(r+0.49*grip_depth ) ,0,0 ])
square([grip_depth,grip_width ], center=true);
}
}
// 3D friction wheel snugging to the ball
module friction_wheel(r= ball_diameter/2, h = 3/4*ball_diameter,fn = 5,
center = false)
{
max_z = h/2;
translate([(center)?-r:0,0,0])
for(z = [-max_z:2*max_z/fn:max_z])
{
delta = r-sqrt(r^2-z^2);
translate([r+grip_depth, 0, z])
wheel_profile(r=ball_diameter/2+delta);
}
}
```

and now looked for a sweep function....

well i found one in bosl2, but, well... that looks kinda chinese to me :(

so if someone would be kind enough to show me how to put a skin around my

stack of disks?

or tell me what i did wrong in my thought processes

thanks in advance!

--

ciao

Bruno

---==========

http://nohkumado.eu/, http://bboett.free.frhttp://aikido.nohkumado.eu/,

http://bboett.free.fr

http://aikido.zorn.free.fr

--

ciao

Bruno

---==========

http://nohkumado.eu/, http://bboett.free.frhttp://aikido.nohkumado.eu/,

http://bboett.free.fr

http://aikido.zorn.free.fr

Hello again!
stupid me solved it with plain linear_extrude!
```
// Friction Acceleration Wheel for Tennis Ball with Gripping Profile
// Parameters
wheel_radius = 3.4 + 1.5; // Radius of the wheel, considering a new tennis
ball with diameter of approximately 6.8cm
wheel_thickness = 10; // Thickness of the wheel
shaft_hole_radius = 5; // Radius of the hole for the shaft
shaft_hole_distance = 15; // Distance from the center to the shaft hole
rim_width = 5; // Width of the rim
grip_depth = 1; // Depth of the gripping profile
grip_width = 2; // Width of each gripping ridge
ball_diameter = 68; // Diameter of the tennis ball
//wheel_profile();
%translate([-ball_diameter/2, 0, 0]) sphere(r=ball_diameter/2, $fa=.1);
friction_wheel(r= ball_diameter/2, h = 2/3*ball_diameter,fn = 20);
//------------------- modules and other lib stuff
// Create the wheel profile
// 2D profile of the wheel
module wheel_profile( r=ball_diameter/2, num_teeth = 36,grip_depth =
grip_depth,grip_width=grip_width, fn=80) {
assert(num_teeth >0,"use a valid number of teeth's");
// Main wheel body
circle(r=r, $fn=fn);
// Gripping profile
step = 360/num_teeth;
for (angle = [0:360/num_teeth:360])
{
rotate([0,0,angle])
translate([(r+0.49*grip_depth ) ,0,0 ])
square([grip_depth,grip_width ], center=true);
}
}
// 3D friction wheel snugging to the ball
module friction_wheel(r= ball_diameter/2, h = 3/4*ball_diameter,fn = 5,
center = false)
{
max_z = h/2;
step =
2*max_z/fn; translate([(center)?-r:0,0,0])
for(z = [-max_z:step:max_z-step])
{
delta = r-sqrt(r^2-z^2);
dnext = r-sqrt(r^2-(z+step)^2);
translate([r+grip_depth, 0, z])
linear_extrude(height=step,
scale=(ball_diameter/2+dnext)/(ball_diameter/2+delta))
wheel_profile(r=ball_diameter/2+delta);
}
}
```
i was so fixated on a sweep function i forgot the basics.... and the result
looks ok:
[image: friction_wheel.png]
i will probably add a taper in and out....
still, a bosl2 based solution, just to learn how that stuff is supposed to
work, would be nice to know! and as usual, if i did something awkward,
please tell me!
ciao
bboett
Am So., 10. März 2024 um 15:14 Uhr schrieb Bruno Boettcher <bboett@gmail.com
>:
> Hello!
>
> i am in the process of building my own pet-tennisball-launcher, and am
> playing around with different shapes of friction wheels.
>
> as with the other examples i found, i too am struggling with enough
> friction between the rolls and the ball, especially when dealing with
> chewed and utterly salivated tennis balls (i have a "deutsche dogge" who is
> able to keep the ball in its mouth without you noticing its there, and
> she's loving chewing the thing through for hours) ....
> So i found one design interesting, which incurvated the wheel around the
> ball shape to maximise contact surface...
>
> and that's what i try to achieve, so i reused the last example, and
> instead of just linear_extruding it, (yes, i designed it in 2D ;) ) i
> begun to stack it with increasing diameters to fit the ball shape:
>
> ```
> // Friction Acceleration Wheel for Tennis Ball with Gripping Profile
> include <BOSL2/std.scad>;
>
> // Parameters
> wheel_radius = 3.4 + 1.5; // Radius of the wheel, considering a new tennis
> ball with diameter of approximately 6.8cm
> wheel_thickness = 10; // Thickness of the wheel
> shaft_hole_radius = 5; // Radius of the hole for the shaft
> shaft_hole_distance = 15; // Distance from the center to the shaft hole
> rim_width = 5; // Width of the rim
> grip_depth = 1; // Depth of the gripping profile
> grip_width = 2; // Width of each gripping ridge
> ball_diameter = 68; // Diameter of the tennis ball
>
> //wheel_profile();
> %translate([-ball_diameter/2, 0, 0]) sphere(r=ball_diameter/2, $fa=.1);
> friction_wheel(r= ball_diameter/2, h = 2/3*ball_diameter,fn = 5);
>
> //------------------- modules and other lib stuff
> // Create the wheel profile
> // 2D profile of the wheel
> module wheel_profile( r=ball_diameter/2, num_teeth = 36,grip_depth =
> grip_depth,grip_width=grip_width, fn=80) {
> assert(num_teeth >0,"use a valid number of teeth's");
> // Main wheel body
> circle(r=r, $fn=fn);
>
> // Gripping profile
> step = 360/num_teeth;
> for (angle = [0:360/num_teeth:360])
> {
> rotate([0,0,angle])
> translate([(r+0.49*grip_depth ) ,0,0 ])
> square([grip_depth,grip_width ], center=true);
> }
> }
> // 3D friction wheel snugging to the ball
> module friction_wheel(r= ball_diameter/2, h = 3/4*ball_diameter,fn = 5,
> center = false)
> {
>
> max_z = h/2;
> translate([(center)?-r:0,0,0])
> for(z = [-max_z:2*max_z/fn:max_z])
> {
> delta = r-sqrt(r^2-z^2);
> translate([r+grip_depth, 0, z])
> wheel_profile(r=ball_diameter/2+delta);
> }
> }
> ```
>
> and now looked for a sweep function....
> well i found one in bosl2, but, well... that looks kinda chinese to me :(
> so if someone would be kind enough to show me how to put a skin around my
> stack of disks?
> or tell me what i did wrong in my thought processes
>
> thanks in advance!
>
> --
> ciao
> Bruno
>
> ===========================================
> http://nohkumado.eu/, <http://bboett.free.fr>http://aikido.nohkumado.eu/,
> <http://bboett.free.fr>
> http://aikido.zorn.free.fr
>
--
ciao
Bruno
===========================================
http://nohkumado.eu/, <http://bboett.free.fr>http://aikido.nohkumado.eu/,
<http://bboett.free.fr>
http://aikido.zorn.free.fr

Replying to:

Empathy v1.0
2024 ©Harmonylists.com