A gyro measures angular velocity, and is relatively insensitive to other movement. You would need to differentiate to get angular acceleration. An accelerometer measures acceleration. Period. It will respond to reorientation with respect to gravity (as gravity is an acceleration). It will respond to linear acceleration. If offset from the axis of rotation, it will respond to centripetal acceleration, which will be related to angular velocity (though if motion is sinusoidal, you will need to keep track of tangential accelerations).
If you can orient the accelerometer to be right on the axis of rotation, you can easily track the orientation with respect to gravity (that is, Z), but not so easily in the xy plane (if that is the earth plane in your system)
Your situation may be easier to use some sort of absolute or relative encoder, which will give you angular position without worrying about drifts and offsets associated with integration.
With your improved description, you might want to die toy measure torque!
http://www.omega.com/googlebase/product.html?pn=TQ513-514-FOOTMOUNT&gclid=Cj0KEQiAtZWkBRC9ibSfhoKEyLYBEiQA5fDxkcDLSo3_jC7_lsm5amhIy02A4MfjEriBgxXRaW5BxcYaAgOy8P8HAQ
I assume this is a 2-stroke engine.
So you want to use the stepper to deliver power, and hence maintain a relatively constant angular velocity as the power stroke finishes, and continue through compression until the IC engine fires and generates power again.
That should be two fixed points on each rotation, though it might take a bit of care finding where those points are (hence, partly, my comment lower-down about using a high-resolution sensor)
You could sense those positions with two Hall switches and magnets attached to the shaft. That is how some motor vehicle engines sense shaft position.
Hall effect sensors should be good for more than 1000 rps, e.g. 60,000 rpm.
Most reasonable microcontrollers could track 4,000rpm with much better than 0.1% accuracy.
However, driving the stepper, with only 12 steps might be tricky to set up, and drive. 12 steps is 30 degrees per step, which is quite a lot compared to the motor's cycle. This sounds more like a BLDC motor than a stepper motor.
Even with 8 step micro-stepping, the angle is quite big. AND, 8hp is about 6kW+, which is quite a lot of power to switch and control.
Further, to maintain near-maximum torque, the movement of the magnetic field needs to track the motor's rotation reasonably accurately. I'd be tempted to go for 'overkill' and use a high resolution rotation sensor. That might be Hall Effect, like something from AustriaMicroSystems (AMS), or something optical.
Edit:
Texas instruments (TI) have some useful documentation and videos on 'Feld Oriented Control' (FOC) for BDC motors which may help. A web search will find this stuff.
TI have some affordable (sub $100) development boards for low-power (10W?) control too, as does ST Micro, and I'm sure, others. There are 'fast/easy start development kits' for motor control. I haven't used them, but they claim to have control software 'ready to go'.
Summary:
Sensing the shaft position for the IC engine might be a relatively easy part of the project.
Best Answer
This is my attempt at solving this problem.
So, for the sake of simplicity let us just consider that we have this shaft that is attached to the load with a mass of 0.223kg. The load is 30 inches/0.762 meters away from the motor. Though I'll be slightly more since the load isn't going to be a point in space. The gravitational force acting on the load is \$0.223 \cdot 9.8 = 2.1854N\$
The torque can be described as \$\tau = Fd\sin(\theta)\$ or as \$\tau = Ia\$
In this case the motor torque is the sum of the gravitational torque + the torque to rotate something. If you grab something and try to rotate it 90º with your arm, you'll realize that the closer it gets to 90º the easier it is to move it, we can then deduce that the gravitational torque is: \$\tau = 0.223 \cdot 9.8 \cdot 0.762 \cdot \cos{(\theta)} = 1.665 \cdot \cos{(\theta)}\$
The torque to rotate something is: \$\tau = Ia = \frac{0.223 \cdot 0.762^{2}}{2} \cdot a = 0.0647 \cdot a\$
Now we have an expression for the motor torque \$\tau = 0.0647 \cdot a + 1.665 \cdot \cos{(\theta)}\$
Our goal here is to lift and safely rotate the load 90º counterclockwise, therefore a great way to achieve this is by increasing the velocity and then decreasing it as a sinusoidal pattern. We want it to have a maximum velocity half way and then decrease the velocity the other half way. This avoids the need for the motor to instantly break thus avoiding damage. All of this has to be accomplished in 0.7s as you've requested.
First things first, if we want the velocity as a sinusoidal pattern, we need to use the mathematical sine wave. That is, that at any instant moment the velocity can be defined as the following: \$V = V_{max} \cdot \sin(x)\$
Now, what is \$x\$? Let's think about it, if at half way which is 0.7/2 = 0.35s in the operation we want to have the maximum velocity then \$\sin(0.35k) = 1\$, where \$k\$ is just some arbitrary constant to help us accomplish the equality. If we solve for \$k\$ we find that it is equal to \$\frac{10}{7}\pi\$, mathematically it is equal to \$\frac{10}{7}\pi\ + \frac{40y\pi}{7}\$, \$y \in \mathbb{Z}\$ but since we just need a practical answer for this case then we can assume that \$y = 0\$
Going back to the previous expression we now have that \$V(t) = V_{max} \cdot \sin(t\frac{10}{7}\pi)\$ since this is a rotational motion then we need an expression for the angular velocity which is analogous to the velocity one: \$\omega(t) = \omega_{max} \cdot \sin(t\frac{10}{7}\pi)\$
For figuring out the maximum angular velocity, we'll do the following \$\omega(t) = \omega_{max} \cdot \sin(t\frac{10}{7}\pi) = \frac{\mathrm{d} \theta}{\mathrm{d} t}\$ if you think about it, the angular velocity is just the instantaneous change in the angle with respect to time.
We can therefore solve this DE like this:
\$\int_{0}^{0.7} \omega_{max} \cdot \sin(t\frac{10}{7}\pi) \cdot dt = \int_{0}^{\frac{\pi}{2}}d\theta\$
\$\omega_{max} = \frac{5\pi^{2}}{14} \approx 3.525 rad/s\$
In order to simplify things lets just use the decimal approximation, such that: \$\omega(t) = 3.525 \cdot \sin(t\frac{10}{7}\pi)\$
If we graph this function this is what it looks like:
which is precisely what we want. Rememeber our objective is torque, and that's all got to do with force which is directly proportional to acceleration.
The angular acceleration is nothing more than the instantaneous rate of change of the angular velocity with respect to time, that is \$a_{\omega}(t) = \frac{\mathrm{d} \omega}{\mathrm{d} t}\$
Taking the derivative yields: \$a_{\omega}(t) =\frac{141\pi}{28}\cdot\cos({t\frac{10}{7}\pi)} \approx 15.82\cdot\cos({t\frac{10}{7}\pi)}\$
The graph is kinda messy to show as a simple image but if you do it on your own you'll see how you start off with maximum acceleration, at half way you have no acceleration and then you start decelerating in order to softly end.
Recall \$\tau = 0.0647 \cdot a + 1.665 \cdot \cos{(\theta)} = 0.0647 \cdot 15.82\cdot\cos({t\frac{10}{7}\pi)} + 1.665 \cdot\cos({t\frac{5}{7}\pi)} = 1.02\cdot\cos({t\frac{10}{7}\pi)} + 1.665 \cdot\cos({t\frac{5}{7}\pi)}\$
Why is \$\theta\$ all of the sudden \$t\frac{5}{7}\pi\$, it's the exact same reason as explained above.
We now have an expression for the torque that changes depending on the time.
We might as well look at a few other things now that we're at it. For instance, the instantaneous power. Power is defined as: \$P = \tau\omega\$
\$P(t) = (1.02\cdot\cos({t\frac{10}{7}\pi)} + 1.665 \cdot\cos({t\frac{5}{7}\pi)}) \cdot 3.525 \cdot \sin(t\frac{10}{7}\pi)\$
The power graph:
The graph clearly depicts how there are instances in time where there is no power.
For the maximum power it's as simple as finding the horizontal tangent since that is the peak of the function, therefore \$\frac{\mathrm{d} P(t)}{\mathrm{d} t} = 0\$ solving for \$t\$ gives various values, selecting the largest one gives us 0.2245. \$P(0.2245) = 6W\$ which is the maximum power.
If we want to calculate the average power, we'll have to first take into consideration that there are two parts to this function, one is positive and the other negative. So, in order to compute the average we shall calculate the sum of the area under the positive curve + the absolute value of the area under the negative curve, all of that divided by 0.7.
The average power is: \$\frac{1}{0.7}(\int_{0}^{0.5125}(1.02\cdot\cos({t\frac{10}{7}\pi)} + 1.665 \cdot\cos({t\frac{5}{7}\pi)}) \cdot 3.525 \cdot \sin(t\frac{10}{7}\pi) dt + \left |\int_{0.5125}^{0.7}(1.02\cdot\cos({t\frac{10}{7}\pi)} + 1.665 \cdot\cos({t\frac{5}{7}\pi)}) \cdot 3.525 \cdot \sin(t\frac{10}{7}\pi) dt \right |) = 2.78W\$
The overall total energy used up is the product of the average power and the elapsed time, \$2.78 \cdot 0.7 = 1.946J\$
Probably a low power stepper motor has no issue in doing this task. If you really think about it, it is just a 223g load attached to a motor that isn't very far away.
In order to control the angular velocity and torque just use pwm connected to the gate of a mosfet, like shown here:
Source
You'd also want to use gears to increase torque and reduce angular velocity. Remember voltage is proportional to angular velocity and current is proportional to torque, but we use gears instead of trying to fry a motor with so much current. In your original question you asked for it to go up and down, that is, you want to change the rotation. This can easily be achieved using a H-bridge with 4 mosfets like so:
Source
I hope this has at least somewhat helped you!
Note, I've used SI units all the time so remember to multiply it by some constant to convert it to the units you desire.