. Были разработаны алгоритмы, обеспечивающие управление системой приводов и реализующие как супервизорное, так и автоматическое управление;
. Были спроектированы и реализованы схемы универсальных контроллеров;
. Было разработано программное обеспечение микроконтроллеров.
. Была разработана система управления высокого уровня;
. Был проведен ряд экспериментов по управлению шагающим роботом;
. Были рассчитаны экономические показатели;
. Были разработаны меры безопасности.
ПРИЛОЖЕНИЯ
. Принципиальная схема контроллера
. Листинг программы контроллера
/*****************************************************: Программа подчинённого контроллера / 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 = {0, 0, 0, 0, 0, 0, 0, 0};goalAng = {0, 0, 0, 0, 0, 0, 0, 0};
// Начальное положение манипулятораstartAng = {0, 0, 0, 0, 0, 0, 0, 0};
// Массив флагов для управления сервоприводамиneedrotate = {0, 0, 0, 0, 0, 0, 0, 0};
#define AStepDefault 2 // Начальное значение шага изменения угла поворотаAStep = AStepDefault; // Шаг угла поворотаTICK_CNT = 0;wasBlocked = 0; // Флаг блокировки движенияADCVAL = {0,0,0,0,0,0,0,0};
// Маска и значение прерывания операции CMD_SET_INT
BYTE INT_MASK = 0x00;INT_VALUE = 0xFF;SetStartPos(void); 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;
// Проверяем датчики блокировки(i=0;i<8;i++)
{= (REGIST & (1<<i));(n)
{= ADCVAL;(bvalue>=(unsigned char)REGIST) // Блокируем движение
{= 1;(!wasBlocked)
{= 1;();;
};
}
}
}= 0;= 0;
// Управляем сервомашинками(i=0;i<fxPWM_CH_NUM;i++)
{(currAng!=goalAng)
{ |= (BYTE)(1<<i); // Установить разряд i в '1'(abs(currAng-goalAng)<AStep)
{=goalAng;
}
{(currAng<goalAng)=currAng+AStep; = currAng - AStep;
}
// Выставляем флаг
//ShimSetAng(i, currAng); = 1;
}
{
// Гасим флаг = 0;
// Команда отработана &= (BYTE)(~(1<<i)); // Установить разряд i в '0'
}
}
}SetStartPos(void)
// Установить в начальное положение
{i;(i=0;i<fxPWM_CH_NUM;i++)
{(i, startAng); = currAng = startAng; = 0x00;
}
}StopAllServo(void) Перейти на страницу: 7 8 9 10 11 12 13 14 15 16 17
Популярное:
Исследование аналого-цифрового преобразователя с помощью Elvis Цель настоящей работы исследование процессов протекающих в аналого-цифровых преобразователях (АЦП) с помощью комплекта виртуальных измерительных приборов для учебных лабораторий «NI ELVIS». В качестве исследуемого АЦП разработан лабораторный стенд. Для конкретизации поставленных выше целей определим актуальность поставленной задачи ...