Anticipate the play, not the call. Don't think, "This will be a block", or, "This will be a charge". Think, "This will be a crash".
Referee the defense. Be sure to keep an eye on the location and movement of the defender.
It's easier to make the proper call if you're stationary, not on the run. If you can't get to your desired spot, stop, and try to get a good angle.
Surprised by a trainwreck? Don't make a call and 100% of the gym will pissed at you. Give it your best educated guess and only 50% of the gym will be pissed at you.
A defensive player does not have to remain stationary to take a charge. A defender may turn away, or duck, to absorb contact, provided the defender has already established legal guarding position, which is both feet on the playing court, and facing the opponent. The defender can always move backwards, or sideways, to maintain a legal guarding position, and may even have one or both feet off the floor when contact occurs. That player may legally rise vertically. If the defender is moving forward, then the contact is caused by the defender, which is a blocking foul. If the opponent with the ball is airborne, the defender must have obtained legal position before the opponent left the floor.