diff --git a/CNAME b/CNAME
new file mode 100644
index 00000000..c15caf78
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+source.simplefoc.com
diff --git a/README.md b/README.md
index 1a834e25..9bb5a80b 100644
--- a/README.md
+++ b/README.md
@@ -32,19 +32,45 @@ Therefore this is an attempt to:
- Many many more boards developed by the community members, see [SimpleFOC Community](https://community.simplefoc.com/)
-> NEXT RELEASE 📢 : SimpleFOClibrary v2.4.0
->
-> - STM32 bugfix
+> NEW RELEASE 📢 : SimpleFOClibrary v2.4.0
+> - STM32
+> - Added support for ADC reads in addition to Lowside current sense [#506](https://github.com/simplefoc/Arduino-FOC/pull/506)
+> - Added support for multiple motors low-side CS (one per ADC) with ADC current sensing [#503](https://github.com/simplefoc/Arduino-FOC/pull/503)
> - BG341 low-side current sense sync was lost in v2.3.5 - fixed [#482](https://github.com/simplefoc/Arduino-FOC/pull/482)
-> - ESP32 bugfix
+> - ESP32
+> - Many ESP32 safety optimisations by [@uLipe](https://github.com/uLipe): [#490](https://github.com/simplefoc/Arduino-FOC/pull/490),[#491](https://github.com/simplefoc/Arduino-FOC/pull/491),[#492](https://github.com/simplefoc/Arduino-FOC/pull/492),[#493](https://github.com/simplefoc/Arduino-FOC/pull/493),[#495](https://github.com/simplefoc/Arduino-FOC/pull/495)
+> - Better ADC-Timer alignement for more stable current sensing [See this commit](https://github.com/simplefoc/Arduino-FOC/commit/877699b4db4e6e3ecc16b16cc4337af928e746f4)
> - Now compiles for all v3.x arduino-esp32 versions (v2.3.5 was compatible with v3.2.x)
> - `adcRead` small refactor - no more magic numbers
-> - New functionality
-> - Add current and voltage feed forward terms to motor classes by @Copper280z in https://github.com/simplefoc/Arduino-FOC/pull/454
-> - Velocity Calculation rework by @Copper280z in https://github.com/simplefoc/Arduino-FOC/pull/45
+> - Others
+> - Teensy4 support for phase state setting [#498](https://github.com/simplefoc/Arduino-FOC/pull/498) by [@Ragiton](https://github.com/Ragiton)
+> - Added support for Arduino Nano Matter board by [@silabs-szabog](https://github.com/silabs-szabog) : [#485](https://github.com/simplefoc/Arduino-FOC/pull/484)
+> - **Major New features**
+> - Add current and voltage feed forward terms to motor classes by [@Copper280z](https://github.com/Copper280z) in [#454](https://github.com/simplefoc/Arduino-FOC/pull/454)
+> - Velocity Calculation rework by [@Copper280z](https://github.com/Copper280z) in [#45](https://github.com/simplefoc/Arduino-FOC/pull/45)
+> - Motion control - [docs](https://docs.simplefoc.com/motion_control)
+> - Added `custom` motion control mode - see in [docs](https://docs.simplefoc.com/custom_control) and in [examples](https://github.com/simplefoc/Arduino-FOC/tree/master/examples/motion_control)
+> - Added `angle_nocascade` control mode for position control without velocity cascade - see in [docs](https://docs.simplefoc.com/angle_loop) - [#384](https://github.com/simplefoc/Arduino-FOC/pull/384)
+> - **Now all the closed and open loop modes can be used with any torque control modes (voltage and current)**
+> - Ex. `velocity_openloop` with `foc_current` torque control
+> - Torque control - [docs](https://docs.simplefoc.com/torque_control)
+> - Added `estimated_current` torque control mode for model-based current estimation without current sensing - see in [docs](https://docs.simplefoc.com/estimated_current_mode)
+> - Now we can easily switch between voltage and estimated current control
+> - Docs updates - see [docs](https://docs.simplefoc.com/)
+> - Write the code page updated - see [docs](https://docs.simplefoc.com/code)
+> - Better step-by-step setup guides - see [docs](https://docs.simplefoc.com/example_from_scratch)
+> - New motion control documentation - see [docs](https://docs.simplefoc.com/motion_control)
+> - New torque/FOC control documentation - see [docs](https://docs.simplefoc.com/torque_control)
+> - Theory corner updated and extended - see [docs](https://docs.simplefoc.com/theory_corner)
+> - Library source updated and extended - see [docs](https://docs.simplefoc.com/source_code)
+> - Practical guides updated and extended - see [docs](https://docs.simplefoc.com/practical_guides)
+> - Motor parameter measurement guide - see [docs](https://docs.simplefoc.com/practical_guides#motor-parameters-and-characterization)
+> - PID tuning guides - see [docs](https://docs.simplefoc.com/practical_guides#pid-tuning)
> - Examples
-> - `align_current_sense.ino` example added to the `examples/utls/current_sense_test` allowing to verify the alignment between the driver and the current sense phases
-
+> - `align_current_sense.ino` example added to the `examples/utils/current_sense_test` allowing to verify the alignment between the driver and the current sense phases
+> - Changelog
+> - See the release notes for more details: [see release](https://github.com/simplefoc/Arduino-FOC/releases)
+> - See the milestones: [v2.3.6 (unreleased)](https://github.com/simplefoc/Arduino-FOC/milestone/14) and [v2.4.0](https://github.com/simplefoc/Arduino-FOC/milestone/13)
## Arduino *SimpleFOClibrary* 
@@ -63,19 +89,19 @@ This video is a bit outdated but it demonstrates the *Simple**FOC**library* basi
- PlatformIO
- **Open-Source**: Full code and documentation available on github
- **Goal**:
- - Support as many [sensor](position_sensors) + [motor](motors) + [driver](drivers) + [current sense](current_sense) combinations as possible
+ - Support as many [sensor](https://docs.simplefoc.com/position_sensors) + [motor](https://docs.simplefoc.com/motors) + [driver](https://docs.simplefoc.com/drivers) + [current sense](https://docs.simplefoc.com/current_sense) combinations as possible
- Make transitioning from one hardware combination to another as seamless as possible
- Provide up-to-date and in-depth documentation with API references and examples
- **Easy to setup and configure**:
- Easy hardware configuration
- Each hardware component is a C++ object (easy to understand)
- - Easy [tuning the control loops](motion_control)
+ - Easy [tuning the control loops](https://docs.simplefoc.com/motion_control)
- Advanced control features: velocity and current feed-forward, improved velocity calculation
- - [*Simple**FOC**Studio*](studio) configuration GUI tool for real-time tuning and monitoring
+ - [*Simple**FOC**Studio*](https://docs.simplefoc.com/studio) configuration GUI tool for real-time tuning and monitoring
- Built-in communication and monitoring via Serial, I2C, or custom protocols
- **Cross-platform**:
- Seamless code transfer from one microcontroller family to another
- - Supports multiple [MCU architectures](microcontrollers):
+ - Supports multiple [MCU architectures](https://docs.simplefoc.commicrocontrollers):
- Arduino: UNO R4, UNO, MEGA, DUE, Leonardo, Nano, Nano33, MKR ....
- STM32 (Nucleo, Bluepill, B-G431B-ESC1, H7 family, etc.)
- ESP32 (ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6)
diff --git a/examples/motion_control/open_loop_motor_control/open_loop_position_example/open_loop_position_example.ino b/examples/motion_control/open_loop_motor_control/open_loop_position_example/open_loop_position_example.ino
index 6db1b979..d564f47e 100644
--- a/examples/motion_control/open_loop_motor_control/open_loop_position_example/open_loop_position_example.ino
+++ b/examples/motion_control/open_loop_motor_control/open_loop_position_example/open_loop_position_example.ino
@@ -71,6 +71,9 @@ void setup() {
}
void loop() {
+ //torque control
+ // should be called as frequently as possible
+ motor.loopFOC();
// open loop angle movements
// using motor.voltage_limit and motor.velocity_limit
// angles can be positive or negative, negative angles correspond to opposite motor direction
diff --git a/examples/motion_control/open_loop_motor_control/open_loop_velocity_example/open_loop_velocity_example.ino b/examples/motion_control/open_loop_motor_control/open_loop_velocity_example/open_loop_velocity_example.ino
index b1bc2760..dd0c4452 100644
--- a/examples/motion_control/open_loop_motor_control/open_loop_velocity_example/open_loop_velocity_example.ino
+++ b/examples/motion_control/open_loop_motor_control/open_loop_velocity_example/open_loop_velocity_example.ino
@@ -68,7 +68,10 @@ void setup() {
}
void loop() {
-
+
+ //torque control
+ // should be called as frequently as possible
+ motor.loopFOC();
// open loop velocity movement
// using motor.voltage_limit and motor.velocity_limit
// to turn the motor "backwards", just set a negative target_velocity
diff --git a/src/sensors/MagneticSensorAnalog.cpp b/src/sensors/MagneticSensorAnalog.cpp
index d4adad60..41698392 100644
--- a/src/sensors/MagneticSensorAnalog.cpp
+++ b/src/sensors/MagneticSensorAnalog.cpp
@@ -33,7 +33,7 @@ void MagneticSensorAnalog::init(){
float MagneticSensorAnalog::getSensorAngle(){
// raw data from the sensor
raw_count = getRawCount();
- return ( (float) (raw_count) / (float)cpr) * _2PI;
+ return ( (float) (raw_count - min_raw_count) / (float)cpr) * _2PI;
}
// function reading the raw counter of the magnetic sensor