forked from vedderb/bldc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
510 lines (441 loc) · 20.6 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
=== FW 5.02 ===
* IMU calibration improvement.
* Added COMM_GET_MCCONF_TEMP command.
* Added bidirectional current command to VESC remote.
* Fixed motor temperature reading on hw with ADC mux.
* Added speed PID input ramping option.
* Added LSM6DS3 IMU support.
* Added MTPA support. See See: https://github.com/vedderb/bldc/pull/179
* Added HW_HD75 support.
* NRF52 UICR write fix.
* App PPM rework. See https://github.com/vedderb/bldc/pull/192
* Added bm_reset terminal command.
* Added bm support for STM32F30x and STM32L47x.
* App Balance updates. See https://github.com/vedderb/bldc/pull/193
* Motor current now based on magnitude of both axes.
* Initial VESC BMS support.
* Hall sensor interpolation improvement.
* Made hall sensor filter configurable.
* Added locking time and ramp up time parameters to sensorless startup.
* Removed D axis current injection.
* Initial VESC IO-board support.
* Added hall sensor interpolation ERPM config option.
* Use fast speed estimator for RPM limit.
* Avoid accumulated rounding error when using PID position angle division.
* Added UAVCAN raw throttle drive mode (current or duty cycle control).
* Added MT6816 encoder support. See https://github.com/vedderb/bldc/pull/238
* Added modulation-based D axis current controller gain scaling. Addresses https://github.com/vedderb/bldc/pull/220
* Added PAS app. See: https://github.com/vedderb/bldc/pull/243
* Added 100k CAN-baudrate.
* Added 100k NTC temperature sensor support.
=== FW 5.01 ===
* Fixed PPM bug in previous release.
=== FW 5.00 ===
* Dual motor support. VESC-based controllers such as the focbox unity will now work.
* Fixed bug in cross BEMF decoupling.
* Disable CC decoupling during flux linkage measurement.
* Balance app updates. See: https://github.com/vedderb/bldc/pull/141
* Observer gain calculation update.
* Better observer gain scaling. This has a large impact on some motors.
* Added test build flag, that is transmitted with the FW Version command.
* Detect all bug fix.
* Added COMM_SET_BATTERY_CUT command.
* Added CAN_PACKET_SHUTDOWN CAN-command.
* GPDRIVE output sample fix.
* Some ISR optimization.
* Updated ChibiOS to version 3.0.5.
* Increased USB thread priority to avoid freeze during connect/disconnect on windows.
* Smooth current ramping during resistance measurement.
* Moved fault stop to thread, and added SPI mutexes to DRV drivers.
* Smooth current ramping in flux linkage measurement and sensor detection.
* Added hall_analyze terminal command.
* Motor temperature filtering bug fix.
* Inductance measurement scaling fix.
* Better flux linkage measurement.
* Improved battery level and range estimation.
* Use fast speed estimator for encoder sensorless transition.
* Signigicantly improved hall sensor transitions and interpolation.
* More filtering on the motor temperature.
* Added IMU orientation calibration support: https://github.com/vedderb/bldc/pull/158
* Added mcconf_l_duty_start so that the current can be limited smoothly when reaching max speed.
* Allow throttle in opposite direction even after passing speed limit for PPM and VESC Remote apps.
=== FW 4.02 ===
* Position PID fix (most notable on multiturn encoders).
* App balance updates. See https://github.com/vedderb/bldc/pull/138.
* Changed FOC time constant back to 1000 us.
* Do not count AS5047 all ones as fault.
* Improved axis decoupling and integrator windup protection. Should prevent wobbles.
=== FW 4.01 ===
* Leave debug mode on NRF5x after disconnect to avoid excess power consumption before power cycle.
* Added encoder_clear_errors and encoder_clear_multiturn terminal commands.
* Initialize current offsets to 2048 to avoid a fault code to be logged at boot.
* Added 10K, 20K, 50K and 75K CAN baud rates.
* Added very basic TS5700N8501 multiturn mode.
=== FW 4.00 ===
* Added support for HFI to track motor position at 0 speed without sensors. This is the main new feature of FW 4.
* Fixed CAN-bug in VESC Remote.
* Reset current integrator when leaving duty cycle control mode. Fixes braking issue #125.
* More accurate and faster inductance measurement.
* Ability to measyre ld - lq. Useful for MTPA in future firmwares.
* Reset shutdown when uploading FW data.
* Added CAN-bride and COMM_CAN_FWD_FRAME.
* Added CAN_PACKET_POLL_TS5700N8501_STATUS to poll most relevant data last received from the TS5700N8501 encoder.
* Added TS57N8501 ABM, SF and ALMC to encoder terminal command.
=== FW 3.66 ===
* Added support for HW 100/250.
* Added uptime terminal command.
* Added some delays to DRV8323s SPI driver.
* Added SWD support for NRF52840 with idcode 0x015B.
- TODO: Have a look at https://github.com/blacksphere/blackmagic/commit/302ff20a6d5b806c09e0ca7e996beab3ef3596f4.
* Fixed INVERTED_SHUNT_POLARITY for BLDC.
* Added decoupling to FOC current controller.
* Better motor tracking at high ERPM and low Fsw.
* Made uart and permanent uart more independent.
* Do not write to USB if cable has not been connected.
* Added timeout to USB write.
* Better FOC current control integrator windup protection.
* Added FOC observer type selection options.
* Print TS5700N8501 position in encoder terminal command.
=== FW 3.65 ===
* Added support for PTC motor temperature sensor (e.g. KTY84)
* APP_PPM sleep fix. Should solve CAN issues.
=== FW 3.64 ===
* Added support for HW60_MK3
* Disable shutdown sampling when the watchdog runs slowly.
* Added COMM_SET_CURRENT_REL.
* Added support for boot/ok signal.
* Added unused mode for aux port.
* Fixed positive ramping time setting.
* Changed PPM timeout handling.
* IRQ priority fix: SYSTICK < UART < MCPWM. Possibly related to http://www.chibios.com/forum/viewtopic.php?f=3&t=4665.
=== FW 3.63 ===
* NRF remote power meter is now unaffected by temperature decrease and speed limits.
* Added LZO compression support to firmware upload, making firmware updates 30% - 50% faster.
* Added LZO compression support to SWD upload.
* Made serial interrupts priority higher than PWM so that higher speed UART is possible.
* Added support for TS5700N8501 encoder (via COMM port).
* Better observer gain calculation.
=== FW 3.62 ===
* Added COMM_BM_MEM_READ.
* Merged EUC app (experimental).
* Fixed NRF remote reverse bug.
* Do not stop FOC on configuration updates if not needed.
=== FW 3.61 ===
* Added PPM_CTRL_TYPE_CURRENT_SMART_REV mode.
=== FW 3.60 ===
* Fixed IMU9x50 bug.
* Unrigester ICM20948 terminal callbacks when unused.
* Added experiment plot functions.
* Added D and Q axis voltage to RT data.
* Added smart reverse function to nunchuk app.
=== FW 3.59 ===
* Added more data to MOTE_PACKET_ALIVE.
* Added app template.
* Added function to unregister terminal callbacks.
* Added BMI160 support.
* Added support for the VESC HD.
* Added support for SWD programming permanent NRF.
* Encoder SW SPI fix.
* Slightly faster boot.
* Moved custom HW and APP configurations to conf_general.h.
* Added support for passing HW and APP default configuration as make arguments.
* Added SW shutdown support.
* Added command to erase bootloader.
* Added function to stop IMU threads, so that IMUs can be switched during runtime.
* Only generate encoder fault when the ERPM is low enough to use the encoder.
* Added many IMU and AHRS settings to appconf.
* Re-initialize IMU when appconf is written.
* Added imu_gyro_info terminal command.
=== FW 3.58 ===
* Set motor to FOC mode after successful FOC detection instead of the default type for the hardware.
* APP_ADC: Do not send brake command over CAN if config.multi_esc is not set.
* APP_PPM: Make pulses invalid if they are above 150 % instead of 120 %.
* Introduced a new control mode that allows reverse with hysteria (@ackmaniac port)
=== FW 3.57 ===
* Added CAN status message 5 with input voltage and tachometer data.
* Fix github issue #94.
* Use default F_SW for HW after autodetect FOC.
=== FW 3.56 ===
* Fixed current offset fault bug in non-FOC mode.
* Multiple IMU support.
* Added support for the ICM-20948 IMU.
* Decreased ERPM cut in open loop flux linkage measurement.
=== FW 3.55 ===
* Initial sin/cos encoder support.
* New ADC control mode.
* Virtual motor support.
* Disable chuk cruise control on dropouts.
* Fix multiple VESCs over CAN duty cycle mode.
* Added boot and runtime flash memory CRC integrity check.
* Updated chuk RPM filter and moved it to the beginning of the output thread.
* Decreased chuk output thread rate from 1 kHz to 200 Hz.
* Added mpu_read_reg terminal command.
* Fixed DRV8301 fault readout bug.
* Added unbalanced current detection.
* Added high current offset detection.
=== FW 3.54 ===
* Added mcpwm_foc_set_openloop_duty and mcpwm_foc_set_openloop_duty_phase.
* Added blackmagic probe SWD output to program other MCUs.
- Can be used to flash bricked VESCs from a working one.
- Can be used to make a custom NRF5x module.
=== FW 3.53 ===
* Limit foc_current_filter_const range to prevent damage due to bad configuration.
* Set default NRF speed to 1 Mbit/s.
* Use lower switching frequency when detecting resistance to reduce deat-time distortion.
* Don't enable temperature compensation in auto detection by default.
=== FW 3.52 ===
* Added support for second revision of HW75/300 with separate UART for NRF51.
* Added COMM_TERMINAL_CMD_SYNC, which does not drop commands when busy.
* Added option to disable permanent UART.
* Moved TIM5 to own file, and use it from other places.
* Removed need for TIM2 in mcpwm.
* Added utilization percentage to threads terminal command.
* Added IMU interface.
* Added support for the MPU9150 and MPU9250.
* Added COMM_GET_IMU_DATA.
=== FW 3.51 ===
* Fixed AS5047 error rate bug at position 0.
* Increased threshold for AS5047 fault to 5 %.
* Set correct V_REG value for HW 75/300.
* Better command processing.
* Proper scaling when setting relative currents and acceleration and braking currents are different.
=== FW 3.50 ===
* AS5047 parity check and fault code on error rates > 1 %.
* Signature on mc and app configuration.
* FOC loop frequency truncation on all hardwares.
=== FW 3.49 ===
* New watchdog implementation.
* HW updates.
* Fixed DC motor current sampling issue.
* Deadtime in nanoseconds instead of register value.
* Use fastest ramping time when throttle is applied.
=== FW 3.48 ===
* Added pairing flag to appconf.
* Decreased CAN TX timeout.
=== FW 3.47 ===
* Current percentage limits.
* Mcconf_temp based on current scale instead of absolute current.
* Removed battery current from mcconf_temp.
* Added current scale parameter.
* Different braking behavior: prefer cogging over locking the brakes.
=== FW 3.46 ===
* DC motor RPM measurement and RPM control when using encoder.
* Support for configurable current low pass filter.
* Much better recovery when failing to decode packets.
* Run all detect functions in separate thread.
* Fixed bug introduced when adding support for dual UARTs.
* Added support for reverse state on NRF remote.
* Support to disable app output for a specified time.
=== FW 3.45 ===
* Default CAN ID from UUID, and hook to define it in hwconf.
* CAN ping support.
* Simultaneous firmware update over CAN-bus.
* Fully automated motor detection, based on maximum motor power losses.
* Sensor autodetection and configuration support.
* Softer encoder detection.
* Better NRF_EXT support.
* New more reliable flux linkage measurement.
* Simpler to add hardware versions to build system.
* More DAS hardware support.
* DRV8323s support.
* Initial UAVCAN support.
* Moved from uart to serial driver to avoid DMA conflicts.
* Support for permanent UART.
=== FW 3.44 ===
* NRF_EXT commands support.
- Use NRF51822 with ESB remotes.
* Different radio channel for NRF pairing.
=== FW 3.43 ===
* Added battery ah to setup info.
* Changed tacho values in COMM_GET_VALUES_SETUP to meters.
* Added battery wh COMM_GET_VALUES_SETUP.
* Better remaining battery capacity calculation.
=== FW 3.42 ===
* Added setup info parameters:
- Motor Poles
- Gear Ratio
- Wheel Diameter
- Battery Type
- Battery Cells
* Added more CAN status messages.
* Updated speed PID to start properly when braking is disabled.
* Added COMM_GET_VALUES_SETUP.
* Added COMM_SET_MCCONF_TEMP.
* Added COMM_SET_MCCONF_TEMP_SETUP.
* Added COMM_GET_VALUES_SELECTIVE.
* Added COMM_GET_VALUES_SETUP_SELECTIVE.
=== FW 3.41 ===
* First general purpose DC output implementation.
=== FW 3.40 ===
* Added motor controller ID to COMM_GET_VALUES.
=== FW 3.39 ===
* Updated HW75_300.
* Added AUX output support.
=== FW 3.38 ===
* Fixed temperature limit bug when the acceleration and brake current limits are different in magnitude.
=== FW 3.37 ===
* Temperature compensation on KI in addition to the observer resistance.
* Configurable FOC current filter (useful for slow abs max current setting).
=== FW 3.36 ===
* Added handbrake current commands to the simple CAN interface.
* Added D-term filter to position and speed controllers.
=== FW 3.35 ===
* Added option to disable nRF transmission (option in Transmit Power parameter).
* Fixed servo output driver for all hardwares and removed software servo driver.
=== FW 3.34 ===
* Added motor PID position to COMM_GET_VALUES.
* Inverted direction angle normalization in mc_interface.
* Use relative current mode in APP_ADC to support multiple VESCs with different current limits.
=== FW 3.33 ===
* Fixed CAN-bus baud rate update.
=== FW 3.32 ===
* Added CAN-bus baud rate setting.
=== FW 3.31 ===
* Option to decrease temperature limits during acceleration to still have braking torque left.
* Added PID speed control mode to ADC app.
=== FW 3.30 ===
* Activated iterative observer for better operation at high ERPM.
* Check for NAN and truncate some FOC variables.
* Speed controller windup protection improvement.
=== FW 3.29 ===
* Disabled throttle limit scaling for now.
* Increased packet timeout.
=== FW 3.28 ===
* DC_CAL timeout.
* Added board configuration file to avoid braking at boot.
* Shorter default fault stop time.
* Lower default PPM ramping time.
* Configurable beta value for motor thermistor.
* Individual throttle curves for acceleration and braking.
=== FW 3.27 ===
* Watt hour reset bug fix
* Changed the way custom applications are implemented.
* FOC: high current sampling mode.
=== FW 3.26 ===
* Current limit bug fix. It is now possible to apply break past the RPM limits.
* Openloop RPM calculation bug fix.
=== FW 3.25 ===
* APP multi-VESC PID control: send current instead of duty cycle for better load sharing.
* Added relative current commands to mc_interface and comm_can.
* APP ADC: added mode ADC_CTRL_TYPE_CURRENT_REV_BUTTON_BRAKE_ADC.
* APP ADC: changed behavior when throttle and brake ADC channels are used simultaneously for smoother combination.
* APP ADC: ramping support.
* Flux linkage measurement: Added extra try with high integrator value.
=== FW 3.24 ===
* Changed back inductance calculation since that seems to work much better in practise. (TODO: Have a closer look at why)
=== FW 3.23 ===
* Improved inductance measurement (bug fix).
* Multiple tries with different settings on flux linkage measurement.
* Observer improvements for high speed operation and better performance across the whole speed range.
* Compile time option to disable override limits.
=== FW 3.22 ===
* Added hardware-specific limits to configuration parameters.
* Permanent NRF bug fix.
=== FW 3.21 ===
* Fixed regression in PID speed controller.
=== FW 3.20 ===
* PID speed control: Set prev_error to error when the PID is off to make the start smoother.
* Improved spinup algorithm for flux linkage and bldc parameter measurement.
* APP ADC: Configurable center voltage for channel 1.
* APP_UARTCOMM: Keep the processing thread running when stopping the app in case the configuration is made from the UART port itself.
* Commands: Return results of long running commands to the port they came from even if commands come in between and change the last port.
=== FW 3.19 ===
* Added terminal plugin hook implementation. Inspired by https://github.com/vedderb/bldc/pull/28
* Moved sampling buffers to CCM to free some RAM.
* Added hardware info terminal command.
* NRF init SPI check fix.
* Sampled data is now transmitted in floating point with scaling done at the VESC. This avoids hard-coded scaling in VESC Tool.
=== FW 3.18 ===
* NRF init SPI check.
* Permanent NRF: reconfigure NRF pins to SPI pins on init failure in case the permanent NRF is not mounted and behave as if there is no permanent NRF.
=== FW 3.17 ===
* Temperature filtering.
* FOC: temperature resistance compensation.
=== FW 3.16 ===
* FOC: stator saturation compensation parameter.
* FOC: Another update for the fix for throttle limits to prevent loosing range at high speed when the battery current limit is lower than the motor current limit.
* DRV8301: over current protection settings added to configuration.
* DRV8301: Reset command andded to terminal.
* DRV8301: Log fault code read over SPI.
* DRV: Check for faults in ADC interrupt to catch the state as fast as possible.
* Send phase samples as well with the sampling function.
* New sampling modes for debugging.
* BLDC and DC: Configurable switching frequency
* FOC detect: increase minimum switching frequency for motor spinup to make it possible to detect high kv motors at high voltage.
* FOC: observer gain scaling parameter for low modulation.
=== FW 3.15 ===
* FOC: added the option for FOC sampling in both V0 and V7 to mcconf, so that it can be changed without recompiling the firmware.
* FOC: tweaked repetition counter and preload to get cleaner waveforms with low latency.
* FOC: Input voltage filterting and vd/vq filtering while undriven for more stable performance.
=== FW 3.14 ===
* Different throttle curve modes
* Improved FOC sensorless startup.
=== FW 3.13 ===
* Throttle curve for PPM, ADC and Nunchuk.
* Updated fix for throttle limits to prevent loosing range at high speed when the battery current limit is lower than the motor current limit.
* APP PPM ramping.
* APP ADC and PPM current range bug fix for some control modes.
=== FW 3.12 ===
* APP PPM throttle center setting.
=== FW 3.11 ===
* BLDC detect: disable direction inversion before detecting parameters.
* FOC speed control: remove supply voltage scaling since that does not make any sense in current control mode.
* BLDC speed control: added current-based speed controller option.
* BLDC: heavier RPM filtering.
* Speed control: option to disable braking in speed control mode.
* Added wattage limits. Useful for following laws for electric vehicles in some regions.
* Use override current limits to scale throttle inputs in apps. Will prevent the throttle from loosing rage at speed if e.g. the battery current limits are lower than the motor current limits.
=== FW 3.10 ===
* BLDC: removed cycles_running variable.
* BLDC: update ADC sampling in correct order to avoid corrupt samples when the switching frequency changes a lot at once.
* Terminal: print fault duty cycle state with one extra decimal.
=== FW 3.9 ===
* Configuration option for inverting the motor direction.
* STM32 96-bit unique ID readout.
=== FW 3.8 ===
* Communication protocol update for floating point variables. This breaks almost all compatibility with old firmwares.
=== FW 3.7 ===
* Delay after app and motor conf write.
- Fixes NRF bug.
- Fixes glitches if throttle is given while updating the configurations.
* Lock mc_interface while storing configuration.
* Nunchuk app local timeout.
- Prevents the output thread from blocking other outputs after being used before.
* Lock MC interface while storing configurations to flash.
=== FW 3.6 ===
* spi_sw for NRF stop bug fix.
=== FW 3.5 ===
* App NRF pairing.
* App nunchuk chuk error restore bug fix.
=== FW 3.4 ===
* HW version built into firmware.
- Allows VESC Tool to only list firmwares compatible with the hardware.
=== FW 3.2 ===
* hw_60 support.
* hw_das support.
* DRV8301 support.
- SPI implementation.
- Some terminal commands.
* DRV8313 support.
* 3 shunt support.
* Phase shunt support.
* Global RPM limit for both BLDC and FOC.
* Hall sensor software filtering.
* SPI software filtering.
* The software filters remove the need for hardware filtering on the sensor port, making it work for all different sensors without modification.
* Handbrake function for FOC (open loop braking).
* FOC updates and fixes.
- Current control signs.
- Control loop integrator fixes.
- Phase delay compensation and minimization.
- More consistent flux linkage detection.
- Resistance and inductance measurement bug fix that could cause a reboot.
- Timer sampling improvement and cleanup.
- Support for sampling in V0 and V7 when using phase shunts.
* Fix reboot on over temperature fault code.
* Motor temperature measurement and soft backoff.
* Terminal command for rotating magnet field generation (ACIM experimentation).
* Prevent motor start command during initialization.
* Hardware specific default configuration support.
* Stop functionality for apps so that reboots are not required anymore when changing app.
* EEPROM emulation bug fix: https://github.com/vedderb/bldc/issues/27