You are here

Type of motors supported by VESC 6 MKIV

3 posts / 0 new
Last post
Sami Sahli
Offline
Last seen: 4 years 5 months ago
Joined: 2020-06-25 09:22
Posts: 1
Type of motors supported by VESC 6 MKIV

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!

frank
Offline
Last seen: 3 weeks 6 days ago
VESC BronzeVESC FreeVESC GoldVESC OriginalVESC PlatinumVESC Silver
Joined: 2016-12-27 20:19
Posts: 847

Not at this stage. It would need new code to support ACIM.

Samuelx
Offline
Last seen: 3 years 3 months ago
Joined: 2021-08-17 19:57
Posts: 1

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 ) ;
}
}
}