División de valores (int/insigned long)

Buenas noches compañeros,

En el momento estoy trabajando en un proyecto el cual necesito calcular velocidad y mostrarlo en un LCD 16x2. El inconveniente se me presenta al intentar realizar la operación vel=distancia mm/tiempo ms ya que la distancia es un valor int y equivale a 50, el tiempo es un valor unsigned long y la velocidad la tengo en float; el problema ya lo tengo identificado y es que la velocidad no está mostrando los decimales sino que aproxima el valor y genera un entero pero necesito los datos de velocidad completos.

No se si el inconveniente se presenta por operar valores de diferentes tipos int/insigned long.

Ojalá me puedan ayudar y quedo atento.

observa este ejemplo:

void setup()

{
float vel; // valor esperado 1,76 mm/ms
int distancia=12345; //1234 mm (12.34metros)
unsigned long time=7000; //7s (1 minuto)

  vel=(float)distancia/(float)time;
    
  Serial.begin(9600);

  Serial.println (vel);
//Serial.println (vel,DEC); Tambien puedes hacerlo asi para obtener todos los decimales
  
}

void loop()
{}

Ahora ya puedes adaptarlo a tu LCD