Scott Bezek 4 年之前
父节点
当前提交
b583ab5a3d
共有 1 个文件被更改,包括 45 次插入30 次删除
  1. 45 30
      firmware/src/motor_task.cpp

+ 45 - 30
firmware/src/motor_task.cpp

@@ -50,9 +50,9 @@ void MotorTask::run() {
     // float zero_electric_offset = -0.6; // original proto
     //float zero_electric_offset = 0.4; // handheld 1
     // float zero_electric_offset = -0.8; // handheld 2
-    float zero_electric_offset = 0; // 17mm test
-    bool tlv_invert = true;
-    Direction foc_direction = Direction::CCW;
+    float zero_electric_offset = 2.93; //0.15; // 17mm test
+    bool tlv_invert = false;
+    Direction foc_direction = Direction::CW;
 
 
     driver.voltage_power_supply = 5;
@@ -84,34 +84,49 @@ void MotorTask::run() {
     tlv.update();
     delay(10);
 
-    //Open loop motor test code:
-    motor.controller = MotionControlType::angle_openloop;
-    while (1) {
-        motor.voltage_limit = 5;
-        for (float a = 0; a < _2PI; a += 0.001) {
-            motor.move(a);
-            delay(1);
-            // tlv.update();
-            Serial.printf("%d, %d\n", (int)(motor.electricalAngle() * 1000), (int)(tlv.getMechanicalAngle()*1000));
-        }
-        delay(1000);
-        for (float a = _2PI; a > 0; a -= 0.001) {
-            motor.move(a);
-            delay(1);
-            tlv.update();
-        }
-        motor.voltage_limit = 1;
-        motor.move(0);
-        delay(8000);
-    }
-/*
-1.7571
-4.4333
-
-5.5365
-3.3717
-*/
     motor.initFOC(zero_electric_offset, foc_direction);
+
+    // //Open loop motor test code:
+    // motor.controller = MotionControlType::angle_openloop;
+    // while (1) {
+    //     motor.voltage_limit = 5;
+    //     for (float a = -0.2; a < _2PI; a += 0.001) {
+    //         tlv.update();
+    //         motor.move(a);
+    //         delay(1);
+    //         float measured_electrical = _normalizeAngle( (float)(foc_direction * POLE_PAIRS) * tlv.getMechanicalAngle() - zero_electric_offset);
+    //         float target_electrical = _normalizeAngle(_electricalAngle(a, POLE_PAIRS));
+    //         Serial.printf("%d, %d, %d, %d\n", (int)(a*1000), (int)(target_electrical*1000), (int)(measured_electrical * 1000), (int)(tlv.getMechanicalAngle()*1000));
+    //     }
+    //     delay(1000);
+    //     for (float a = _2PI; a > -0.2; a -= 0.001) {
+    //         motor.move(a);
+    //         delay(1);
+    //         tlv.update();
+    //     }
+    //     motor.voltage_limit = 1;
+    //     motor.move(0);
+    //     delay(8000);
+    // }
+
+
+    // while (1) {
+    //     static bool last;
+    //     motor.loopFOC();
+    //     bool forward = (millis() / 2000) % 2;
+    //     motor.move(digitalRead(PIN_BUTTON_PREV) ? 0 : 1.5 * (forward ? 1 : -1));
+    //     if (forward != last) {
+    //         Serial.println(forward);
+    //         last = forward;
+    //     }
+    //     if (!digitalRead(PIN_BUTTON_NEXT)) {
+    //         motor.zero_electric_angle = _normalizeAngle(motor.zero_electric_angle + 0.001);
+    //         Serial.println(motor.zero_electric_angle);
+    //     }
+    //     delay(1);
+    // }
+
+
     Serial.println(motor.zero_electric_angle);
 
     command.add('M', &doMotor, "foo");