Разработка электрических схем микропроцессорной системы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Разработка электрических схем микропроцессорной системы



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

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

Основная элементная база используется для построения всей вычислительной среды устройства и практически полностью определяется типом МП. Поскольку тип МП указан, то здесь остается лишь сказать, что в качестве основной элементной базы будет использована плата ArduinoUNOR3 на основе микроконтроллераATmega32.

Основная элементная база используется и для построения стандартной части интерфейса, т. е. портов ввода/вывода.

Интерфейсная элементная база применяется для реализации нестандартной части интерфейса.

 

Разработка структурной электрической схемы

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

 

Arduino UNO Микроконтроллер B
Резистор 10 кОм
Термистор
ПК

 

 


Рисунок 3 – Структурная схема для задания 1,2

 

Таким образом, задействованы 3 порта микроконтроллера.

Назначение выводов:

· GND – земля.

· +5V – питание.

· A0 – аналоговый пин.

 

Разработка функциональной электрической схемы

 

Рисунок 4 – Функциональная схема для задания 1,2

На рисунке 4 представлена функциональная схема устройства.

Термистор подключается к микроконтроллеру.

На плату загружается скетч и передаются данные об измерениях температуры на персональный компьютер.

Расчет дискретных электрорадиоэлементов

Для реализации системы будут использованы следующие радиодетали:

· Термистор.

· Резистор 10 кОм.

 

Характеристики Термистора:

Ø Цвет символов: черный T8M.

Ø Рабочий ток постоянный: 0,5 мА.

Ø Максимальный ток (импульсный): 2 мА.

Ø Падение напряжения: 1.6...3 В.

Ø Интенсивность света на сегмент: 100...200.

Ø Размеры: 12.5х19х8 мм.

Ø Рабочая температура: -200°C..+350°C.

 

Характеристики Резистора:

Ø Мощность: 10 кОм

Ø Точность: ±5 %

Ø Максимальное рабочее напряжение: 350 В

 

 

2.4 Создание программы на языке С++ для микропроцессорной системы

Задание 1

include<math.h>

int minute = 1;

intmil;

 

// Параметр конкретного типа термистора (из datasheet):

#define TERMIST_B 4300

 

#define VIN 5.0

 

voidsetup()

{

// мы хотим передавать информацию на компьютер через USB, а

// точнее через последовательный (англ. serial) порт.

// Для этого необходимо начать (англ. begin) передачу, указав

// скорость. 9600 бит в секунду — традиционная скорость.

// Функция «begin» не является глобальной, она принадлежит

// объекту с именем «Serial». Объекты — это «продвинутые»

// переменные, которые обладают собственными функциями,

// к которым обращаются через символ точки.

Serial.begin(9600);

// передаём заголовок нашей таблицы в текстовом виде, иначе

// говоря печатаем строку (англ. printline). Символы «\t» —

// это специальная последовательность, которая заменяется на

// знак табуляции (англ. tab): 8-кратный выровненный пробел

Serial.println("Minute\tMeteostantion\tTemperature\tMillis");

}

 

voidloop()

{

// вычисляем температуру в °Сс помощью магической формулы.

// Используем при этом не целые числа, а вещественные. Их ещё

// называют числами с плавающей (англ. float) точкой. В

// выражениях с вещественными числами обязательно нужно явно

// указывать дробную часть у всех констант. Иначе дробная

// часть результата будет отброшена

mil=millis();

float voltage = analogRead(A0) * VIN / 1024.0;

float r1 = voltage / (VIN - voltage);

 

 

float temperature = 1./(1./(TERMIST_B)*log(r1)+1./(25. + 273.)) - 273;

// печатаем текущую минуту и температуру, разделяя их табом.

// println переводит курсор на новую строку, а print — нет

Serial.print(minute);

Serial.print("\t");

Serial.print("\t");

Serial.print("\t");

Serial.print(temperature);

Serial.print("\t");

Serial.print("\t");

Serial.println(mil);

 

delay(5000); // засыпаем на минуту

++minute; // увеличиваем значение минуты на 1

 

// откройте окно SerialMonitor в среде Arduino, оставьте на

// сутки, скопируйте данные в Excel, чтобы построить графики

}

 

Задание 2

include<math.h>

int minute = 1;

intmil;

 

// Параметр конкретного типа термистора (из datasheet):

#define TERMIST_B 4300

 

#define VIN 5.0

 

voidsetup()

{

// мы хотим передавать информацию на компьютер через USB, а

// точнее через последовательный (англ. serial) порт.

// Для этого необходимо начать (англ. begin) передачу, указав

// скорость. 9600 бит в секунду — традиционная скорость.

// Функция «begin» не является глобальной, она принадлежит

// объекту с именем «Serial». Объекты — это «продвинутые»

// переменные, которые обладают собственными функциями,

// к которым обращаются через символ точки.

Serial.begin(9600);

// передаём заголовок нашей таблицы в текстовом виде, иначе

// говоря печатаем строку (англ. printline). Символы «\t» —

// это специальная последовательность, которая заменяется на

// знак табуляции (англ. tab): 8-кратный выровненный пробел

Serial.println("Minute\tMeteostantion\tTemperature\tMillis");

}

 

voidloop()

{

// вычисляем температуру в °Сс помощью магической формулы.

// Используем при этом не целые числа, а вещественные. Их ещё

// называют числами с плавающей (англ. float) точкой. В

// выражениях с вещественными числами обязательно нужно явно

// указывать дробную часть у всех констант. Иначе дробная

// часть результата будет отброшена

mil=millis();

float voltage = analogRead(A0) * VIN / 1024.0;

float r1 = voltage / (VIN - voltage);

 

float temperature = 1./(1./(TERMIST_B)*log(r1)+1./(25. + 273.)) - 273;

// печатаем текущую минуту и температуру, разделяя их табом.

// println переводит курсор на новую строку, а print — нет

Serial.print(minute);

Serial.print("\t");

Serial.print("\t");

Serial.print("\t");

Serial.print(temperature);

Serial.print("\t");

Serial.print("\t");

Serial.println(mil);

 

delay(5000); // засыпаем на минуту

++minute; // увеличиваем значение минуты на 1

 

// откройте окно SerialMonitor в среде Arduino, оставьте на

// сутки, скопируйте данные в Excel, чтобы построить график}


 

 
Начало
Объявление макроопределений и переменных

 

 


Объявлениепттап

 

Инициализация
Рабочий цикл
Датчик передает значение на микроконтроллер
Микроконтроллер отправляет данные температуры в компьютер

 


 

Рисунок 5 - Алгоритм работы программы для задания 1,2



Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 176; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.174.55 (0.021 с.)