Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

0

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

Принцип работы схемы:

Схема управления двигателем соединена с портом параллельного ввода–вывода, посредством 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 вызывается посредством четырёхразрядного значения (байт данных, в котором игнорируются четыре старших разряда). Каждая пара битов представляет направление вращения двигателей.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *