Управление двигателями постоянного тока с помощью компьютера

Принцип работы схемы:
Схема управления двигателем соединена с портом параллельного ввода–вывода, посредством U1, четырёхразрядного триггера-фиксатора 74LS192. Первые четыре линии данных используются для управления двигателями, а стробирующий сигнал от компьютера позволяет сохранить данные. В схеме две отдельных части управления двигателями, в каждой из которых по два транзистора и два реле. В схеме используются следующие реле: однополюсное на два направления и двухполюсное на два направления, с максимально допустимой мощностью включения контактов, подходящей для управляемых двигателей. Каждый двигатель управляется двумя битами, что даёт возможность оказывать на каждый двигатель четыре управляющих воздействия.

Первые две линии данных управляют одним двигателем, а следующие две (D2 и D3), управляют вторым двигателем, где: 00 = остановка, 01 = вперёд, 10 = назад, 11 = остановка. Для обратной связи схемы используются данные линий состояния параллельного порта. Кодеры углового положения, прикреплённые к валам двигателей, состоят из металлического или пластикового диска с отверстиями и пары светодиод/фоторезистор с каждой стороны диска. Инверторы (U2a и U2b) регулируют сигнал, полученный на фоторезисторе и подают на компьютер импульсы с резким временем подъёма и падения. Переменные резисторы 50 кОм настраиваются таким образом, чтобы инвертор включался только тогда, когда свет светодиода падает на фоторезистор сквозь отверстие в диске. Значение должно составлять примерно 17 кОм, однако оно будет зависеть от используемого фоторезистора.



Кодер двигателя № 1 подключается к линии состояния «нет бумаги», а кодер двигателя № 2 к линии состояния «занято». Компьютер опрашивает эти две линии в момент вращения двигателей.

Программная часть была написана на Turbo C и выполняет две функции: управление скоростью вращения двигателей и считывание состояния кодеров. Можно использовать и более современное ПО, при условии, что оно выполняет вышеописанные функции.

#include
#define TRUE 1
#define FALSE 0
#define ENC1 0x80
#define ENC2 0x20
int status(unsigned char encoder)
{
if((inportb(0x379) & encoder) > 0 )
return(TRUE);
else
return(FALSE);
}
void DCout(unsigned char movement)
{
outportb(37A,3); /* set load high */
outportb(378,movement); /* output motor command */
outportb(37A,2); /* strobe */
outportb(37A,3); /* strobe */
}


Функция считывания состояния вызывается с помощью ENC1 или ENC2 как параметра, который возвращает значение состояние одного из кодеров. Требуется циклический вызов функции, а счётчик используется для подсчёта отверстий на каждом кодере. Функция управления DCout вызывается посредством четырёхразрядного значения (байт данных, в котором игнорируются четыре старших разряда). Каждая пара битов представляет направление вращения двигателей.

0 комментариев

Ваше имя: *
Ваш e-mail: *
Войти через
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Введите два слова, показанных на изображении:
© 2016 Все права соблюдены.