Silnik i Grupa Motoryzacyjna#
Wstęp#
Silniki i grupy silników sterują ruchem części robota. Silnik Motor steruje jednym skonfigurowanym silnikiem Smart Motor, natomiast grupa MotorGroup steruje wieloma skonfigurowanymi silnikami Smart Motor, dzięki czemu poruszają się one w tandemie. Silniki i grupy silników mogą być używane do podnoszenia ramienia, obracania chwytaka, obracania koła lub przesuwania innej części konstrukcji. Dwa lub cztery silniki mogą współpracować jako układ napędowy, aby poruszać i obracać całego robota.
Każdy silnik lub grupa silników jest konfigurowana w oknie Urządzenia. W zależności od wersji, nazwy silników i grup silników mogą się zmieniać. Na tej stronie użyto przykładowych nazw: motor_1 i motor_group_1 W razie potrzeby można je zastąpić własnymi, skonfigurowanymi nazwami.
Domyślnie, FORWARD obraca silnik przeciwnie do ruchu wskazówek zegara, a REVERSE obraca silnik zgodnie z ruchem wskazówek zegara. Jeśli silnik jest ustawiony na bieg wsteczny, kierunki te zostaną zmienione.
Istnieje wiele sposobów kodowania silników i grup silników. Poniżej znajduje się lista wszystkich metod dotyczących silników i grup silników:
Działania — zatrzymanie i obrót silników i grup silników.
spin— Obraca silnik lub grupę silników do przodu lub do tyłu w nieskończoność.spin_for— Obraca silnik lub grupę silników na określoną odległość.spin_to_position— Obraca silnik lub grupę silników do określonej pozycji.stop— Zatrzymuje silnik lub grupę silników przed wirowaniem.
Mutatory — dostosuj ustawienia silnika i grupy silników.
set_position— Zmienia bieżącą pozycję silnika lub grupy silników na nową wartość.set_velocity— Informuje silnik lub grupę silników, z jaką prędkością ma się kręcić.set_stopping— Ustawia sposób zatrzymania silnika lub grupy silników: poprzez hamowanie, jazdę bez obciążenia lub przytrzymywanie.set_max_torque— Ustawia siłę, z jaką silnik lub grupa silników może naciskać podczas wirowania.set_timeout— Ustawia, ile czasu silnik lub grupa silników będzie próbowała zakończyć ruch.set_reversed— Zmienia, czy kierunek wirowania silnika jest odwrócony.reset_position— Zmienia bieżącą pozycję silnika lub grupy silników na 0.
Gettery — sprawdź status silnika i grupy silników.
is_done— Zwraca wartość logiczną informującą, czy silnik lub grupa silników zakończyła ruch.is_spinning— Zwraca wartość logiczną informującą, czy silnik lub grupa silników się kręci.position— Zwraca aktualną pozycję silnika lub grupy silników.velocity— Zwraca prędkość, z jaką obraca się silnik lub grupa silników.current— Zwraca wartość prądu elektrycznego zużywanego przez silnik lub grupę silników.power— Zwraca ilość energii zużywanej przez silnik lub grupę silników.torque— Zwraca wartość momentu obrotowego używanego przez silnik lub grupę silników.efficiency— Zwraca informację o tym, jak efektywnie silnik lub grupa silników wykorzystuje energię.temperature— Zwraca temperaturę silnika lub grupy silników.count— Zwraca liczbę silników w grupie silników.get_timeout— Zwraca aktualny czas trwania limitu czasu silnika lub grupy silników.
Konstruktorzy — ręczna inicjalizacja i konfiguracja silników i grup silników.
Motor— Tworzy silnik.MotorGroup— Tworzy grupę silników.
Akcje#
spin#
spin powoduje nieograniczony obrót silnika lub grupy silników do przodu lub do tyłu. Silnik lub grupa silników będzie się obracać, dopóki nie zostanie wykonana inna czynność, np. obrót w innym kierunku lub zatrzymanie.
Usage:
motor_1.spin(direction, velocity, units)
Parametry |
Opis |
|---|---|
|
Kierunek obrotu silnika lub grupy silników: |
|
Opcjonalnie. Prędkość wirowania od 0% do 100% przy użyciu |
|
Opcjonalnie. Jednostka prędkości:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
spin_for#
spin_for obraca silnik lub grupę silników o określoną odległość. Obrót jest względny do aktualnej pozycji silnika lub grupy silników. Projekt będzie czekał, aż silnik lub grupa silników zakończy obrót, zanim zostanie uruchomiony kolejny wiersz kodu.
Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)
Parametry |
Opis |
|---|---|
|
Kierunek obrotu silnika lub grupy silników: |
|
Odległość, na jaką obraca się silnik lub grupa silników. Może to być liczba całkowita |
|
Opcjonalnie. Jednostka odległości: |
|
Opcjonalnie. Prędkość wirowania od 0% do 100% przy użyciu |
|
Opcjonalnie. Jednostka prędkości:
|
|
Opcjonalnie.
|
# 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 obraca silnik lub grupę silników do określonej pozycji.
Pozycja silnika lub grupy silników to odległość, o jaką obrócił się silnik, mierzona w DEGREES lub TURNS. Jeden obrót to 360 stopni. Na początku projektu położenie silnika lub grupy silników jest ustawione na 0 stopni. Położenie silnika lub grupy silników można również ustawić za pomocą metody set_position.
Wartości pozycji są bezwzględne. Oznacza to, że kierunek obrotu zależy od aktualnej pozycji silnika lub grupy silników.
Na przykład, jeśli silnik lub grupa silników zaczyna od 0 stopni i obraca się do pozycji 720 stopni, wykona dwa obroty do przodu. Jeśli następnie obraca się do pozycji 360 stopni, wykona jeden obrót do tyłu, ponieważ 360 stopni jest mniejsze niż 720 stopni.
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
Parametry |
Opis |
|---|---|
|
Wartość pozycji, do której silnik lub grupa silników będzie się obracać. Może to być |
|
Jednostka pozycji: |
|
Opcjonalnie. Prędkość wirowania od 0% do 100% przy użyciu |
|
Opcjonalnie. Jednostka prędkości:
|
|
Opcjonalnie.
|
# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)
stop#
stop zatrzymuje silnik lub grupę silników przed wirowaniem.
Usage:
motor_1.stop(mode)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jak silnik lub grupa silników zatrzyma się:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
Mutatory#
set_position#
Pozycja silnika lub grupy silników to odległość, na jaką wykonał on obrót, mierzona w DEGREES lub TURNS. Jeden obrót jest równy 360 stopniom. set_position zmienia bieżącą pozycję silnika lub grupy silników na nową wartość.
Na przykład, jeśli silnik lub grupa silników obróciła się o 180 stopni, ustawienie pozycji na 0 stopni spowoduje zresetowanie tej pozycji ze 180 do 0 stopni. Następnie silnik lub grupa silników może obracać się do pozycji na podstawie tej nowej wartości.
Usage:
motor_1.set_position(position, units)
Parametry |
Opis |
|---|---|
|
Wartość pozycji do ustawienia dla silnika lub grupy silników. Może to być |
|
Opcjonalnie. Jednostka pozycji: |
# 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 określa prędkość obrotową silnika lub grupy silników. Wyższy procent powoduje, że silnik lub grupa silników obraca się szybciej, a niższy procent powoduje, że silnik lub grupa silników obraca się wolniej.
Każdy projekt rozpoczyna się od tego, że każdy silnik lub grupa silników obraca się domyślnie z prędkością 50%.
Uwaga: Wyższa prędkość sprawia, że silnik lub grupa silników obraca się szybciej, ale może być mniej precyzyjna. Niższa prędkość sprawia, że silnik lub grupa silników obraca się wolniej, ale może być bardziej precyzyjna.
Usage:
motor_1.set_velocity(velocity, units)
Parametry |
Opis |
|---|---|
|
Prędkość wirowania od 0% do 100% przy użyciu |
|
Opcjonalnie. Jednostka prędkości:
|
# 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 ustawia sposób zatrzymania silnika lub grupy silników: poprzez hamowanie, jazdę bez obciążenia lub przytrzymywanie.
Usage:
motor_1.set_stopping(mode)
Parametry |
Opis |
|---|---|
|
W jaki sposób silnik lub grupa silników zatrzyma się:
|
Jeżeli ta metoda nie zostanie użyta, silnik będzie używał BRAKE podczas zatrzymywania.
set_max_torque#
Moment obrotowy pokazuje, jak mocno silnik lub grupa silników może pchać lub ciągnąć podczas obrotu.
set_max_torque ustawia maksymalny moment obrotowy, jaki może osiągnąć silnik lub grupa silników.
Wyższy procent pozwala silnikowi lub grupie silników na mocniejsze pchanie, np. podczas podnoszenia ciężkiego przedmiotu. Niższy procent ogranicza siłę, z jaką silnik lub grupa silników może pchać. Może to pomóc w ochronie robota, jeśli silnik lub grupa silników utknie lub osiągnie granicę swojego zasięgu.
Każdy projekt rozpoczyna się od momentu obrotowego każdego silnika lub grupy silników wynoszącego domyślnie 50%.
Usage:
motor_1.set_max_torque(value, units)
Parametry |
Opis |
|---|---|
|
Maksymalny moment obrotowy, jaki może wykorzystać silnik lub grupa silników. Może to być liczba całkowita |
|
Opcjonalnie. Jednostka momentu obrotowego:
|
set_timeout#
set_timeout ustawia, ile czasu silnik lub grupa silników będzie próbować zakończyć ruch. Jeśli silnik lub grupa silników nie zdoła zakończyć ruchu w tym czasie, przerwie próbę i przejdzie do następnego wiersza kodu. Zapobiega to zablokowaniu silnika lub grupy silników podczas ruchu.
Usage:
motor_1.set_timeout(value, units)
Parametry |
Opis |
|---|---|
|
Czas, przez jaki silnik lub grupa silników może próbować zakończyć ruch. Może to być dodatnia liczba całkowita |
|
Opcjonalnie. Jednostka czasu:
|
set_reversed#
set_reversed zmienia, czy kierunek wirowania silnika jest odwrócony. Ta metoda działa tak samo, jak ustawienie parametru reverse na True podczas konstruowania Motor.
Uwaga: Ta metoda działa TYLKO w przypadku silnika, a nie grupy silników.
Usage:
motor_1.set_reversed(value)
Parametry |
Opis |
|---|---|
|
Czy kierunek obrotów silnika jest odwrócony:
|
reset_position#
reset_position zmienia bieżącą pozycję silnika lub grupy silników na 0.
Usage:
motor_1.reset_position()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
Getters#
is_done#
is_done zwraca wartość logiczną, czy silnik lub grupa silników zakończyła ruch. Można jej użyć do sterowania czasem innych zachowań na podstawie ruchu silnika.
True— Silnik lub grupa silników zakończyła ruch.False— Silnik lub grupa silników nadal się porusza.
Ta metoda działa w połączeniu z następującymi metodami Motion, które mają parametr wait wait : spin_for i spin_to_position.
Usage:
motor_1.is_done()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# 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 zwraca wartość logiczną, czy silnik lub grupa silników się obraca. Można jej użyć do sterowania czasem innych zachowań na podstawie ruchu silnika.
True— Silnik lub grupa silników się kręci.False— Silnik lub grupa silników nie obraca się.
Ta metoda działa w połączeniu z następującymi metodami Motion, które mają parametr wait wait : spin_for i spin_to_position.
Usage:
motor_1.is_spinning()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# 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#
Pozycja silnika lub grupy silników to odległość, na jaką wykonał on obrót, mierzona w DEGREES lub TURNS. Jeden obrót jest równy 360 stopniom. position zwraca aktualną pozycję silnika lub grupy silników.
Na początku projektu położenie silnika lub grupy silników jest ustawione na 0 stopni. Jeśli silnik lub grupa silników obróci się o jeden obrót do przodu, położenie będzie wynosić 360 stopni lub 1 obrót. Jeśli silnik lub grupa silników obróci się w przeciwnym kierunku, położenie będzie ujemne.
Usage:
motor_1.position(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jednostka zwracająca położenie silnika lub grupy silników w zakresie: |
# 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 zwraca prędkość, z jaką obraca się silnik lub grupa silników, jako wartość procentową od -100% do 100% lub jako liczbę obrotów na minutę od -127 obr./min do 127 obr./min.
Wartość dodatnia oznacza, że silnik lub grupa silników obraca się do przodu. Wartość ujemna oznacza, że obraca się do tyłu.
Usage:
motor_1.velocity(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jednostka prędkości do zwrócenia:
|
current#
current zwraca wartość prądu elektrycznego zużywanego przez silnik lub grupę silników, mierzoną w amperach od 0,0 do 1,2 A. Prąd to ilość prądu przepływającego przez silnik lub grupę silników.
Wyższa wartość prądu oznacza, że silnik lub zespół silników zużywa więcej prądu. Może się tak zdarzyć, gdy silnik lub zespół silników podnosi ciężki przedmiot, naciska na niego lub próbuje się poruszyć, gdy utknie.
Można tego użyć, aby sprawdzić, czy silnik lub zespół silników ma problemy podczas ruchu. Jeśli prąd utrzymuje się na wysokim poziomie, silnik może się nagrzewać lub zużywać energię mniej efektywnie.
Usage:
motor_1.current(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Aktualna jednostka do zwrócenia:
|
power#
power zwraca wartość mocy zużywanej przez silnik lub grupę silników, mierzoną w watach od 0,0 do 22,0 W. Moc pokazuje, jak szybko silnik lub grupa silników zużywa energię.
Wyższa wartość mocy oznacza, że silnik lub grupa silników zużywa energię szybciej. Może się to zdarzyć, gdy silnik lub grupa silników podnosi coś ciężkiego, popycha przedmiot lub próbuje się poruszyć, gdy utknie.
Można tego użyć do porównania ruchów lub sprawdzenia, czy silnik lub grupa silników ma problemy. Jeśli moc pozostaje wysoka, silnik może się nagrzewać lub zużywać energię mniej efektywnie.
Usage:
motor_1.power(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jednostka mocy do zwrócenia:
|
torque#
Moment obrotowy pokazuje, jak mocno silnik lub grupa silników skręca, popycha lub ciągnie podczas obrotu.
torque zwraca wartość momentu obrotowego używanego przez silnik lub grupę silników, mierzoną w calach-funtach (InLb) od 0,0 do 22,0 lub niutonometrach (Nm) od 0,0 do 2,1.
Wyższa wartość momentu obrotowego oznacza, że silnik lub grupa silników pcha lub ciągnie mocniej. Może się tak zdarzyć, gdy silnik lub grupa silników podnosi coś ciężkiego, popycha obiekt lub próbuje się poruszyć, gdy jest zablokowany.
Można tego użyć, aby sprawdzić, czy dany ruch lub grupa ruchowa ma trudności, lub porównać, ile siły nacisku potrzeba przy różnych ruchach.
Aby ustawić moment obrotowy silnika lub grupy silników, użyj set_max_torque.
Usage:
motor_1.torque(units)
Parametry |
Opis |
|---|---|
|
Zwracana jednostka momentu obrotowego:
|
efficiency#
efficiency zwraca informację o tym, jak efektywnie silnik lub grupa silników wykorzystuje energię, w procentach od 0% do 100%.
Sprawność pokazuje, jaka część mocy silnika lub grupy silników jest wykorzystywana do poruszania się. Wyższa wartość sprawności oznacza, że większa część mocy silnika lub grupy silników jest wykorzystywana do poruszania się. Niższa wartość sprawności może wystąpić, gdy silnik lub grupa silników intensywnie pracuje, ale porusza się nieznacznie, na przykład gdy jest zablokowany lub popycha obiekt.
Można tego użyć do porównywania ruchów lub sprawdzenia, czy silnik lub grupa silników marnuje energię zamiast wykorzystać ją do ruchu.
Usage:
motor_1.efficiency(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jednostka wydajności do zwrócenia:
|
temperature#
temperature zwraca temperaturę silnika lub grupy silników.
Temperatura silnika wskazuje, jak ciepły jest silnik lub zespół silników. Wyższa temperatura oznacza, że silnik lub zespół silników nagrzewa się podczas pracy. Aby silnik pracował z pełną wydajnością, temperatura powinna utrzymywać się poniżej 55°C.
Jeśli silnik lub zespół silników przegrzeje się, obniży maksymalny prąd, aby się zabezpieczyć. Przy temperaturze 70°C silnik przestanie pracować do momentu ostygnięcia.
Można tego użyć, aby sprawdzić, czy silnik lub grupa silników nie przegrzewa się podczas powtarzających się ruchów, długich biegów lub gdy naciska na jakiś obiekt.
Usage:
motor_1.temperature(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jednostka temperatury do zwrócenia:
|
count#
count zwraca liczbę silników w grupie silników.
Note: This method will only work with a motor group.
Usage:
motor_group_1.count()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
get_timeout#
get_timeout zwraca bieżący timeout silnika lub grupy silników w milisekundach.
Usage:
motor_1.get_timeout()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
Konstruktorzy#
Konstruktory służą do ręcznego tworzenia obiektów Motor i MotorGroup poza oknem Urządzenia.
Motor#
Motor tworzy silnik.
Usage:
Motor(port, gears, reverse)
Parametr |
Opis |
|---|---|
|
Inteligentny port, do którego podłączony jest silnik, zapisany jako |
|
Opcjonalnie. Przełożenie silnika:
|
|
Opcjonalnie. Ustawia, czy kierunek wirowania silnika jest odwrócony:
|
# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)
"""
Create a motor with the following values:
- In Port 1
- 2:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_2_1, True)
MotorGroup#
MotorGroup tworzy grupę silników.
Usage:
MotorGroup(motors)
Parametr |
Opis |
|---|---|
|
Nazwy wcześniej utworzonych obiektów |
# 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)