Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микроконтроллеры 3

.docx
Скачиваний:
15
Добавлен:
21.04.2015
Размер:
539.65 Кб
Скачать

Уфимский Государственный Авиационный Технический Университет

Кафедра АСУ

Лабораторная работа №3

Тема:« Изучение микроконтроллера MSP430. Аналоговый ввод-вывод»

Выполнили:ст.гр.Ивт-402

Сабуров Т.А

Ахметова А.М.

Уфа 2015

Цель: Изучение основных средств микроконтроллера MSP430 для ввода-вывода аналоговых сигналов. Изучение основных приемов программирования микроконтроллера MSP430 для операций ввода-вывода аналоговых сигналов и передачи результатов измерений по последовательному интерфейсу.

Теоретическая часть

Модуль операционного усилителя.

Модуль операционного усилителя OA представляет собой операционный усилитель общего назначения и предназначен для обработки внешнего аналогового сигнала для последующего аналого-цифрового преобразования.

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

Модуль аналогового компаратора.

Модуль Comparator_A+ представляет собой аналоговый компаратор напряжения. Он обеспечивает выполнение точных аналого-цифровых преобразований методом прямого интегрирования, контроль напряжения питания и мониторинг внешних аналоговых сигналов. входной мультиплексор компаратора.

Конфигурирование модуля Comparator_A+ осуществляется пользовательской программой.

Компаратор сравнивает аналоговые напряжения на неинвертирующем (+) и

инвертирующем (–) входах. Если напряжение на неинвертирующем входе больше, чем на инвертирующем, то на выходе компаратора CAOUT появляется сигнал ВЫСОКОГО уровня. Компаратор может быть включен или выключен посредством определенного управляющего бита. При выключенном компараторе на выходе CAOUT постоянно присутствует НИЗКИЙ уровень.

Если необходимо, то к выходу компаратора может быть подключён внутренний фильтр. Если разница напряжений на входах компаратора достаточно мала, то на его выходе всегда начинают генерироваться колебания. Эта генерация (рис. 3.1) вызывается внутренними и внешними паразитными связями, а также перекрёстными помехами между сигнальными линиями, линиями питания и другими элементами системы. Колебания на выходе компаратора снижают точность и разрешающую способность результата сравнения. Использование фильтра может уменьшить ошибки, вызванные генерацией на выходе компаратора.

Модуль 10-битного АЦП.

Модуль 10-битного АЦП ADC10 представляет собой быстродействующий 10-битный аналого-цифровой преобразователь. Модуль ADC10 обеспечивает быстрое выполнение 10-битных аналого-цифровых преобразований. Контроллер DTC позволяет модулю сохранять результаты преобразований в пределах всего адресного пространства без использования ЦПУ. Конфигурирование модуля ADC10 осуществляется пользовательской программой.

Ядро АЦП преобразует аналоговый сигнал в 10-битный цифровой код и сохраняет результат в регистре ADC10MEM.

Модуль 12-битного ЦАП.

Модуль 12-битного ЦАП DAC12 представляет собой цифро-аналоговый преобразователь с потенциальным выходом. Модуль DAC12 может работать в 8- или 12-битном режимах. Конфигурирование модуля DAC12 осуществляется пользовательской программой.

Модуль DAC12 может быть сконфигурирован для работы в 8- или 12-битном режиме. Максимальный уровень выходного сигнала (однократное или трёхкратное значение выбранного опорного напряжения) программно устанавливается. Это позволяет пользователю управлять динамическим диапазоном ЦАП. Формат входных - натуральный двоичный код или дополнительный код - также устанавливается программно.

Задание

1. Написать, отладить и протестировать программу управления яркостью свечения зеленого светодиода. Переключение яркости на следующий уровень должно происходить при нажатии кнопки. Количество уровней яркости – не менее четырех. Для каждой градации яркости с помощью вольтметра измерить напряжение на соответствующем выводе микроконтроллера. Результаты измерений свести в таблицу.

#define RED RED_LED

int brightness = 190;

int fadeAmount = 10;

const int buttonPin = PUSH2;

int buttonState = 0;

void setup()

{

pinMode(RED, OUTPUT);// nothing happens in setup

pinMode(buttonPin, INPUT_PULLUP);// nothing happens in setup

}

void loop()

{

buttonState = digitalRead(buttonPin);

// fade in from min to max in increments of 5 points:

if (buttonState == LOW)

{

brightness = brightness - fadeAmount;

}

analogWrite(RED, brightness);

if (brightness == 0) brightness = 190;

delay(30);

}

Напряжения, В:

2.55

1.88

1.34

0.67

0.13

2. Написать, отладить и протестировать программу управления частотой мигания красного светодиода. Управление осуществить с помощью потенциометра R6 (рис. 3.4): положение движка потенциометра должно управлять частотой мигания.

int sensorPin = A6; // select the input pin for the potentiometer

int ledPin = 11; // select the pin for the LED

int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {

// declare the ledPin as an OUTPUT:

pinMode(ledPin, OUTPUT);

}

void loop() {

// read the value from the sensor:

sensorValue = analogRead(sensorPin);

// turn the ledPin on

digitalWrite(ledPin, HIGH);

// stop the program for <sensorValue> milliseconds:

delay(sensorValue);

// turn the ledPin off:

digitalWrite(ledPin, LOW);

// stop the program for for <sensorValue> milliseconds:

delay(sensorValue);

}

3. Написать, отладить и протестировать программу чтения значения аналогового сигнала с движка потенциометра R6. Интервал времени между двумя последовательными чтениями:

  • вариант 1 – 200 мс,

  • вариант 2 – 300 мс,

  • вариант 3 – 400 мс,

  • вариант 4 – 500 мс.

Считанное значение сигнала должно передаваться в последовательный порт в двух видах:

  • в виде значения выходного кода АЦП,

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

const int analogInPin = A6; // Analog input pin that the potentiometer is attached to

const int analogOutPin = 11; // Analog output pin that the LED is attached to

int sensorValue = 0; // value read from the pot

int outputValue = 0; // value output to the PWM (analog out)

double Voltage;

void setup() {

// initialize serial communications at 9600 bps:

Serial.begin(9600);

}

void loop() {

sensorValue = analogRead(analogInPin);

Voltage = sensorValue*3.0/1024.0;

outputValue = map(sensorValue, 0, 1023, 0, 255);

analogWrite(analogOutPin, outputValue);

// print the results to the serial monitor:

Serial.print("sensor = " );

Serial.print(sensorValue);

Serial.print("\t output = ");

Serial.println(Voltage);

delay(200);

}

4. Написать, отладить и протестировать программу измерения меняющегося во времени аналогового сигнала и передачи измеренных значений в последовательный порт. Измеряемый сигнал – выходной сигнал фильтра низкой частоты R4C1 (рис. 3.4). Период измерения сигнала – 50 мс. Входной сигнал для фильтра формировать последовательностью импульсов, подаваемых на вход инвертора на транзисторе VT1. Параметры импульсов:

  • вариант 1 – период 8с, коэффициент заполнения 0.4, количество импульсов 5.

В последовательный порт передавать значения:

  • время от момента старта программы, единица измерения – миллисекунда;

  • напряжение на выходе фильтра, 2 знака в дробной части числа, единица измерения – В.

int sensorPin = 15;

int gen = 11;

uint16_t START, TIME;

double Vout;

void setup()

{

pinMode (gen, OUTPUT);

Serial.begin(9600);

}

void measurement()

{

Vout = analogRead(sensorPin)*3.0/1023.0;

Serial.print("time = ");

Serial.print(TIME);

Serial.print("\t output = ");

Serial.println(Vout);

}

void loop()

{

for (int i=0; i<5; i++)

{

START = millis();

digitalWrite(gen, HIGH);

do

{

TIME = millis();

if (TIME%50==0) measurement();

} while (TIME-START<=3200);

digitalWrite(gen, LOW);

START = millis();

do

{

TIME = millis();

if (TIME%50==0) measurement();

} while (TIME-START<=4800);

}

delay(100000);

}

период 8с, коэффициент заполнения 0.4, количество импульсов 5.

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