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