\documentclass[tikz]{standalone}

\usetikzlibrary{patterns, decorations.pathmorphing, positioning, decorations.pathreplacing, decorations.markings}

\begin{document}

% https://tex.stackexchange.com/questions/476076/drawing-mechanical-systems-mass-damper-spring-in-latex
% https://tex.stackexchange.com/questions/3161/tikz-how-to-draw-an-arrow-in-the-middle-of-the-line
\begin{tikzpicture}[every node/.style={outer sep=0pt}, thick,
    mass/.style={draw, thick},
    spring/.style={thick, decorate,
        decoration={zigzag, pre length=0.3cm, post length=0.3cm, segment length=6}},
    ground/.style={fill, pattern=north east lines, draw=none,
        minimum width=0.75cm, minimum height=0.3cm},
    dashpot/.pic={
        \fill[white] (-0.1,-0.3) rectangle (0.3,0.3);
        \draw (-0.3,0.3) -| (0.3,-0.3) -- (-0.3,-0.3);
        \draw[line width=1mm] (-0.1,-0.3) -- (-0.1,0.3);},
    generator/.pic={
        \draw[black, fill=white] (0, 0) circle (0.3);
        \draw plot[domain=-0.2:0.2, samples=30] (\x, {0.175*sin(180*\x/0.2)});},
    mid arrow/.style={postaction={decorate, decoration={
        markings,
        mark=at position .55 with {\arrow{>}}}}}]

\draw[spring] (0, 0) coordinate(A) -- ++(1.5, 0) coordinate(B) node[midway, above, yshift=8pt]{\strut{$k$}};
\draw (B) -- ++(1.5, 0) coordinate(C) pic[midway]{dashpot} node[midway, above, yshift=8pt]{\strut{$k \tau$}};
\draw (C) -- ++(1.5, 0) coordinate(D) pic[midway]{generator} node[midway, above, yshift=8pt]{\strut{$T \Theta(\ell)$}};
\draw (D) -- ++(0, 2) -- ++(-1.5, 0) coordinate(E) -- ++(-1.5, 0) pic[midway]{dashpot} node[midway, above, yshift=8pt]{\strut{$\zeta$}} -- ++(-1.5, 0) -- (A);
\draw[mid arrow] (-1, 1) -- ++(1, 0) node[midway, above, yshift=3pt]{$F_{\mathrm{ext}}$};
\draw[->] (0, -0.75) -- ++(4.5, 0) node[midway, below, yshift=-3pt]{$\ell$};
\draw (4.5, 1) -- ++(1, 0);

\end{tikzpicture}

\end{document}

