Двигатели, насосы и исполнительные механизмы

Ответить
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Управление скоростью двигателя постоянного тока

Сообщение Oleg »

Оборудование

В этом эксперименте используется то же самое оборудование, что и в разд. «Эксперимент: управление электродвигателем» viewtopic.php?p=633#p633, но здесь вы не просто включаете и выключаете двигатель, а еще и управляете его скоростью.

Если вы ранее еще не сделали этого, соберите схему из разд. «Эксперимент: управление электродвигателем» viewtopic.php?p=633#p633. В качестве напоминания компоновка макетной платы для этого эксперимента показана на рисунке
Компоновка макетной платы для экспериментов с электродвигателем
Компоновка макетной платы для экспериментов с электродвигателем
Подключение Raspberry Pi

Подключите макетную плату к Raspberry Pi, как показано на рисунке ниже: при помощи перемычек «мама-папа» подсоедините заземление с макетной платы к одному из контактов GND колодки GPIO, а управляющий провод макетной платы - к контакту 18 Raspberry Pi
Подключение макетной платы для управления двигателем с Raspberry Pi
Подключение макетной платы для управления двигателем с Raspberry Pi
Программа для Raspberry Pi

Программа для Raspberry Pi принципиально похожа на код Arduino. В нашем случае программа предложит вам вводить значения коэффициента заполнения и тем самым управлять контактом 18.

Код:

Код: Выделить всё

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

control_pin = 18     # (1)

GPIO.setup(control_pin, GPIO.OUT)
motor_pwm = GPIO.PWM(control_pin, 500)  # (2)
motor_pwm.start(0)                      # (3)

try:         
    while True:                         # (4)
        duty = input('Enter Duty Cycle (0 to 100): ')
        if duty < 0 or duty > 100:
            print('0 to 100')
        else:
            motor_pwm.ChangeDutyCycle(duty)
        
finally:  
    print("Cleaning up")
    GPIO.cleanup()
Уточним некоторые моменты программы по пунктам, воспользовавшись разметкой строк, сделанной в комментариях:
1. Начальная часть кода точно такая же, как и код из разд. «Эксперимент: управление электродвигателем», но затем контакт 18 определяется в качестве вывода.
2. В качестве ШИМ-вывода контакт 18 задается в этой строке (библиотека RPi.GPIO позволяет в качестве ШИМ-вывода установить любой из контактов GPIO). Параметр 500 означает, что частота ШИМ равна 500 Гц (импульсов в секунду).
3. ШИМ-вывод не начнет работать, пока не будет вызвана функция start. Ее параметр - это исходное значение коэффициента заполнения, и поскольку мы начинаем работу с выключенным двигателем, это значение равно 0
4. В основном цикле у вас при помощи input при запрашивается значение duty, a затем проверяется, в каком оно диапазоне. Если оно находится в диапазоне от 0 до 100, то используется в качестве коэффициента заполнения в функции. ChangeDutyCycle.

Загружаем и выполняем программу

Запустите программу в режиме администратора при помощи команды sudo, а затем попробуйте вводить различные значения коэффициента заполнения. Скорость двигателя должна меняться, точно так же, как и в случае с Arduino:

Код: Выделить всё

pi@raspberrypi ~/make_action/python $ sudo python pwm_motor_control.py
Enter Duty Cycle (0 to 100) : 50
Enter Duty Cycle (0 to 100) : 10
Enter Duty Cycle (0 to 100) : 100
Enter Duty Cycle (0 to 100) : 0
Enter Duty Cycle (0 to 100) : 
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Соленоиды

Сообщение Oleg »


Ответить