Advertisement
7134956

Untitled

Dec 29th, 2019
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.46 KB | None | 0 0
  1. float pickup_obsrver(nonLinObs_TypeDef *p) {
  2.     // Absolute BEMF voltage.
  3.     float Vdq = sqrtf(SQ(*p->Var) + SQ(*p->Vbr));
  4.  
  5.     float factor = 1.0f / Vdq;
  6.  
  7.     float x1 = *p->Var * factor;
  8.     float x2 = *p->Vbr * factor;
  9.  
  10.     float bias = -M_PI_2;
  11.  
  12.     if(*p->S < 0) {
  13.         bias = -bias;
  14.         Vdq = -Vdq;
  15.     }
  16.  
  17.     m_rotf(x1, x2, bias, &p->x1, &p->x2);
  18.  
  19.     float ph = fast_atan2f(p->x2, p->x1);
  20.  
  21.     if(ph == ph) {
  22.         p->ph = ph;
  23.         p->x1 *= *p->l;
  24.         p->x2 *= *p->l;
  25.     }
  26.  
  27.     return Vdq;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement