# # For a description of the syntax of this configuration file, # see the file kconfig-language.txt in the NuttX tools repository. # menuconfig EXAMPLES_FOC tristate "FOC motor controller example" depends on MOTOR_FOC depends on INDUSTRY_FOC ---help--- Enable the FOC motor controller example. At the moment, this example implements a simple open-loop velocity controller. if EXAMPLES_FOC config EXAMPLES_FOC_DEVPATH string "FOC device path prefix" default "/dev/foc" ---help--- The default path to the FOC device without the device minor number. Default: /dev/foc config EXAMPLES_FOC_FLOAT_INST int "FOC float instances" depends on INDUSTRY_FOC_FLOAT default 0 config EXAMPLES_FOC_FIXED16_INST int "FOC fixed16 instances" depends on INDUSTRY_FOC_FIXED16 default 0 config EXAMPLES_FOC_CONTROL_PRIO int "FOC control thread priority" default 255 config EXAMPLES_FOC_CONTROL_STACKSIZE int "FOC control thread stack size" default 4096 config EXAMPLES_FOC_VERBOSE int "Enable verbose print for app" default 1 range 0 2 choice prompt "FOC current controller selection" default EXAMPLES_FOC_CONTROL_PI config EXAMPLES_FOC_CONTROL_PI bool "FOC use PI current controller" select INDUSTRY_FOC_CONTROL_PI endchoice # FOC current controller config EXAMPLES_FOC_PWM_FREQ int "FOC PWM frequency" default 10000 ---help--- Select the FOC PWM switching frequency config EXAMPLES_FOC_NOTIFIER_FREQ int "FOC notifier frequency" default EXAMPLES_FOC_PWM_FREQ ---help--- Select the FOC notifier frequency config EXAMPLES_FOC_IPHASE_ADC int "FOC phase current scale [x100000]" default 0 ---help--- This parameter is used to get real currents from ADC RAW values config EXAMPLES_FOC_STATE_PRINT_FREQ int "FOC example data printer frequency" default 0 depends on INDUSTRY_FOC_HANDLER_PRINT ---help--- Set 0 to disable FOC data print config EXAMPLES_FOC_STATE_USE_MODEL_PMSM bool "FOC uses PMSM model" depends on INDUSTRY_FOC_MODEL_PMSM default n ---help--- Use PMSM model instead of real hardware choice prompt "FOC sensored or sensorless configuration" default EXAMPLES_FOC_SENSORLESS config EXAMPLES_FOC_SENSORLESS bool "FOC example sensorless configuration" config EXAMPLES_FOC_SENSORED bool "FOC example sensored configuration" select EXAMPLES_FOC_HAVE_ALIGN endchoice # if EXAMPLES_FOC_SENSORED choice prompt "FOC sensored sensor selection" config EXAMPLES_FOC_HAVE_QENCO bool "FOC example have qencoder" select INDUSTRY_FOC_ANGLE_QENCO config EXAMPLES_FOC_HAVE_HALL bool "FOC example Hall sensor support" select INDUSTRY_FOC_ANGLE_HALL endchoice # FOC sensored sensor selection if EXAMPLES_FOC_HAVE_QENCO config EXAMPLES_FOC_MOTOR_POLES int "FOC example motor poles pairs" default 0 config EXAMPLES_FOC_QENCO_POSMAX int "FOC example qencoder maximum position" default 0 config EXAMPLES_FOC_QENCO_DEVPATH string "FOC example qencoder path prefix" default "/dev/qe" ---help--- The default path to the qenco device without the device minor number. Default: /dev/qe endif # EXAMPLES_FOC_HAVE_QENCO if EXAMPLES_FOC_HAVE_HALL config EXAMPLES_FOC_HALL_DEVPATH string "FOC example Hall sensor path prefix" default "/dev/hall" ---help--- The default path to the Hall device without the device minor number. Default: /dev/hall endif # EXAMPLES_FOC_HAVE_HALL endif # EXAMPLES_FOC_SENSORED config EXAMPLES_FOC_HAVE_OPENLOOP bool "FOC example have open-loop controller" select INDUSTRY_FOC_ANGLE_OPENLOOP default y if EXAMPLES_FOC_SENSORLESS default n config EXAMPLES_FOC_HAVE_TORQ bool "FOC example torque controller support" default n config EXAMPLES_FOC_HAVE_VEL bool "FOC example velocity controller support" default y if EXAMPLES_FOC_SENSORLESS default n config EXAMPLES_FOC_HAVE_POS bool "FOC example position controller support" default n menu "FOC user input" config EXAMPLES_FOC_HAVE_ADC bool default n choice prompt "FOC VBUS source" default EXAMPLES_FOC_VBUS_CONST config EXAMPLES_FOC_VBUS_CONST bool "Use hardcoded constant VBUS value" config EXAMPLES_FOC_VBUS_ADC bool "Use VBUS provided by ADC interface" depends on ADC select EXAMPLES_FOC_HAVE_ADC endchoice # FOC VBUS interface if EXAMPLES_FOC_VBUS_CONST config EXAMPLES_FOC_VBUS_CONST_VALUE int "FOC VBUS constant value" default 12000 endif # EXAMPLES_FOC_VBUS_CONST if EXAMPLES_FOC_HAVE_ADC config EXAMPLES_FOC_ADC_DEVPATH string "FOC ADC interface path" default "/dev/adc0" config EXAMPLES_FOC_ADC_VREF int "FOC ADC reference voltage [x1000]" default 0 config EXAMPLES_FOC_ADC_MAX int "FOC ADC aux maximum sample value" default 0 endif # EXAMPLES_FOC_HAVE_ADC if EXAMPLES_FOC_VBUS_ADC config EXAMPLES_FOC_VBUS_SCALE int "FOC VBUS SCALE scale [x1000]" default 0 endif # EXAMPLES_FOC_VBUS_ADC choice prompt "FOC setpoint source" default EXAMPLES_FOC_SETPOINT_CONST config EXAMPLES_FOC_SETPOINT_CONST bool "Use hardcoded constant setpiont value" config EXAMPLES_FOC_SETPOINT_ADC bool "Use ADC to control setpoint" depends on ADC select EXAMPLES_FOC_HAVE_ADC select EXAMPLES_FOC_HAVE_SETPOINT_VAR config EXAMPLES_FOC_SETPOINT_CHAR bool "Use character interface to control setpoint" select EXAMPLES_FOC_HAVE_CHARCTRL select EXAMPLES_FOC_HAVE_SETPOINT_VAR endchoice # FOC setpoint interface config EXAMPLES_FOC_HAVE_SETPOINT_VAR bool default n if EXAMPLES_FOC_SETPOINT_CONST config EXAMPLES_FOC_SETPOINT_CONST_VALUE int "FOC hardoced setpoint value" default 0 endif # EXAMPLES_FOC_SETPOINT_CONST if EXAMPLES_FOC_HAVE_SETPOINT_VAR config EXAMPLES_FOC_SETPOINT_MAX int "FOC maximum setpoint [x1000]" default 0 endif # EXAMPLES_FOC_HAVE_SETPOINT_VAR config EXAMPLES_FOC_TIME_DEFAULT int "FOC run time default (sec)" default 10 config EXAMPLES_FOC_STATE_INIT int "FOC motor controller state init" default 1 range 1 4 ---help--- 1 - motor FREE (no current) 2 - motor STOP (active break) 3 - motor moves in CW direction 4 - motor moves in CCW direction config EXAMPLES_FOC_HAVE_BUTTON bool "FOC button support" default n ---help--- The button is used to change the motor controller state if EXAMPLES_FOC_HAVE_BUTTON config EXAMPLES_FOC_BUTTON_DEVPATH string "FOC button device path" default "/dev/buttons" depends on INPUT_BUTTONS endif config EXAMPLES_FOC_HAVE_CHARCTRL bool "FOC character control interface support" default n ---help--- Use simple character commands to interact with the app if EXAMPLES_FOC_HAVE_CHARCTRL config EXAMPLES_FOC_CHAR_SETPOINT_STEP int "FOC character control setpoint step [x1000]" default 0 endif endmenu # FOC user input menu "FOC controller parameters" config EXAMPLES_FOC_FMODE int "FOC control mode" default 2 range 1 3 ---help--- 1 - IDLE mode 2 - voltage mode (default) 3 - current mode config EXAMPLES_FOC_MMODE int "Motor control mode" default 2 range 1 5 ---help--- 1 - torque control 2 - velocity control 3 - position control 4 - align only 5 - ident only config EXAMPLES_FOC_OPENLOOP_Q int "FOC open-loop Vq/Iq setting [x1000]" default 200 depends on EXAMPLES_FOC_HAVE_OPENLOOP if EXAMPLES_FOC_CONTROL_PI config EXAMPLES_FOC_IDQ_KP int "FOC PI controller Kp gain [x1000]" default 0 ---help--- It is set to 0 by default and must be properly configured by the user! The value of Kp and Ki depends on the controlled motor parameters. For more instructions see README.md for this example. config EXAMPLES_FOC_IDQ_KI int "FOC PI controller Ki gain [x1000]" default 0 ---help--- It is set to 0 by default and must be properly configured by the user! The value of Kp and Ki depends on the controlled motor parameters. For more instructions see README.md for this example. endif #EXAMPLES_FOC_CONTROL_PI config EXAMPLES_FOC_RAMP_THR int "FOC velocity ramp threshold [x1000]" default 0 config EXAMPLES_FOC_RAMP_ACC int "FOC velocity ramp acc [x1000]" default 0 config EXAMPLES_FOC_RAMP_DEC int "FOC velocity ramp dec [x1000]" default 0 config EXAMPLES_FOC_HAVE_ALIGN bool "FOC example motor alignment support" select INDUSTRY_FOC_ALIGN default n if EXAMPLES_FOC_HAVE_ALIGN config EXAMPLES_FOC_ALIGN_VOLT int "EXAMPLES_FOC_ALIGN_VOLT (x1000)" default 0 config EXAMPLES_FOC_ALIGN_SEC int "EXAMPLES_FOC_ALIGN_SEC (x1000)" default 0 endif # EXAMPLES_FOC_HAVE_ALIGN config EXAMPLES_FOC_HAVE_IDENT bool "FOC example motor identification support" select INDUSTRY_FOC_IDENT default n if EXAMPLES_FOC_HAVE_IDENT config EXAMPLES_FOC_IDENT_RES_CURRENT int "FOC motor ident resistance current (x1000)" default 0 config EXAMPLES_FOC_IDENT_RES_KI int "FOC motor ident resistance Ki (x1000)" default 50 config EXAMPLES_FOC_IDENT_IND_VOLTAGE int "FOC motor ident inductance voltage (x1000)" default 0 config EXAMPLES_FOC_IDENT_RES_SEC int "FOC motor ident resistance time in sec (x1000)" default 0 config EXAMPLES_FOC_IDENT_IND_SEC int "FOC motor ident inductance time in sec (x1000)" default 0 config EXAMPLES_FOC_IDENT_IDLE int "FOC motor ident idle steps" default 100 endif # EXAMPLES_FOC_HAVE_IDENT endmenu # FOC controller parameters config EXAMPLES_FOC_HAVE_RUN bool default y if !EXAMPLES_FOC_RUN_DISABLE default n config EXAMPLES_FOC_RUN_DISABLE bool "FOC Disable FOC motor controller" default n config EXAMPLES_FOC_NXSCOPE bool "FOC nxscope support" depends on LOGGING_NXSCOPE select LOGGING_NXSCOPE_DISABLE_PUTLOCK default n ---help--- This option enables a controller real-time data capture with the NxScope library. if EXAMPLES_FOC_NXSCOPE config EXAMPLES_FOC_NXSCOPE_SERIAL bool "FOC nxscope on serial port" select LOGGING_NXSCOPE_INTF_SERIAL default y if EXAMPLES_FOC_NXSCOPE_SERIAL config EXAMPLES_FOC_NXSCOPE_SERIAL_PATH string "FOC nxscope serial path" default "/dev/ttyS0" config EXAMPLES_FOC_NXSCOPE_SERIAL_BAUD int "FOC nxscope serial baud" default 115200 endif # EXAMPLES_FOC_NXSCOPE_SERIAL config EXAMPLES_FOC_NXSCOPE_STREAMBUF_LEN int "FOC nxscope stream buffer length" default 512 config EXAMPLES_FOC_NXSCOPE_RXBUF_LEN int "FOC nxscope RX buffer length" default 64 config EXAMPLES_FOC_NXSCOPE_RXPADDING int "FOC nxscope RX padding" default 0 config EXAMPLES_FOC_NXSCOPE_CHANNELS int "FOC nxscope channels" default 0 config EXAMPLES_FOC_NXSCOPE_PRESCALER int "FOC nxscope prescaler" default 1 ---help--- This option allows you to reduce the frequency of adding samples to the NxScope buffer. config EXAMPLES_FOC_NXSCOPE_CFG hex "FOC nxscope configuration" default 0x00000000 ---help--- Each bit defines the controller state variable that can be captured. Look at foc_nxscope.h for bits definitions. config EXAMPLES_FOC_NXSCOPE_START bool "FOC nxscope start frame sync" default n ---help--- If this option is set, the controller will be waiting for the start frame from a NxScope master device. This allows us to capture controller data from the very beginning of its operation. config EXAMPLES_FOC_NXSCOPE_THREAD bool "FOC nxscope uses separate thread" default n ---help--- Use a separate thread for NxScope communication. if EXAMPLES_FOC_NXSCOPE_THREAD config EXAMPLES_FOC_NXSCOPE_PRIO int "FOC nxscope thread priority" default 100 config EXAMPLES_FOC_NXSCOPE_STACKSIZE int "FOC nxscope thread stack size" default 2048 endif # EXAMPLES_FOC_NXSCOPE_THREAD endif # EXAMPLES_FOC_NXSCOPE endif # EXAMPLES_FOC