It's rare these days to see stepper motors (apart from really small ones) driven by a simple H-Bridge.
You need to look at your detailed spec sheet and find the winding inductance, which in your case it appears is 1.5 mH.
From there it takes a bit of math to figure out what you exactly get out of the motor, but you can use a quick online calculator to get approximations.
For your stepper this was the result:
This shows you can get to about 96 rpm.
Note that there is no microstepping achievable for this type of configuration, so you can only get 200 steps per rev.
There will be losses (voltage) in your H-bridge so you don't want a 3 V supply, depending on whether the H-bridge has transistors or FETs you could need up to 5+ V.
I'd suggest that one solution would be use higher voltage and drive with a constant current driver above the H-bridge.
Or you could put a series resistor in series with each winding to limit the current.
There will be greater power dissipation but I assume that may be ok for you.
One H-bridge able to drive your motor would appear to be the TLE 5206 from Infineon. This can handle 5 A, but needs a supply of 6 V or above to work.
you could add a 1 Ohms resistor in series with each winding (Your motors are 4 wire so this will work).
The state of your H-bridge drive is as follows:
In these diagrams the 0 and 1 in the table indicate +3 A and -3 A current through winding 1a-1b. 0 and 1 under 2a-2b represent the current for the second winding. Providing the RL time constant of your motor is short compared to state time, then this method (values of drive) holds true.
Note: The 1a-1b signals can be produced by 2 ports on your Arduino, or you could use one port and an inverter. In the latter case this means you cannot brake the motor by having 0 current/short across the motor. You can try this out for yourself by leaving the motor winding unconnected and then manually spinning the shaft. Little effort is required and you only feel the magnetic detent positions. If you then short the 1a-1b, 2a-2b windings, the effort to turn the motor is large. This is a brake condition.
If you drive the motor at a speed where the RL time constant is a large part of the state time (>50%) then the drive needs to become a bit more complicated (and you then need to consider RMS and Peak currents). The complication is that the current waveform becomes what's known as sinusoidal and in it's most primitive form (Full step) would look like this:
Note: now that there is actually a new state in the drive steps from the Arduino .... 0 Amps. This means you can't use the invertor drive method and must drive the 1a-1b, 2a-2b using individual ports for the H-bridge halves.
For your application I doubt you will need to consider the complications of sinusoidal drive, though it's possible you could include brake to give you a lower power state with good hold characteristics.