You can calculate an reasonably accurate RPM/torque/voltage correlation in this way, I believe this to be true from my experience but I encourage anyone to chime in where my assumptions may be wrong:
The motor current is proportional to the torque delivered.
The motor free-running speed is proportional to the voltage applied.
So take the freerunning value for VX, say VX = 450 RPM. Vx / 450 RPM = Kv (Kv = I_running1 * ResistanceMotor / 450 RPM)
You know the “Orpm” torque, the stall torque. Say Istall = 2 nm. Kt = Istall/ 2 nm (Kt = I_torque * Torque)
For my definitions of Kv and Kt I might not have used the correct typical units, I dont really know what they are. My point is they’re proportional to various things that we do know. And Kt and Kv are constant for a given motor.
Basically I’m describing two cases, one case in which all the voltage applied is going to spinning the motor freely. The second case in which all the voltage is going to developing a torque. Intermediate scenarios will always be a combination of the two.
We can imagine the following, that the V-applied will be in part to the free-running portion, and in part to the torque portion. This is just the idea that the “the current running through the windings is the result of the applied voltage minus the back EMF”
So Vapplied = (ResistanceMotor)(I_running) + (ResistanceMotor)(I_torque)
you can also think of it as:
Vapplied = Vemf + V"actual" where V"actual" is about the voltage that is developing current through the windings of the motor.
Geez I’m not doing well describing anything.
But now we have something, if you follow me.
Say, we want to know what the running speed will be for a certain torque demanded, at a certain applied voltage. Well you know the current that be required for that certain torque demanded, it is proportional as before. So Kt = Istall / 2 nm (from before.) Kt = I_required / certain torque demanded. I_required is therefore known (I_required is what I called I_torque earlier.)
Now we know Vapplied, we know I_torque, we know ResistanceMotor, and so we can find I_running. Kv = ResistanceMotor*I_running / X RPM. Know that I_running is known for this case, and we know the Kv from the free-running case, we can find X_rpm that we expect.
This general idea works pretty well, but can run into problems at the extreme and if you want anything better than a rough estimate. It can be tuned a little to improve accuracy in a couple ways.
I realize that I have gone a bit off topic, but I think this is a practical sort of bit of information that serves as much use to me as a manufacturer chart. The manufacturer chart has the benefit of simply calibrating the many assumptions this formula ignores. For example that the winding resistance will be constant, that the motor will spin 100% freely, that the field will be 100% proportional to the current, and a few other things.
Another thing to remember is to probably not run them above 30% of their stall current.