SERob3 (python) Խնդիր #1 - Փոփոխել շարժիչի արագությունը հեռաչափից կախված։

Post Reply
davbaghdasaryan
Posts: 101
Joined: Thu Apr 09, 2020 8:08 pm

SERob3 (python) Խնդիր #1 - Փոփոխել շարժիչի արագությունը հեռաչափից կախված։

Post by davbaghdasaryan »

Change the motor speed depending on the rangefinder | Изменить скорость двигателя в зависимости от дальномера


Բարեւ ձեզ։ Այսօր մենք կքննարկենք մի խնդիր՝ կփոփոխենք հաստատուն հոսանքի շարժիչի արագությունը հեռաչափից կախված։ Դրա համար մեզ անհրաժեշտ է՝

1) SERob3 controller (ղեկավարիչ),
2) Ուլտրաձայնային հեռաչափ,
3) հաստատուն հոսանքի շարժիչ իր դրայվերով։

Սկզբում շարժիչը միացնում ենք դրայվերին հետեւյալ կերպ՝

Picture1.png
Picture1.png (147.61 KiB) Viewed 12103 times
Շարժիչը միացնում ենք SERob3-ի motors բաժնի pin 0-ին, հեռաչափի input-ը՝
D In/O բաժնի pin 3-ին, իսկ output-ը՝ նույն բաժնի pin 4-ին։
Picture2.png
Picture2.png (137.79 KiB) Viewed 12103 times
Վերջ։ Սխեման ավարտեցինք։ Ծրագիրը ստեղծելու համար նախ օգտվում ենք «time myPwm», «time» և «Usrf» գրադարաններից։ Գրանցում ենք «Usrf»-ը որպես «myUsrf» եւ «Pwm»-ը՝ որպես «myPwm»։
Սեղմեք այստեղ

Code: Select all

from SERob3 import Pwm
from SERob3 import Usrf
import time

myUsrf = Usrf()
myPwm = Pwm()
Հետագա գործողությունները անդադար շարունակելու համար օգտագործում ենք «while (1):» հրամանը։

Code: Select all

while (1):
Աշխատանքն ավելի հեշտացնելու համար` տպենք հեռաչափից ստացած հեռավորությունը։

Code: Select all

 print(myUsrf.Distance(3))
Ստուգումներից առաջ միշտ սպասել 0.5 վայրկյան։
Կատարել համեմատությունները. եթե հեռավորությունը մեծ է 50սմ-ից, ապա շարժիչը գտնվի սպասող վիճակում, եթե փոքր է 7սմ- ից` կանգնի, իսկ եթե մեծ է 7սմ-ից եւ փոքր է 50սմ-ից, ապա x – ին տանք հեռավորություն * 50 / 70 արժեքը։
Տեսնել ավելին
Ինչպես աշխատացնել շարժիչները՝ viewtopic.php?f=8&t=13&sid=17e4575f4952 ... 622f88284])
Ինչպես աշխատացնել հեռաչափը՝ viewtopic.php?f=8&t=10&sid=17e4575f4952 ... 5622f88284)
Code example

Code: Select all

from SERob3 import Pwm
from SERob3 import Usrf
import time

myUsrf = Usrf()
myPwm = Pwm()

while (1):
        print(myUsrf.Distance(3))
        
        time.sleep(0.5)

        if myUsrf.Distance(3) > 50:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 7:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 50 and myUsrf.Distance(3) > 7:

                x = myUsrf.Distance(3) * 70 / 50

                myPwm.Out(0, x)

Այնուհետեւ SERob-ին միանալուց հետո անհրաժեշտ է մտնել այն կատալոգը, որտեղ գտնվում է ծրագիրը։ Դրա համար բացում ենք տերմինալը և գրում․ «cd projects», այնուհետեւ «cd SERob3», «cd problems» «sudo python2» եւ ֆայլի անվանումը «Usrf_motor.py»։
Տերմինալի հրամաններ

Code: Select all

cd projects
cd SERob3
cd problems
sudo python2 Usrf_motor.py
Վերջ, մենք ստացանք մեզ անհրաժեշտ արդյունքը

Last edited by davbaghdasaryan on Mon Aug 02, 2021 5:42 pm, edited 3 times in total.

davbaghdasaryan
Posts: 101
Joined: Thu Apr 09, 2020 8:08 pm

Задача #1 - Изменить скорость двигателя в зависимости от дальномера

Post by davbaghdasaryan »

Добрый день. Сегодня мы рассмотрим одну задачу - изменим скорость двигателя постоянного тока в зависимости от дальномера. Для этого нам потребуются:

1) SERob3 контроллер (controller),
2) Ультразвуковой дальномер,
3) Двигатель постоянного тока со своим драйвером.

Сначала двигатель подключаем к драйверу следующим образом:
Picture1.png
Picture1.png (147.61 KiB) Viewed 11930 times
Двигатель подключаем к pin 0 секции motors SERob3, input дальномера - к pin 3 секции D In/O, а output - к pin 4 той же секции.
Picture2.png
Picture2.png (137.79 KiB) Viewed 11930 times
Все. Схема завершена. Чтобы создать программу, в первую очередь, воспользуемся библиотеками "time myPwm", "time" и "Usrf". Записываем "Usrf" как "myUsrf" и "Pwm" - как "myPwm".
code:

Code: Select all

from SERob3 import Pwm
from SERob3 import Usrf
import time

myUsrf = Usrf()
myPwm = Pwm()
Для непрерывного продолжения дальнейших действий воспользуемся командой "while (1):".

Code: Select all

while (1):
Для облегчения задачи напечатаем расстояние, полученное от дальномера.

Code: Select all

print(myUsrf.Distance(3))
Перед проверками всегда ждать 0.5 секунд.
Провести сравнения: если расстояние больше 50 см, то двигатель должен находится в режиме ожидания, если меньше 7 см - остановиться, а если больше 7 см и меньше 50 см, то x-у зададим расстояние * значение 50 / 70.
code:

Code: Select all


        if myUsrf.Distance(3) > 50:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 7:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 50 and myUsrf.Distance(3) > 7:

                x = myUsrf.Distance(3) * 70 / 50

                myPwm.Out(0, x)

Запустим программу. Для этого откроем terminal и укажем каталог, в котором находится программа, и запустим ее.
Terminal:

Code: Select all

cd projects
cd SERob3
cd problems
sudo python2 Usrf_motor.py 
Вот и все. Мы получили необходимый нам результат.
Код программы:

Code: Select all

from SERob3 import Pwm
from SERob3 import Usrf
import time

myUsrf = Usrf()
myPwm = Pwm()

while (1):
        print(myUsrf.Distance(3))
        
        time.sleep(0.5)

        if myUsrf.Distance(3) > 50:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 7:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 50 and myUsrf.Distance(3) > 7:

                x = myUsrf.Distance(3) * 70 / 50

                myPwm.Out(0, x)



davbaghdasaryan
Posts: 101
Joined: Thu Apr 09, 2020 8:08 pm

Re: SERob3 (python) Task #1 - Change the motor speed depending on the rangefinder

Post by davbaghdasaryan »

Hi! Today will discuss how to change the DC motor speed depending on the rangefinder. This requires

1) SERob3 controller
2) Ultrasonic sensor range finder(Usrf)
3) DC motors with their drivers

First we connect the motor to the driver as follows

Image

Connect the motor to the pin 0 from the motors section of SERob 3, then connect the input of the Usrf with pin 3 from D In/0 section and the output - with the pin 4 from the same section.

Image

So, we finished the scheme. Let's move on to software.
In order to create the program we need to use the “time myPwm”, “time” and “Usrf” libraries.
Let’s register the “Usrf” as “myUsrf” and the “Pwm” as “myPwm”.

Code

Code: Select all

from SERob3 import Pwm
from SERob3 import Usrf
import time

myUsrf = Usrf()
myPwm = Pwm()
In order to continue the subsequent operations uninterrupted we need to use the “while (1)” command.

Code: Select all

while (1):
To ease the work, let’s print the distance received from the rangefinder.

Code: Select all

 print(myUsrf.Distance(3))
Always wait 0.5 seconds before checking.

Make comparisons. If the distance is more than 50 cm, then the motor will be in standby mode, if the distance is less than 7 cm, it will stop and if the distance is more than 7 cm and less than 50 cm, then give *50/70 value to the x variable.
Click
Code example

Code: Select all

from SERob3 import Pwm
from SERob3 import Usrf
import time

myUsrf = Usrf()
myPwm = Pwm()

while (1):
        print(myUsrf.Distance(3))
        
        time.sleep(0.5)

        if myUsrf.Distance(3) > 50:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 7:
                myPwm.Out(0, 0)

        if myUsrf.Distance(3) < 50 and myUsrf.Distance(3) > 7:

                x = myUsrf.Distance(3) * 70 / 50

                myPwm.Out(0, x)

Let’s run the program. Open the terminal and mention the catalogue where the program is located and run the program.
Terminal commands

Code: Select all

cd projects
cd SERob3
cd problems
sudo python2 Usrf_motor.py
So, we got the results we needed.
The program code is as follows:


Post Reply