Rev 10 V5 Smart Motors (11W) beschermen met code

Dit geldt alleen voor Rev 10 van de V5 Smart Motor (11W).  Ga voor meer informatie naar rev10rma.vex.com

Welke commando's bescherming nodig hebben

We hebben een probleem geïdentificeerd dat ervoor kan zorgen dat deze motoren defect raken. Het probleem doet zich voor wanneer de motor de opdracht krijgt om te draaien op een spanning hoger dan 11 volt en vervolgens een ander commando naar de motor wordt gestuurd om in de tegenovergestelde richting te draaien. Deze reeks opdrachten veroorzaakt een spanningspiek die componenten op de printplaat van de motor beschadigt.

De meeste motoropdrachten maken gebruik van de interne besturingslogica van de motor, waardoor de motor geen 11 volt uitgangsvermogen kan bereiken. Motorcommando's zoals “motor.spinto(...)” en “motor.spinfor(...)” gebruiken PID om de snelheden te handhaven en zorgen ervoor dat de motor niet boven de 11 volt kan draaien. Het enige commando dat gebruikt kan worden om een ​​specifiek spanningscommando naar de motor te sturen is “motor.spin(...)”. Er zijn verschillende versies van motor.spin():

Voorbeelden van opdrachten voor de spanningsmodus

 De specifieke versie van motor.spin() die de motorspanning instelt, is:

C++:

motor m1 = motor(POORT1, ratio18_1, false);

m1.spin(vooruit, opgedragenVolts, volt);

Python:

m1 = Motor(Poorten.PORT1, GearSetting.RATIO_18_1, False)

m1.spin(VOORUIT, opgedragenVolt, VOLT)

Beveiliging van opdrachten in de spanningsmodus

De versie van motor.spin() die spanningseenheden gebruikt, is het enige commando dat ervoor kan zorgen dat de motor op of boven 11 volt draait. U moet ervoor zorgen dat u alleen waarden die kleiner zijn dan 11,0 aan deze functie doorgeeft. Voorbeeld:

C++
if( opgedragenVolts >= 11.0) {
opgedragenVolts = 10.9;
}
else if(opgedragenVolts <= -11,0) {
= -10,9;
}
m1.spin(vooruit, op commandoVolt, volt);

Python
if(opgedragenVolts >= 11.0 ):
= 10.9
elif(opgedragenVolts <= -11.0
:
17opgedragenVolts = -10.9
m1. spin(FORWARD, opgedragenVolt, VOLT)

Als u andere eenheden dan spanningseenheden gebruikt in het draaicommando, hoeft u deze opgedragen waardecontrole niet uit te voeren. Zorg ervoor dat u uw Rev 10-motoren nooit boven de 11 volt of meer laat rijden, om te voorkomen dat uw motoren defect raken. 

C++ Commandoreferentie

/**
* @brief Zet de motor aan en draait deze in de opgegeven richting.
* @paramdir De richting waarin de motor draait.
*/
voidspin( directionTypedir );

/**
* @brief Zet de motor aan en laat deze in een bepaalde richting en met een
* gespecificeerde snelheid draaien.
* @paramdir De richting waarin de motor draait.
* @paramsnelheid Stelt de hoeveelheid snelheid in.
* @parameenheden De meeteenheid voor de snelheidswaarde.
*/
leegtespin( richtingTypedir, dubbelsnelheid, snelheidEenhedeneenheden );
leegtespin( directionTypedir, dubbelsnelheid, procentEenhedeneenheden ){
draaien( dir, snelheid>static_cast<155VelocityUnits(eenheden) );
}


/**
* @brief Schakelt de motor in en laat deze in een gespecificeerde richting draaien met een gespecificeerde spanning van
*.

* @paramdir De richting waarin de motor draait.
* @paramspanning Stelt het aantal volt in.
* @parameenheden De meeteenheid voor de spanningswaarde.
*/

leegtespin( richtingTyperichting, dubbelspanning, spanningEenhedeneenheden );

 

Python-opdrachtreferentie

defspin(zelf, richting: DirectionType.DirectionType, *args, **kwargs):
'''### Draai de motor met behulp van de opgegeven argumenten

#### Argumenten:
richting: de richting waarin de motor draait, VOORUIT of ACHTERUIT
snelheid (optioneel): draaien Als de motor deze snelheid gebruikt, wordt de standaardsnelheid
, ingesteld door set_velocity, gebruikt als deze niet is opgegeven.
eenheden (optioneel) : De eenheden van de opgegeven snelheid, standaard is RPM

#### Retourneert:
Geen

#### Voorbeelden:
# draai motor vooruit op snelheid ingesteld met set_velocity\\
motor1.spin(FORWARD)\n

# spin motor vooruit bij 50 rpm\\
motor1.spin(FORWARD, 50)\n

# spin met negatieve snelheid, dwz. achteruit\\
motor1.spin(FORWARD, -20)\n

# spin motor vooruit met 100% snelheid\\
motor1.spin(FORWARD, 100, PERCENT)\n

# motor vooruit draaien bij 50 rpm\\
motor1.spin(FORWARD, 50, RPM)\n

# motor vooruit draaien bij 360 dps\\
motor1.spin (VOORUIT, 360,0, VelocityUnits.DPS)

'''


 



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

Last Updated: