Устройство и работа портов ввода-вывода микроконтроллеров AVR. Часть 3

от автора

Подключение светодиода к линии порта ввода/вывода

Изучив данный материал, в котором все очень детально и подробно описано с большим количеством примеров, вы сможете легко овладеть и программировать порты ввода/вывода микроконтроллеров AVR.

  • Робота портов ввода/вывода
  • Подключение светодиода к линии порта ввода/вывода
  • Подключение транзистора к линии порта ввода/вывода
  • Подключение кнопки к линии порта ввода/вывода

Пример будем рассматривать на микроконтроллере ATMega8.

Программу писать будем в Atmel Studio 6.0.

Эмулировать схему будем в Proteus 7 Professional.

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

Рис: Рапиновка транзистора n-p-n-типа.

Рис: Рапиновка транзистора p-n-p-типа.

Рис: Подключение к микроконтроллеру транзистора n-p-n-типа.

Рис: Подключение к микроконтроллеру транзистора p-n-p -типа.

Сопротивление токоограничивающего резистора подключаемого к линиям портов ввода/вывода при подключении транзистора рассчитывается по формуле:

Пример:
— включения мощного светодиода через транзисторный ключ.

Рис: Подключение к микроконтроллеру светодиода через транзисторный ключ n-p-n-типа.

Данные на светодиод:
— напряжение источника питания – ;
— прямое падения напряжения на светодиоде – 1,35В(Берётся с datasheet на светодиод);
— прямой ток на светодиоде – 120мА (Берётся с datasheet на светодиод);
— коэффициент надежности роботы светодиода – 75% (Берётся с datasheet на светодиод);

Данные на транзистор BC547 берем из Datasheet-BC547:

Данные на микроконтроллер:
— напряжение источника питания – ;
— падение напряжения на линии порта ввода/вывода – 0,5В (Берётся с datasheet на микроконтроллер: Vol(output low voltage) – если ток втекает, и Voh (output high voltage) – если ток вытекает);

Рассчитываем сопротивление R1:

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

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

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

Рассчитываем сопротивление R2:

Таким образом, номинал резистора R2 = 4750 Om, подбирается ближайшее меньшее значение сопротивления, например 4,7 кОм.

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

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


— подключения транзистора n-p-n-типа к линии порта ввода/вывода:

// Подключаем внешние библиотеки #include <AVR/io.h>  #include <stdint.h>   // Основная программа int main(void)  {     // Настраиваем порты ввода/вывода  DDRC  = 0b11111111;  //Настраиваем все разряды порта C на режим "Выход"  PORTC = 0b11111111;  //Устанавливаем все разряды порта C в лог.«1» (На выходе порта напряжение равное Vcc)     // Вечный цикл  while (1)   {   }  } 

— подключения транзистора p-n-p-типа к линии порта ввода/вывода:

// Подключаем внешние библиотеки #include <AVR/io.h>  #include <stdint.h>   // Основная программа int main(void)  {     // Настраиваем порты ввода/вывода  DDRC  = 0b11111111;  //Настраиваем все разряды порта C на режим "Выход"  PORTC = 0b00000000;  //Устанавливаем все разряды порта C в лог.«0»  (На выходе порта напряжение равное GND)     // Вечный цикл  while (1)   {   }  } 

ссылка на оригинал статьи http://habrahabr.ru/post/255715/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *