Разделы сайта

Охрана труда.

. Были разработаны алгоритмы, обеспечивающие управление системой приводов и реализующие как супервизорное, так и автоматическое управление;

. Были спроектированы и реализованы схемы универсальных контроллеров;

. Было разработано программное обеспечение микроконтроллеров.

. Была разработана система управления высокого уровня;

. Был проведен ряд экспериментов по управлению шагающим роботом;

. Были рассчитаны экономические показатели;

. Были разработаны меры безопасности.

ПРИЛОЖЕНИЯ

. Принципиальная схема контроллера

. Листинг программы контроллера

/*****************************************************: Программа подчинённого контроллера / XPod

Timer1: ШИМ: управление: 1.07

Date : 11.07.2011: 16.12.2011Иванов Н.В.: МИЭМ:type : ATmega88type : Applicationfrequency : 7,372800 MHzmodel : SmallSRAM size : 0Stack size : 256

*****************************************************/

#include <mega48.h>

#include <stdio.h>

#include <delay.h>

#include "m48lib.h"

#include "usart48.h"

#include "shim48fx.h"

#include " \mxpdlib.h"

#include " \mxpdproto.h"

//----------------------------------------------------------currAng[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};goalAng[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};

// Начальное положение манипулятораstartAng[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};

// Массив флагов для управления сервоприводамиneedrotate[PWM_CH_NUM] = {0, 0, 0, 0, 0, 0, 0, 0};

#define AStepDefault 2 // Начальное значение шага изменения угла поворотаAStep = AStepDefault; // Шаг угла поворотаTICK_CNT = 0;wasBlocked = 0; // Флаг блокировки движенияADCVAL[8] = {0,0,0,0,0,0,0,0};

// Маска и значение прерывания операции CMD_SET_INT

BYTE INT_MASK = 0x00;INT_VALUE = 0xFF;SetStartPos(void);[TIM2_OVF] void timer2_ovf_isr(void)

// Рабочий таймер (7200 Hz)

// Эффективная частота - 28 Hz (7200/255) Hz / T2Div = 10 Hz

{

#define EFreq2 20 // 20 эффективная частота, Hz

#define T2Div2 (W_T2_FREQ/EFreq2)

int i;int CN = 0;n, bvalue;=W_TCNT2_RESET_VAL;++;(CN>=T2Div2) CN=0; else return;

//if(TICK_CNT%2) cmdIndic=1; else cmdIndic=0; //Этот индикатор нужен для диагностики ошибки

//if(TICK_CNT%2) out1=1; else out1=0;_CNT++;

// Пищалка(PIP_CNT>0) PIP_CNT--;SOUND = 0;= REGIST[REG_ASTEP];

// Проверяем датчики блокировки(i=0;i<8;i++)

{= (REGIST[REG_SBMASK] & (1<<i));(n)

{= ADCVAL[i];(bvalue>=(unsigned char)REGIST[REG_SBLIM]) // Блокируем движение

{= 1;(!wasBlocked)

{= 1;();;

};

}

}

}= 0;= 0;

// Управляем сервомашинками(i=0;i<fxPWM_CH_NUM;i++)

{(currAng[i]!=goalAng[i])

{[REG_STAT] |= (BYTE)(1<<i); // Установить разряд i в '1'(abs(currAng[i]-goalAng[i])<AStep)

{[i]=goalAng[i];

}

{(currAng[i]<goalAng[i])[i]=currAng[i]+AStep;[i] = currAng[i] - AStep;

}

// Выставляем флаг

//ShimSetAng(i, currAng[i]);[i] = 1;

}

{

// Гасим флаг[i] = 0;

// Команда отработана[REG_STAT] &= (BYTE)(~(1<<i)); // Установить разряд i в '0'

}

}

}SetStartPos(void)

// Установить в начальное положение

{i;(i=0;i<fxPWM_CH_NUM;i++)

{(i, startAng[i]);[i] = currAng[i] = startAng[i];[REG_STAT] = 0x00;

}

}StopAllServo(void)

Перейти на страницу: 7 8 9 10 11 12 13 14 15 16 17

Самое читаемое:

Анализ и синтез автоматической системы регулирования электропривода углового перемещения
Современная теория автоматического регулирования является основной частью теории управления. Система автоматического регулирования состоит из регулируемого объекта и элементов управления, которые воздействуют на объект при изменении одной или нескольких регулируемых переменных. Под влиянием входных сигналов (управления или возмущени ...

www.techstages.ru : Все права защищены! 2024