Silnik#
Wstęp#
Silniki i grupy silników sterują ruchem części robota. Silnik Motor steruje jednym skonfigurowanym silnikiem IQ Smart Motor, natomiast grupa MotorGroup steruje wieloma skonfigurowanymi silnikami IQ 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 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 Motor i MotorGroup:
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_velocity— Informuje silnik lub grupę silników, z jaką prędkością ma się kręcić.set_max_torque— Ustawia siłę, z jaką silnik lub grupa silników może naciskać podczas wirowania.set_position— Zmienia bieżącą pozycję silnika lub grupy silników na nową wartość.set_stopping— Ustawia sposób zatrzymania silnika lub grupy silników: poprzez hamowanie, jazdę bez obciążenia lub przytrzymywanie.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.
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.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.direction— Zwraca kierunek, w którym obraca się silnik lub grupa 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 forward, 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, then put it
# at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.spin_for(REVERSE, 150, MM, 20, PERCENT)
wait(1, SECONDS)
# Spin faster
motor_1.spin_for(FORWARD, 150, MM, 100, PERCENT)
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 forward, then
# put it at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin forward then quickly reverse
# to 0 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(0, DEGREES, 100, PERCENT, wait=True)
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 forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop(COAST)
Mutatory#
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 the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(REVERSE, 150, MM)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 150, MM)
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 |
|
Jednostka momentu obrotowego:
|
# Spin the motor at different torque values
# Default
motor_1.spin_to_position(45, DEGREES)
# Spin at a lower torque
motor_1.set_max_torque(20, PERCENT)
motor_1.spin_to_position(0, DEGREES)
# Spin at the max torque
motor_1.set_max_torque(100, PERCENT)
motor_1.spin_to_position(45, DEGREES)
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ć |
|
Jednostka pozycji: |
# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)
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ę:
|
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.set_stopping(COAST)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop()
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 a 0.5 second timeout for motor actions
motor_1.set_timeout(0.5, SECONDS)
# Try a long move that will time out early
motor_1.spin_for(FORWARD, 2, TURNS)
motor_1.spin_to_position(0, DEGREES)
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 silnika 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:
|
# Change the reverse direction while spinning
motor_1.spin_for(FORWARD, 45)
motor_1.set_reversed(True)
motor_1.spin_for(FORWARD, 45)
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. |
# Spin to 360 degrees, then reset the encoder
motor_1.spin_to_position(360, DEGREES)
motor_1.reset_position()
# Move again to 90 degrees from new zero point
motor_1.spin_to_position(90, DEGREES)
Getters#
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: |
# Spin the motor and display the
# ending position
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
brain.screen.print(motor_1.position())
velocity#
velocity zwraca informację o tym, jak szybko obraca się silnik lub grupa silników.
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:
|
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. |
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. |
direction#
Kierunek direction zwraca aktualny kierunek, w którym obraca się silnik lub grupa silników.
FORWARDREVERSE
Usage:
motor_1.direction()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
power#
power zwraca moc zużywaną przez silnik lub grupę silników w watach. 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()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
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.
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, należy użyć 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()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
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 mógł pracować z pełną wydajnością, temperatura powinna utrzymywać się poniżej 55 stopni Celsjusza.
Jeśli silnik lub zespół silników przegrzeje się, obniży maksymalny prąd, aby się zabezpieczyć. Przy temperaturze 70 stopni Celsjusza 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.
Uwaga: Ta metoda działa TYLKO w przypadku grupy silników, a nie pojedynczego silnika.
Usage:
motor_group_1.count()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
get_timeout#
get_timeout zwraca aktualny limit czasu silnika lub grupy silników w milisekundach.
Uwaga: Ta metoda działa TYLKO w przypadku silnika, a nie grupy silników.
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_1 = Motor(smartport, 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 reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)
Motor Group#
MotorGroup tworzy grupę silników.
Usage:
motor_group_1 = MotorGroup(motors)
Parametr |
Opis |
|---|---|
|
Nazwy wcześniej utworzonych obiektów |
# Create two motors
motor_group_1_motor_a = Motor(Ports.PORT1, False)
motor_group_1_motor_b = Motor(Ports.PORT6, True)
# Create a motor group with those motors
motor_group_1 = MotorGroup(motor_group_1_motor_a, motor_group_1_motor_b)