I won't delve into the issue whether this should be done or not.
The LaTeX kernel defines
\def\hbar{{\mathchar'26\mkern-9muh}}
and as such \mathrm{\hbar} should give an upright \hbar. However, the negative space of 9 math units is a wee bit too much for the upright letter; 8mu looks better, so you can use
\renewcommand*{\hbar}{{\mkern-1mu\mathchar'26\mkern-8mu\mathrm{h}}}
Care should be taken when font packages are loaded, for many of them contain \hbar as symbol. Obvious example: amssymb. In this case the redefinition of \hbar bust be issued after loading any font packages. To be on the safe side the above redefinition could be put into a \AtBeginDocument hook
\AtBeginDocument{\renewcommand*{\hbar}{{\mkern-1mu\mathchar'26\mkern-8mu\mathrm{h}}}}
EDIT To lower the bar a little the safest way is IMO to put it into a box and lower it by an amount relative to the height of the box.
\documentclass{article}
\begin{document}
\renewcommand*{\hbar}{{\mkern-1mu\mathchar'26\mkern-8mu\mathrm{h}}}
$\hbar \scriptstyle\hbar \scriptscriptstyle\hbar$
\renewcommand*{\hbar}{{\mathpalette\hbaraux\relax\mathrm{h}}}
\newcommand*{\hbaraux}[2]{\sbox0{\mathsurround=0pt$#1\mathchar'26$}\mkern-1mu\lower.07\ht0\box0\mkern-8mu}
$\hbar \scriptstyle\hbar \scriptscriptstyle\hbar$
\end{document}

\mathrm{\hbar}? – Henri Menke Feb 05 '20 at 10:09\hbaris not a true constant, because it's only known up to a certain precision, so it actually changes each time the measurements get better. – Henri Menke Feb 05 '20 at 10:17:-)– campa Feb 05 '20 at 10:20\usepackage{tipa}breaks my document. @Cicada “ℏ” may be defined as italic in Unicode, that doesn't mean there isn't also a “ħ” symbol. – m93a Feb 05 '20 at 12:24\usepackage{tipa}breaks several existing equations andxelatexrefuses to build the document. The equations fail with:Font shape \T3/lmr/m/n' undefined (Font) using `T3/cmr/m/n' instead.` and several other errors. – m93a Feb 05 '20 at 17:08