Raspberry Pi:Примеры/Управление вращением вала мощного электродвигателя постоянного тока
Содержание | Введение | Продукты | Операционная система | Настройка | Основы Linux | Аппаратные средства | Неисправности | Типовые проблемы | Часто возникающие вопросы | Библиотеки | Примеры |
Управление вращением вала мощного электродвигателя постоянного тока
Данный пример демонстрирует управление вращением вала мощного электродвигателя постоянного тока, запитываемого от отдельного источника питания. Старайтесь не использовать выводы GPIO в качестве источника питания для внешних устройств. Через вывод GPIO Raspberry Pi можно пропускать только относительно малые токи.
Резистор в цепи ограничивает прохождение через вывод GPIO сильных токов, которые возникают при закрытии и открытии затвора МОП-транзистора.
При подаче на затвор МОП-транзистора напряжения больше 2В он отпирается и через транзистор протекает ток, обеспечивая питание нагрузке.
Сохраните программу и запустите из консоли или любой IDE:
python3 gui_slider.py
Необходимое оборудование
- плата Raspberry Pi - 1шт.;
- пара перемычек;
- макетная плата - 1шт.;
- резистор 1 кОм - 1шт.;
- N-канальный МОП-транзистор(например:FQP30N06L) - 1шт.;
- диод(1N4001) - 1шт.;
- блок питания 12В - 1шт.;
- мощный электродвигатель постоянного тока - 1шт.;
Схема
Будьте осторожны при обращении с портами GPIO вашего Raspberry Pi. Помните входы и выходы GPIO расссчитаны на напряжение +3,3В |
Положительный вывод источника питания идет к одному из выводов электродвигателя, второй вывод электродвигателя подключается к стоку МОП-транзистора.
Исток заземляется и подключается к минусу источника питания и 14 выводу GPIO.
Затвор подключается через резистор к 12 выводу GPIO.
Диод в цепи используется для защиты от наводки, которая может повредить как транзистор так и вывод GPIO.
Все манипуляции по подключению МОП-транзистора производите только при отключенном питании платы Raspberry Pi |
Код
Python 2.X
from Tkinter import *
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 500)
pwm.start(100)
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
scale = Scale(frame, from_=0, to=100,
orient=HORIZONTAL, command=self.update)
scale.grid(row=0)
def update(self, duty):
pwm.ChangeDutyCycle(float(duty))
root = Tk()
root.wm_title('PWM Power Control')
app = App(root)
root.geometry("200x50+0+0")
root.mainloop()
Python 3.X
from tkinter import *
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 500)
pwm.start(100)
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
scale = Scale(frame, from_=0, to=100,
orient=HORIZONTAL, command=self.update)
scale.grid(row=0)
def update(self, duty):
pwm.ChangeDutyCycle(float(duty))
root = Tk()
root.wm_title('PWM Power Control')
app = App(root)
root.geometry("200x50+0+0")
root.mainloop()