Оглавление:

ИНФРАКРАСНЫЙ ДИСТАНЦИОННЫЙ УПРАВЛЕНИЕ ROBOCAR ИСПОЛЬЗУЕТ AVR (ATMEGA32) MCU: 5 шагов
ИНФРАКРАСНЫЙ ДИСТАНЦИОННЫЙ УПРАВЛЕНИЕ ROBOCAR ИСПОЛЬЗУЕТ AVR (ATMEGA32) MCU: 5 шагов

Видео: ИНФРАКРАСНЫЙ ДИСТАНЦИОННЫЙ УПРАВЛЕНИЕ ROBOCAR ИСПОЛЬЗУЕТ AVR (ATMEGA32) MCU: 5 шагов

Видео: ИНФРАКРАСНЫЙ ДИСТАНЦИОННЫЙ УПРАВЛЕНИЕ ROBOCAR ИСПОЛЬЗУЕТ AVR (ATMEGA32) MCU: 5 шагов
Видео: ОБ ЭТОЙ СИСТЕМЕ ДОЛЖЕН ЗНАТЬ КАЖДЫЙ. ДИСТАНЦИОННОЕ УПРАВЛЕНИЕ С ALIEXPRESS 2024, Июль
Anonim
ИНФРАКРАСНЫЙ ДИСТАНЦИОННЫЙ УПРАВЛЕНИЕ ROBOCAR ИСПОЛЬЗУЕТ AVR (ATMEGA32) MCU
ИНФРАКРАСНЫЙ ДИСТАНЦИОННЫЙ УПРАВЛЕНИЕ ROBOCAR ИСПОЛЬЗУЕТ AVR (ATMEGA32) MCU

Настоящий ПРОЕКТ описывает дизайн и реализацию инфракрасного (ИК) дистанционного управления RoboCar, который может использоваться для различных приложений автоматического управления без участия человека. Я разработал RoboCar с дистанционным управлением (движение влево-вправо / вперед-назад). Вся система основана на микроконтроллере (Atmega32), что делает систему управления более умной и простой для модификации для других приложений. Это позволяет пользователю управлять роботом RoboCar или управлять им, а также включать сетевой выключатель на расстоянии примерно 5 метров.

Ключевые слова: ИК-декодер, микроконтроллер AVR (Atmega32), пульт от телевизора, беспроводная связь.

_

Шаг 1. Внутрикрасное общение

Внутрикрасная коммуникация
Внутрикрасная коммуникация

Принцип ИК-связи:

а) ИК-передача

Передатчик ИК-светодиода внутри его цепи, который излучает инфракрасный свет при каждом поданном ему электрическом импульсе. Этот импульс генерируется при нажатии кнопки на пульте дистанционного управления, замыкая цепь, обеспечивая смещение для светодиода. При смещении светодиод излучает свет с длиной волны 940 нм в виде серии импульсов, соответствующих нажатой кнопке. Однако, поскольку наряду с ИК-светодиодом многие другие источники инфракрасного света, такие как люди, лампочки, солнце и т. Д., Могут создавать помехи передаваемой информации. Решение этой проблемы - модуляция. Переданный сигнал модулируется с использованием несущей частоты 38 кГц (или любой другой частоты от 36 до 46 кГц). ИК-светодиод генерирует колебания с этой частотой в течение всего времени импульса. Информация или световые сигналы имеют широтно-импульсную модуляцию и содержатся на частоте 38 кГц. Инфракрасная передача относится к энергии в области спектра электромагнитного излучения на длинах волн больше, чем у видимого света, но короче, чем у радиоволн. Соответственно, инфракрасные частоты выше, чем у микроволн, но ниже, чем у видимого света. Ученые делят спектр инфракрасного излучения (ИК) на три области. Длины волн указываются в микронах (обозначены µ, где 1 µ = 10-6 метров) или в нанометрах (сокращенно нм, где 1 нм = 10-9 метров = 0,001 5). Ближний ИК-диапазон содержит энергию в диапазоне длин волн, наиболее близких к видимому, примерно от 0,750 до 1,300 5 (от 750 до 1300 нм). Промежуточный ИК-диапазон (также называемый средним ИК-диапазоном) состоит из энергии в диапазоне от 1,300 до 3,000 5 (от 1300 до 3000 нм). Дальний ИК-диапазон простирается от 2.000 до 14.000 5 (от 3000 до 1.4000 x 104 нм).

б) ИК-прием

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

Приложения IR:

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

· Пульты дистанционного управления домашними развлечениями

· Беспроводная связь (локальные сети)

· Связь между портативными компьютерами и настольными компьютерами

· Беспроводной модем

· Детекторы вторжений

· Детекторы движения

· Пожарные датчики

· Системы ночного видения

· Медицинское диагностическое оборудование

· Системы наведения ракет

· Приборы геологического мониторинга

Передачу ИК-данных от одного устройства к другому иногда называют передачей.

Шаг 2: ИК-датчик и протокол NEC Fromat

ИК-датчик и протокол NEC Fromat
ИК-датчик и протокол NEC Fromat
ИК-датчик и протокол NEC Fromat
ИК-датчик и протокол NEC Fromat
ИК-датчик и протокол NEC Fromat
ИК-датчик и протокол NEC Fromat
ИК-датчик и протокол NEC Fromat
ИК-датчик и протокол NEC Fromat

ИК-датчики (Рис1)

TSOP1738, SFH-5110-38 (38 кГц)

Датчики TSOP Особенности:

  • Предусилитель и фотодетектор находятся в одном корпусе.
  • Внутренний фильтр для частоты PCM
  • Улучшенная защита от возмущений электрического поля
  • Совместимость TTL и CMOS
  • Активный выход низкий Низкое энергопотребление
  • Высокая невосприимчивость к окружающему свету
  • Возможна непрерывная передача данных

Протокол NEC:

Протокол передачи NEC IR использует импульсное дистанционное кодирование битов сообщения. Длина каждого пакета импульсов составляет 562,5 мкс на несущей частоте 38 кГц (26,3 мкс). Логические биты передаются следующим образом (Рис2):

  • Логический «0» - пакет импульсов 562,5 мкс, за которым следует интервал 562,5 мкс, с общим временем передачи 1,125 мс.
  • Логическая «1» - пакет импульсов 562,5 мкс, за которым следует интервал 1,6875 мс, с общим временем передачи 2,25 мс.

Импульс несущей состоит из 21 периода на частоте 38 кГц. Для уменьшения потребления тока импульсы обычно имеют соотношение метка / промежуток 1: 4:

(Рис3)

Каждая кодовая последовательность начинается с импульса длительностью 9 мс, известного как импульс АРУ. Затем следует тишина на 4,5 мс:

(Рис4)

Затем данные состоят из 32 бит, 16-битного адреса, за которым следует 16-битная команда, показанная в порядке их передачи (слева направо):

(Рис5)

Каждый из четырех байтов битов данных отправляется первым младшим битом. На рисунке 1 показан формат кадра передачи NEC IR для адреса 00h (00000000b) и команды ADh (10101101b).

Для передачи кадра сообщения требуется 67,5 мсек. Для передачи 16 бит адреса (адрес + инверсия) и 16 бит команды (команда + инверсия) требуется 27 мсек.

(Рис6)

Время, необходимое для передачи кадра:

16 бит для адреса (адрес + инверсия) требуют 27 мсек для времени передачи, а 16 битов для команды (команда + инверсия) также требуют 27 мсек для времени передачи. потому что (адрес + обратный адрес) или (команда + инверсия команды) всегда будут содержать 8 '0 и 8' 1, поэтому (8 * 1,125 мс) + (8 * 2,25 мс) == 27 мс. в соответствии с этим общее время, необходимое для передачи кадра, составляет (9 мс + 4,5 мс + 27 мс + 27 мс) = 67,5 мс.

ПОВТОРНЫЕ КОДЫ: Если кнопку на пульте дистанционного управления держать нажатой, будет выдан код повторения, обычно примерно через 40 мсек после пакета импульсов, означающего конец сообщения. Код повтора будет по-прежнему посылаться с интервалом 108 мс, пока клавиша не будет окончательно отпущена. Код повтора состоит из следующего по порядку:

  • передний импульсный импульс длительностью 9 мс
  • пространство 2,25 мс
  • пакет импульсов длительностью 562,5 мкс, чтобы отметить конец промежутка (и, следовательно, конец переданного кода повтора).

(Рис7)

Расчет задержки (1 мс):

Тактовая частота = 11,0592 МГц

Машинный цикл = 12

Задержка = 1 мс

TimerValue = 65536 - ((Delay * ClockFreq) / Machine Cycle) = 65536 - ((1ms * 11.0592Mhz) / 12)

= 65536 - 921 = 0xFC67

Шаг 3: Управление двигателем постоянного тока с помощью L293D

Управление двигателем постоянного тока с помощью L293D
Управление двигателем постоянного тока с помощью L293D

Двигатель постоянного тока

Двигатель постоянного тока преобразует электрическую энергию в механическую, которую можно использовать для выполнения многих полезных работ. Он может производить механическое движение, такое как Go Forward / Backword моего RoboCar. Двигатели постоянного тока бывают различных номиналов, таких как 6 В и 12 В. Он имеет два провода или штыря. Мы можем изменить направление вращения, изменив полярность входа.

Здесь мы предпочитаем L293D, так как номинальный ток 600 мА хорош для управления небольшими двигателями постоянного тока, а защитные диоды включены в саму микросхему. Описание каждого пина следующее: Пины включения: это пин №. 1 и контакт № 9. № штифта. 1 используется для включения драйверов Half-H 1 и 2. (мост H на левой стороне). № контакта. 9 используется для включения драйвера H-моста 3 и 4. (H-мост с правой стороны).

Идея проста: если вы хотите использовать конкретный мост H, вы должны предоставить высокую логику соответствующим контактам включения вместе с источником питания для IC. Этот вывод также можно использовать для управления скоростью двигателя с помощью метода ШИМ. VCC1 (вывод 16): вывод источника питания. Подключите его к источнику питания 5 В. VCC2 (контакт 8): питание двигателя. Подайте на него положительное напряжение в соответствии с номиналом двигателя. Если вы хотите управлять двигателем на 12 В, подайте 12 В. на этот вывод.

Также можно управлять двигателем непосредственно на батарее, отличной от той, которая используется для подачи питания на схему. Просто подключите положительный полюс этой батареи к выводу VCC2 и сделайте GND обеих батарей общим. (Максимальное напряжение на этом выводе составляет 36 В в соответствии с его таблицей данных). GND (выводы 4, 5, 12, 13): подключите их к общему заземлению схемы. Входы (выводы 2, 7, 10, 15):

Это входные контакты, через которые управляющие сигналы подаются микроконтроллерами или другими схемами / ИС. Например, если на выводе 2 (вход драйвера H 1-й половины) мы дадим логику 1 (5 В), мы получим напряжение, равное VCC2, на соответствующем выходном контакте драйвера H 1-й половины, т.е. 3. Аналогично для логического 0 (0 В) на контакте 2 появляется 0 В на контакте 3. Выходы (контакты 3, 6, 11, 14): выводы. По входному сигналу приходит выходной сигнал.

Двигательные движения A B

-----------------------------------------------------------------------------------------

…………… Стоп: Низкий: Низкий

…… По часовой стрелке: Низкий: Высокий

Против часовой стрелки: высокий: низкий

……………. Стоп: высокий: высокий

Шаг 4: Принципиальные схемы драйвера двигателя и ИК-датчика

Принципиальные схемы драйвера двигателя и ИК-датчика
Принципиальные схемы драйвера двигателя и ИК-датчика
Принципиальные схемы драйвера двигателя и ИК-датчика
Принципиальные схемы драйвера двигателя и ИК-датчика
Принципиальные схемы драйвера двигателя и ИК-датчика
Принципиальные схемы драйвера двигателя и ИК-датчика

ATmega32 - это маломощный 8-разрядный КМОП-микроконтроллер, основанный на архитектуре RISCarchitecture, улучшенной AVR. Выполняя мощные инструкции за один такт, ATmega32 достигает пропускной способности, приближающейся к 1 MIPS на МГц, что позволяет разработчику системы оптимизировать энергопотребление в зависимости от скорости обработки.

Ядро AVR сочетает в себе богатый набор команд с 32 рабочими регистрами общего назначения. Все 32 регистра напрямую подключены к Арифметико-логическому устройству (ALU), что позволяет получить доступ к двум независимым регистрам в одной инструкции, выполняемой за один такт. Результирующая архитектура более эффективна с точки зрения кода и обеспечивает до десяти раз более высокую пропускную способность, чем обычные микроконтроллеры CISC.

ATmega32 предоставляет следующие возможности:

  • 32 Кбайт встроенной программируемой флэш-памяти для программ с возможностью чтения во время записи,
  • 1024 байта EEPROM, 2 Кбайт SRAM,
  • 32 линии ввода / вывода общего назначения,
  • 32 рабочих регистра общего назначения,
  • интерфейс JTAG для Boundaryscan,
  • Встроенная поддержка отладки и программирования, три гибких таймера / счетчика с режимами сравнения, внутренние и внешние прерывания, последовательный программируемый USART, двухпроводной последовательный интерфейс, ориентированный на байты, 8-канальный,
  • 10-битный АЦП с дополнительным дифференциальным входным каскадом с программируемым усилением (только для пакета TQFP),
  • программируемый сторожевой таймер с внутренним генератором,
  • последовательный порт SPI и
  • шесть программно выбираемых режимов энергосбережения.

    • В режиме ожидания процессор останавливается, при этом разрешается USART,
    • Двухпроводной интерфейс, аналого-цифровой преобразователь,
    • SRAM,
    • Таймер / счетчики,
    • Порт SPI и
    • система прерывания для продолжения работы.
    • Режим пониженного энергопотребления сохраняет содержимое регистра, но останавливает осциллятор, отключая все другие функции микросхемы до следующего внешнего прерывания или аппаратного сброса.
    • В режиме энергосбережения асинхронный таймер продолжает работать, позволяя пользователю поддерживать базу таймера, пока остальная часть устройства находится в спящем режиме.
    • В режиме шумоподавления АЦП ЦП и все модули ввода / вывода, кроме асинхронного таймера и АЦП, останавливаются, чтобы минимизировать коммутируемый шум во время преобразований АЦП.
    • В режиме ожидания кварцевый / резонаторный генератор работает, в то время как остальная часть устройства находится в спящем режиме. Это обеспечивает очень быстрый запуск в сочетании с низким энергопотреблением.
    • В расширенном режиме ожидания и основной осциллятор, и асинхронный таймер продолжают работать.

Здесь приведены все связанные схемы и основная схема (atmega32).

Шаг 5: программы Avr

Avr программы
Avr программы
Avr программы
Avr программы

1. Для «удаленного датчика»:

#include #include

#include "remote.h"

// Глобальные переменные volatile unsigned int Time; // Главный таймер, хранит время в 10 мкс, // Обновляется ISR (TIMER0_COMP) volatile unsigned char BitNo; // Позиция следующего BIT volatile unsigned char ByteNo; // Позиция текущего байта

изменчивый беззнаковый символ IrData [4]; // Четыре байта данных Ir-пакета // 2-байтовый адрес 2-байтовые данные volatile unsigned char IrCmdQ [QMAX]; // Окончательная команда получена (буфер)

изменчивый беззнаковый символ PrevCmd; // Используется для повтора

// Переменные, используемые для начала повторения только после нажатия клавиши в течение определенного времени

изменчивый беззнаковый символ Повторить; // 1 = да 0 = нет volatile unsigned char RCount; // Счетчик повторов

изменчивый символ QFront = -1, QEnd = -1;

изменчивый беззнаковый символ Состояние; // Состояние получателя

изменчивый беззнаковый символ Edge; // Край прерывания [RISING = 1 OR FALLING = 0]

изменчивый беззнаковый int stop;

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

void RemoteInit () {

char i; для (i = 0; i <4; i ++) IrData = 0;

стоп = 0; Состояние = IR_VALIDATE_LEAD_HIGH; Edge = 0; Повторить = 0;

// Настройка таймера 1 // ------------ TCCR0 | = ((1 <

ТИМСК | = (1 <

OCR0 = TIMER_COMP_VAL; // Установить значение сравнения

символ без знака GetRemoteCmd (ожидание символа) {символ без знака cmd;

if (ждать) while (QFront == - 1); иначе, если (QFront == - 1) return (RC_NONE);

cmd = IrCmdQ [QFront];

если (QFront == QEnd) QFront = QEnd = -1; иначе {если (QFront == (QMAX-1)) QFront = 0; else QFront ++; }

return cmd;

}

2. main ():

int main (void) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Бесконечный цикл к активному ИК-датчику {

cmd = GetRemoteCmd (1);

switch (cmd) {

case xx: {// Бот движется вперед // Ch + btn forwardmotor ();

перерыв; // Оба двигателя в прямом направлении

}

………………………………………………….

………………………………………………….

………………………………………………….

по умолчанию: PORTC = 0x00; перерыв; // И левый, и правый моторы останавливаются}

}

} / * Конец основного * /

……………………………………………………………………………………………………………………

// Это базовая модель, но я могу использовать ее в режиме ШИМ.

//…………………………………………….. Повеселись……………………………………………………//

Рекомендуемые: