По имеющемуся набору данных построим электрическую схему светодиодной матрицы в Компас 3D 2013 с набором библиотек ESKB.
Рисунок 2.10 – Схема электрическая принципиальная светодиодной матрицы.
Расчёт надежности
При разработке МП системы согласно заданию необходимо рассчитать надежность данного устройства. Для расчета надежности были взяты исходные данные из справочной литературы.
Задача расчета:
В ходе расчета должны быть определены следующие показатели надежности:
1.Расчет блока на отказ λбл.
2.Средняя наработка на отказ,Τср.
3.Вероятность безотказной работы за 20000 часов наработки, P(Τ).
Условия расчета:
Расчет интенсивности элементов произведен при следующих допусках:
· Отказы элементов,входящих в состав блока,события независимые,случайные.
· Нормальные климатические условия эксплуатации
Исходные данные для расчета:
· Схема электрическая принципиальная
· Перечень элементов
· Средняя статистическая интенсивность отказов элементов в нормальных климатических условиях и при нормальной климатической нагрузке.
Условия эксплуатации блока:
· Наработка блока Τ=20000 часов.
· Средняя наработка на отказ Τср должна быть не менее 20000 часов
Расчет показателей надежности:
Определение показателей надежности при экспоненциальном законе распределения.
Обозначения в схеме | Наименования ИМС | Кол-во n | λ10*10-6 1/час | λ10*10-6 *N 1/час | Поправочные коэффициенты | |
DD1 | KP1816BE31 | 0,013 | 0,013 | |||
DD2 | KP555ИР22 | 0,013 | 0,013 | |||
DD3 | КР556РТ16 | 0,013 | 0,013 | |||
DD4 | КР537РУ17 | 0,013 | 0,013 | |||
DD5 | К155ЛИ5 | 0,013 | 0,013 |
-Расчет параметра потока отказа блока:
Наименование элемента | λi*10-6(ч-1) | KH | KT | Ni | λi*Ni*KH*KT*10-6 |
Микросхема DA1 | 0,013 | 0,013 | |||
Итого: | 0,013*10-6(ч-1) |
Расчет вероятности безотказной работы:
P(5000)=0,013-1,619*10-6*5000=0,991=99,1[%]
Временная диаграмма
Заключение
В процессе выполнения курсовой работы было разработано устройство светодиодной матрицы на микроконтроллере PIC16F628A. Актуальностью данной темы являлось то, что в процессе проектирования ставилась задача спроектировать устройство, которое не имело бы аналогов и отличалось новизной, простотой и дешевизной.
Было разработано устройство, которое превосходит по выполняемым функциям устройства-аналоги.
В похожих конструкциях наблюдается отсутствие нескольких функций нашего устройства, а главным недостатком нашего устройства является отсутствие внутреннего источника питания, а это в свою очередь вызовет еще повышение стоимости устройства.
В процессе разработки было изучено множество отечественных и зарубежных источников, информация сети Интернет, технические характеристики и принцип действия устройств-аналогов.
В процессе разработки был составлен алгоритм управления, программное обеспечение микроконтроллера, произведен расчет элементов электрической схемы, согласно справочных данных.
Литература
1. Н.С. Кувшинов, А.Л. Хейфец, Челябинск 2010. Схемы электрические принципиальные в инженерной графике.
2. А. В. Белов. Создаём устройство на микроконтроллерах. – М: Издательство: Наука и техника, 2007, 307 стр.
3. Конструкторское технологическое проектирование электронной аппаратуры, под ред. В.А. Шахнова, Москва, МГТУ им. Н.Э. Баумана,2010;
4. ГОСТ 14. 301-83 «Общее правило разработки технологического процесса»;
5. ОСТ 3. 050. 014 «Типовые технологические процессы сборки и монтажа»;
6. Общие сведения об автономной системе управления освещением отдельного помещения http://make-smart-room.com/common/2012/05/01/obschie-svedeniya-o-avtonomnoy-sisteme-upravleniya-osvescheniem-otdelnogo-pomescheniya.html (доступ свободный)
ПРИЛОЖЕНИЕ А
Программа для «Эффект -1» светодиодной матрицы
------------------------------------------------------------------------------------------------------------
list p = 16f628a
__config 03F30h; 11111100110001 - защиты памяти нет, низковольтное программирование запрещено, сброс по питанию запрещен,
; RA5/-MCLR работает как -MCLR, таймер вкл-я питания включен, сторожевой таймер - выключен, генератор - внутренний
;************************** Переменные *********************************
CBLOCK 0x20;Начальный адрес блока констант
T_ext;таймер внешнего цикла
T_int;таймер внутреннего цикла
Strok;байт строк, младшие 5 бит этого байта - состояния строк (1 - вкл, 0 - выкл)
Stolb;байт столбцов, младшие 5 бит этого байта - состояния столбцов (1 - вкл, 0 - выкл)
ENDC;
*************************** Константы **********************************
Cr1 equ.200;длительность 1-й задержки 200 мкс
Cr2 equ.150;длительность 2-й задержки 150х200 мкс
Status equ 03h; Регистр выбора банка
TrisA equ 05h; Регистр выбора направления работы выводов порта А
TrisB equ 06h; Регистр выбора направления работы выводов порта В
PortA equ 05h; Регистр управления защелками порта А
PortB equ 06h; Регистр управления защелками порта В
Cmcon equ 1Fh; вкл/выкл компараторов
F equ 1; Результат направить в регистр.
;********************************************************
; Пусть у нас RA1, RA2, RA3, RA6, RA7 - выходы строки
; RB3, RB4, RB5, RB6, RB7 - выходы столбцы
;********************************************************
org 0
;******** Установка направления работы порта A: RA7, RA6 - выходы, RA5, RA4, RA3 - входы, RA2, RA1, RA0 - выходы
;******** Установка направления работы порта B: RB7, RB6, RB5, RB4, RB3, RB2 - выходы, RB1, RB0 - входы ***
start movlw.7;
movwf Cmcon; выключить компараторы и включить эти пины как цифровые входы/выходы
clrf PortA; инициализация защелок порта А
movlw.248; 11111000
movwf PortB; инициализация защелок порта В
bsf Status,5; Перейти в 1-й банк (установить в 1 5-й бит регистра Status).
movlw.49; Записать конфигурацию порта A в аккумулятор (W)..49=00110001
movwf TrisA; Скопировать конфигурацию порта А из W в регистр TrisA
movlw.7; Записать конфигурацию порта В в аккумулятор (W)..3=00000111
movwf TrisB; Скопировать конфигурацию порта B из W в регистр TrisB.
bcf Status,5; Перейти в 0-й банк (установить в 0 5-й бит регистра Status) ******************************ЭФФЕКТ*********************************
eff1 movlw b'00011111'; включаем все строки
movwf Strok
movlw b'00000001'; и первый столбец
movwf Stolb
;-------- Включаем светодиоды -----------------
cikl_stolb1 call in_ports
call pause
rlf Stolb,1; переходим на следующий столбец
btfss Stolb,5; если 5 бит stolb = 1, то следующая команда пропускается
goto cikl_stolb1
;----------------------------------------------
movlw b'00000001'; включаем первую строку
movwf Strok
movlw b'00011111'; и все столбцы
movwf Stolb
;-------- Включаем светодиоды -----------------
cikl_strok1 call in_ports
call pause
rlf Strok,1; переходим на следующую строку
btfss Strok,5; если 5 бит stolb = 1, то следующая команда пропускается
goto cikl_strok1
goto eff1
;******** Процедура включения строк и столбцов
in_ports btfsc Stolb,0; если 0-й бит stolb = 0, то следующая команда пропускается
bcf PortB,3; RB3=0 - вкл.1 столбец
btfss Stolb,0; если 0-й бит stolb =1, то следующая команда пропускается
bsf PortB,3; RB3=1 - выкл. 1 столбец
;--------------------------------------
btfsc Stolb,1; если 1-й бит stolb = 0, то следующая команда пропускается
bcf PortB,4; RB4=0 - вкл. 2 столбец
btfss Stolb,1; если 1-й бит stolb =1, то следующая команда пропускается
bsf PortB,4; RB4=1 - выкл. 2 столбец
;-------------------------------------
btfsc Stolb,2; если 2-й бит stolb = 0, то следующая команда пропускается
bcf PortB,5; RB5=0 - вкл. 3 столбец
btfss Stolb,2; если 2-й бит stolb =1, то следующая команда пропускается
bsf PortB,5; RB5=1 - выкл. 3 столбец
;--------------------------------------
btfsc Stolb,3; если 3-й бит stolb = 0, то следующая команда пропускается
bcf PortB,6; RB6=0 - вкл. 4 столбец
btfss Stolb,3; если 3-й бит stolb =1, то следующая команда пропускается
bsf PortB,6; RB6=1 - выкл. 4 столбец
;--------------------------------------
btfsc Stolb,4; если 4-й бит stolb = 0, то следующая команда пропускается
bcf PortB,7; RB7=0 - вкл. 5 столбец
btfss Stolb,4; если 4-й бит stolb =1, то следующая команда пропускается
bsf PortB,7; RB7=1 - выкл. 5 столбец
;-------- Строки -----------------------------------------------------------
btfsc Strok,0; если 0-й бит strok = 0, то следующая команда пропускается
bsf PortA,2; RA2=1 - вкл.1 строку
btfss Strok,0; если 0-й бит strok =1, то следующая команда пропускается
bcf PortA,2; RA2=0 - выкл.1 строку
;--------------------------------------
btfsc Strok,1; если 1-й бит strok = 0, то следующая команда пропускается
bsf PortA,3; RA3=1 - вкл.2 строку
btfss Strok,1; если 1-й бит strok =1, то следующая команда пропускается
bcf PortA,3; RA3=0 - выкл.2 строку
;--------------------------------------
btfsc Strok,2; если 2-й бит strok = 0, то следующая команда пропускается
bsf PortA,1; RA1=1 - вкл.3 строку
btfss Strok,2; если 2-й бит strok =1, то следующая команда пропускается
bcf PortA,1; RA1=0 - выкл.3 строку
;--------------------------------------
btfsc Strok,3; если 3-й бит strok = 0, то следующая команда пропускается
bsf PortA,7; RA7=1 - вкл.4 строку
btfss Strok,3; если 3-й бит strok =1, то следующая команда пропускается
bcf PortA,7; RA7=0 - выкл.4 столбец
;--------------------------------------
btfsc Strok,4; если 4-й бит strok = 0, то следующая команда пропускается
bsf PortA,6; RA6=1 - вкл.5 строку
btfss Strok,4; если 4-й бит strok =1, то следующая команда пропускается
bcf PortA,6; RA6=0 - выкл.5 строку
return
;********Процедура Паузы
pause movlw Cr2
movwf T_ext; загрузить значение для внешнего цикла
cikl2 movlw Cr1
movwf T_int; загрузить значение для внутреннего цикла
cikl3 decfsz T_int,1; если T_int = 0, следующая команда пропускается
goto cikl3; внутренний цикл
decfsz T_ext,1; если T_ext = 0, следующая команда пропускается
goto cikl2; внешний цикл
return
end
ПРИЛОЖЕНИЕ Б
Программа для создания эффекта «Вращающийся крест»
;-----------------------------------------------------------------------------------------------------------
list p = 16f628a
__config 03F30h; 11111100110001 - защиты памяти нет, низковольтное программирование запрещено,
; сброс по питанию запрещен, RA5/-MCLR работает как -MCLR, таймер вкл-я питания включен,
; сторожевой таймер - выключен, генератор - внутренний
;********* Переменные ************************************
CBLOCK 0x20; Начальный адрес блока
Temp; обменник, 20h
Adr; адрес фрейма в EEPROM или ОЗУ, 21h
T_int; счетчик для паузы, 22h
Strok; байт текущего состояния строк, 23h
Stolb; байт текущего состояния столбцов, 24h
Fr_sch; счетчик фреймов, 25h
Fr_cikl; счетчик показов одного фрейма, 26h
Fr_kol; количество фреймов, 27h
Fr_cikl_kol; количество показов одного фрейма, 28h
;----- Свободная память ОЗУ в нулевом банке от 29h до 7Fh -------------------------------
;----- Из этих 86 своб-х байт в первые 30 мы будем грузить наши фреймы -------------
ENDC;
;**************************** Константы *********************************
Status equ 03h; Регистр выбора банка
TrisA equ 05h; Регистр выбора направления работы выводов порта А
TrisB equ 06h; Регистр выбора направления работы выводов порта В
PortA equ 05h; Регистр управления защелками порта А
PortB equ 06h; Регистр управления защелками порта В
Cmcon equ 1Fh; вкл/выкл компараторов
F equ 1; Результат направить в регистр.
FSR equ 04h; регистр адреса при косвенной адресации
INDF equ 0h; регистр косвенной адресации
Cr equ.50; значение счетчика для паузы
EEADR equ 1Bh; адрес EEPROM
EECON1 equ 1Ch; управляющий регистр для работы c EEPROM
EEDATA equ 1Ah; регистр данных из/в EEPROM
;********************************************************
; Пусть у нас RA1, RA2, RA3, RA6, RA7 - выход строки
; RB3, RB4, RB5, RB6, RB7 - выходы столбцы
;********************************************************
org 0
;******** Установка направл-я работы порта A: RA7, RA6 - выходы, RA5, RA4, RA3 - входы, RA2, RA1, RA0 - выходы
;******** Установка направл-я работы порта B: RB7, RB6, RB5, RB4, RB3, RB2 - выходы, RB1, RB0 - входы *********
start movlw.7;
movwf Cmcon; выключить компараторы и включить эти пины как цифровые входы/выходы
clrf PortA; инициализация защелок порта А
movlw.248; 11111000
movwf PortB; инициализация защелок порта В
bsf Status,5; Перейти в 1-й банк (установить в 1 5-й бит регистра Status).
movlw.49; Записать конфигурацию порта A в аккумулятор (W)..49=00110001
movwf TrisA; Скопировать конфигурацию порта А из W в регистр TrisA
movlw.7; Записать конфигурацию порта В в аккумулятор (W)..3=00000111
movwf TrisB; Скопировать конфигурацию порта B из W в регистр TrisB.
bcf Status,0; Сбросить флаг переноса (С) (после старта он может быть любым)
;******** Загрузка данных для фреймов из EEPROM в ОЗУ *******************************************************
;--------- Сначала прочитаем первый байт - узнаем, сколько фреймов надо считать ------------------
movlw.0; банк менять не надо, мы уже в первом банке
movwf EEADR; установить адрес для чтения из EEPROM
bsf EECON1,0; чтение
movf EEDATA,0; запись прочитанного байта в аккумулятор
bcf Status,5; Перейти в 0-й банк (установить в 0 5-й бит регистра Status)
movwf Fr_kol; сохранение прочитанного байта в Fr_kol
;-------- Fr_kol*5+1 - узнаем сколько байт надо считать --------------------------
rlf Fr_kol,0; умножаем на 2
movwf Temp
rlf Temp,0; еще на 2 (после этой команды в аккумуляторе Fr_kol*4)
addwf Fr_kol,0; после этого в аккумуляторе Fr_kol*5
movwf Temp; сохраняем это значение в Temp
incf Temp,1; теперь Temp=Fr_kol*5+
;---------- Считываем Fr_kol*5+1 байт ----------------------------------------------
movlw 28h; считанные данные сохраняем начиная с этого адреса (первый байт в Fr_cikl_kol и далее...)
movwf FSR; адрес для косвенной адресации
movlw.1; начинаем читать EEPR
movwf Adr; с адреса 1
zagruzka bsf Status,5; перейти в первый банк
movwf EEADR; загружаем из аккумулятора адрес для чтения из EEPROM
bsf EECON1,0; чтение
movf EEDATA,0; запись прочитанного байта в аккумулятор
bcf Status,5; Перейти в 0-й банк (установить в 0 5-й бит регистра Status)
movwf INDF; сохраняем считанный байт по адресу, записанному в FSR
incf FSR,1; увеличиваем адрес ОЗУ
incf Adr,1; увеличиваем адрес EEPROM
movf Adr,0; загружаем адрес EEPROM в аккумулятор
decfsz Temp,1; если считали все байты - следующая команда пропускается
goto zagruzka
;***********************************************************************
effect movlw 29h; загружаем адрес начала первого фрейма в ОЗУ (2h) в переменную Adr
movwf Adr;
movf Fr_kol,0; загружаем кол-во фреймов
movwf Fr_sch; в счетчик фреймов
show movf Fr_cikl_kol,0; загружаем кол-во показов одного фрейма
movwf Fr_cikl; в счетчик показов фрейма
povtor call show_frame; показываем один фрейм Fr_cikl кол-во раз
decfsz Fr_cikl,1
goto povtor
movlw.5; переходим к следующему фрейму (сдвигаем Adr на 5)
addwf Adr,1
decfsz Fr_sch,1; уменьшаем счетчик фреймов для показа
goto show; если не все наборы показаны, то переходим к следующему
goto effect; если все, то начинаем сначала
*************************************************************************** Процедура показа одного фрейма *********************************************************************
show_frame movf Adr,0; загружаем в FSR адрес начала фрейма
movwf FSR
movlw b'00000001'; начинаем с первой строки
movwf Strok
show_next movf INDF,0; загружаем набор столбцов для выбранной строки
movwf Stolb; аккумулятор в stolb
call in_ports
call pause
call erase
incf FSR,1; следующий набор строк
rlf Strok,1; переходим на следующую строку
btfss Strok,5; если 5-й бит strok = 1, то следующая команда пропускается
goto show_next
return
;******** Процедура включения строк и столбцов в соответствии с байтами Strok и Stolb ************
in_ports btfsc Stolb,0; если 0-й бит stolb = 0, то следующая команда пропускается
bcf PortB,3; RB3=0 - вкл.1 столбец
btfss Stolb,0; если 0-й бит stolb =1, то следующая команда пропускается
bsf PortB,3; RB3=1 - выкл. 1 столбец
;--------------------------------------
btfsc Stolb,1; если 1-й бит stolb = 0, то следующая команда пропускается
bcf PortB,4; RB4=0 - вкл. 2 столбец
btfss Stolb,1; если 1-й бит stolb =1, то следующая команда пропускается
bsf PortB,4; RB4=1 - выкл. 2 столбе
;--------------------------------------
btfsc Stolb,2; если 2-й бит stolb = 0, то следующая команда пропускается
bcf PortB,5; RB5=0 - вкл. 3 столбец
btfss Stolb,2; если 2-й бит stolb =1, то следующая команда пропускается
bsf PortB,5; RB5=1 - выкл. 3 столбец
;--------------------------------------
btfsc Stolb,3; если 3-й бит stolb = 0, то следующая команда пропускается
bcf PortB,6; RB6=0 - вкл. 4 столбец
btfss Stolb,3; если 3-й бит stolb =1, то следующая команда пропускается
bsf PortB,6; RB6=1 - выкл. 4 столбец
;--------------------------------------
btfsc Stolb,4; если 4-й бит stolb = 0, то следующая команда пропускается
bcf PortB,7; RB7=0 - вкл. 5 столбец
btfss Stolb,4; если 4-й бит stolb =1, то следующая команда пропускается
bsf PortB,7; RB7=1 - выкл. 5 столбец
;-------- Строки -----------------------------------------------------------
btfsc Strok,0; если 0-й бит strok = 0, то следующая команда пропускается
bsf PortA,2; RA2=1 - вкл.1 строку
btfss Strok,0; если 0-й бит strok =1, то следующая команда пропускается
bcf PortA,2; RA2=0 - выкл.1 строку
;--------------------------------------
btfsc Strok,1; если 1-й бит strok = 0, то следующая команда пропускается
bsf PortA,3; RA3=1 - вкл.2 строку
btfss Strok,1; если 1-й бит strok =1, то следующая команда пропускается
bcf PortA,3; RA3=0 - выкл.2 строку
;--------------------------------------
btfsc Strok,2; если 2-й бит strok = 0, то следующая команда пропускается
bsf PortA,1; RA1=1 - вкл.3 строку
btfss Strok,2; если 2-й бит strok =1, то следующая команда пропускается
bcf PortA,1; RA1=0 - выкл.3 строку
;--------------------------------------
btfsc Strok,3; если 3-й бит strok = 0, то следующая команда пропускается
bsf PortA,7; RA7=1 - вкл.4 строку
btfss Strok,3; если 3-й бит strok =1, то следующая команда пропускается
bcf PortA,7; RA7=0 - выкл.4 столбец
;--------------------------------------
btfsc Strok,4; если 4-й бит strok = 0, то следующая команда пропускается
bsf PortA,6; RA6=1 - вкл.5 строку
btfss Strok,4; если 4-й бит strok =1, то следующая команда пропускается
bcf PortA,6; RA6=0 - выкл.5 строку
return
;**************************** Пауза *************************************
pause movlw Cr
movwf T_int; загрузить кол-во циклов задержки
cikl3 decfsz T_int,1; если T_int = 0, следующая комада пропускается
goto cikl3; внутренний цикл
return
;*********************** Гашение всех светодиодов ***********************
erase movf Strok,0
movwf Temp
movlw.0
movwf Stolb
movwf Strok
call in_ports
movf Temp,0
movwf Strok
return
;***********************************************************************
org 2100h; EEPROM память
de.6,.40; кол-во фреймов и кол-во показов одного фрейма (скорость)
de b'00000100', b'00000100', b'00011111', b'00000100', b'00000100'; первый фрейм
de b'00001000', b'00000101', b'00001110', b'00010100', b'00000010'; второй фрейм
de b'00001000', b'00001011', b'00000100', b'00011010', b'00000010'; третий фрейм
de b'00010001', b'00001010', b'00000100', b'00001010', b'00010001'; четвертый фрейм
de b'00000010', b'00011010', b'00000100', b'00001011', b'00001000'; пятый фрейм
de b'00000010', b'00010100', b'00001110', b'00000101', b'00001000'; шестой фрейм