Главная Регистрация Контакты RSS 2.0
   
 
 
Навигация
  • Новости
  • Статьи
  • Устройства
  • Программы
  • Программирование
  • Литература
  •  
    Популярные статьи
     
    Облако тегов
    Путаны Питера, ATmega8, AVR, CodeVisionAVR, COM, LCD, LPT, PonyProg2000, Proteus, SC-30, Видео, Жало, ЖКИ, Интерфейс, Осциллограф, Очиститель, Программа, Программатор, Прошивка, Реактиватор, Ремонт, Светодиод, Электроника
     
     
    Реклама
     
     
    Mehatroniks » Программирование » AVR » Подключение светодиода к микроконтроллеру AVR

    Программирование » AVR : Подключение светодиода к микроконтроллеру AVR
    автор: mehatroniks 21-08-2013, 00:22 просмотров: 15995

    Подключение светодиода к микроконтроллеру AVR



    Первым примером в изучении микроконтроллеров является подключение и управление светодиодом, это самый простой и наглядный пример. Этот пример стал классическим при изучении микроконтроллеров, как программа "Hello World!" при изучении прочих языков программирования.

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

    Из документации на микроконтроллер мы знаем, что у микроконтроллеров AVR максимальный ток, который способна пропустить каждая линия порта ввода/вывода составляет 40 mA. Превышение этого значения выведет из строя вывода порта. Поэтому ток, протекающий через вывод микроконтроллера не должен превышать 30 mA , самым оптимальным будет ток 20 mA.

    Подключить светодиод к микроконтроллеру можно двумя способами

    1. Подключение маломощного светодиода


    Подключение светодиода к микроконтроллеру AVR



    Если ток потребления светодиода в рабочем режиме не превышает 30 мА, а номинальное напряжение не превышает напряжения питания микроконтроллера, то мы можем подключать его к линии порта ввода/вывода.

    Что бы ограничить ток, протекающий через ножку микроконтроллера нужно рассчитать номинал резистора R1.

    Сопротивление рассчитывается по формуле:

    R = (Vs - Vd) / I



    где Vs - напряжение источника питания, Vd - прямое напряжение светодиода, а I - номинальный ток светодиода.

    R = (5 V - 2.5 V) / 0.020 A = 150 Om



    Таким образом, мы нашли R1 = 150 Om и дальше подбирается ближайшее большее значение сопротивления.

    Если не известно прямое напряжение светодиода, сопротивление можно рассчитать по закону Ома.

    R = U / I



    где U - напряжение источника питания, а I - номинальный ток светодиода.

    R = 5 V / 0.020 A = 250 Om



    Определив номинал резистора R1, необходимо рассчитать мощность P, измеряемая в ваттах, которая будет выделяться в резисторе, в виде тепла при протекании тока в цепи.

    P = I * U



    где U – напряжение, приложенное к участку цепи, а I - номинальный ток светодиода

    P = 0.020 A * 5 V = 0.1 W



    Рассчитав выделяемую мощность на резисторе, выбираем ближайшее большее значение мощности резистора. Если рассеиваемой мощности резистора будет недостаточной, то он может выйти из строя.


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

    Подключение светодиода к микроконтроллеру AVR



    2. Подключение мощного светодиода


    Подключение светодиода к микроконтроллеру AVR



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

    Подключение светодиода к микроконтроллеру AVR



    Таким образом, мы ушли от токовых ограничений вывода линии порта микроконтроллера. Резистор на базе – ограничительный. Может варьироваться в широких пределах 1-10 kOm, в любом случае транзистор будет работать в режиме насыщения. Использовать можно любой N-P-N транзистор. Коэффициент усиления, практически не имеет значения. Выбирается транзистор по току коллектора (нужный нам ток) и напряжению коллектор - эмиттер (напряжение которым запитывается нагрузка). Необходимо учитывать, что значение максимально допустимого тока коллектора транзистора должно быть больше чем значение номинального тока светодиода, а так же не забывать про рассеиваемую мощность транзистора.

    Определившись со схемой подключения светодиода к микроконтроллеру ATmega8 нам нужно на чем-то эту схему собрать.

    1. Собрать нашу схему в симуляторе Proteus. Этот способ хорош тем, что можно быстро собрать схему, не нужно тратить деньги на приобретение радиокомпонентов.

    Скачать схемы в симуляторе Proteus

    2. Собрать схему на макетной плате и прошить микроконтроллер программатором. Придется потратить деньги, но мы получим опыт подкрепленный практикой.

    Собрав схему можно преступить к написанию программы в CodeVisionAVR
    Исходный код:

    
    #include <mega8.h> //Включаем библиотеку для работы с микроконтроллером ATMega8
    #include <delay.h> //Включаем библиотеку для организации задержек
    #define led 10 //Создаем идентификатор led
     
    void main(void)
    {
    PORTC=0x00; //Выставляем все выходы порта C на 0, то есть, выключаем весь порт C
    DDRC=0xFF; //Делаем порт C, как выход, чтобы на выходах порта было напряжение 5В
     
    while (1) //Организовываем бесконечный цикл
    {
    PORTC.5=1; //Включаем светодиод на 5-м выходе порта C
    delay_ms(led); //Делаем задержку, в миллисекундах
    PORTC.5=0; //Выключаем светодиод на 5-м выходе порта C
    delay_ms(led); //Делаем задержку, в миллисекундах
    }
    }
    



    Описание программы:

    Директивой #include подключаем внешние файлы. Заголовочный файл используемого микроконтроллера mega8.h и функцию задержки delay.h . Перед компиляцией CodeWisioneAVR вставит вместо строки

    #include <mega8.h>

    и

    #include <delay.h>

    текст, содержащийся в файлах.

    Директивой

    #define led 10

    определяем идентификатор led. Перед компиляцией CodeWisioneAVR в тексте программы заменит led на значение 30.

    Объявляем основную функцию программы main строчкой

    void main(void)

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

    В выходной регистр порта C записываем ноли,

    PORTC=0x00;

    соответственно на всех ножках порта C будет напряжение 0 В.

    В регистр направления данных порта C записываем единицы,

    DDRC=0xFF;

    порт будет работать как выход.

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

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

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

    PORTC.5 = 1; //(5 В)

    или

    PORTC.5 = 0; //(0 В)

    мы включаем или отключаем наш светодиод.

    Для организации интервалов между включением и выключением светодиодов мы используем функцию задержки,

    delay_ms(led)

    которую подключили в начале программы файлом delay.h. Задержка генерируется в миллисекундах. Все идентификаторы led в программе будут заменены при компиляции на указанное значение 30, т.е. задержки между интервалами включения и выключения будут по 30 миллисекунд.

    Написав код программы, компилируем его и записываем в микроконтроллер или загружаем в симулятор Proteus.

     
     
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.

    Другие новости по теме:

  • CodeVisionAVR. Пособие для начинающих (+CD). Лебедев М. Б. 2008 г.
  • CodeVisionAVR
  • Подключение и прошивка микроконтроллера AVR
  • Программатор из 5 проводков для микроконтроллеров AVR
  • Обзор очистителя жал SC-30


  • Комментарии (0)   Напечатать
     
    Добавление комментария
    Name:
    E-Mail:
    Введите два слова, показанных на изображении:

     
     
     
    Авторизация
    Логин:
    Пароль:
     
     
     
    Обмен WM