Курсовой проект по дисциплине





Скачать 309.14 Kb.
НазваниеКурсовой проект по дисциплине
страница7/7
Дата публикации07.07.2015
Размер309.14 Kb.
ТипКурсовой проект
100-bal.ru > Информатика > Курсовой проект
1   2   3   4   5   6   7

Схема устройства



Схема моделируется в программе САПР Proteus. PROTEUS VSM — пакет программ для автоматизированного проектирования (САПР) электронных схем.

Пакет представляет собой систему схемотехнического моделирования, базирующуюся на основе моделей электронных компонентов, принятых в PSpice. Отличительной чертой пакета PROTEUS VSM является возможность моделирования работы программируемых устройств: микроконтроллеров, микропроцессоров, DSP и проч. Библиотека компонентов содержит справочные данные. Дополнительно в пакет PROTEUS VSM входит система проектирования печатных плат. Пакет Proteus состоит из двух частей, двух подпрограмм: ISIS — программа синтеза и моделирования непосредственно электронных схем и ARES — программа разработки печатных плат. Вместе с программой устанавливается набор демонстрационных проектов для ознакомления.
Использованы компоненты:

  • ATmega16

  • Семисегментный индикатор на 4 разряда с общим анодом

  • Транзистор BC547

  • Кварцевый резонатор 32.768 кГц (часовой)

  • Конденсатор керамический 22пФ

  • Резистор 120 Ом – 8 шт.

  • Резистор 1 кОм – 4 шт.

  • Разъём PBS (12 пинов)

  • Разъём PBS (2 пина) – 2 шт.

  • Разъём PBS (3 пина)


Для симуляции использованы устройства:

  • Генератор сигнала 42 Гц

  • Виртуальный UART терминал


c:\users\multimote\desktop\freq_sch.png

Рис. 1.20 – Принципиальная схема устройства


  1. Разделение устройства на отельные модули




Данное устройство разделено на три модуля: основная плата устройства, блок питания, семисегментный индикатор. Семисегментный индикатор подключается к плате с помощью гибкого шлейфа.

  1. Разработка печатных плат модулей проектированного устройства



Печатная плата разрабатывалась в САПР Proteus.
Размер печатной платы: 58.4 х 77.5 мм
Для экономии средства для травления, а также для уменьшения наводок использована большая площадка по всему периметру платы (рис. 4.1)
c:\users\multimote\clionprojects\avr-freq-meter-7seg\other\pcb.png

Рис. 4.1 – Печатная плата устройства

  1. Разработка программы управления




Программа написана на языке C и компилируется с помощью компилятора avr-gcc (WinAvr). Исходный код состоит из заголовочного файла main.h (приложение А) и файла main.с (приложение Б).

    1. Компиляция программы



Компиляция программы происходит следующим образом:

  1. Для начала нужно установить компилятор avr-gcc, на ОС Windows известный как WinAvr. Получить его можно на сайте http://winavr.sourceforge.net/

  2. Также нужно проверить наличие пути к исполняемым файлам WinAvr в системной переменной PATH. Это можно легко проверить, открыв командную строку и введя avr-gcc –version(Рис. 3.1):

c:\users\multimote\desktop\screens\m_2015-04-12_142726.png

Рис. 3.1 – Проверка версии компилятора

Далее описывается один из способов компиляции программы на примере Windows 7.

  1. В папке с исходным кодом программы нужно нажать Shift и правую кнопку мыши. Затем нажать «Открыть окно команд» (Рис. 3.2)

c:\users\multimote\desktop\screens\m_2015-04-12_143116.png

Рис. 3.2 – Открытие окна команд

Это действие откроет командную строку с рабочей директорией, которую мы выбрали.

  1. Далее следует ввести

avr-gcc -Os -mmcu=atmega16 -DF_CPU=8000000UL -std=gnu99 main.c main.h -o result.elf
-Os – флаг оптимизации

-std=gnu99 – стандарт языка

-DF_CPU=8000000UL – частота тактирования МК

-mmcu=atmega16 – тип микроконтроллера

-o result.elf – файл-результат компиляции
При удачной компиляции появится файл с расширением elf (рис. 3.3)
c:\users\multimote\desktop\screens\m_2015-04-12_143845.png

Рис. 3.3 – Результат компиляции

  1. Этот файл содержит в себе данные flash памяти, eeprom памяти и др. Этим файлом уже можно прошить микроконтроллер. Для извлечения «чистой» прошивки для flash памяти МК следует выполнить команду

avr-objcopy -O ihex -R.eeprom result.elf firmware.hex (рис. 3.4)

c:\users\multimote\desktop\screens\m_2015-04-12_144527.png

Рис. 3.4 – Результат выполнения команды avr-objcopy

Теперь этим файлом можно прошить микроконтроллер.

    1. Проверка работоспособности устройства



В Proteus нужно выбрать программу для микроконтроллера. Для этого нужно два раза нажать мышкой на микроконтроллер и выбрать прошивку. Также нужно задать частоту тактирования – внутренний генератор 8 мГц.

Далее можно запустить симуляцию (Рис. 3.5)

c:\users\multimote\desktop\screens\m_2015-04-12_145640.png

Рис. 3.5 – Симуляция работы устройства
Как и ожидалось, дисплей и терминал выводят частоту генератора.

  1. Разработка конструктива



Моделирование корпуса для устройства выполнено в программе КОМПАС-3D.
КОМПАС-3D — система трехмерного проектирования, ставшая стандартом для тысяч предприятий, благодаря сочетанию простоты освоения и легкости работы с мощными функциональными возможностями твердотельного и поверхностного моделирования.

Ключевой особенностью продукта является использование собственного математического ядра С3D и параметрических технологий, разработанных специалистами АСКОН.

КОМПАС-3D обеспечивает поддержку наиболее распространенных форматов 3D-моделей (STEP, ACIS, IGES, DWG, DXF), что позволяет организовывать эффективный обмен данными со смежными организациями и заказчиками, использующими любые CAD / CAM / CAE-системы в работе.

Размер готового устройства: 33 х 116 х 80
c:\users\multimote\desktop\screens\m_2015-04-12_151921.png

Рис. 5.1 – Корпус (крышка)

c:\users\multimote\desktop\screens\m_2015-04-12_152144.png

Рис. 5.2 – Корпус (основание)

ВЫВОД


В результате выполнения курсового проекта было смоделировано устройство для измерения частоты сигнала. Программа заняла всего лишь 16% памяти устройства, благодаря этому есть свободное пространство для последующей модернизации устройства. Например, добавить в устройство функцию вольтметра.

Данных получилось достаточно для повторения устройства в реальной жизни: принципиальная схема, разводка печатной платы, список компонентов, а также чертёж корпуса для устройства.
Данному устройству обязательно найдётся применение в цифровой и аналоговой схемотехнике, ведь можно измерить частоты выходных сигналов разнообразных генераторов (в разумных пределах).

ЛИТЕРАТУРА




http://multimote.ru/avr-freq-meter/ - моя статья

https://github.com/MultiMote/AVR-Freq-meter-7seg - Исходник на GitHub

http://multimote.ru/wp-content/uploads/2015/04/freq-meter-KOMPAS.zip - Чертежи и модели в КОМПАС-3D

Приложение А

#ifndef __MAIN_H_

#define __MAIN_H_
#include

#include
typedef uint8_t byte;
byte buf[16];
uint32_t freq;

uint32_t freq_max;

uint32_t measure_buf;
// порт для сегментов

#define SEGMENTS_DDR DDRA

#define SEGMENTS_PORT PORTA

// порт для разрядов

#define DIGITS_DDR DDRC

#define DIGITS_PORT PORTC

#define SWITCH_TIME 45 // время между переключениями разрядов; чем меньше, тем меньше мерцает
#define INPUT 0x00

#define OUTPUT 0xFF

#define SYMBOLS_SIZE 11 // количество символов в таблице

byte symbols[SYMBOLS_SIZE] = //состояния пинов для символов

{

0b00111111, // 0

0b00000110, // 1

0b01011011, // 2

0b01001111, // 3

0b01100110, // 4

0b01101101, // 5

0b01111101, // 6

0b00000111, // 7

0b01111111, // 8

0b01101111, // 9

0b10000000 // .

};
int main(void);
void switchDigit(byte digit); // показать нужный разряд, остальные погасить; значения от 0 до 3

void showDigit(byte number, bool dot); // вывести символ на разряд, с точкой или без; значения от 0 до SYMBOLS_SIZE

void initTimer(); // инициализация таймера (для нас - часового)

void initInterrupts(); //инициализация прерываний

void initUART(); //инициализация последовательного порта

void sendByte(byte b); //отправка байта по UART

void sendString(byte *str); //отправка строки по UART
#endif //__MAIN_H_
Приложение Б

#include "main.h"

#include

#include

#include

#include

int main(void) {

SEGMENTS_DDR = OUTPUT; // настраиваем порты ввода-вывода

DIGITS_DDR = OUTPUT;

DIGITS_PORT = 0xFF;
initTimer();

initInterrupts();

initUART();
byte i;

uint32_t num;
sprintf(buf, "? Stabilization...\r\n");

sendString(buf);

_delay_ms(100); // ожидаем стабилизации таймера

sprintf(buf, "? Init finished!\r\n");

sendString(buf);
while (1) {
num = freq > 9999 ? 9999 : freq; // ограничиваем показания

for (i = 0; i < 4; ++i) { // перебираем все разряды, разбираем частоту на цифры

switchDigit(i);

switch (i) {

case 0:

showDigit((byte) ((num / 1000) % 10), false);

break;

case 1:

showDigit((byte) ((num / 100) % 10), false);

break;

case 2:

showDigit((byte) ((num / 10) % 10), false);

break;

case 3:

showDigit(num % 10, false);

break;
default:

break;

}

_delay_ms(SWITCH_TIME);

}
}

}
ISR(TIMER2_OVF_vect) { // прерывание таймера при переполнении

freq = measure_buf;

if (freq > freq_max) freq_max = freq;

measure_buf = 0;

sprintf(buf, "> Freq: %dHz, ", freq); // отправляем данные

sendString(buf);

sprintf(buf, "Max: %dHz\r\n", freq_max);

sendString(buf);

}
ISR(INT0_vect) { //внешнее прерывание

measure_buf++;

}
void showDigit(byte digit, bool dot) {

SEGMENTS_PORT = ~symbols[digit > SYMBOLS_SIZE - 1 ? 10 : digit] | (dot ? symbols[10] : 0);

}
void switchDigit(byte number) {

DIGITS_PORT = number < 4 ? (byte) (1 << number) : 0x00;

}
void initTimer() {

ASSR |= _BV(AS2); // асинхронный режим, тактируемся от часового кварца

TCCR2 = _BV(CS20) | _BV(CS22); //предделитель 128, одна секунда

TIMSK |= _BV(TOIE2); // включаем таймер

}
void initInterrupts() {

MCUCR = (1 << ISC01) | (1 << ISC00); //прерывание по растущему форонту

GICR = (1 << INT0); //включаем прерывание на INT0

sei(); // разрешаем прерывания

}
void initUART() {

// выставляем скорость: 9600 при частоте 8МГц

// UBRR=8000000/(16*9600)-1=51.0833, округляем = 51 (0x33)

UBRRH = 0x00;

UBRRL = 0x33;
// Разрешаем приём и передачу

UCSRB = (1 << RXEN) | (1 << TXEN);

UCSRB |= (1 << RXCIE);
// устанавливаем формат: 8 бит данных, 2 стоп бита

UCSRC = (1 << URSEL) | (1 << USBS) | (3 << UCSZ0);

}
void sendByte(byte b) {

while (!(UCSRA & (1 << UDRE))); // ожидаем завершения передачи

UDR = b; // записываем байт в буфер

}
void sendString(byte *str) {

while (*str != 0) sendByte(*str++); // побайтно отправляем строку

}
1   2   3   4   5   6   7

Похожие:

Курсовой проект по дисциплине iconКурсовой проект на тему: Проект производственно-технической базы...
Курсовой проект содержит три листа графической части и пояснительную записку на 70 стр., 13 таблиц, 10 использованных источников
Курсовой проект по дисциплине iconПояснительная записка к курсовой работе по дисциплине «Разработка...
Курсовой проект содержит: страниц –20, источников – 5, рисунков – 6, таблиц – 2
Курсовой проект по дисциплине iconПояснительная записка к курсовой работе по дисциплине «Разработка...
Курсовой проект содержит: страниц –22, источников – 5, рисунков – 6, таблиц – 2
Курсовой проект по дисциплине iconОтчетной работы) Курсовой проект (вид работы) По дисциплине «Теория антикризисного управления»
Титульный лист курсовой работы (проекта), контрольной работы, домашнего задания, реферата, отчета о практике
Курсовой проект по дисциплине iconКурсовой проект по дисциплине: Методы принятия управленческого решения...

Курсовой проект по дисциплине iconКурсовой проект по дисциплине: Методы принятия управленческого решения...

Курсовой проект по дисциплине iconПриложение примерные Темы для Курсовой работы по дисциплине
Курсовой работа по дисциплине «Технологии программирования» состоит из 2 частей: теоретическая часть; практическое задание
Курсовой проект по дисциплине iconКурсовой проект по дисциплине Право и организация социального обеспечения
Понятие материнского (семейного) капитала и его правовое регулирование
Курсовой проект по дисциплине iconКурсовой проект по дисциплине «Бизнес-план предприятия»
Министерство образования Российской Федерации Московский государственный университет печати
Курсовой проект по дисциплине iconРеферат Курсовой проект выполнен на тему «Оборудование станции «Е»
Курсовой проект выполнен на тему «Оборудование станции «Е» устройствами блочной маршрутно-релейной централизацией
Курсовой проект по дисциплине iconРеферат Курсовой проект выполнен на тему «Оборудование станции «Е»
Курсовой проект выполнен на тему «Оборудование станции «Е» устройствами блочной маршрутно-релейной централизации
Курсовой проект по дисциплине iconКурсовой проект по химическим средствам защиты растений Тема: «Химическая...
Курсовой проект «Химическая защита клевера от вредных организмов» изложен на страницах машинописного текста, содержит таблиц, приложения....
Курсовой проект по дисциплине iconКурсовой проект по дисциплине: Методы принятия управленческого решения...

Курсовой проект по дисциплине iconКурсовой проект по дисциплине Методы принятия управленческих решений...

Курсовой проект по дисциплине iconКурсовой проект по дисциплине Методы принятия управленческих решений...

Курсовой проект по дисциплине iconКурсовой проект по дисциплине Методы принятия управленческих решений...



Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск