코드로 Rev 10 V5 스마트 모터(11W) 보호

이는 V5 스마트 모터(11W)의 Rev 10에만 적용됩니다.  자세한 내용을 알아보려면 rev10rma.vex.com으로 이동하세요.

보호가 필요한 명령

우리는 이러한 모터의 고장을 일으킬 수 있는 문제를 확인했습니다. 이 문제는 모터가 11V보다 높은 전압에서 작동하라는 명령을 받은 후 모터에 반대 방향으로 회전하라는 또 다른 명령이 전송될 때 나타납니다. 이러한 일련의 명령으로 인해 모터 PC 보드의 구성 요소가 손상되는 전압 스파이크가 발생합니다.

대부분의 모터 명령은 모터가 11V 출력 전력에 도달하는 것을 허용하지 않는 모터의 내부 제어 논리를 사용합니다. "motor.spinto(...)" 및 "motor.spinfor(...)"와 같은 모터 명령은 PID를 사용하여 속도를 유지하고 모터가 11V 이상으로 작동하는 것을 허용하지 않습니다. 모터에 특정 전압 명령을 보내는 데 사용할 수 있는 유일한 명령은 "motor.spin(...)"입니다. motor.spin()에는 여러 버전이 있습니다:

전압 모드 명령의 예

 모터 전압을 설정하는 motor.spin()의 특정 버전은 다음과 같습니다.

C++:

모터 m1 = 모터(PORT1, ratio18_1, false);

m1.spin(앞으로, 명령받은Volts, volt);

파이썬:

m1 = 모터(Ports.PORT1, GearSetting.RATIO_18_1, False)

m1.spin(FORWARD, 명령된Volts, VOLT)

전압 모드 명령 보호

전압 단위를 사용하는 motor.spin() 버전은 모터가 11V 이상에서 작동하도록 할 수 있는 유일한 명령입니다. 이 함수에는 11.0보다 작은 값만 전달해야 합니다. 예:

C++
if( commandedVolts >= 11.0) {
commandedVolts = 10.9;
}
else if( commandedVolts <= -11.0) {
commandedVolts = -10.9;
}
m1.spin(전진, 명령받은볼트, 볼트);

Python
if( commandedVolts >= 11.0 ):
commandedVolts = 10.9
elif( commandedVolts <= -11.0 ):
commandedVolts = -10.9
. 스핀(FORWARD, 명령된Volts, VOLT)

spin 명령에서 전압 단위 이외의 단위를 사용하는 경우 이 명령된 값 확인을 수행할 필요가 없습니다. Rev 10 모터를 11V 이상으로 구동하지 않도록 하여 모터에 결함이 발생하지 않도록 하십시오. 

C++ 명령 참조

/**
* @brief 모터를 켜고 지정된 방향으로 회전합니다.
* @paramdir 모터를 회전시킬 방향입니다.
*/
공백회전( 방향 유형dir );

/**
* @brief 모터를 켜고 지정된 방향과
* 지정된 속도로 회전합니다.
* @paramdir 모터를 회전시킬 방향입니다.
* @param속도 속도의 양을 설정합니다.
* @param단위 속도 값의 측정 단위입니다.
*/
공백회전( 방향 유형방향, 이중속도, 속도단위단위 );
회전118 방향 유형방향, 이중속도, 퍼센트단위 ){
회전( 디렉토리, 속도, static_cast<speedUnits>(단위) );
}


/**
* @brief 모터를 켜고 지정된 방향과
* 지정된 전압으로 회전시킵니다.

* @paramdir 모터를 회전시키는 방향입니다.
* @param전압 볼트의 양을 설정합니다.
* @param단위 전압 값의 측정 단위입니다.
*/

공극회전( 방향 유형방향, 이중전압, 전압단위단위 );

 

Python 명령 참조

def스핀(자체, 방향: DirectionType.DirectionType, *args, **kwargs):
'''### 제공된 인수를 사용하여 모터를 회전합니다.

#### 인수:
방향: 모터를 회전하는 방향, FORWARD 또는 REVERSE
속도(선택 사항): 회전 이 속도를 사용하는 모터에서는 제공되지 않으면 set_velocity에 의해 설정된 기본
속도가 사용됩니다.
단위(선택 사항): 제공된 속도의 단위, 기본값은 RPM입니다.

#### 반환:
없음

#### 예:
# 모터를 앞으로 회전 set_velocity로 설정된 속도\\
motor1.spin(FORWARD)\n

# 모터를 50rpm으로 앞으로 회전\\
motor1.spin(FORWARD, 50)\n

# 음의 속도로 회전합니다. 즉, 뒤로\\
motor1.spin(FORWARD, -20)\n

# 모터를 100% 속도로 앞으로 회전\\
motor1.spin(FORWARD, 100, PERCENT)\n

# 모터를 50rpm으로 앞으로 회전\\
motor1.spin(FORWARD, 50, RPM)\n

# 모터를 360dps로 앞으로 회전\\
모터1.스핀(앞으로, 360.0, VelocityUnits.DPS)

'''


 



For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: