DPI and velocity

Okay so here is the situation,

I have a bouncing ball which I am applying a normalized velocity to so it can move and bounce continuously around. I am using a value to modify the speed based on the DPI of the device it is on in hopes that it will uniformly move at the same relative speed across devices. The idea is it takes the same time to get from the top of the device screen from the bottom on all devices (with minute difference based on aspect ratio I assume).

Unfortunately though the code I have works odd in different ways.

_dpiCompensation = 100 / Screen.dpi;
when calculating my DPI like this it performs perfectly in unity editor but slows down massively on smaller android devices that I have tested

Scaler is reference to the main camera canvas scaler
_scaler = Main.Instance.CanvasScaler;
_dpiCompensation = _scaler.referenceResolution.x / Screen.width;
if (_dpiCompensation < .8f)
_dpiCompensation = .8f;
else if (_dpiCompensation > 2.5f)
_dpiCompensation = 2.5f;
when I use this value the normal phone sized devices work fine but a full size iPad has an ultra fast ball where a samsung tablet device has a super slow ball.

_ballSpeed = 620f * _dpiCompensation;
_body.velocity = _ballSpeed*(_body.velocity.normalized);

I was hoping someone could explain what I was doing wrong or explain how velocity works more specifically that I may be able to understand other possible calculations to achieve the same result.

thanks,
Anthony

P.S. This is in Unity2D

I have uploaded a simple project that launches the ball to bounce around. It moves at different relative speeds given the device, and the purpose of the DPI compensation code is to make it uniform.

Thanks,
Anthony

2226242–148283–BallBouncingDPITestProject.unitypackage (1.07 MB)