This Gaffer on Games article will explain more than you ever need to know. (great article on timesteps)
At a very simple level, you want to calculate how long since the last frame and use that in your movement calculations. If you attempt to cap it at, say, 60fps, you're not going to be able to check every 16.6666ms exactly. You may end up with an update call at 16.7 ms after the last frame. You multiply your velocity vectors by 0.0167 or whatever and move the object.
If you ran it on a slow computer, maybe getting only 10 fps - so one update per 100ms, you would instead multiply the velocity by 0.1 - the objects may be jerkier, but they will move at the same speed. The last code example in the article shows how to do this (it's very simple).
Also check out:
Frame Independent MovementFrame Independent Movement (duplicate?)
Time based vs frame basedTime based vs frame based
Fixed step vs variable stepFixed step vs variable step