Scott Bezek 4 år sedan
förälder
incheckning
b92b805e13
2 ändrade filer med 14 tillägg och 3 borttagningar
  1. 7 2
      firmware/src/interface_task.cpp
  2. 7 1
      firmware/src/motor_task.cpp

+ 7 - 2
firmware/src/interface_task.cpp

@@ -6,6 +6,13 @@ using namespace ace_button;
 #define COUNT_OF(A) (sizeof(A) / sizeof(A[0]))
 
 static KnobConfig configs[] = {
+    // int32_t num_positions;
+    // int32_t position;
+    // float position_width_radians;
+    // float detent_strength_unit;
+    // float snap_point;
+    // char descriptor[50];
+
     {
         0,
         0,
@@ -99,13 +106,11 @@ void InterfaceTask::run() {
                 nextConfig();
             }
         }
-        // Serial.println(digitalRead(36));
         delay(10);
     }
 }
 
 void InterfaceTask::handleEvent(AceButton* button, uint8_t event_type, uint8_t button_state) {
-    Serial.println("EVENT!");
     switch (event_type) {
         case AceButton::kEventPressed:
             nextConfig();

+ 7 - 1
firmware/src/motor_task.cpp

@@ -69,7 +69,13 @@ void MotorTask::run() {
     tlv.update();
     delay(10);
 
-    motor.initFOC(-0.6, Direction::CCW);
+    // Tune zero offset to the specific hardware (motor + mounted magnetic sensor).
+    // SimpleFOC is supposed to be able to determine this automatically (if you omit params to initFOC), but
+    // it seems to have a bug (or I've misconfigured it) that gets both the offset and direction very wrong!
+    // So this value is based on experimentation.
+    // TODO: dig into SimpleFOC calibration and find/fix the issue
+    float zero_electric_offset = -0.6;
+    motor.initFOC(zero_electric_offset, Direction::CCW);
     Serial.println(motor.zero_electric_angle);
 
     command.add('M', &doMotor, "foo");