Hello Everybody,
In the VESC 6 MKIV description , it mentioned that the it is able to detect with precision any type of motor including BLDC and DC motors... Is it possible to use an induction AC motor with
this Hw/Tool Firmware ? at least to run it in open loop mode ?
Thank you for your feedback in advance!
Not at this stage. It would need new code to support ACIM.
Here is a code that I find on other thread in here. Ayone tested, will this work with induction motor?
Its from here page 30 ->
https://repozitorij.svkst.unist.hr/islandora/object/ossst:883/datastream...
v o i d o b s e r v e r _ u p d a t e ( f l o a t v _ a l p h a , f l o a t v _ b e t a , f l o a t i _ a l p h a , f l o a t
i _ b e t a ,
f l o a t dt , v o l a t i l e f l o a t *x1 , v o l a t i l e f l o a t *x2 ,
v o l a t i l e f l o a t *phase , v o l a t i l e m o t o r _ a l l _ s t a t e _ t *motor ) {
30
v o l a t i l e m c _ c o n f i g u r a t i o n *conf_now = motor −>m_conf ;
c o n s t f l o a t L = ( 3 . 0 / 2 . 0 ) * conf_now −> f o c _ m o t o r _ l ;
f l o a t R = ( 3 . 0 / 2 . 0 ) * conf_now −> f o c _ m o t o r _ r ;
/ / S a t u r a t i o n c o m p e n s a t i o n
c o n s t f l o a t s i g n = ( motor −> m _ m o t o r _ s t a t e . i q * motor −> m _ m o t o r _ s t a t e . vq
) >= 0 . 0 ? 1 . 0 : − 1 . 0 ;
R −= R * s i g n * conf_now −> f o c _ s a t _ c o m p * ( motor −> m _ m o t o r _ s t a t e .
i _ a b s _ f i l t e r / conf_now −> l _ c u r r e n t _ m a x ) ;
/ / T e m p e r a t u r e c o m p e n s a t i o n
c o n s t f l o a t t = m c _ i n t e r f a c e _ t e m p _ m o t o r _ f i l t e r e d ( ) ;
i f ( conf_now −> foc_temp_comp && t > − 2 5 . 0 ) {
R += R * 0 . 0 0 3 8 6 * ( t − conf_now −> foc_temp_comp_base_temp ) ;
}
f l o a t r o t o r _ f l u x _ a l p h a = 0 . 0 ;
f l o a t r o t o r _ f l u x _ b e t a = 0 . 0 ;
f l o a t c o s _ r o t o r = 0 . 0 ;
f l o a t s i n _ r o t o r = 0 . 0 ;
c o n s t f l o a t L _ i a = L * i _ a l p h a ;
c o n s t f l o a t L_ib = L * i _ b e t a ;
c o n s t f l o a t R_ia = R * i _ a l p h a ;
c o n s t f l o a t R_ib = R * i _ b e t a ;
c o n s t f l o a t lambda_2 = SQ( conf_now −> f o c _ m o t o r _ f l u x _ l i n k a g e ) ;
c o n s t f l o a t gamma_half = motor −>m_gamma_now * 0 . 5 ;
c a s e FOC_OBSERVER_ORTEGA_ITERATIVE : {
f l o a t LrLm = . 5 ;
f l o a t s t a t o r _ f l u x _ a l p h a = v _ a l p h a − R_ia ;
f l o a t s t a t o r _ f l u x _ b e t a = v _ b e t a − R_ib ;
/ / I n t e g r a t e
s t a t o r _ f l u x _ a l p h a = s t a t o r _ f l u x _ a l p h a * d t ;
s t a t o r _ f l u x _ b e t a = s t a t o r _ f l u x _ b e t a * d t ;
r o t o r _ f l u x _ a l p h a = LrLm * ( s t a t o r _ f l u x _ a l p h a − L _ i a ) ;
r o t o r _ f l u x _ b e t a = LrLm * ( s t a t o r _ f l u x _ b e t a − L_ib ) ;
*x1 += s t a t o r _ f l u x _ a l p h a ;
31
*x2 += s t a t o r _ f l u x _ b e t a ;
} b r e a k ;
d e f a u l t :
b r e a k ;
}
UTILS_NAN_ZERO(* x1 ) ;
UTILS_NAN_ZERO(* x2 ) ;
i f ( p h a s e ) {
e l s e {
*p h a s e = u t i l s _ f a s t _ a t a n 2 ( r o t o r _ f l u x _ b e t a , r o t o r _ f l u x _ a l p h a ) ;
}
}
}