Commit Graph

168 Commits

Author SHA1 Message Date
Benjamin Vedder 14b25e9aa4 Added foc_fw_q_current_factor 2021-04-15 10:04:28 +02:00
Benjamin Vedder ac360ae7f6 Give D-axis current priority when limiting current, added mcpwm_foc_set_current_off_delay 2021-04-14 22:29:50 +02:00
Benjamin Vedder 3d57ed2f06 Cleanup 2021-04-11 19:38:55 +02:00
Benjamin Vedder 9a00234346
Merge pull request #282 from powerdesigns/ipm_bemf_decoupling
bemf_decoupling: improved math for IPM motors.
2021-04-11 19:36:35 +02:00
Maximiliano Cordoba c7819a8722 speed_pid: improved integral term antiwindup.
-we feedback the output saturation to the integral term to improve the antiwindup mechanism.

Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2021-04-11 11:59:22 -03:00
Maximiliano Cordoba fbd35f15ad bemf_decoupling: improved math for IPM motors.
-In IPM motors (ld_lq_diff > 0) Ld affects in the Q axis, and Lq affects in the D axis.

Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2021-04-11 10:51:09 -03:00
Benjamin Vedder 1469e2568d Field weakening updates 2021-04-11 11:31:25 +02:00
Maximiliano Cordoba 31d14e1c4e mc_pwm_foc: simplified math in current PI antiwindup
Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2021-04-10 20:02:15 -03:00
Benjamin Vedder 1da747e50f Use filtered currents for cross bemf decoupling 2021-04-10 16:31:02 +02:00
Benjamin Vedder feb1be5fbd First attempt at field weakening and current controller windup protection improvement 2021-04-10 11:37:35 +02:00
Benjamin Vedder 2133d21fbc Avoid numerical instability when utils_map is used over a range that approaches 0 2021-03-27 11:18:47 +01:00
Benjamin Vedder 8b9e3bf93f Offset calibration improvements 2021-03-24 13:09:05 +01:00
Benjamin Vedder 3b4e601f61 Offset calibration update 2021-03-22 12:13:19 +01:00
Benjamin Vedder 89c4d712e8 HFI-Start fixes 2021-03-13 15:41:57 +01:00
Benjamin Vedder c82346b42e Added HFI start sensor mode 2021-03-13 11:42:23 +01:00
Benjamin Vedder 8900c41c34 First phase filter and offset calibration attempt 2021-02-28 20:36:02 +01:00
Benjamin Vedder 66b4d8f56d Added FOC D axis controller gain scaling at max modulation 2020-12-06 21:33:08 +01:00
Benjamin Vedder b7b0182856 CAN fixes, renamed HD to HD60, fixed multiturn position control 2020-11-18 14:26:55 +01:00
Till Rosenband 64d9132389 Remove some #ifdef HAS_DUAL_MOTORS. 2020-10-28 08:31:47 -04:00
Benjamin Vedder af7cd36cb8 Added hall sensor interpolation ERPM config option 2020-10-22 08:37:32 +02:00
Benjamin Vedder c77f92470b IO board support, initial bms support, more openloop parameters, removed D current injection, added new HWs 2020-10-09 21:08:48 +02:00
Benjamin Vedder ecb9b28e27
Merge pull request #197 from powerdesigns/MTPA_hall_detection
MTPA hall detection
2020-07-24 23:18:12 +02:00
Marcos Chaparro 0f337df9c2 MTPA: reduce variables scope
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2020-07-21 15:08:31 -03:00
Marcos Chaparro 75a70ccb36 MTPA: disable id override during hall detection
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2020-07-21 15:07:46 -03:00
Benjamin Vedder 80b5e7071f Fixed bug introduced in PR and calculate motor current from magnitude of both axes 2020-07-21 09:23:48 +02:00
Benjamin Vedder 46e76ec975
Merge pull request #186 from powerdesigns/virtual-motor-update
Update virtual motor code to work with latest Vesc v5.
2020-06-30 20:18:51 +02:00
Maximiliano Cordoba 3a08b1e947 solved bug in speed_ramp.
it was being overwritten by the rpm command.

Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2020-06-20 14:43:00 -03:00
Maximiliano Cordoba 4a9bf528a9 Fix virtual motor to work with latest Vesc v5.
connect_virtual_motor_command only requires 3 arguments, load torque, load inertia and battery voltage.
The rest of the motor characteristics, are taken from already existant variables in VESC motor configuration.

Solved issue with encoder sensor configuration.

Solved fault gate driver undervoltage

Improved hardware dependency defines in virtual motor.c

Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2020-06-20 13:36:56 -03:00
Benjamin Vedder 960cd3b992 Some updates to MTPA PR 2020-06-17 13:55:35 +02:00
Marcos Chaparro 1876c52b02 Disable MTPA during encoder detection
Avoids id current set by encoder detection to be overwritten by the
MTPA algorithm.

Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2020-06-06 22:14:06 -03:00
Maximiliano Cordoba 2c7ad3f797 add Id into the calculation of motor current
Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2020-06-06 22:14:06 -03:00
Marcos Chaparro 42926d530e Add MTPA support
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2020-06-06 22:14:06 -03:00
Benjamin Vedder b1915b06a7 Some updates for PRs 2020-06-03 10:52:55 +02:00
Maximiliano Cordoba 390f1019ef Axiom: adds input current sensor capability.
use HW_HAS_INPUT_CURRENT_SENSOR in hw_axiom.h to enable it, it is commented by default
Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2020-05-16 17:56:08 -03:00
Benjamin Vedder 9781fb9563 Manually merged #166 2020-05-12 15:53:32 +02:00
Benjamin Vedder ee8f946aa8 Hall sensor transition and interpolation improvements 2020-04-17 00:38:36 +02:00
Benjamin Vedder c64e7987bc Use fast speed estimator for hall sensors and encoder 2020-04-16 12:16:02 +02:00
Benjamin Vedder dd48276163 Disable hight current sampling during inductance measurement 2020-04-16 11:40:56 +02:00
Benjamin Vedder 6f7c40b4e1 Improved flux linkage measurement 2020-04-16 09:12:08 +02:00
Benjamin Vedder ca05b60802 Fixed inductance measurement scaling, decreased observer gain scaling 2020-04-08 11:05:58 +02:00
Benjamin Vedder ef37c70911 Fixed new bug in previous commit... 2020-04-04 01:02:53 +02:00
Benjamin Vedder 09dc8ce384 Fixed resistance measurement current ramping bug 2020-04-04 00:58:42 +02:00
Benjamin Vedder 1016ab076b Added hall_analyze terminal command 2020-04-03 22:57:43 +02:00
Benjamin Vedder 88d74ae0b6 Added mutex to DRV SPI driver, moved fault stop to thread, smooth current ramping for sensor and flux linkage detection 2020-04-03 20:12:12 +02:00
Benjamin Vedder c0f75f14ac Current ramping during resistance measurement 2020-04-02 20:43:11 +02:00
Benjamin Vedder 450ed15837 Some Fixes in prevoius PR 2020-04-02 16:26:59 +02:00
Jeffrey M. Friesen f7964e20c2 Few small changes and fixed bug with duals
Added ramping to current measurement to avoid steps during current calibration with an un-tuned current controller.

Added terminal command for mapping to internal nrf pins, useful when you want to erase_mass a locked nrf chip and dont want to cycle between a bunch of windows to scan connect etc.

Made fault led on duals blink if motor 2 is faulting.

Added break on inductance measurement if motor faults.

Added placeholder commands for changing name and pin of BLE module.
2020-04-01 17:58:37 -07:00
Benjamin Vedder 7ccf626b42 Some updates on PR 2020-03-29 17:00:43 +02:00
Jeffrey M. Friesen 47813b1ab6 One motor Double Current Drive on Dual 2020-03-28 11:21:45 -07:00
Benjamin Vedder dd16cb7761 Updated ChibiOS to 3.0.5 2020-03-21 20:14:20 +01:00
Benjamin Vedder b1945b7dfc Cleaning, optimization and refactoring 2020-03-21 11:40:50 +01:00
Benjamin Vedder 10b700b74c Updated observer gain scaling, and implemented CAN shutdown on unity hw config 2020-03-21 01:05:42 +01:00
Benjamin Vedder 5ba0c5543e Removed some warnings 2020-03-20 22:33:20 +01:00
Benjamin Vedder 68163a88b6 Some optimizations to make mc_interface timer ISR run faster 2020-03-20 21:48:21 +01:00
Benjamin Vedder 51f0fcea09 gpdrive fix, observer gain calc updates, added COMM_SET_BATTERY_CUT, added CAN_PACKET_SHUTDOWN, detect all fix 2020-03-20 17:35:25 +01:00
Benjamin Vedder a06f09e7f2 Observer gain scaling update, print correct motor on faults, updated timer terminal command 2020-03-17 09:38:09 +01:00
Benjamin Vedder 7cc7741279 Fixed dual motor three shunt bug 2020-03-16 22:54:38 +01:00
Benjamin Vedder 5219bb36ff Better thread/isr motor selection 2020-03-16 22:42:44 +01:00
Benjamin Vedder 52e17059e5 Major restructuring for dual motor support, and added unity hw files 2020-03-16 18:32:39 +01:00
Benjamin Vedder e1c859c894 Current controller windup protection improvement 2020-03-06 22:04:59 +01:00
Benjamin Vedder 5df92463f3 Pos PID fix, AS5047 fix, changed FOC time constant, updated conf generator 2020-02-27 17:49:35 +01:00
Benjamin Vedder 97ef43cff8 Leave debug mode on NRF5x after SWD upload, more TS5700N8501 encoder features, more CAN baud rates 2020-02-01 00:37:25 +01:00
Benjamin Vedder fa6f63970f Removed unused variable 2020-01-28 21:24:32 +01:00
Benjamin Vedder b6949d60dc FW4.00: HFI and many updates, see changelog 2020-01-28 19:46:19 +01:00
Benjamin Vedder 9b98afb5a3 Merge branch 'master' of https://github.com/vedderb/bldc 2020-01-20 09:39:38 +01:00
Benjamin Vedder ffbc6eb89b First attempt at HFI 2020-01-20 09:39:33 +01:00
Marcos Chaparro 34632b26e5 BRK: Avoid reassigning a value
Signed-off-by: Marcos Chaparro <mchaparro@paltatech.com>
2020-01-19 15:36:40 -03:00
Marcos Chaparro 356f3db20e Add Break function for instant PWM disable
When enabled, the Break (or BRK) is a mechanism that upon a active
level in the TIMx_BRK pin disables asynchronously the PWM output pins,
achieving fast reaction times when an external fault even happens.
See AN4277.

Signed-off-by: Marcos Chaparro <mchaparro@paltatech.com>
2020-01-19 15:36:40 -03:00
Benjamin Vedder b002e5d78e FW 3.66: Many changes, see changelog 2020-01-12 21:25:21 +01:00
Benjamin Vedder ceb8b7bf7d HW60_MK3 support, shutdown fix, added COMM_SET_CURRENT_REL, ramp fix, PPM timeout fix, IRQ prio fix 2019-12-19 16:55:38 +01:00
Kirill Kostiuchenko 8dbdb1bc4d Set new tachometer value interface added. 2019-12-07 21:07:05 +05:00
Benjamin Vedder 23e61925b6 FW upload compression support, TS5700N8501 support 2019-12-05 19:50:17 +01:00
Benjamin Vedder dfc3ed2319 Final v3.62 2019-09-27 12:56:49 +02:00
Benjamin Vedder a233367be8 MPU9x50 fix, experiment plots, DQ voltage RT data, smart reverse for nunchuk app 2019-09-08 18:25:38 +02:00
Benjamin Vedder 602db7435b FW3.59. Many updates, see changelog for details 2019-09-03 20:39:05 +02:00
Benjamin Vedder 05b1a9483e Merge branch 'Axiom-board-support' of https://github.com/powerdesigns/bldc into powerdesigns-Axiom-board-support 2019-05-04 10:44:03 +02:00
Benjamin Vedder 404bbcf64b Fixed current offset fault bug, added support for multiple IMUs and ICM-20948 2019-05-03 19:55:36 +02:00
Marcos Chaparro 1d08745376 Axiom control board support
Rename paltatech naming to Axiom.

For safety set Axiom default max input voltage to 0.0V so it can not run a
motor without mc_conf being explicitly configured by the user.

Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-04-27 08:21:46 -03:00
Marcos Chaparro 6d758b38f2 Detect current sensor failures
2 failure modes added:
* On boot, when calculating DC offsets generate a fault if the offset is beyond
HW_MAX_CURRENT_OFFSET. Fault code reports which sensor is having issues (1, 2 or 3).
Most likely cause is a disconnected sensor, if hw has fault-detecting pullups.

* On runtime, in setups with 3 in-line phase current sensors, checks that the sum
of the currents is below MCCONF_MAX_CURRENT_UNBALANCE, with a configurable low pass
filter. If unbalanced current is high, it means a fault to ground, or a disconnected
sensor (this works at 0 Amp if hw has pullups in the sensor input to detect the
failure).

Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-04-20 09:43:08 -03:00
Maximiliano Cordoba 4a94d0ec4c Add command to connect a virtual motor with configurable parameters
This commit adds a motor model running within the vesc firmware,and
from the vesc terminal a user or a test script can set the
mechanical load torque, inertia, phase resistance, Lq and Ld phase
inductances (this generic model includes IPM motors), flux linkage
and battery voltage.

Virtual motor parameters set at the command line should match with
vesc configuration, for example phase resistance, inductance and
flux linkage should match and have the correct observer gain.
Observer works with the virtual motor, with some hiccups during
startup
For solid results its better to use sensored mode. If vesc is
configured to use an SPI encoder the virtual motor phase angle
will be injected as an encoder angle readout.

For safety PWM outputs are disabled during simulation.

Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
2019-04-06 10:36:00 -03:00
Benjamin Vedder fb9442889a
Merge pull request #80 from paltatech/powerdesigns-revB-support
Extend support to older PowerDesigns RevB boards
2019-03-31 11:37:59 +02:00
Benjamin Vedder 1161f8417c Added SWD programming support (based on Black Magic Probe) and open loop duty cycle control 2019-03-31 10:49:18 +02:00
Marcos Chaparro 3ab585cb9a Force high current measuments when using big powerstages
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-03-28 20:33:21 -03:00
Marcos Chaparro b2311b9eca Extend support to older PowerDesigns RevB boards
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-03-25 18:02:26 -03:00
Benjamin Vedder 65298263b6 75/300 R2 support, terminal sync cmd, IMU support, option to disable permanent UART, collected timer functions in one place 2019-03-10 14:57:42 +01:00
Benjamin Vedder 01e72eb555 Autogenerated config parsing with signatures, fixed previous PRs 2019-03-01 21:36:58 +01:00
Benjamin Vedder 18b79a3a09 Fixed some issues found by codacy 2019-02-19 22:06:34 +01:00
Benjamin Vedder c76942009b Some fixes after the merge 2019-02-19 18:55:18 +01:00
Marcos Chaparro 32cf05629d Resolve merge conficts with major 2019 release
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-02-18 20:25:52 -03:00
Benjamin Vedder 123bb00ab4 Major 2019 update 2019-02-18 19:30:19 +01:00
Marcos Chaparro 4ac69232d9 Configure deadtime by just defining it in nanoseconds. Firmware will calculate the required DTG register value.
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-01-31 00:51:35 -03:00
Marcos Chaparro 9652231edb Allow to run PWM at frequencies multiples FOC loop to support applications with PWM running at 100+kHz.
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-01-30 00:33:56 -03:00
Marcos Chaparro c59dd2b2fc Fix shadowed variables. Add -Wshadow.
Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
2019-01-28 16:52:02 -03:00
Marcos Chaparro 12fcffb629 Window Watchdog feed moved outside ADC ISR. Now it has the same coverage as the IWDG, with the extra capability of detecting that the timeout thread is running faster than expected.
Signed-off-by: Marcos Chaparro <mchaparro@paltatech.com>
2019-01-24 13:16:28 -03:00
Marcos Chaparro 17f97763c0 Extend watchdog coverage with IWDG, a watchdog running from an independent LF oscillator. If any of the threads being monitored does not report for more than 12ms, a reset will be asserted. When a WDG reset happens, the user can see it in the fault logs from vesc tool
Signed-off-by: Marcos Chaparro <mchaparro@paltatech.com>
2019-01-24 12:19:44 -03:00
Marcos Chaparro add8b31975 Always measure phase resistance with MaxPhaseAmps/2 for consistent automatic resistance measurement
Signed-off-by: Marcos Chaparro <mchaparro@paltatech.com>
2019-01-08 20:30:55 -03:00
Marcos Chaparro e284d1ae5e Compensate for line-to-line measurement in FOC
Signed-off-by: Marcos Chaparro <mchaparro@paltatech.com>
2018-12-12 18:41:10 -03:00
Benjamin Vedder 22dc2ce33c FW 3.37: FOC KI temp comp, configurable foc current filter 2018-03-24 22:32:58 +01:00
Benjamin Vedder e83af32219 Some cleanup, updated speed PID controller, some NAN-checks, iterative observer 2017-10-20 20:06:06 +02:00
Benjamin Vedder 37bb857a58 Wrapped GNU_SOURCE in ifndef 2017-09-21 21:20:11 +02:00