Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по уч.практики на печать.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1.11 Mб
Скачать

Заключение

Микроконтроллер — это устройство наподобие микропроцессора. Отличие заключается в том, что память, цифровые и аналоговые входы/выходы и т.д. у микроконтроллера интегрированы в одном единственном чипе так, что микроконтроллерное устройство зачастую состоит из небольшого количества компонентов.

Микроконтроллеры отличаются в первую очередь по ширине внутренней шины данных (по количеству бит шины данных): 4-х, 8-ми, 16-ти и 32-х битные. Это количество бит можно интерпретировать как размер (длину) данных, которые микропроцессор может обработать в одной команде. Самое большое число, которое можно закодировать 8-ю битами (одним байтом), равно 255. Таким образом, 8-битный микроконтроллер, например, за один вызов команды сложения может обрабатывать только числа меньше или равные 255. Для обработки больших чисел необходимо исполнить команду сложения большее количество раз, что, конечно же, увеличивает время сложения чисел. Микроконтроллер, как и любой другой процессор, нуждается в задании такта. Максимальная тактовая частота процессор различается от 1МГц у старых контроллеров до 100МГц у дорогих 32-х битных микроконтроллеров. Однако эта частота еще ни что не говорит о действительной скорости микропроцессора. Так, например, у большинства 8051-микроконтроллеров частота делится на 12; получается, что микроконтроллер с частотой 24МГц работает в действительности с частотой 2МГц. Например, если для одной команды этот микроконтроллер требует двух тактов, то получается, что за секунду может быть обработан «всего» 1 миллион таких команд. В то же время микроконтроллер с частотой 8МГц без внутреннего деления частоты, которому требуется для такой же команды всего один такт, может за секунду обработать 8 миллионов команд.

В процессе выполнения данной работы были выполнены все поставленные задачи, были приобретены навыки работы с микроконтроллерами семейства Arduino и управлением ими, работа с термистором.

Так же получены навыки при написании программы на языке С семейства Arduino.

Результаты работы представлены на рисунке ниже.

Рисунок 8- Задание 1

Рисунок 8.1- Задание 2

Список использованных источников

  1. http://wiki.amperka.ru/конспект-arduino:метеостанция

  2. http://www.have2code.com/avr-intro/

  3. http://virtuallab.by/publ/programmiruem_vmeste/prostye_ehksperimenty/arduino_ehksperiment_16_meteostancija/36-1-0-269

Приложение а Текст программы

Основной скетч

#include <math.h>

int minute = 1;

int mil;

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

#define TERMIST_B 4300

#define VIN 5.0

void setup()

{

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

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

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

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

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

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

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

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

Serial.begin(9600);

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

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

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

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

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

}

void loop()

{

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

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

// называют числами с плавающей (англ. 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

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

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

}

Задания 1

include <math.h>

int minute = 1;

int mil;

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

#define TERMIST_B 4300

#define VIN 5.0

void setup()

{

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

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

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

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

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

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

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

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

Serial.begin(9600);

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

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

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

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

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

}

void loop()

{

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

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

// называют числами с плавающей (англ. 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

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

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

}

Задания 2

include <math.h>

int minute = 1;

int mil;

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

#define TERMIST_B 4300

#define VIN 5.0

void setup()

{

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

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

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

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

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

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

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

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

Serial.begin(9600);

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

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

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

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

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

}

void loop()

{

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

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

// называют числами с плавающей (англ. 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

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

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

}