
\begin{align}
|T_tT_2|=|O_1C|
&=
\sqrt{d^2-(r_2-r_1)^2}
\tag{1}\label{1}
,\\
\phi&=\arcsin\Big(\frac{r_2-r_1}d\Big)
\tag{2}\label{2}
.
\end{align}
Constraint:
\begin{align}
(\tfrac\pi2-\phi)\cdot r_1
+\sqrt{d^2-(r_2-r_1)^2}
+(\tfrac\pi2+\phi)\cdot r_2
&=\tfrac12\,L
\tag{3}\label{3}
,
\end{align}
\begin{align}
\text{or }\qquad
\left(
2\,(r_2-r_1)\arcsin\left(\frac{r_2-r_1}d\right)
-
(L-\pi\,(r_2+r_1)
-2\,\sqrt{d^2-(r_2-r_1)^2})
\right)^2
&=0
\tag{4}\label{4}
.
\end{align}
Unfortunately,
in general,
given $r_1,d$ and $L$
there is no analytic solution for $r_2$
in \eqref{4}, so we need to use numeric methods.
For example, in Excel,
you can type the formula \eqref{4}
and use built-in non-linear solver
to minimize it.
For example,
for $r_1=35,\ d=250,\ L=800$
we get $r_2=59.71462$.
As the first approximation to $r_2$
you can try
\begin{align}
r_{2\,(0)}
&=
r_1+\pi\,d-\frac{\pi^3\,d^2}{d\,(\pi^2-2)+L-2\pi\,r_1}
.
\end{align}
For the above example, $r_{2\,(0)}\approx 59.69$,
which is pretty close.
For the numeric approximation
you can use, for example,
Halley's method
as a root-finding algorithm:
\begin{align}
r_{2(n+1)}
&=
r_{2(n)}
-
\frac{2\,f(r_{2(n)},r_1,d,L)\,f'(r_{2(n)},r_1,d)}
{2\,f'(r_{2(n)},r_1,d)^2-f(r_{2(n)},r_1,d,L)\,f''(r_{2(n)},r_1,d)}
,
\end{align}
where
\begin{align}
f(r_{2},r_1,d,L)
&=
2\,(r_2-r_1)\,\arcsin\Big(\frac{r_2-r_1}d\Big)
-L+\pi\,(r_2+r_1)+2\,\sqrt{d^2-(r_2-r_1)^2}
,\\
f'(r_{2},r_1,d)
&=
2\,\arcsin\Big(\frac{r_2-r_1}d\Big)+\pi
,\\
f''(r_{2},r_1,d)
&=
\frac 2{\sqrt{d^2-(r_2-r_1)^2}}
.
\end{align}
$$
\begin{array}{cc}
\hline
n & r_{2(n)} \\
\hline
0 & 35.0000000000 \\
1 & 59.6915126334 \\
2 & 59.7146200516 \\
3 & 59.7146200510 \\
\hline
\end{array}
$$
This is a minimal python example:
from math import *
def f(r2,r1,d,L) :
"""
r2 - radius of the driven pulley
r1 - radius of the driving pulley
d - the center to center distance between the circles
L - length of the belt
"""
return 2*(r2-r1)*asin((r2-r1)/d)-L+pi*(r2+r1)+2*sqrt(d*d-(r2-r1)**2)
def df(r2,r1,d) :
"""
f'(r2)
"""
return 2*asin((r2-r1)/d)+pi
def ddf(r2,r1,d) :
"""
f''(r2)
"""
return 2/sqrt(d*d-(r2-r1)**2)
def F(r2,r1,d,L) :
"""
next approximation to r2
"""
vf=f(r2,r1,d,L)
vdf=df(r2,r1,d)
vddf=ddf(r2,r1,d)
return r2-2*vf*vdf/(2*vdf**2-vf*vddf)
def calc_r2(r1,d,L,eps=1e-6) :
r2o=r1
r2=F(r2o,r1,d,L)
while(abs(r2-r2o)>eps) :
r2o=r2
r2=F(r2o,r1,d,L)
return r2
print(calc_r2(35,250,800))
# 59.71462005113761
print(calc_r2(20,250,800))
# 72.03312874960544
print(calc_r2(3,250,800))
# 84.05267790667017