Разделы

Создание простейшего устройства, реагирующего на изменение показаний фотодатчика

Современную микроэлектронику трудно представить без такой важной составляющей, как микроконтроллеры. Микроконтроллеры незаметно завоевали весь мир. В последнее время на помощь человеку пришла целая армия электронных помощников. Мы привыкли к ним и часто даже не подозреваем, что во многих таких устройствах работает микроконтроллер.

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

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

Где же применяются микроконтроллеры? Да просто везде! Применение достаточно широкое. Нет такой техники, которая нас окружает, где бы не применялись микроконтроллеры.

Однако задача разработки радиоэлектронных устройств с применением микроконтроллеров требует знания и понимания принципов их работы, но главное - умение составлять управляющие программы. Без программы микроконтроллер просто кусочек пластмассы с ножками. В данной курсовой работе мы познакомимся с микроконтроллерами ближе, рассмотрим простейший пример с микроконтроллером серии ATMEL AVR ATmega 8, разберем программу, составив алгоритм работы, и сделаем необходимые выводы.

Мы не будем подробно рассматривать структуру микроконтроллера, а сразу преступим к разбору простейшего устройства (робота), который реагирует на изменения показаний датчиков (в данном случае применим один датчик). При изменении этих показаний робот должен выбрать траекторию следования самостоятельно. Для этого нам понадобиться создать такую схему, чтобы это реализовать, и конечно не обойдемся и без программы реализованной на языке более высокого уровня «СИ + +».

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

Схема

Поставленная выше задача прекрасно решается при помощи микроконтроллера ATmega 8. главное в схеме - это фотодатчик. Его принцип работы основан на свойстве поверхностей отражать падающий на них свет. Для фотодатчика в данной схеме подойдет яркий красный светодиод и фототранзистор.

Для оптимальной возможности работы устройства логично подключить в эммитерную цепь транзистора резистор, номиналом 220 Ом. Что бы устройство могло перемещаться по траектории, необходимо подключить к драйверу движения (L293D) два электромотора. Ну и конечно без чего уж точно мы не обойдемся, это конечно сам микроконтроллер, подключенный к фотореагирующей цепи и к драйверу движения. Полная схема устройства приведена ниже:

Алгоритм программы. Блок-схема

Рассмотрим программу, которая будет включать моторы, если датчик находится над белой поверхностью, и выключать - если над черной.

На первый взгляд алгоритм такого устройства очень простой. Мы должны проверить состояние фотодатчика. При условии, что на фотодатчике 1 (протекание тока в эммитерной цепи к микроконтроллеру) начинается движение моторов. Если робот находиться на черной линии, то вращение моторов должно прекратиться. Блок-схема для данной части работы:

Программа для данной части

/***********************************************************************

ПРИМЕР 3:: ВРАЩЕНИЕ МОТОРАМИ С ИСПОЛЬЗОВАНИЕМ ФОТОДАТЧИКА:

************************************************************************/

#include <avr/io.h>main(void) // начало основной программы

{= 0xff; // все выводы порта C сконфигурировать как выходы= 0x00; // все выводы порта D сконфигурировать как входы= 0xff; // установить "1" на всех выводах порта D,

// включаем подтягивающие резисторы(1) { // Бесконечный цикл

// ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D

{

// ---------- вращаем моторы вперед ----------

PORTC |= _BV(PC1); // установить "1" на линии 1 порта C

PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C

PORTC |= _BV(PC3); // установить "1" на линии 3 порта C

PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C

// --------------------------------------------------

}

else

{

// ---------- вращаем моторы назад ----------&= ~_BV(PC1); // установить "0" на линии 1 порта C|= _BV(PC2); // установить "1" на линии 2 порта C&= ~_BV(PC3); // установить "0" на линии 3 порта C|= _BV(PC4); // установить "1" на линии 4 порта C

// --------------------------------------------------

}

} // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы

Добившись уверенного срабатывания датчика, напишем программу для следования робота по линии. Алгоритм движения робота строится на следующем принципе. Когда датчик находится над белым полем, то робот поворачивается в правую сторону по направлению к черной линии. Когда датчик находится над черной линией, то робот поворачивается в левую сторону, съезжая с черной линии. Чередуя повороты по направлению к линии и от нее, робот движется вперед, следуя по границе белого и черного. Напишем соответствующий алгоритм работы устройства:

фотодатчик робот транзистор

Напишем программу для данного устройства

/****************************************************************

ПРИМЕР 4:: ПРОСТЕЙШИЙ АЛГОРИТМ СЛЕДОВАНИЯ ПО ЛИНИИ:

*****************************************************************/

#include <avr/io.h>main(void) // начало основной программы

{= 0xff; // все выводы порта C сконфигурировать как выходы= 0x00; // все выводы порта D сконфигурировать как входы= 0xff; // установить "1" на всех выводах порта D,

// включаем подтягивающие резисторы(1) { // Бесконечный цикл

// ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D

{

// ---- включаем левый мотор, останавливаем правый -----

PORTC |= _BV(PC1); // установить "1" на линии 1 порта C

PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C

PORTC |= _BV(PC3); // установить "1" на линии 3 порта C

PORTC |= _BV(PC4); // установить "1" на линии 4 порта C

// -----------------------------------------------------

}

else

{

// ---- останавливаем левый мотор, включаем правый -----|= _BV(PC1); // установить "1" на линии 1 порта C|= _BV(PC2); // установить "1" на линии 2 порта C|= _BV(PC3); // установить "1" на линии 3 порта C&= ~_BV(PC4); // установить "0" на линии 4 порта C

// -----------------------------------------------------

}

} // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы

Заключение

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

      Другие материалы

      Проектирование кабельной линии связи на участке железной дороги
      Перед железнодорожным транспортом нашей страны стоит задача обеспечения непрерывно растущих объемов перевозок народнохозяйственных грузов и пассажиров. Для этого необходимо повышать проп ...

      Проектирования цифровой АТС, обслуживающей железнодорожные станции
      Цель работы: получение навыков проектирования цифровой АТС с услугами ASDN. В данном проекте производится проектирование станции, обслуживающей железнодорожные станции, узловые станци ...

      Синтез устройства управления узлом ЭВМ в программе Electronics Workbench (EWB)
      интерфейс синтезируемый Современные приборы и устройства сервиса представляют собой сложные технические системы, реализованные на базе средств вычислительной техники. Цифровые устройства ...

      Копирайт 2018 : www.ordinarytech.ru