What is driving the zero crossing circuit? As you don't have a diode connected in reverse across the opto isolator input (to protect it against reverse voltage), I presume you are feeding it with low voltage from a transformer. If so, then you will probably get some phase shift in the transformer, which could explain what is going wrong. A solution would be to feed it directly from the mains (with a suitably-increased value series resistor of sufficient voltage rating, and the protection diode added) - but only if you are comfortable with doing mains-voltage wiring.
Did you consider a mosfet? I always thought SCR's were kinda jumpy.
Did you understand my comment about delayMicroseconds()? You don't check for that limit in your code yet.
Please enter a valid email to subscribe
We need to confirm your email address.
To complete the subscription, please click the link in the
email we just sent you.
Thank you for subscribing!
via Egeo 16