mesh2objCoord[ah_,  
        aw_]  := {coilRadius Cos[ah] + wireRadius Cos[aw] Cos[ah],  
        coilBottom + coilDh ah/meshDaH + wireRadius Sin[aw],  
        coilRadius Sin[ah] + wireRadius Cos[aw] Sin[ah]}

mesh2objCoord[ah,  aw]

dependencies  =  {meshDaW -> 2 π/(meshCountW - 1), 
        meshDaH -> coilWindingAngleRange/(meshCountH - 1),  
        coilBottom -> -coilHeight/2,  
        coilDh -> coilHeight/(meshCountH - 1)}

tangv1[ah_,  aw_]  :=  D[mesh2objCoord[ah,  aw],  ah]

tangv1[ah,  aw]

tangv2[ah_,  aw_]  :=  D[mesh2objCoord[ah,  aw],  aw]

tangv2[ah,  aw]

normalv[ah_,  
        aw_]  :=  tangv1[ah, aw] \[Cross] tangv2[ah, aw]   /.  
              dependencies  //  
            FullSimplify   // (#1/Norm[#1]) &  // 
        Simplify

normalv[ah, aw]

dependencies  =  {meshDaW -> 2 π/(meshCountW - 1), 
        meshDaH -> coilWindingAngleRange/(meshCountH - 1),  
        coilBottom -> -coilHeight/2,  
        coilDh -> coilHeight/(meshCountH - 1)}

constants  =  {coilRadius -> 15,  wireRadius -> 3,  
        coilHeight -> 40,  coilWindingAngleRange -> 3*2*π,  
        meshCountW -> 20,  
        meshCountH -> 
          40 (coilWindingAngleRange/(2 π))}

coilPlot  = 
      ParametricPlot3D[mesh2objCoord[ah,  aw]  /.  dependencies  /.  
          constants,  {ah, 0, 
          coilWindingAngleRange  /.  constants},  {aw, 0, 
          2  π}]