Проектирование радиоуправляемой копии модели самолёта Piper J-3 Cub
Особенности подключения контроллеров. Основные схемы и их описания. Этапы разработки модели радиоуправляемого самолета. Руководство пользователя и тестирование устройства. Экономическое обоснование разработки. Вопросы охраны труда при проектировании.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 21.04.2017 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
gIn = micros() - mStart + 20;
} else {
mStart = micros();
rps = rps + 5 * counter ;
rps = rps * 5 / 6;
counter = 0;
sei();
rpsK = param[PROP_PARAM] * rps / 300.0;
if (paramSetOn || calibOn) {
gAOut = 0;
} else if (directOn) {
gAOut = gIn;
} else {
gAOut = param[GAIN_MAX_PARAM] / (1.0 + rpsK * param[GAIN_SUP_PARAM] * 5.0);
}
gOut = setValue(gMin, gMax, gAOut);
// Parameter adjustment.
if (curParam > 0) {
param[curParam] = getValue(gMin, gMax, gIn);
}
// Battery check.
zIn = analogRead(BATT_IN) / 1024.0;
lowBatt = (zIn > 0.1) && (zIn * 4.0 + tOutA * 0.35 < 2.0 + param[LOW_BATT_PARAM] ) && (param[LOW_BATT_PARAM] > 0.1) ;
}
}
// MOD interrupt processing.
ISR(INT2_vect)
{
if (digitalRead(MOD_IN_PIN) == HIGH) {
gStart = micros();
} else {
modIn = micros() - gStart + 20;
sei();
sw = (modIn < sw1Level) ? 0 :
(modIn < sw2Level) ? 1 : 2 ;
}
}
// UTILITY FUNCTIONS
// Read EEPROM stored parameters into params double array.
void readParams()
{
for (int i = 1; i <= NUM_PARAMS; i++) {
param[i] = EEPROM.read(i) / 256.0;
}
}
// Stores current param param in EEPROM.
void writeParam()
{
if (curParam > 0) {
int paramInt = param[curParam] * 256.0;
if (paramInt < 0)
paramInt = 0;
else if (paramInt > 255)
paramInt = 255;
EEPROM.write(curParam, paramInt);
}
}
// Set timer to fire interrupt in some period of time.
void setTimer(int lapse)
{
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = - lapse * 16;
TCCR1B |= (1 << CS10); // enable Timer1 overflow interrupt
}
// Converts PPM pulse length in mks
// to double value (0.0 - 1.0);
float getValue(int v1, int v2, int v)
{
if (v < v1)
return 0.0;
else if (v > v2)
return 1.0;
return (v - v1) * 1.0 / (v2 - v1);
}
// Converts double value (0.0 - 1.0) to
// the PPM pulse length in mks.
int setValue(int v1, int v2, float value)
{
int v = v1 + value * (v2 - v1);
if (v < v1)
return v1;
if (v > v2)
return v2;
return v;
}
// Does pulses of zummer.
void buzz(int num, int millsOn, int millsOff)
{
delay(millsOff);
for (int i = 0; i < num; i++) {
digitalWrite(ZUMM_OUT_PIN, LOW);
delay(millsOn);
digitalWrite(ZUMM_OUT_PIN, HIGH);
delay(millsOff);
}
}
// Switches on LED and do buzz when
// current 'variable' parameter crosses
// stored parameter value.
void dispValChange(boolean doSound)
{
if (curParam == 0)
return;
int vOld = EEPROM.read(curParam);
int v = param[curParam] * 256.0;
setLED(v > vOld);
if (isLess) {
if (v < vOld - 1) {
if (doSound)
buzz(10, 1, 1);
isLess = false;
}
} else {
if (v > vOld + 1) {
if (doSound)
buzz(10, 1, 1);
isLess = true;
}
}
}
// Detects if the switch is changed
boolean switchChanged() {
boolean state = oldSw != sw;
oldSw = sw;
return state;
}
// Detects if throttle is low.
boolean thrLow() {
return tIn - tMax < 150;
}
// Prints int value into serial.
void printInt(const char* name, int value) {
Serial.print(name);
Serial.print(": ");
Serial.println(value);
}
// Initilizes pins, timer and interrupts.
void systemInit()
{
pinMode(GAIN_OUT_PIN, OUTPUT);
pinMode(THR_OUT_PIN, OUTPUT);
pinMode(LED_OUT_PIN, OUTPUT);
digitalWrite(LED_OUT_PIN, LOW);
pinMode(ZUMM_OUT_PIN, OUTPUT);
digitalWrite(ZUMM_OUT_PIN, HIGH);
// Timer setup.
TCCR1A = 0;
TIMSK1 = (1 << TOIE1); // Set CS10 bit so timer runs at clock speed:
TCCR1B |= (1 << CS10); // enable Timer1 overflow interrupt
// Enabling interrupts
cli();
EICRA |= (1 << ISC00) | (1 << ISC10) | (1 << ISC20);
EICRB |= (1 << ISC60) | (1 << ISC61);
EIMSK |= (1 << INT6) | (1 << INT0) | (1 << INT1) | (1 << INT2);
sei();
}
// First time formatting.
void formatEEPROM()
{
if (EEPROM.read(GMIN) != 0)
return;
EEPROM.write(GMIN, 1096 / 10);
EEPROM.write(GMAX, 1964 / 10);
EEPROM.write(TMIN, 1030 / 10);
EEPROM.write(TMAX, 1892 / 10);
EEPROM.write(GAIN_SUP_PARAM, 0.32 * 255);
EEPROM.write(GAIN_MAX_PARAM, 1.0 * 255);
EEPROM.write(LOW_BATT_PARAM, 0.85 * 255);
EEPROM.write(PROP_PARAM, 0.73 * 255);
EEPROM.write(THR_SUP_PARAM, 0.39 * 255);
EEPROM.write(THR_MIN_PARAM, 0.34 * 255);
buzz(1, 3000, 0);
}
// Reads EEPROM into memory.
void readEEPROM()
{
gMin = EEPROM.read(GMIN) * 10;
gMax = EEPROM.read(GMAX) * 10;
tMax = EEPROM.read(TMIN) * 10;
tMin = EEPROM.read(TMAX) * 10;
curParamVal = curParam = EEPROM.read(0);
readParams();
}
// Gives sound signals on change of the 3-pos switch
// position.
void soundSwitchChange()
{
if (sw != oldSw) {
buzz(3 - sw, 5, 20);
}
}
// This function blinks LED is one of PPM is missed.
void noPPMBlinking()
{
long curTime = micros();
if (curTime - gStart > 1000000 ||
curTime - tStart > 1000000 ||
curTime - mStart > 1000000) {
setLED(millis() % 1000 / 500);
}
}
// Here functions for printing parameters into serial port are placed.
void debug()
{
printInt("MOD IN", modIn);
printInt("switch mode", sw);
printInt("THR IN", tIn);
printInt("GAIN IN", gIn);
}
void soundCurParamChange()
{
if (curParam != 0) {
buzz(curParam, 200, 100);
}
}
void setLED(boolean isOn)
{
digitalWrite(LED_OUT_PIN, isOn ? 0 : 1);
}
// Test if throttle is of and GAIN knob doesn't moved
// during 5 seconds.
boolean isEndOfProgramming()
{
// Find time when stick aren't moving and
// throttle is down.
if ((tIn - tMax > 50) || (gIn - gOld) > 50 ) {
gOld = gIn;
tIdleStart = millis();
}
return millis() - tIdleStart > 5000;
Размещено на Allbest.ru
...Подобные документы
Выбор программного обеспечения. Построение функциональной модели. Тестирование программного описания автомата. Проектирование общей схемы сборки проекта из отдельных фрагментов. Нормы затрат на проектирование и внедрение микропроцессорной системы.
дипломная работа [348,1 K], добавлен 05.05.2015Этапы разработки микропроцессорной системы на основе микроконтроллера. Общая характеристика солнечных часов. Разработка схемы, программного обеспечения и алгоритма управления солнечных часов. Технико-экономическое обоснование разработки и охрана труда.
дипломная работа [5,9 M], добавлен 16.07.2010Методика и основные этапы разработки схемы усилителя низкой частоты с заданными в техническом задании параметрами. Формирование и синтез структурной схемы. Разработка и расчет принципиальной схемы. Анализ данного спроектированного устройства на ЭВМ.
контрольная работа [122,8 K], добавлен 09.10.2010Описание схемы электрической принципиальной приёмника для радиоуправляемой игрушки. Этап проектирования и расчет надежности микросхемы. Обоснование выбора элементов: резисторов, конденсаторов. Трассировка печатной платы и компоновка печатной платы.
курсовая работа [29,8 K], добавлен 27.01.2009Общие принципы разработки программно-аппаратного терминала с CAN-шиной, его основные физические интерфейсы. Структурная схема разрабатываемого устройства. Схема подключения микроконтроллера. Схема подключения микроконтроллера Atmega128 и для ПЭВМ.
дипломная работа [1,4 M], добавлен 07.07.2011Порядок описания и разработки структурной и функциональной схемы микропроцессорной системы на основе микроконтроллера К1816ВЕ31. Обоснование выбора элементов, разработка принципиальной схемы данной системы, программы инициализации основных компонентов.
курсовая работа [260,4 K], добавлен 16.12.2010- Разработка автоматизированного рабочего места оператора обработки информации радиотехнических систем
Задачи и принцип работы автоматизированного рабочего места оператора обработки информации. Разработка структурной и электрической принципиальной схемы устройства. Проектирование печатной платы и конструкции прибора. Экономическое обоснование разработки.
дипломная работа [2,6 M], добавлен 07.07.2012 Выбор методов проектирования устройства обработки и передачи информации. Разработка алгоритма операций для обработки информации, структурной схемы устройства. Временная диаграмма управляющих сигналов. Элементная база для разработки принципиальной схемы.
курсовая работа [1,8 M], добавлен 16.08.2012Рассмотрение основных особенностей разработки микропроцессорного устройства охраны дома, этапы расчета параметров. Общая характеристика микросхемы К561ТМ2. Знакомство с принципиальной схемой двухтактного D-триггера на двух однотактных D-триггерах.
курсовая работа [241,2 K], добавлен 07.02.2016Описание схемы самого простого варианта пульта управления. Сущность разработки цепи для определения времени наработки на отказ устройства. Характеристика электрических конденсаторов. Особенности разработки трассировки и компоновки печатной платы.
курсовая работа [976,4 K], добавлен 18.12.2008Этапы разработки структурной схемы системы оперативной связи гарнизона пожарной охраны. Оптимизация сети специальной связи по линиям 01. Особенности определения высоты подъема антенн стационарных радиостанций, обеспечивающих заданную дальность радиосвязи.
контрольная работа [874,9 K], добавлен 16.07.2012Разработка радиоприемного устройства профессиональной связи УКВ диапазона, создание схемотехнической модели системы: выбор и обоснование структурной схемы; расчет и моделирование отдельных узлов; расчет экономических параметров; экологичность проекта.
дипломная работа [5,9 M], добавлен 16.02.2012Технология сквозного проектирования. Разработка принципиальной электронной схемы устройства. Обоснование выбора цифровых электронных компонентов. Трёхмерное моделирование: разработка модели корпуса, 3D-печать. Разработка программы микроконтроллера.
дипломная работа [1,2 M], добавлен 22.08.2017Анализ вариантов подключения и построения контроллеров индикации на PIC микроконтроллерах. Проектирование модулей системной шины ISA. Разработка обобщенной схемы модуля. Методы построения алгоритмов инициализации и управления, разработка программы.
курсовая работа [574,7 K], добавлен 04.09.2012Проектирование авиационного радиопередающего устройства дальней связи для самолёта АН-2. Составление структурной схемы передатчика. Выбор схемотехнических решений и расчёт отдельных узлов передатчика. Расчёт тракта формирования однополосного сигнала.
курсовая работа [378,4 K], добавлен 14.11.2010Методика и этапы разработки системы дублирования видеопотока в компьютерном классе, предназначенной для дублирования информации с компьютера учителя на мониторы учащихся. Выбор способа изготовления печатной платы, экономическое обоснование устройства.
дипломная работа [48,5 K], добавлен 23.10.2010Этапы разработки печатного узла датчика взлома двери. Обзор аналогов. Обоснование выбора электрической схемы. Расчет надежности, виброустойчивости, теплового режима, и других конструкторско-технологических параметров разрабатываемого устройства.
курсовая работа [521,7 K], добавлен 25.12.2015Сравнительный анализ функций арифметико-логического устройства (АЛУ) в современных микропроцессорах. Синтез схемы блока АЛУ и признаков результата. Разработка имитатора управляющих сигналов. Расчет надежности и безотказной работы проектируемой модели.
дипломная работа [1,0 M], добавлен 14.11.2014Понятие и внутренняя структура модели устройства в пространстве состояний как известного способа описания линейных устройств. Принципы и этапы ее построения в форме пространства и передаточной функции. Нелинейные устройства обработки аналоговых сигналов.
реферат [70,5 K], добавлен 21.08.2015Модернизация более ранней разработки устройства на базе микроконтроллера MCS-48, предназначенного для увлажнения дыхательной смеси. Проектная процедура ПЛИС типа SOPC, реализованная на базе микроконтроллера MCS-48. Проектирование структурной схемы.
курсовая работа [523,2 K], добавлен 03.05.2015