I've actually tried mixing timer-based-movement with physics and you can just try setting the FPS to say 30 to see that box2d handles this just fine.
I tried a system where you can set the stepPhysics() based on fps but box2d handles it better left alone IMHO.
If you want to check something less often than every frame I would do something like: (depending on if you want to use timer-based or not)
None timer-based:
(main loop)
myTimer = myTimer + 1
if myTimer = 10
DoStuffThatNeedsToBeDoneEvery10thFrame
myTimer = 0
endIf
timer-based: (one way of doing it)
mytimer# = myTimer# + 1 * (getFrameTime() * targetFPS)
if myTimer => 10
DoStuffThatNeedsToBeDoneEvery10thFrame
myTimer = 0
endIf
now the second way of doing it makes it so that if you have for instance 60 FPS as your target, the + 1 would be times 1 (0,0166666666666667 * 60 = 1), so it would stay at + 1. If your game would slip to let's say 30 FPS at one point the increment would be + 2 (0,0333333333333333 * 60 = 2) and thus would reach the number 10 at the same time regardless of current FPS.
So that's one way of doing it timer-based, another way is just to increase myTimer# with getFrameTime() and decide the amount of time you would like to pass. Either way
*Edited twice because of spelling - slightly pissed lilwilly
My hovercraft is full of eels