Protezione dei motori intelligenti Rev 10 V5 (11 W) con codice

Questo si applica solo alla Rev 10 del V5 Smart Motor (11W).  Per saperne di più vai su rev10rma.vex.com

Quali comandi necessitano di protezione

Abbiamo identificato un problema che può causare il guasto di questi motori. Il problema si presenta quando al motore viene comandato di funzionare a una tensione superiore a 11 volt e quindi viene inviato un altro comando al motore per girare nella direzione opposta. Questa sequenza di comandi provoca un picco di tensione che danneggia i componenti sulla scheda elettronica del motore.

La maggior parte dei comandi motore utilizza la logica di controllo interna del motore che non consente al motore di raggiungere 11 volt di potenza in uscita. I comandi del motore come “motor.spinto(...)” e “motor.spinfor(...)” utilizzano il PID per mantenere la velocità e non consentono al motore di funzionare a una tensione superiore a 11 volt. L'unico comando che può essere utilizzato per inviare un comando di tensione specifico al motore è “motor.spin(...)”. Esistono diverse versioni di motor.spin():

Esempi di comandi in modalità tensione

 La versione specifica di motor.spin() che imposta la tensione dei motori è:

C++:

motore m1 = motore(PORT1, rapporto18_1, falso);

m1.spin(avanti, comandatoVolt, volt);

Pitone:

m1 = Motore(Porte.PORT1, GearSetting.RATIO_18_1, Falso)

m1.spin(AVANTI, Volt comandati, VOLT)

Protezione dei comandi in modalità tensione

La versione di motor.spin() che accetta unità di tensione è l'unico comando che può far funzionare il motore a 11 volt o superiori. Dovrai assicurarti di passare solo valori inferiori a 11.0 a questa funzione. Esempio:

C++
if( Volt comandati >= 11,0) {
Volt comandati = 10,9;
}
else if( Volt comandati <= -11,0) {
Volt comandati = -10,9;
}
m1.spin(avanti, comandatoVolt, volt);

Python
if( Volt comandati >= 11.0 ):
Volt comandati = 10.9
elif( Volt comandati <= -11.0 ):
Volt comandati = -10.9
m1. spin(AVANTI, Volt comandati, VOLT)

Se si utilizzano unità diverse dalle unità di tensione nel comando di rotazione, non è necessario eseguire questo controllo del valore comandato. Assicurati di non guidare mai i tuoi motori Rev 10 oltre 11 o più volt per evitare guasti ai motori. 

Riferimento ai comandi C++

/**
* @brief Accende il motore e lo fa girare nella direzione specificata.
* @paramdir La direzione in cui far girare il motore.
*/
voidspin( direzioneTipodir );

/**
* @brief Accende il motore e lo fa girare in una direzione specificata e a una
* velocità specificata.
* @paramdir La direzione in cui far girare il motore.
* @paramvelocità Imposta la quantità di velocità.
* @paramunità L'unità di misura per il valore della velocità.
*
83 84 85 Spin 86( DirectionTypeDir, Velocity, VelocityUnitsUnità )
rotazione( direzioneTipodir, doppiovelocità, percentoUnitàunità ){
rotazione( dir, velocità, static_cast<speedUnits>(unità) );
}


/**
* @brief Accende il motore e lo fa girare in una direzione specificata e con una tensione
* specificata.

* @paramdir La direzione in cui far girare il motore.
* @paramtensione Imposta la quantità di volt.
* @paramunità L'unità di misura per il valore della tensione.
*/

voidspin( direzioneTipodir, doppiotensione, tensioneUnitàunità );

 

Riferimento ai comandi Python

defspin(self, direzione: DirectionType.DirectionType, *args, **kwargs):
'''### Fai girare il motore utilizzando gli argomenti forniti

#### Argomenti:
direzione: la direzione in cui far girare il motore, AVANTI o INDIETRO
velocità (opzionale): rotazione Se il motore utilizza questa velocità, verrà utilizzata la velocità predefinita
impostata da set_velocity, se non fornita.
unità (opzionale): Le unità della velocità fornita, il valore predefinito è RPM

#### Restituisce:
Nessuno

#### Esempi:
# gira il motore in avanti a velocità impostata con set_velocity\\
motore1.spin(AVANTI)\n

# rotazione motore in avanti a 50 giri/min\\
motore1.spin(AVANTI, 50)\n

# rotazione con velocità negativa, es. indietro\\
motore1.spin(AVANTI, -20)\n

# rotazione motore in avanti con velocità al 100%\\
motore1.spin(AVANTI, 100, PERCENT)\n

# rotazione del motore in avanti a 50 giri/min\\
motor1.spin(AVANTI, 50, RPM)\n

# rotazione del motore in avanti a 360 dps123 \\
motore1.spin(AVANTI, 360.0, VelocityUnits.DPS)

'''


 



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

Last Updated: