Dear Simon,
I did a clean start of Mathematica and then first I evaluated your last code snippet (the one where the constants are defined). All I can say is that your code seems to work! At least there are no error messages whatsoever.
Henrik