Motor a motorová skupina#
Zavedení#
Motory a skupiny motorů řídí pohyb částí robota. Motor ovládá jeden nakonfigurovaný inteligentní motor, zatímco MotorGroup ovládá více nakonfigurovaných inteligentních motorů společně, takže se pohybují v tandemu. Motory a skupiny motorů lze použít ke zvedání ramene, otáčení čelistí, otáčení kola nebo pohybu jiné části konstrukce. Dva nebo čtyři motory mohou spolupracovat jako pohon pro pohyb a otáčení celého robota.
Každý motor nebo skupina motorů se konfiguruje v okně Zařízení. V závislosti na sestavení se názvy motorů a skupin motorů mohou měnit. Tato stránka používá jako příklady názvů motor_1 a motor_group_1 V případě potřeby je nahraďte vlastními nakonfigurovanými názvy.
Ve výchozím nastavení FORWARD otáčí motor proti směru hodinových ručiček a REVERSE otáčí motor ve směru hodinových ručiček. Pokud je motor nastaven na zpětný chod, směr otáčení se přepne.
Existuje mnoho způsobů, jak kódovat motory a skupiny motorů. Níže je uveden seznam všech metod pro motory a skupiny motorů:
Akce – Zastavení a roztočení motorů a skupin motorů.
spin— Roztočí motor nebo skupinu motorů dopředu nebo dozadu navždy.spin_for— Roztočí motor nebo skupinu motorů o určitou vzdálenost.spin_to_position— Otočí motor nebo skupinu motorů do určité polohy.stop— Zastaví otáčení motoru nebo skupiny motorů.
Mutátory – Upravte nastavení motoru a skupiny motorů.
set_position— Změní aktuální polohu motoru nebo skupiny motorů na novou hodnotu.set_velocity— Říká motoru nebo skupině motorů, jak rychle se má otáčet.set_stopping— Nastavuje, jak se motor nebo skupina motorů zastaví: brzděním, doběhem nebo pozastavením.set_max_torque— Nastavuje, jak silně může motor nebo skupina motorů tlačit během otáčení.set_timeout— Nastavuje, jak dlouho se bude motor nebo skupina motorů snažit dokončit pohyb.set_reversed— Změní, zda se směr otáčení motoru obrátí.reset_position— Změní aktuální pozici motoru nebo skupiny motorů na 0.
Gettery – Kontrola stavu motoru a skupiny motorů.
is_done— Vrátí, zda byl pohyb motoru nebo skupiny motorů dokončen, jako booleovskou hodnotu.is_spinning— Vrátí, zda se motor nebo skupina motorů otáčí, jako booleovskou hodnotu.position— Vrátí aktuální pozici motoru nebo skupiny motorů.velocity— Vrátí rychlost otáčení motoru nebo skupiny motorů.current— Vrátí, kolik elektrického proudu motor nebo skupina motorů spotřebovává.power— Vrátí, kolik energie motor nebo skupina motorů spotřebovává.torque— Vrátí hodnotu krouticího momentu, který motor nebo skupina motorů používá.efficiency— Vrátí, jak efektivně motor nebo skupina motorů využívá energii.temperature— Vrátí teplotu motoru nebo skupiny motorů.count— Vrátí počet motorů ve skupině motorů.get_timeout— Vrátí aktuální dobu trvání časového limitu motoru nebo skupiny motorů.
Konstruktory – Ruční inicializace a konfigurace motorů a skupin motorů.
Motor— Vytvoří motor.MotorGroup— Vytvoří skupinu motorů.
Akce#
spin#
spin roztočí motor nebo skupinu motorů dopředu nebo dozadu navždy. Motor nebo skupina motorů se bude otáčet, dokud nedostane jinou akci, například se roztočí jiným směrem nebo se zastaví.
Usage:
motor_1.spin(direction, velocity, units)
Parametry |
Popis |
|---|---|
|
Směr otáčení motoru nebo skupiny motorů: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
Volitelné. Jednotka rychlosti:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
spin_for#
spin_for roztočí motor nebo skupinu motorů o určitou vzdálenost. Otáčení je relativní vzhledem k aktuální poloze motoru nebo skupiny motorů. Projekt počká, dokud se motor nebo skupina motorů nedotočí, než se spustí další řádek kódu.
Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)
Parametry |
Popis |
|---|---|
|
Směr otáčení motoru nebo skupiny motorů: |
|
Vzdálenost, o kterou se motor nebo skupina motorů otočí. Může to být |
|
Volitelné. Jednotka vzdálenosti: |
|
Volitelné. Rychlost otáčení od 0 % do 100 % při použití |
|
Volitelné. Jednotka rychlosti:
|
|
Volitelné.
|
# Spin the motor forward once, then reset
motor_1.spin_for(FORWARD, 90, DEGREES)
wait(1, SECONDS)
motor_1.spin_for(REVERSE, 90, DEGREES)
spin_to_position#
spin_to_position otočí motor nebo skupinu motorů do určité polohy.
Poloha motoru nebo skupiny motorů udává, o kolik se otočil, měřeno v DEGREES nebo TURNSJedna otáčka se rovná 360 stupňům. Na začátku projektu je poloha motoru nebo skupiny motorů nastavena na 0 stupňů. Polohu motoru nebo skupiny motorů lze také nastavit metodou set_position.
Hodnoty polohy jsou absolutní. To znamená, že směr otáčení závisí na aktuální poloze motoru nebo skupiny motorů.
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
Parametry |
Popis |
|---|---|
|
Hodnota polohy, do které se motor nebo skupina motorů otočí. Může to být |
|
Jednotka polohy: |
|
Volitelné. Rychlost otáčení od 0 % do 100 % při použití |
|
Volitelné. Jednotka rychlosti:
|
|
Volitelné.
|
# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)
stop#
stop zastaví otáčení motoru nebo skupiny motorů.
Usage:
motor_1.stop(mode)
Parametry |
Popis |
|---|---|
|
Volitelné. Jak se motor nebo skupina motorů zastaví:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
Mutátory#
set_position#
Poloha motoru nebo skupiny motorů udává, o kolik se otočil, měřeno v DEGREES nebo TURNSJedno otočení se rovná 360 stupňům. set_position změní aktuální polohu motoru nebo skupiny motorů na novou hodnotu.
Například pokud se motor nebo skupina motorů otočily o 180 stupňů, nastavení polohy na 0 stupňů resetuje tuto polohu ze 180 na 0 stupňů. Motor nebo skupina motorů se pak mohou otáčet do pozic na základě této nové hodnoty.
Usage:
motor_1.set_position(position, units)
Parametry |
Popis |
|---|---|
|
Hodnota pozice, která se má nastavit pro motor nebo skupinu motorů. Může to být |
|
Volitelné. Jednotka polohy: |
# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)
set_velocity#
set_velocity určuje rychlost otáčení motoru nebo skupiny motorů. Vyšší procento způsobí, že se motor nebo skupina motorů otáčí rychleji, a nižší procento způsobí, že se motor nebo skupina motorů otáčí pomaleji.
Každý projekt začíná s každým motorem nebo skupinou motorů, které se standardně otáčí rychlostí 50 %.
Poznámka: Vyšší rychlost způsobí, že se motor nebo skupina motorů otáčí rychleji, ale může to být méně přesné. Nižší rychlost způsobí, že se motor nebo skupina motorů otáčí pomaleji, ale může to být přesnější.
Usage:
motor_1.set_velocity(velocity, units)
Parametry |
Popis |
|---|---|
|
Rychlost, s jakou se bude motor nebo skupina motorů otáčet. |
|
Volitelné. Jednotka rychlosti:
|
# Spin forward at the default velocity
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
set_stopping#
set_stopping nastavuje, jak se motor nebo skupina motorů zastaví: brzděním, doběhem nebo pozastavením.
Usage:
motor_1.set_stopping(mode)
Parametry |
Popis |
|---|---|
|
Jak se motor nebo skupina motorů zastaví:
|
set_max_torque#
Točivý moment ukazuje, jak silně může motor nebo skupina motorů tlačit nebo táhnout během otáčení.
set_max_torque nastavuje maximální krouticí moment, který může motor nebo skupina motorů použít.
Vyšší procento umožňuje motoru nebo skupině motorů tlačit silněji, například při zvedání těžkého předmětu. Nižší procento omezuje, jak silně může motor nebo skupina motorů tlačit. To může pomoci chránit robota, pokud se motor nebo skupina motorů zasekne nebo dosáhne konce možného pohybu.
Každý projekt začíná s výchozím nastavením krouticího momentu každého motoru nebo skupiny motorů na 50 %.
Usage:
motor_1.set_max_torque(value, units)
Parametry |
Popis |
|---|---|
|
Maximální točivý moment, který může motor nebo skupina motorů použít. |
|
Volitelné. Jednotka točivého momentu:
|
set_timeout#
set_timeout nastavuje, jak dlouho se bude motor nebo skupina motorů pokoušet dokončit pohyb. Pokud motor nebo skupina motorů nedokáže v tomto čase dokončit pohyb, přestane se snažit a přesune se na další řádek kódu. Tím se zabrání tomu, aby se motor nebo skupina motorů zasekly na pohybu.
Usage:
motor_1.set_timeout(value, units)
Parametry |
Popis |
|---|---|
|
Doba, po kterou se motor nebo skupina motorů může pokusit dokončit pohyb. Může se jednat o kladné celé číslo |
|
Volitelné. Jednotka času:
|
set_reversed#
set_reversed mění, zda se směr otáčení motoru obrací. Tato metoda funguje stejně jako nastavení parametru reverse na True při konstrukci Motor.
Poznámka: Tato metoda bude fungovat pouze s motorem, nikoli se skupinou motorů.
Usage:
motor_1.set_reversed(value)
Parametry |
Popis |
|---|---|
|
Zda je směr otáčení motoru obrácen:
|
reset_position#
reset_position změní aktuální polohu motoru nebo skupiny motorů na 0.
Usage:
motor_1.reset_position()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
Gettery#
is_done#
is_done vrací booleovskou hodnotu, zda je pohyb motoru nebo skupiny motorů dokončen. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu motoru.
True— Pohyb motoru nebo skupiny motorů je dokončen.False— Motor nebo skupina motorů se stále pohybuje.
Tato metoda spolupracuje s následujícími metodami Motion, které mají parametr wait : spin_for a spin_to_position.
Usage:
motor_1.is_done()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
if motor_1.is_done():
drivetrain.stop()
else:
drivetrain.drive(FORWARD)
is_spinning#
is_spinning vrací booleovskou hodnotu, zda se motor nebo skupina motorů otáčí. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu motoru.
True— Motor nebo skupina motorů se otáčí.False— Motor nebo skupina motorů se neotáčí.
Tato metoda spolupracuje s následujícími metodami Motion, které mají parametr wait : spin_for a spin_to_position.
Usage:
motor_1.is_spinning()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
if motor_1.is_spinning():
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
position#
Poloha motoru nebo skupiny motorů udává, o kolik se otočil, měřeno v DEGREES nebo TURNSJedna otáčka se rovná 360 stupňům. position vrací aktuální polohu motoru nebo skupiny motorů.
Na začátku projektu je poloha motoru nebo skupiny motorů nastavena na 0 stupňů. Pokud se motor nebo skupina motorů otočí o jednu otáčku dopředu, poloha bude 360 stupňů neboli 1 otáčka. Pokud se motor nebo skupina motorů otočí opačným směrem, poloha bude záporná.
Usage:
motor_1.position(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka pro vrácení polohy motoru nebo skupiny motorů v: |
# Display the motor's position after spinning
brain.screen.print(motor_1.position())
brain.screen.next_row()
motor_1.spin(FORWARD)
wait(1, SECONDS)
brain.screen.print(motor_1.position())
motor_1.stop()
velocity#
velocity vrací rychlost otáčení motoru nebo skupiny motorů v procentech od -100 % do 100 % nebo v otáčkách za minutu od -127 ot/min do 127 ot/min.
Kladná hodnota znamená, že motor nebo skupina motorů se otáčí dopředu. Záporná hodnota znamená, že se otáčí dozadu.
Usage:
motor_1.velocity(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka rychlosti, která se má vrátit:
|
current#
current vrací množství elektrického proudu spotřebovaného motorem nebo skupinou motorů, měřeno v ampérech od 0,0 do 1,2 A. Proud je množství elektřiny protékající motorem nebo skupinou motorů.
Vyšší hodnota proudu znamená, že motor nebo skupina motorů spotřebovává více elektrického proudu. K tomu může dojít, když motor nebo skupina motorů zvedá něco těžkého, tlačí na nějaký předmět nebo se snaží pohnout zaseknutým předmětem.
Toto lze použít ke kontrole, zda motor nebo skupina motorů během pohybu nemá problémy. Pokud proud zůstává vysoký, motor se může zahřívat nebo méně efektivně využívat energii.
Usage:
motor_1.current(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Aktuální jednotka, která se má vrátit:
|
power#
power vrací množství energie spotřebované motorem nebo skupinou motorů, měřené ve wattech od 0,0 do 11,0 W. Výkon ukazuje, jak rychle motor nebo skupina motorů spotřebovává energii.
Vyšší hodnota výkonu znamená, že motor nebo skupina motorů spotřebovává energii rychleji. K tomu může dojít, když motor nebo skupina motorů zvedá něco těžkého, tlačí na nějaký předmět nebo se snaží pohnout zaseknutým předmětem.
Toto lze použít k porovnání pohybů nebo ke kontrole, zda motor či skupina motorů nemají problémy. Pokud výkon zůstává vysoký, motor se může zahřívat nebo méně efektivně využívat energii.
Usage:
motor_1.power(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Vracená jednotka výkonu:
|
torque#
Točivý moment ukazuje, jak silně se motor nebo skupina motorů otáčí, tlačí nebo táhne během otáčení.
torque vrací hodnotu točivého momentu, který motor nebo skupina motorů používá, měřeno v palcích-librách (InLb) od 0,0 do 22,0 nebo v Newtonmetrech (Nm) od 0,0 do 2,1.
Vyšší hodnota točivého momentu znamená, že motor nebo skupina motorů tlačí nebo táhne silněji. K tomu může dojít, když motor nebo skupina motorů zvedá něco těžkého, tlačí na nějaký předmět nebo se snaží pohnout zaseknutým předmětem.
To lze použít ke kontrole, zda motor nebo motorická skupina má potíže, nebo k porovnání, kolik tlaku potřebují různé pohyby.
Pro nastavení točivého momentu motoru nebo skupiny motorů použijte set_max_torque.
Usage:
motor_1.torque(units)
Parametry |
Popis |
|---|---|
|
Jednotka krouticího momentu, která se má vrátit:
|
efficiency#
efficiency vrací, jak efektivně motor nebo skupina motorů využívá energii, v procentech od 0 % do 100 %.
Účinnost ukazuje, kolik energie motoru nebo skupiny motorů se využívá k pohybu. Vyšší hodnota účinnosti znamená, že se k pohybu využívá více energie motoru nebo skupiny motorů. Nižší hodnota účinnosti může nastat, když motor nebo skupina motorů pracuje intenzivně, ale příliš se nepohybuje, například když je zaseknutý nebo tlačí na nějaký předmět.
To lze použít k porovnání pohybů nebo ke kontrole, zda motor nebo skupina motorů plýtvá energií, místo aby ji využívala k pohybu.
Usage:
motor_1.efficiency(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka účinnosti, která se má vrátit:
|
temperature#
temperature vrací teplotu motoru nebo skupiny motorů.
Teplota motoru ukazuje, jak je motor nebo skupina motorů zahřátý. Vyšší teplota znamená, že se motor nebo skupina motorů během provozu zahřívá. Motor by měl zůstat pod 55 °C, aby fungoval na plný výkon.
Pokud se motor nebo motorová skupina příliš zahřeje, sníží svůj maximální proud, aby se chránil. Při 70 °C se motor zastaví, dokud se neochladí.
Toto lze použít ke kontrole, zda se motor nebo skupina motorů příliš nezahřívá během opakovaných pohybů, dlouhých jízd nebo když tlačí na nějaký předmět.
Usage:
motor_1.temperature(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka teploty, která se má vrátit:
|
count#
count vrací počet motorů ve skupině motorů.
Poznámka: Tato metoda bude fungovat pouze se skupinou motorů.
Usage:
motor_group_1.count()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
get_timeout#
get_timeout vrací aktuální hodnotu timeout motoru nebo skupiny motorů v milisekundách.
Usage:
motor_1.get_timeout()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
Konstruktéři#
Konstruktory se používají k ručnímu vytvoření Motor a MotorGroup mimo okno Devices.
Motor#
Motor vytvoří motor.
Usage:
Motor(port, gears, reverse)
Parametr |
Popis |
|---|---|
|
Inteligentní port, ke kterému je motor připojen, zapsaný jako |
|
Volitelné. Převodový poměr motoru:
|
|
Volitelné. Nastavuje, zda se směr otáčení motoru obrací:
|
# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)
"""
Create a motor with the following values:
- In Port 1
- 36:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_36_1, True)
MotorGroup#
MotorGroup vytvoří skupinu motorů.
Usage:
MotorGroup(motors)
Parametr |
Popis |
|---|---|
|
Názvy dříve vytvořených objektů Motor |
# Create the Motors
motor_1 = Motor(Ports.PORT1)
motor_2 = Motor(Ports.PORT2)
# Create a Motor Group
motor_group_1 = MotorGroup(motor_1, motor_2)