Atmega16 часы термометр: Часы — Тахометр — Термометр — Вольтметр на базе МК ATmega16 и графического дисплея LCM12864 — АВТО & МОТО — radio-bes

Автомобильные часы-термометр-вольтметр на базе микроконтроллера курсовая по коммуникациям и связи | Дипломная Теория массовой коммуникации

Скачай Автомобильные часы-термометр-вольтметр на базе микроконтроллера курсовая по коммуникациям и связи и еще Дипломная в формате PDF Теория массовой коммуникации только на Docsity! КУРСОВОЙ ПРОЕКТ Автомобильные часы-термометр-вольтметр на базе микроконтроллера Содержание Введение 1. Описание объекта и функциональная спецификация 2. Описание структуры системы 3. Описание ресурсов МК AT89C2051 4. Ассемблирование 5. Разработка алгоритма работы устройства 6. Описание выбора элементной базы и работы принципиальной схемы Заключение Список литературы Приложение. Листинг программы и объектный файл 3..a индикация текущего времени 3..b будильник 3..c таймер 3..d индикация температуры в четырех точках 3..e звуковая сигнализация при повышении температуры 3..f индикация напряжения в бортовой сети автомобиля 3..g звуковая сигнализация при падении напряжения бортовой сети 3. .h управление режимами работы устройства с помощью ИК-пульта 2.Описание структуры системы После определения входов и выходов устройства разработана структурная схема устройства. Структурная схема автомобильных вольтметра-термометра-часов приведена на рис. 1. Громкоговоритель Рис. 1. Структурная схема автомобильных часов-термометра- вольтметра 3. Описание ресурсов МК AT89C2051 AT89C2051 разработан по технологии КМОП. Микроконтроллер оснащенный Flash программируемым и стираемым ПЗУ, а также совместим по системе команд и по выводам со стандартными приборами семейства MCS-51. Объем Flash ПЗУ — 2 Кбайта, ОЗУ — 128 байтов. Имеет 15 линий ввода/вывода, один 16-разрядный таймера/счетчика событий, полнодуплексный порт (UART) пять векторных двухуровневых прерываний, встроенный прецизионный аналоговый компаратор, встроенные генератор и схему формирования тактовой последовательности. Напряжение программирования Flash памяти — 12 В и ее содержимие может быть защищено от несанкционированных записи/считывания. Имеется возможность очистки Flash памяти за одну операцию и возможность считывания встроенного кода идентификации. Ток потребления в активном режиме на частоте 12 МГц не превышает 15 мА при 6 В и 5,5 мА при напряжении питания 3 В. В пассивном режиме (ЦПУ остановленно, но система прерываний, ОЗУ, таймер/счетчик событий и последовательный порт остаются активными) потребление не превышает 5 мА и 1мА. В стоповом режиме ток потребления не превышает 100 мкА и 20 мкА при напряжении питания 6 В и 3 В, соответственно. Микроконтроллер AT89C2051 ориентирован на использование в качестве встроенного управляющего контороллера. Для питания устройства используется интегральный стабилизатор U5 типа 7805. Потребляемый устройством ток очень небольшой, поэтому радиатор для этой микросхемы не нужен. Поскольку микросхемы контроллера ЖКИ требуют небольшого количества сигналов для связи с микроконтроллером, индикатор можно выполнить конструктивно в отдельном корпусе минимального размера и расположить его в удобном для обозрения месте. Провода датчиков температуры могут иметь длину несколько метров. При этом обязательно должен присутствовать земляной провод. Использовать в качестве земли Рис.3. Общий вид выводов AT89C2051 4. Ассемблирование Для ассемблирования используется макpоассемблеp MPASM, он содеpжит все необходимые нам возможности. MPASM входит в пакет программ Microchip MPLAB фирмы Microchip Technology. В pезультате pаботы ассемблеpа создаются файлы со следующими pасшиpениями: * HEX — объектный файл * LST — файл листинга * ERR — файл ошибок и пpедупpеждений * COD Объектный файл создается в 16-pичном фоpмате и содеpжит код, котоpый должен быть записан в микpосхему. Файл листинга содеpжит полный листинг пpогpаммы вместе с загpузочным кодом. В файл ошибок и пpедупpеждений записываются все ошибки и пpедупpеждения, возникающие в пpоцессе ассемблиpования. Они также пpисутствуют и в файле листинга. После обpаботки нашей пpогpаммы ассемблеp должен был выдать сообщение «Assembly Successful», означающее, что ошибок обнаpужено не было. Файл ошибок не должен был создаться. Листинг программы и объектный файл приведен в Приложении. 5. Разработка алгоритма работы устройства Алгоритм работы программы показан на рис. 4. После запуска и инициализации микроконтроллера программа переходит к распределителю, в котором каждую секунду последовательно измеряется напряжение, проверяются кнопки, и выполняется вывод на индикацию. Прерывание от этой последовательности происходит каждую секунду для подсчета времени в часах и таймере, если он включен. После установки флага «Одна секунда» проверяется бортовое напряжение. Если присутствует его отклонение от установленного, то включается звуковой сигнал. Если отклонения нет, то измеренные значения перекодируются для индикации в двоично-десятичный код. Далее программа переходит к проверке кнопок. Поскольку кнопки — многофункциональные, то и их проверка несколько усложнена. Вначале проверяется флаг индикации часов. Если индикация часов отсутствует, то кнопка установки курсора «Разряд» не проверяется, а сразу проверяется кнопка «Режим». Если индикация часов включена и нажата кнопка «Разряд», то к регистру курсора прибавляется единица. Если кнопка «Режим» нажата, то на единицу увеличивается регистр режима. По значению регистра режима из таблицы выбирается режим индикации (рис. 5). При индикации напряжения ранее перекодируемые значения напряжения переписываются в регистры индикации. При индикации часов проверяется, был ли ранее введен курсор в поле индикатора. Если значение регистра курсора — ненулевое, то выполняется установка часов. Если при этом нажата кнопка «Установка», то к выбранному разряду прибавляется единица, а регистры индикации заполняются новыми значениями. Если установка отсутствует, то регистры индикации заполняются значениями текущего времени. Микросхема КР1820ВГ1 [1] используется для управления 36- сегментным ЖКИ в режиме 3-уровневого мультиплексирования. Микросхема изготавливается по КМОП-технологии и выпускается в 20-выводном пластмассовом DIP-корпусе. Микросхема содержит встроенный тактовый генератор, резистивный делитель напряжения и делители частоты, с помощью которых формируются сигналы управления строками (общими электродами) и столбцами (сегментными электродами) ЖКИ в режиме 3- уровневого мультиплексирования. Одна микросхема имеет три выхода управления строками и 12 выходов управления столбцами. Предусмотрена возможность каскадирования схем, что позволяет использавать их для управления мультиплексным ЖКИ с числом сегментов более 36. Микросхема не требует никаких навесных компонентов и работает в диапазоне напряжения питания от 3 до 6 вольт. Назначение выводов микросхемы КР1820ВГ1 показано в таблице 1. Таблица 1. Назначение выводов микросхемы КР1820ВГ1. Вывод Обозначение Тип Назначение 1…3 COB1, COC3, COB3 Выход Управление столбцами В1, С3, В3 4 CS Вход Выбор кристалла 5 Ucc — Напряжение источника питания 6 GND — Общий 7 D Вход Данные 8…13 COA2, COB4, COB2, COA1, COC2, COC4 Выход Управление столбцами A2, B4, B2, A1, C2, C4 14 C Вход Тактовый сигнал С 15 COA/G Выход Управление сторокой А (вход генератора G) 16 COC/G Выход Управление сторокой С (выход генератора G) 17 COB Выход Управление строкой В 18…20 COC1, COA3, COA4 Выход Управление столбцами B1, A3, A4 Микросхема КР1820ВГ1 имеет четыре режима работы: одиночный, старший, младший и тестовый. В одиночном режиме одна микросхема управляет 36-сегментным ЖКИ, обеспечивая полную синхронизацию его работы. Старший и младний режимы предназначены для организации управления ЖКИ с числом сегментов более 36, тестовый режим – для контроля качества микросхем в процессе изготовления. Данные вводятся в микросхему в последовательном коде по входу D с синхронизацией записи фронтом тактовых импульсов по входу C (рис. 6). Рис. 6. Загрузка микросхемы КР1820ВГ1 по последовательной шине Код записываемых данных определяется конкретной схемой подключения шин управления строками и столбцами к сегментам ЖКИ, а также конфигурацией ЖКИ. Рис.7. Конфигурация сегментов ЖКИ. На рис. 7 показан пример конфигурации ЖКИ, а в таблице 2 показан порядок следования битов в кодовой посылке для этого варианта подключения такого ЖКИ. Таблица 2. Порядок следования битов в кодовой посылке Бит Вывод Сегмент ЖКИ Бит Вывод Сегмент ЖКИ D0 COA1, COC/G h2 D20 COB3, COC/G D3 D1 COB1, COB G1 D21 COA3,COB C3 D2 COC1,COA/G F1 D22 COA3, COA/G B3 D3 COC1, COB E1 D23 COB3, COA/G A3 D4 COB1, COC/G D1 D24 COA4, COC/G h5 D5 COA1,COB C1 D25 COB4, COB G4 D6 COA1, COA/G B1 D26 COC4,COA/G F4 D7 COB1, COA/G A1 D27 COC4, COB E4 D8 COA2, COC/G h3 D28 COB4, COC/G D4 D9 COB2, COB G2 D29 COA4,COB C4 D10 COC2,COA/G F2 D30 COA4, COA/G B4 D11 COC2, COB E2 D31 COB4, COA/G A4 D12 COB2, COC/G D2 D32 COC1, COC/G P1 D13 COA2,COB C2 D33 COC2, COC/G P2 D14 COA2, COA/G B2 D34 COC3, COC/G P3 D15 COB2, COA/G A2 D35 COC4, COC/G P4 D16 COA3, COC/G h4 D36 Не используется — D17 COB3, COB G3 D37 Q6 — D18 COC3,COA/G F3 D38 Q7 — D19 COC3, COB E3 D39 Q8 — Биты D0. .D7 соответствуют сегментам первого разряда, биты D8..D15 – второго и т. д. Биты D32..D35 соответствуют специальным сегментам P1…P4. Бит D36 может принимать любое значение. Биты D37 и D38 (Q6 и Q7) управляют режимом работы схемы согласно таблице 3. Бит D39 (Q8) предназначен для синхронизации работы двух и более микросхем при каскадировании. Для загрузки микросхемы в одиночном режиме необходимо выполнить следующую последовательность действий: установить на сходе CS уровень логического 0 записать восемь битов данных для каждой цифры первого-четвертого разрядов неудовлетворительной или даже появятся проблемы с запуском кварцевого генератора. Для обмена с микросхемой DS1302 используются общие с драйверами ЖКИ линии данных и тактирования. Разделены только сигналы CS и RST. К сожалению, микросхема DS1302 имеет довольно специфический 3-х проводный интерфейс, который в фирменной документации описан весьма неоднозначно. Это довольно редкий пример плохого фирменного описания. Поэтому в новых разработках лучше применять более современные микросхемы, например DS1307 с интерфейсом I2C. В качестве датчиков температуры применены микросхемы цифровых термометров DS1821 фирмы Dallas. В цепях данных термометров включены защитные цепочки R11-R14, VD1-VD8, а в цепи питания включен ограничивающий резистор R10 для защиты от короткого замыкания. Несмотря на то, что аппаратно имеется возможность подключить четыре термометра, данная версия программы работает только с тремя. Это вызвано недостаточным объемом памяти программ. Термометры устанавливаются в разных местах автомобиля. В данном случае они были установлены в салоне, на открытом воздухе и в моторном отсеке. Благодаря наличию заданных программно порогов, кроме индикации температуры осуществляется ещё и контроль ее выхода за безопасные пределы. Ввиду недостаточного объема памяти программ, редактирование порогов температур не поддерживается. Пороги в виде констант внесены в текст программы. Для первого термометра +55 градусов, а для второго и третьего термометра +99 градусов. Для измерения напряжения бортовой сети построен простейший 8- разрядный АЦП на основе встроенного в микроконтроллер компаратора. Для уменьшения влияния помех используется 16-кратное усреднение результатов. Принцип работы АЦП пояснен на рис. 8. Рисунок 8. Принцип работы АЦП На входе AIN1 формируется пилообразное напряжение, которое сравнивается с входным напряжением, которое через делитель R2, R3 поступает на вход компаратора AIN0. Емкость C8 снижает влияние помех на показания вольтметра. Пилообразное напряжение формируется на емкости C9 в результате заряда ее стабильным током от генератора тока, собранного на элементах VT2, VD9, R6. Перед началом измерения конденсатор C9 разряжен с помощью открытого ключа VT3. Когда начинается цикл измерения, на порту P1.5 устанавливается низкий логический уровень, транзистор VT3 закрывается, и напряжение на конденсаторе C9 начинает линейно нарастать. В это время разрешается счет программному счетчику. Счет идет до тех пор, пока напряжение на C9 не станет равным входному (на средней точке делителя R2, R3). При этом переключается встроенный компаратор, и счет запрещается. Значение, накопленное в счетчике, будет пропорционально входному напряжению. Применение генератора тока (а не резистора) позволило получить линейный закон заряда C9, что исключило необходимость программной линеаризации АЦП, которая потребовала бы дополнительных затрат и так дефицитной памяти программ. Необходимо отметить, что конденсатор C9 должен быть термостабильным, например, с пленочным диэлектриком типа К73-17. С помощью резистора R6 подбирают ток генератора таким образом, чтобы показания АЦП совпадали с реальным значением напряжения на входе +B. Кроме индикации напряжения осуществляется контроль его падения ниже порога 10В. В случае такого падения включается звуковая сигнализация. Для управления устройством применяется ИК-пульт дистанционого управления. Конструктивно он выполнен на базе дешевого малогабаритного калькулятора. Использованы только его корпус и клавиатура. В пульту применена микросхема INA3010D в корпусе SOIC. Для питания используются два элемента СЦ-30. Используемый номер системы кода RC-5 — 1EH. Схема пульта не приводится, так как практически повторяет типовую схему включения микросхемы INA3010 (SAA3010) и зависит от конфигурации конкретной клавиатуры. Коды, соответствующие кнопкам, также могут отличаться от заданных. Для восстановления соответствия необходимо правильно заполнить перекодировочную таблицу в программе. Сделать это можно даже не перетранслируя программы с помощью шестнадцатиричного редактора прямо в .bin – файле. Таблица расположена по адресам 7B8H — 7E3H . Соответствие функций управления, их внутренних кодов (после перекодировки) и кодов ИК ДУ (до перекодировки) приведено в таблице 4. Таблица 4. Коды кнопок управления Номер команды Название команды Внутренний код команды (после перекодировки) Код ИК ДУ (до перекодировки) 1 TIMER 0CH 00H 2 CLOCK 0DH 01H 3 ALARM 0EH 02H 4 LOCK 0FH 03H 5 7 08H 08H 6 8 09H 09H 7 9 0AH 0AH 8 LIST 10H 0BH 9 4 05H 10H 10 5 06H 11H 11 6 07H 12H 12 ESCAPE 11H 13H 13 ALARM DISABLE 14H 18H 14 TIMER CLEAR 13H 1AH 15 0 01H 20H 16 BACKSPACE 12H 22H 17 1 02H 28H 18 2 03H 29H 19 3 04H 2AH 20 ENTER 0BH 2BH Список литературы 1. Белов А.В. Микроконтроллеры АVR в радиолюбительской практике – СП- б, Наука и техника, 2007 – 352с. 2. Проектирование цифровых устройств на однокристальных микроконтроллерах / В.В. Сташин [ и др.]. – М.: Энергоатомиздат, 1990. – 224 с. 3. Евстифеев А.В. Микроконтроллеры Microchip: практическое руководство/ А.В.Евстифеев. – М.: Горячая линия – Телеком, 2002. – 296 с. 4. Кравченко А.В. 10 практических устройств на AVR-микро-контроллерах. Книга 1 – М., Додэка –ХХ1, МК-Пресс, 2008 – 224с. 5.Трамперт В. Измерение, управление и регулирование с помощью АVR- микроконтроллеров: Пер. с нем – К., МК-Пресс, 2006 – 208с. 6. Мортон Дж. Микроконтроллеры АVR. Вводный курс /Пер. с англ. – М., Додэка –ХХ1, 2006 – 272с. 7.Техническая документация на микроконтроллеры AT89C2051 фирмы «Atmel». ООО «Микро -Чип», Москва, 2002.-184 с. Приложение А Листинг программы и объектный файл ; ЧАСЫ-ТЕРМОМЕТР-ВОЛЬТМЕТР ДЛЯ АВТОМОБИЛЯ. РАЗРАБОТАЛ ДЕРКАЧ ; ПРОГРАММА = ABTO.ASM ; ВЕРСИЯ: 20-01-07. ; АССЕМБЛЕР И ОТЛАДЧИК: MPLAB IDE, ВЕРСИЯ: 5.70.40. LISTP=16F676 #INCLUDE P16F676.INC __CONFIG 31D0H ;============================================== ; ИСПОЛЬЗУЕТСЯ КВАРЦ ЧАСТОТОЙ 32768 ГЦ. ; КОЭФФИЦИЕНТ ДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ РАВЕН 32, ЧТО ВМЕСТЕ ; С TMR0 (256) И ЦИКЛОМ, РАВНЫМ 4 ТАКТАМ ; ДАЕТ НА ВЫХОДЕ 1 СЕКУНДУ (4х32х256=32768). ;============================================== ; RA1 — РЕЖИМ — УСТАНОВКА, RA2 — РАЗРЯД — ПУСК, ; RA3 — ВЫХОД ИЗЛУЧАТЕЛЯ, ; RC5 — LOAD, RC3 — DIN, ; RC4 — DCLK ;=========================================== CBLOCK H’20’ ;=========================================== ; ОПРЕДЕЛЕНИЕ РЕГИСТРОВ ВРЕМЕНИ. ;=========================================== HOU;ЧАСЫ ДВОИЧНЫЕ. CL;ЕДИНИЦЫ СЕКУНД ЧАСОВ. CH;ДЕСЯТКИ СЕКУНД. ML;ЕДИНИЦЫ МИНУТ. MH;ДЕСЯТКИ МИНУТ. HL;ЕДИНИЦЫ ЧАСОВ. HH;ДЕСЯТКИ ЧАСОВ. TCL;ДЛЯ ТАЙМЕРА. TCH; TML; TMH; THL; THH; ;=============================================== ; РЕГИСТРЫ ДЛЯ ОРГАНИЗАЦИИ ИНДИКАЦИИ. ;=============================================== ZPT;РЕГИСТР ЗАПЯТОЙ. TZPT;ЗАПЯТАЯ ДЛЯ ВЫВОДА НА ИНДИКАЦИЮ. COUZ;СЧЕТЧИК ВЫВОДА ЗАПЯТЫХ. COU;СЧЕТЧИК ВЫВОДА БИТ. KYPC;ВЫБОР РАЗРЯДА УСТАНОВКИ. KYPCI;ИНДИКАЦИИ. PEID;РЕЖИМА ИНДИКАЦИИ. TEMP;ВРЕМЕННЫЙ. EDI ;ДЕСЯТЫЕ НАПРЯЖЕНИЯ. 80H ;ВЫБРАН АНАЛОГОВЫЙ ВХОД RA0/AN0. BCFSTATUS,5 ;ПЕРЕХОДИМ В БАНК 0. CLRFPORTC ;ВЫХОД И СВЕТОДИОД ВЫКЛЮЧЕНЫ. CLRFT1CON ;ТАЙМЕР 1 ОТКЛЮЧЕН. MOVLW.7 MOVWFCMCON ;КОМПАРАТОР ВЫКЛЮЧЕН. CLRFFLAG ;ВСЕ ОБНУЛЯЕМ И УСТАНАВЛИВАЕМ. CLRFFLAG1 CLRFEDI CLRFDEI CLRFCOI CLRFCL CLRFCH CLRFML CLRFMH CLRFHL CLRFHH CLRFTCL CLRFTCH CLRFTML CLRFTMH CLRFTHL CLRFTHH CLRFPEID CLRFZPT CLRFCOUZ CLRFCOU CLRFHOU MOVLW96H MOVWFYCTL;УСТАНОВКА МАКСИМУМА = 15,0 B. MOVLW78H MOVWFYCTLI;УСТАНОВКА МИНИМУМА = 12,0 B. CLRFKYPC BSFFLAG,4 GOTOPAC ;========================================== ; 3. ТАБЛИЦА СЕГМЕНТОВ. ;========================================== SEG ;D E G F A B C K ADDWFPCL,1; RETLWB’11011110′;0 RETLWB’00000110′;1 RETLWB’11101100′;2 RETLWB’10101110′;3 RETLWB’00110110′;4 RETLWB’10111010′;5 RETLWB’11111010′;6 RETLWB’00001110′;7 RETLWB’11111110′;8 RETLWB’10111110′;9 RETLWB’00000000′;10-> ПУСТО. RETLWB’00100000′;11-> ПРОЧЕРК. RETLWB’10000000′;12-> ПРОЧЕРК. ;================================================= ; 4. ТАБЛИЦА ПЕРЕКОДИРОВКИ КУРСОРА. ;================================================= KYPCY MOVFWKYPC; ADDWFPCL,1; RETURN;НЕТ КУРСОРА. RETLWB’00000100′;3 RETLWB’00001000′;4 RETLWB’00010000′;5 RETLWB’00100000′;6 RETLWB’01000000′;7 ;=================================================== ; 5. ВЫБОР РЕЖИМА ИНДИКАЦИИ. ;=================================================== VUBOR MOVFWPEID;ИЗМЕНЯЕМ РЕЖИМ ИНДИКАЦИИ. ADDWFPCL,1; GOTOINDH;ИНДИКАЦИЯ ЧАСОВ. GOTOINDT;ТАЙМЕРА. GOTOINDU;НАПРЯЖЕНИЯ. BCFFLAG,7;НЕТ УСТАНОВКИ. RETURN; ;========================================= ; 10. ВВОД КУРСОРА В МЛ. РАЗРЯД РЕГИСТРОВ. ;========================================= KYPVO BTFSCFLAG,4;ЕСЛИ НЕТ КУРСОРА, RETURN;ТО ВЕРНЕМСЯ. CALLKYPCY;УСТАНОВИМ РЕЖИМЫ. MOVWFKYPCI;В КУРСОР ИНДИКАЦИИ. RRFKYPCI,1;ЗАПОЛНИМ БИТ «С». ADDCFR1,1;ПЕРЕНЕСЕМ В РЕГИСТР ИНДИКАЦИИ. RRFKYPCI,1;ЗАПОЛНИМ БИТ «С». ADDCFR2,1;ПЕРЕНЕСЕМ В РЕГИСТР ИНДИКАЦИИ. RRFKYPCI,1;ОСТАЛЬНЫЕ РЕГИСТРЫ ADDCFR3,1;ЗАПОЛНЯЕМ АНАЛОГИЧНО. RRFKYPCI,1; ADDCFR4,1; RRFKYPCI,1; ADDCFR5,1; RRFKYPCI,1; ADDCFR6,1; RRFKYPCI,1; ADDCFR7,1; RRFKYPCI,1; ADDCFR8,1; RETURN; ;============================================= ; 11. ВЫВОД НА ИНДИКАЦИЮ. ;============================================= IND CALLKYPVO;ВВЕДЕМ КУРСОРЫ В РЕГИСТРЫ ИНДИКАЦИИ. MOVFWZPT;ЗНАЧЕНИЯ ЗАПЯТЫХ ПЕРЕПИШЕМ MOVWFTZPT;ВО ВРЕМЕННЫЙ РЕГИСТР. BSFFLAG1,2;ЗАПЯТАЯ ПЕРЕДАНА. BCFPORTC,DIN;ДАННЫЕ РАВНЫ НУЛЮ. BCFPORTC,LOAD;НАЧАЛО ПЕРЕДАЧИ (LOAD=0). RRFTZPT,1;ВЫТОЛКНЕМ ОЧЕРЕДНУЮ ЗАПЯТУЮ. CALLVUV0; BCFFLAG1,2;ЗАПЯТАЯ ПЕРЕДАНА. MOVLWR1;ЗАПИШЕМ АДРЕС ПЕРВОГО РЕГИСТРА ИНДИКАЦИИ. MOVWFFSR; MOVFWINDF;ЗНАЧЕНИЕ ПЕРВОГО РЕГИСТРА MOVWFTEMP;ПЕРЕПИШЕМ ВО ВРЕМЕННЫЙ. BCFPORTC,LOAD;НАЧАЛО ПЕРЕДАЧИ (LOAD=0). CALLVUVOD;НА ВЫВОД. POVT BSFFLAG1,2;ЗАПЯТАЯ ПЕРЕДАНА. RRFTZPT,1;ВЫТОЛКНЕМ ОЧЕРЕДНУЮ ЗАПЯТУЮ. CALLVUV0; BCFFLAG1,2;ЗАПЯТАЯ ПЕРЕДАНА. INCFFSR,1;УВЕЛИЧИМ АДРЕС РЕГИСТРА ИНДИКАЦИИ. MOVFWINDF;ПЕРЕПИШЕМ ЕГО ЗНАЧЕНИЕ MOVWFTEMP;ВО ВРЕМЕННЫЙ. CALLVUVOD;НА ВЫВОД. INCFCOUZ,1;ПОДСЧИТАЕМ ЧИСЛО MOVLW.7;ПЕРЕДАВАЕМЫХ SUBWFCOUZ,0;ЗАПЯТЫХ. BTFSCSTATUS,2; CLRFCOUZ;ОБНУЛИМ СЧЕТЧИК. BTFSSSTATUS,2; GOTOPOVT;ПОВТОРИМ ВЫВОД. BSFPORTC,LOAD;КОНЕЦ ПЕРЕДАЧИ. RETURN; CUNX BSFPORTC,DCLK;СИНХРОТМПУЛЬС = 1. CALLPAUS;ПАУЗА. BCFPORTC,DCLK;СИНХРОИМПУЛЬС = 0. RETURN;ВОЗВРАТ. PAUS MOVLW .5;МОЖНО ПОДБИРАТЬ ЗНАЧЕНИЕ ПАУЗЫ. ADDLW -1;ПАУЗА = ЧИСЛО Х 4 МКС. BTFSS STATUS,2; GOTO $-2;ПОВТОРИМ. RETURN;ВЕРНЕМСЯ. VUVOD RRFTEMP,1;СДВИНЕМ ВПРАВО. VUV0 BTFSSSTATUS,0;ПО НУЛЕВОМУ РАЗРЯДУ BCFPORTC,DIN;УСТАНАВЛИВАЕМ ДАННЫЕ BTFSCSTATUS,0;В 0 ИЛИ 1. BSFPORTC,DIN; CALLCUNX;СИНХРОНИЗИРУЕМ ДАННЫЕ. BTFSCFLAG1,2;ЕСЛИ ЗАПЯТАЯ ПЕРЕДАНА, RETURN;ТО ВЕРНЕМСЯ. INCFCOU,1;ПОДСЧИТАЕМ ЧИСЛО БИТ. MOVLW.8; SUBWFCOU,0; BTFSSSTATUS,2;ЕСЛИ НЕ ВСЕ БИТЫ ПЕРЕДАНЫ, GOTOVUVOD;ПОВТОРИМ ВЫВОД. CLRFCOU;ОБНУЛИМ СЧЕТЧИК. RETURN; ;====================================================== RETURN HOL BCFFLAG1,5;НАПОМИНАНИЕ ОБ АВАРИИ НАПРЯЖЕНИЯ. CLRFMH;ОБНУЛИМ ДЕСЯТКИ МИНУТ. MOVFWHH;ЕСЛИ ДЕСЯТКИ ЧАСОВ ADDLW-2H;РАВНЫ 2, BZHL4;ПРОВЕРИМ ЕДИНИЦЫ ЧАСОВ. MOVFWHL;ЕСЛИ ЕДИНИЦЫ ЧАСОВ РАВНЫ 9, ADDLW-9H; BZ$+3;УВЕЛИЧИМ ДЕСЯТКИ ЧАСОВ. INCFHL,1;ИЛИ УВЕЛИЧИМ ЕДИНИЦЫ ЧАСОВ. RETURN CLRFHL; INCFHH,1; RETURN HL4 MOVFWHL;ЕСЛИ ЕДИНИЦЫ ЧАСОВ ADDLW-3H;РАВНЫ 3, BZHOH;ИДЕМ ОБНУЛЯТЬ. INCFHL,1;ИЛИ ПРИБАВИМ ЕДИНИЦУ. RETURN HOH CLRFHL; CLRF HH;ОБНУЛИМ ДЕСЯТКИ ЧАСОВ. RETURN; ;============================================= ; 14. ТАЙМЕР. ;============================================= TAIM BSFFLAG,5;СЛЕДУЮЩАЯ ОСТАНОВКА ТАЙМЕРА. MOVLW.9;ЕСЛИ УЖЕ 9 СЕКУНД, SUBWFTCL,0; BC$+3;ИДЕМ НА СРАВНЕНИЕ ДЕСЯТКОВ СЕКУНД. INCFTCL,1;ИНАЧЕ ПРИБАВИМ ЕДИНИЦУ. RETURN CLRFTCL;ОБНУЛИМ СЕКУНДЫ. MOVFWTCH;ЕСЛИ ДЕСЯТКИ СЕКУНД ADDLW-5H;РАВНЫ 5, BZ$+3;ИДЕМ СРАВНИВАТЬ МИНУТЫ. INCFTCH,1;ИНАЧЕ УВЕЛИЧИМ ДЕСЯТКИ СЕКУНД. RETURN CLRFTCH;ОБНУЛИМ ДЕСЯТКИ СЕКУНД. MOVFWTML;ЕСЛИ ЕДИНИЦЫ МИНУТ ADDLW-9H;РАВНЫ 9, BZ$+3;ИДЕМ СРАВНИВАТЬ ДЕСЯТКИ. INCFTML,1;ИНАЧЕ УВЕЛИЧИМ МИНУТЫ. RETURN CLRFTML;ОБНУЛИМ ЕДИНИЦЫ МИНУТ. MOVFWTMH;ЕСЛИ ДЕСЯТКИ МИНУТ ADDLW-5H;РАВНЫ 5, BZ$+3;УВЕЛИЧИМ ЧАСЫ. INCFTMH,1;ИЛИ УВЕЛИЧИМ ДЕСЯТКИ МИНУТ. RETURN CLRFTMH;ОБНУЛИМ ДЕСЯТКИ МИНУТ. MOVFWTHL;ЕСЛИ ЕДИНИЦЫ ЧАСОВ РАВНЫ 9, ADDLW-9H; BZ$+3;УВЕЛИЧИМ ДЕСЯТКИ ЧАСОВ. INCFTHL,1;ИЛИ УВЕЛИЧИМ ЕДИНИЦЫ ЧАСОВ. RETURN CLRFTHL;ОБНУЛИМ ЧАСЫ. MOVFWTHH;ЕСЛИ ДЕСЯТКИ ЧАСОВ РАВНЫ 9, ADDLW-9H; BZ$+3;ОБНУЛИМ. INCFTHH,1;ИЛИ УВЕЛИЧИМ ДЕСЯТКИ ЧАСОВ. RETURN CLRFTHH; RETURN T00 BTFSSFLAG,5; GOTO$+4; BCFFLAG,2;ТАЙМЕР ВЫКЛЮЧЕН. BCFFLAG,5;СЛЕДУЮЩЕЕ ВКЛЮЧЕНИЕ ТАЙМЕРА. RETURN; CLRFTCL;ВСЕ ОБНУЛЯЕМ. CLRFTCH; CLRFTML; CLRFTMH; CLRFTHL; CLRFTHH; BSFFLAG,2;ВКЛЮЧИМ ТАЙМЕР. RETURN ;=================================================== ; 15. АЦП — ПРЕОБРАЗОВАНИЯ (ИЗМЕРЕНИЕ ВХОДНЫХ ВЕЛИЧИН). ;=================================================== ADP MOVLWB’10000001′;СИНХРОНИЗАЦИЯ ОТ RC MOVWFADCON0;ГЕНЕРАТОРА, ВХОД 0, ВКЛЮЧЕНИЕ АЦП (YBX). CALLZAD; BSFADCON0,1;ВКЛЮЧИМ ПРЕОБРАЗОВАНИЕ. BTFSCADCON0,1;ОЖИДАЕМ ЗАВЕРШЕНИЯ GOTO$-1 ;ПРЕОБРАЗОВАНИЯ. MOVFWADRESH ;ПЕРЕПИШЕМ РЕЗУЛЬТАТ ПРЕОБРАЗОВАНИЯ BCF STATUS,0 ;ОБНУЛИМ БИТ «С». RLF TEKL,1 ;СДВИНЕМ ПЕРЕКОДИРУЕМОЕ RLF TEKH,1 ;ЧИСЛО ПЕРЕМЕЩАЯ ЕГО СТАРШИЙ БИТ RLF EDA,1 ;В МЛАДШИЙ БИТ РЕГИСТРОВ RLF DEA,1 ;РЕЗУЛЬТАТА. DECFSZ COU,1 ;ЗАФИКСИРУЕМ СДВИГ В СЧЕТЧИКЕ. GOTO RASDEC ;ПРОВЕРИМ ПОЛУБАЙТЫ НА СЕМЕРКУ. GOTO MESTO ;ЕСЛИ СЧЕТЧИК ПУСТ, ЗАПОЛНИМ РЕГИСТРЫ ИНДИКАЦИИ. RASDEC MOVLW EDA ;ЗАПИШЕМ АДРЕС РЕГИСТРА MOVWF FSR ;В РЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ. CALL BCD ;ПРОВЕРИМ ЗНАЧЕНИЕ РЕГИСТРА НА 7. MOVLW DEA ;АНАЛОГИЧНЫЕ ОПЕРАЦИИ ПРОДЕЛАЕМ MOVWF FSR ;С ДРУГИМИ РЕГИСТРАМИ. CALL BCD ; GOTO BIDE ;ПОЙДЕМ ПОВТОРЯТЬ СДВИГ. BCD MOVLW 3 ;0000 0011 ADDWF 0,0 ;ПРИБАВИМ 3 К РЕГИСТРУ И РЕЗУЛЬТАТ MOVWF TEMP ;ЗАПИШЕМ ВО ВРЕМЕННЫЙ РЕГИСТР. BTFSC TEMP,3 ;ПРОВЕРИМ 3 БИТ И ЕСЛИ ОН РАВЕН НУЛЮ, MOVWF 0 ;ПРОПУСКАЕМ ЗАПИСЬ РЕЗУЛЬТАТА В РЕГИСТР. MOVLW 30 ;48=0011 0000 ADDWF 0,0 ;ПРИБАВИМ 3 К СТАРШЕМУ ПОЛУБАЙТУ РЕГИСТРА И РЕЗУЛЬТАТ MOVWF TEMP ;ЗАПИШЕМ ВО ВРЕМЕННЫЙ РЕГИСТР. BTFSC TEMP,7 ;ЕСЛИ БИТ ЕДИНИЧНЫЙ, MOVWF 0 ;ТО ЗАПИШЕМ НОВОЕ ЗНАЧЕНИЕ В РЕГИСТР. RETURN ;ВЕРНЕМСЯ ДЛЯ ЗАГРУЗКИ НОВОГО ЗНАЧЕНИЯ РЕГИСТРА. ;====================================================== ; 18. ИЗВЛЕКАЕМ ПОЛУБАЙТЫ ИЗ РЕГИСТРОВ СЧЕТА В РЕГИСТРЫ ИНДИКАЦИИ. ;====================================================== MESTO MOVLWB’00001111′;ИЗВЛЕКАЕМ ПОЛУБАЙТЫ ANDWFDEA,0;В РЕГИСТРЫ ИНДИКАЦИИ. MOVWFCOI; MOVLWB’11110000′; ANDWFEDA,0 ; MOVWFDEI ; SWAPFDEI,1 ; MOVLWB’00001111′; ANDWFEDA,0; MOVWFEDI; CLRFEDA; CLRFDEA; RETURN; ;================================================== ; 19. СМЕНА ИНДИКАЦИИ ПРИ СМЕНЕ РЕЖИМА. ;================================================== INDH BTFSCFLAG,7;ЕСЛИ КУРСОР ЕСТЬ, CALLYCT;ТО ИДЕМ НА УСТАНОВКУ. MOVLW.10;ПУСТО. CALLSEG;ЗАПОЛНИМ РЕГИСТРЫ ИНДИКАЦИИ. MOVWFR1; MOVWFR2; MOVWFR8; BTFSSFLAG,6; GOTO$+6; MOVLW.11;ПРОЧЕРК СРЕДНИЙ. CALLSEG; MOVWFR5; BCFFLAG,6; GOTO$+5; MOVLW.12;ПРОЧЕРК НИЖНИЙ. CALLSEG; MOVWFR5; BSFFLAG,6; MOVFWML; CALLSEG; MOVWFR3; MOVFWMH; CALLSEG; MOVWFR4; MOVFWHL; CALLSEG; MOVWFR6; MOVFWHH; CALLSEG; MOVWFR7; BSFFLAG,1;ВКЛЮЧИМ РЕЖИМ ЧАСОВ. CLRFZPT; RETURN; INDT BTFSSPORTA,KY;ЕСЛИ КНОПКА НАЖАТА, CALLT00;ТО ИДЕМ ОБНУЛЯТЬ ТАЙМЕР. MOVFWTCL;ЗАПОЛНИМ РЕГИСТРЫ ИНДИКАЦИИ CALLSEG;МИНУТ И СЕКУНД ПРАВЫХ ЧАСОВ. MOVWFR1; MOVFWTCH; INCFMH,1;УВЕЛИЧИМ ДЕСЯТКИ МИНУТ. MOVLW.6;НЕ БОЛЕЕ 5. SUBWFMH,0; SKPNC;ЕСЛИ БОЛЬШЕ ИЛИ РАВНО 6, CLRFMH;ТО ОБНУЛИМ. RETURN YC2 INCFHL,1;УВЕЛИЧИМ ЕДИНИЦЫ ЧАСОВ. MOVLW.10;НЕ БОЛЕЕ 9. SUBWFHL,0; SKPNC; CLRFHL;ЕСЛИ БОЛЬШЕ, ТО ОБНУЛИМ. MOVFWHH;ПЕРЕКОДИРУЕМ В ДВОИЧНЫЙ CALLDEBIN;КОД ДЕСЯТКИ. ADDWFHL,0;ПРИБАВИМ ЕДИНИЦЫ MOVWFHOU;ДВОИЧНОЕ ЗНАЧЕНИЕ НЕ ДОЛЖНО ADDLW-18H;ПРЕВЫШАТЬ — 24. SKPC;ЕСЛИ БОЛЬШЕ ИЛИ РАВНО 24, RETURN CLRFHOU;ТО ОБНУЛИМ ЧАСЫ ДВОИЧНЫЕ CLRFHL;И РАЗРЯДЫ СТАРШИЙ CLRFHH;И МЛАДШИЙ. RETURN YC3 INCFHH,1;УВЕЛИЧИМ ДЕСЯТКИ ЧАСОВ. MOVLW.3;НЕ БОЛЕЕ 2. SUBWFHH,0; SKPNC; CLRFHH;ЕСЛИ БОЛЬШЕ, ТО ОБНУЛИМ. MOVFWHH;ПЕРЕКОДИРУЕМ В ДВОИЧНЫЙ CALLDEBIN;КОД ДЕСЯТКИ. ADDWFHL,0;ПРИБАВИМ ЕДИНИЦЫ MOVWFHOU;И ПОЛУЧИМ ДВОИЧНОЕ ЧИСЛО. ADDLW-18H; SKPC;ЕСЛИ БОЛЬШЕ ИЛИ РАВНО 24, RETURN CLRFHOU;ТО ОБНУЛИМ ЧАСЫ ДВОИЧНЫЕ CLRFHL;И РАЗРЯДЫ СТАРШИЙ CLRFHH;И МЛАДШИЙ. RETURN;ВЕРНЕМСЯ. YCE CLRFCL;ОБНУЛЕНИЕ. CLRFCH; CLRFML; RETURN; ;===================================================== END ;=====================================================

Применение микроконтроллеров для быта

Двухканальный стабилизированный диммер (с подробнейшим описанием) (ATmega16, asm) 03-08-2013
1. ОБЩИЕ СВЕДЕНИЯ 1.1. Введение Несмотря на бурное развитие сверх ярких светодиодов, в широкой продаже пока не появились светодиодные…
Просмотров: 5672

15-ти канальный управляемый диммер (ATmega8) 20-05-2011
В наш повседневный быт всё чаще входят различные интеллектуальные системы управления. Стиральные машинки давно сами стирают и сушат,…
Просмотров: 7603

Пульт дистанционного управления для цифровых зеркальных камер (ATtiny12, asm) 02-12-2010
Некоторые модели цифровых фотокамер имеют возможность дистанционного управления с помощью ИК-лучей. Дистанционное управление…
Просмотров: 4665

ИК пульт ДУ для Canon, Nikon, Minolta, Pentax, Olympus (PIC12F629, asm) 02-12-2010

Некоторые фотокамеры фирм Canon, Nikon, Minolta, Pentax, Olympus имеют функцию дистанционной съёмки с помощью инфракрасного пульта дистанционного…
Просмотров: 3654

15-ти канальная система инфракрасного дистанционного управления (ATmega8) 26-10-2010
​ Основные возможности разработанного модуля дистанционного управления: · 15 выходов для подключения нагрузок; ·…
Просмотров: 4018

Универсальное устройство: часы, термометр, система удалённого управления (ATmega16) 01-08-2010
Устройство “Universal device” (Универсальное устройство) содержит в себе функции нескольких устройств, которые сильно облегчают жизнь. ..
Просмотров: 7935

Часы на микроконтроллере ATmega16 (ATmega16, C) 26-01-2010
От администрации сайта eldigi.ru Автор конструкции предоставил только схемы, исходники и проект для симуляции в Proteus-e. За что ему…

Просмотров: 6854

Сенсорный регулятор освещения с дистанционным управлением (ATtiny2313) 08-03-2009
Предлагаемое устройство — один из вариантов микроконтроллерных регуляторов яркости ламп накаливания, конструкции которых можно…
Просмотров: 7227

Многоканальная система дистанционного управления или «Умный дом» (ATmega16) 24-01-2009
Как говорится, лень – двигатель прогресса. Возможно, поэтому всё большее распространение получают системы дистанционного…
Просмотров: 9342

Часы на ATmega8 (ATmega8, C) 21-06-2008
Два датчика температуры DS18B20 (дома и на улице). 5 будильников. Отсрочка сигнала, если будильник не отключить, срабатывает примерно.

..
Просмотров: 15342

Часы с коррекцией времени от GPS (PIC16F876, asm) 16-05-2008
Конструкции и принципиальные схемы электронных часов в настоящее время достаточно хорошо разработаны. Но точность индикации времени…
Просмотров: 4689

Домашняя метеостанция с часами, календарем и будильниками (ATmega32, C) 21-04-2008
Предлагаемый прибор отличается от аналогов использованием современной базы, исчерпывающим в домашних условиях набором измеряемых…
Просмотров: 8903

Калькулятор для спортивных соревнований с гандикапом (PIC16F88, asm) 21-04-2008
Разработанный авторами калькулятор предназначен для быстрого пересчета времени, затраченного участниками соревнований на…
Просмотров: 2361

«МультиПульт» — расширь возможности своего пульта! (ATtiny2313) 13-04-2008
Данная конструкция будет интересна прежде всего владельцам ТВ тюнеров на чипсете Philips SAA7134 и SAA7135. Теоретически, любой пульт от таких ТВ.

..
Просмотров: 3137

Музыкальный Звонок на MMC/SD карте (ATmega32, C) 17-03-2008
Простые однотональные мелодии на сегодняшний день уже не могут вызвать восторга у благодарных слушателей. За примерами далеко ходить…
Просмотров: 9222

Универсальная телефонная приставка (PIC16F84A) 01-03-2008
Сегодня практически во всех крупных городах телефонные номера переводятся на повременную оплату. Недалеко то время, когда поминутная…
Просмотров: 3905

Регулятор яркости лампы накаливания на микроконтроллере (AT89C2051, asm) 01-03-2008
В этом проекте рассказывается о микроконтроллерном регуляторе яркости лампы накаливания (далее просто регулятор). Регулятор…
Просмотров: 6117

Таймер на PIC16F628 (PIC16F628, asm) 01-03-2008
Проэкт представляет собой часы с таймером, который может быть запрограммирован на включение и на выключение. Я начал его делать так как…

Просмотров: 3854

Термостат для теплого пола (PIC16F84A, asm) 22-01-2008
Сегодня во многих квартирах имеются полы с электроподогревом. Они удобны и достаточно долговечны, но вот их терморегуляторы имеют ряд…
Просмотров: 4598

Дистанционный регулятор освещения (PIC16F629, C) 22-01-2008
Предлагаемый прибор — один из вариантов регулятора яркости ламп накаливания с расширенными за счет применения микроконтроллера…
Просмотров: 5140

Регулятор освещения с дистанционным управлением (AT90S2313, C) 22-01-2008
Предлагаемый прибор умеет не только включать и выключать освещение, но и регулировать его яркость. Он имеет и дополнительную функцию…
Просмотров: 4610

Усовершенствованная «поющая ёлка» на PIC (PIC16F628, asm) 20-01-2008
Особенностью данной программы является возможность плавного изменения яркости светодиодов. Прототипом послужила «поющая…
Просмотров: 3804

Часы будильник термометр и ИК-ДУ (AT89C4051, C) 18-01-2008
Предлагаемое вниманию читателей устройство выполнено на современной элементной базе и отличается от ранее опубликованных в журнале. ..
Просмотров: 3589

Простые часы-будильник на PIC16F84 (PIC16F84, asm) 17-01-2008
Не так давно электронные часы строили на так называемых часовых микросхемах серии К176 и специализированных микросхемах серий К145…
Просмотров: 4978

Экономичный цифровой термометр (PIC16F628, asm) 16-01-2008
В последнее время конструирование цифровых термометров очень популярно. Применение микроконтроллеров (МК) и современных датчиков…

Просмотров: 4325

Часы-будильник с ЖК-индикатором (PIC16F84A) 15-01-2008
Особенности устройства: Два будильника. Сохранение времени установки будильников при выключении питания. Возможность отключения…
Просмотров: 3468

Таймер на PIC16F84 (PIC16F84A, asm) 07-01-2008
Таймер — одна из наиболее популярных радиолюбительских конструкций Вниманию читателей предлагается еще один вариант В отличие от…
Просмотров: 4430

Счетчик на микроконтроллере (AT90S2313, asm) 06-01-2008
Во многих устройствах бытовой техники и промышленной автоматики сравнительно недавних лет выпусков установлены механические. ..
Просмотров: 5141

Точные часы-будильник на микроконтроллере (PIC16F628A, asm) 04-01-2008
При создании этой конструкции основной упор был сделан на точности хода часов и удобстве управления.   — Реализовано 2 режима…
Просмотров: 4553

Часы с таймером на микроконтроллере (PIC16F628A, asm) 04-01-2008
Проэкт представляет собой часы с таймером, который может быть запрограммирован на включение и на выключение. Я начал его делать так как…
Просмотров: 4060

Автомат вечернего освещения (PIC12C508, C) 04-01-2008
Устройство, схема которого показана на рис. 1, ежедневно в установленное время включает и выключает свет. Разработал его таиландец Wrchit…
Просмотров: 2986

Блок жизнеобеспечения аквариума (AT89C2051, asm) 08-12-2007
Блок жизнеобеспечения аквариума представляет собой функционально законченный блок, который управляет включением компрессора,.

..
Просмотров: 3679

PIC для младенца (PIC12F629, asm) 07-12-2007
Назначение: Разработанное устройство предназначено для звуковой сигнализации намокания пеленок малыша. Как и памперсы, оно не…
Просмотров: 2620

Продвинутые радио-часы/будильник с термометрами на графическом LCD (ATmega8515) 29-11-2007
Представленное устройство не слишком рентабельно для серийного производства, но представляет собою весьма неплохой пример…
Просмотров: 6191

Печать

Страница не найдена | Хакадей

Похоже, в этом месте ничего не найдено. Может попробовать одну из ссылок ниже или поиск?

Искать:

Наиболее часто используемые категории

  • Разные хаки (3850)
  • Слайдер (3633)
  • Колонны Hackaday (3715)
  • Новости (2,972)
  • хаков для Arduino (2935)
  • хаков инструментов (2563)
  • классических хаков (2464)
  • Избранное (2411)
  • хаков для 3D принтеров (2,255)
  • взломов роботов (2190)

Архивы

Попробуйте поискать в месячных архивах. 🙂

Архивсесс -измельченный месяц января 2023 г., декабрь 2022 г., ноябрь 2022 г., октябрь 2022 г., сентябрь 2022 г., август 2022 г., июль 2022 г., июнь 2022 г., май 2022 г., апрель 2022 г., март 2022 г., февраль 2022 г., январь 2022 г. Декабрь 2021 г., ноябрь, 2021 г., октябрь 2021 г., сентябрь 2021 г., 2021 г., июль 2021 г., 2021 год. Март 2021 Февраль 2021 Январь 2021 Декабрь 2020 Ноябрь 2020 Октябрь 2020 Сентябрь 2020 Август 2020 Июль 2020 Июнь 2020 Май 2020 Апрель 2020 Март 2020 Февраль 2020 Январь 2020 Декабрь 2019Ноябрь 2019 г. Октябрь 2019 г. Сентябрь 2019 г. Август 2019 г., июль 2019 г., июнь 2019 г., май 2019 г. Апрель 2019 г. Март 2019 г. Февраль 2019 г. Январь 2019 г. Декабрь 2018 г. Ноябрь 2018 г. Октябрь 2018 г. Сентябрь 2018 г. Август 2018 г., июль 2018 г., июнь 2018 г., май 2018 апрель 2018 г. Март 2018 г. Февраль 2018 г. Январь 2018 г. Декабрь 2018 г. Ноябрь 2017 г. Октябрь 2017 г. Сентябрь 2017 г. Август 2017 г., июль 2017 г., июнь 2017 г.

, май 2017 г., апрель 2017 г. Март 2017 г., февраль 2017 г. Январь 2017 г. Декабрь 2016 г., ноябрь 2016 г., октябрь 2016 г., Сентябрь 2016 г., август 2016 г., июнь 2016 г., июнь 2016 г., май 2016 г., апрель 2016 г. Март 2016 г. Февраль 2016 г. 2016 г. Декабрь 2015 г. Ноябрь 2015 г. Октябрь 2015 г. Сентябрь 2015 г. август 2015 г., июль 2015 г., июнь 2015 г., май 2015 г., апрель 2015 г. Март 2015 г., февраль 2015 г., январь 2015 г., декабрь 2014 г., ноябрь 2014 г., октябрь 2014 г., сентябрь 2014 г. Август 2014 г., июль 2014 г., июнь 2014 г., май 2014 г. Апрель 2014 г. Март 2014 г. Февраль 2014 г. Январь 2014 г. Декабрь 2013 г., ноябрь 2013 г., октябрь 2013 г. Сентябрь 2013 г. Август 2013 июль 2013 г., июнь 2013 г., май 2013 г., апрель 2013 г. Март 2013 г., февраль 2013 г., январь 2013 г. Декабрь 2012 г., ноябрь 2012 г., октябрь 2012 г. 2012 г., август 2012 г., июнь 2012 г., июнь 2012 г., май 2012 г., апрель 2012 г. Март 2012 г., февраль 2012 г., январь 2012 г., декабрь 2011 г., ноябрь 2011 г. , октябрь 2011 г., 2011 г., июль, июль, июль. 2011 Июнь 2011 Май 2011 Апрель 2011 Март 2011 Февраль 2011 Январь 2011 Декабрь 2010 Ноябрь 2010 Октябрь 2010 Сентябрь 2010 Август 2010 Июль 2010 Июнь 2010 Май 2010 Апрель 2010 Март 2010 Февраль 2010 Январь 2010 Декабрь 2009Ноябрь 2009 г., октябрь 2009 г., сентябрь 2009 август 2009 г., июнь 2009 г., июнь 2009 г., май 2009 г., апрель 2009 г. Март 2009 г., февраль 2009 г., январь 2009 г. Декабрь 2008 г., ноябрь 2008 г., октябрь 2008 г., август 2008 г., июль 2008 г., июнь 2008 г., май 2008 г., апрель 2008 г. Март 2008 г., февраль 2008 г., январь 2008 г., декабрь 2007 г., ноябрь 2007 г. 2007 г. Октябрь 2007 г., сентябрь 2007 г. август 2007 г., июль 2007 г., июнь 2007 г., май 2007 г., апрель 2007 г., март 2007 г., февраль 2007 г., январь 2007 г., декабрь 2006 г., ноябрь 2006 г., октябрь 2006 г., сентябрь 2006 г., август 2006 г., июль 2006 г., июнь 2006 г., май 2006 г. апрель 2006 г. Март 2006 г. Февраль 2006 г. Январь 2006 г. Декабрь 2005 г., ноябрь 2005 г. , октябрь 2005 г. Сентябрь 2005 г. Август 2005 г. Июль 2005 г. Июнь 2005 г. Май 2005 г. Апрель 2005 г. Март 2005 г. Февраль 2005 г. Январь 2005 г. Декабрь 2004 г. Ноябрь 2004 г. Октябрь 2004 г. Сентябрь 2004 г.

Микроконтроллер

— Блог Харши

Стандарт

Последним проектом в моей студенческой жизни была промышленная встраиваемая система. Компания Wabco, крупный производитель гидравлических систем, нуждалась в системе, которая могла бы непрерывно контролировать испытательный стенд. Испытательные стенды — это те машины, которые они используют для проверки гидравлики, включая параметры давления и температуры. Система должна иметь возможность отслеживать эти параметры в течение продолжительных периодов времени (24 часа в сутки, 7 дней в неделю). Оператор должен задавать более низкие и более высокие пороговые значения для каждого параметра в начале цикла тестирования, а затем система измеряет параметры, чтобы увидеть, находятся ли они в пределах двух пороговых значений. Если нет, то есть аномалия, и в случае любой аномалии система должна сообщить об этом оператору через SMS и остановить буровую установку. Для полноты на плате имеется дисплей, на котором последовательно отображаются значения параметров. Встроенная система предназначена для обработки 6 значений давления от 6 датчиков давления и 2 значений температуры от термопар типа K.

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

Основными компонентами моей конструкции были микроконтроллер MSP430G2553 (для центральной обработки), микроконтроллер ATMega16 (для предоставления отображаемых данных для 7-сегментных дисплеев через декодеры IC7447), интерфейс модуля GSM (для отправки SMS), мультиплексор MAX4617. (для передачи значений 8 датчиков), реле (работает в паре с переключателем управления буровой установкой, чтобы остановить или запустить ее) и встроенные регуляторы мощности для источника питания. После разработки схемы, разводки и изготовления печатной платы и сборки компонентов – результат:

Верхняя сторона встроенной системы (сверху) и нижняя сторона (снизу) rig, но вот следующее лучшее видео, которое у меня есть — тестирование платы с 1 контролем давления и 1 контролем температуры.

Любопытным моментом при выполнении промышленного проекта является подготовка и анализ FMEA – анализа видов и последствий отказов для оценки производительности системы. Это мой FMEA для беспилотной буровой установки 9. 0003

  • Дата 29 апреля 2016 г.
  • Теги atmega16, отказы, неисправности, gsm, промышленный, микроконтроллер, мониторинг, msp430, печатная плата, давление, установка, температура, термопара, преобразователь
Стандарт

Поскольку мировой энергетический кризис с каждым днем ​​только усугубляется , важность возобновляемых источников энергии, таких как солнечная энергия, становится все более заметной. Солнечная энергия обычно обеспечивает постоянный ток (DC), в то время как большинство коммерческих источников питания обеспечивают переменный ток (AC). Таким образом, если бы дом должен был быть обеспечен солнечной энергией и использовать коммерческую энергию, когда солнечной энергии было недостаточно, то бытовые приборы должны были иметь возможность работать как от источников переменного, так и постоянного тока. Кроме того, обычно напряжение солнечной энергии значительно ниже, чем у коммерческих источников переменного тока. Таким образом, существует некоторое разнообразие в виде подаваемой энергии.

Большинство современных бытовых приборов, включая компьютеры, инверторы переменного тока, телевизоры и даже аккумуляторы и т. д., работают на постоянном токе. Как правило, для этих устройств на базе постоянного тока батареи используют инвертор для обеспечения переменного тока (чтобы быть совместимым с коммерческим источником питания), а затем устройство выпрямляет его обратно в постоянный ток для своего использования, при этом энергия тратится впустую во время этих преобразований. Таким образом, требуется универсальный источник питания, который может принимать любое напряжение от 40 до 240 В переменного или постоянного тока и обеспечивать любое напряжение от 40 до 240 В постоянного тока, чтобы его можно было использовать с любым устройством для работы с любым источником питания. Это то, что делает гибридный блок питания.

Технически это схема Buck-Boost на базе микроконтроллера с мостовым выпрямителем входного каскада. Схема выглядит так, как показано ниже.

Схема работает путем преобразования переменного или постоянного тока в постоянный через выпрямительный мост. Затем линейная регулировка обеспечивает питание 5 В, чтобы микроконтроллер мог включиться. После включения микроконтроллера, в зависимости от положения переключателя S1, управляется повышающе-понижающая сеть. Выходное напряжение подается обратно в микроконтроллер как форма управления с обратной связью, и в зависимости от выходного напряжения микроконтроллер соответствующим образом регулирует сигналы широтно-импульсной модуляции (ШИМ) на транзисторах Q1 и Q2. Эта схема изначально была разработана для работы миксера-измельчителя, отсюда и использование переключателя S1.

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

Практически возникли проблемы в виде огромных пульсаций из-за недостаточно высокой частоты ШИМ микроконтроллера. Поэтому я добавил генератор треугольной волны 1 МГц 5 В и фильтр нижних частот к выходу ШИМ микроконтроллера, чтобы обеспечить пороговое напряжение. Когда пороговое напряжение подается на компаратор вместе с треугольной волной, он будет генерировать ШИМ 1 МГц с требуемым рабочим циклом. Итак, новая схема стала примерно такой.

Естественно, следующим шагом будет изготовление схемы с силовыми электронными компонентами — огромной катушкой индуктивности, парой высоковольтных конденсаторов, высоковольтными МОП-транзисторами и диодами. Схема изготовлена ​​на макетной плате.

Для этого слайд-шоу требуется JavaScript.

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

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

При повышении входного напряжения, скажем, с 13,4 В до 30,8 В, что более чем в 3 раза превышает входное, пульсации на выходе становятся очень высокими. Поэтому для уменьшения пульсаций требуется высокочастотный ШИМ. Вот почему для генерации такого ШИМ требуется треугольная волна частотой 1 МГц. 1 МГц находится почти на пороге радиочастот, что создает паразитные или неидеальные эффекты в используемых компонентах. Это приводит к тому, что форма волны не является полностью треугольной. Имеются значительные провалы (ниже 0 В) и выбросы (выше 5 В), которые создают нежелательную генерацию ШИМ, влияющую на выходной сигнал. Именно из-за этого я не рискнул тестировать его при напряжениях (40-240В), на которые рассчитана схема. Да, в отличие от других моих проектов, этот работает неидеально, но это неплохо, учитывая, что это мой первый проект по силовой электронике. В любом случае, по замыслу это инновационное решение актуальной проблемы питания электроприборов в «умных» домах.

 

  • Дата 9 апреля 2016 г.
  • Теги переменный, постоянный, гибридный, микроконтроллер, силовая электроника, блок питания, солнечный, универсальный
Стандарт

В этой системе используются два микроконтроллера ARM, а именно TM4C123GH6PM. Один из микроконтроллеров выполняет функцию сбора данных, а другой фокусируется на рендеринге данных. Эта система предназначена для автомобильных целей, где данные собираются из нескольких источников. Затем эти данные отправляются на другой контроллер, который использует их для принятия решений и запуска пользовательского дисплея. Эта передача данных происходит через шину CAN. CAN расшифровывается как Controller Area Network и, по сути, является двухпроводным протоколом связи.

На стороне сбора данных используются 4 датчика – ультразвуковой, температуры, давления и фотоэлемент (LDR). Ультразвуковой датчик устанавливается в задней части автомобиля. Это похоже на систему помощи при парковке сзади, за исключением того, что если расстояние слишком меньше, не только включается зуммер, но и двигатель (при условии, что это электромобиль) останавливается.

 

Датчик температуры измеряет температуру в салоне, а датчик давления измеряет давление в шинах. Эти данные не используются при принятии каких-либо конкретных решений. Они просто отображаются на дисплее.

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

 

Концептуально контроллер сбора данных получает данные от датчиков и передает их на контроллер рендеринга данных. Затем сторона рендеринга данных принимает решения как о двигателе, так и о белом светодиоде. Все эти параметры отображаются на ЖК-дисплее 16×2 контроллером рендеринга данных, где D- означает расстояние, L- означает свет, T- означает температуру и P- означает давление.

Это система на основе ARM и шины CAN для мониторинга автомобильных данных. Некоторые улучшения могут быть сделаны с помощью более сложных датчиков для отслеживания некоторых других данных. Тем не менее, это основная установка.

  • Дата 3 апреля 2015 г.
  • Теги ARM, автомобильный, мониторинг данных, микроконтроллер, система оповещения
Стандарт

Я начал свое знакомство с микроконтроллерами (UC) с AVR, а затем решил разнообразить свою деятельность другими замечательными UC. Естественно, следующая остановка — знаменитый PIC от Microchip — контроллер периферийного интерфейса. Теперь, когда я говорю PIC, почти всегда предполагается (особенно в Индии) серия PIC18F, в основном PIC18F4570 и т. Д. Так получилось, что эти чипы представляют собой 8-битные архитектуры, такие как AVR (они являются классическими конкурентами).

С этой серией PIC (18F) было сделано очень много, и я имею в виду, что практически любая схема, которую можно сделать, была сделана и размещена в Интернете. Итак, чтобы немного оживить ситуацию, я решил работать с относительно неизвестной серией PIC24F. Эта серия имеет 16-битную архитектуру с превосходными характеристиками (на мой взгляд, PPS — Peripheral Pin Select — самая замечательная) и производительностью по сравнению с 18F. В частности, я выбрал PIC24FJ64GA002, и самое лучшее для меня было то, что для этого микроконтроллера не так много готовых эталонных схем или программ.

Что я сделал? Я повторил те же эксперименты, что и с AVR. Результат тот же, но добиться его было задачей, честное слово, гораздо более сложной. И поскольку результат тот же, может быть немного скучно смотреть видео аппаратной реализации, поэтому вместо этого я разместил записи экрана моделирования (используя Proteus).

Так как описания экспериментов уже были написаны в моей статье AVR, я не хотел бы повторять их здесь. Итак, приступим к экспериментам.

Простой ввод/вывод:

Моделирование показывает, что светодиод мигает (выход), а при нажатии переключателя (ввод) светодиод удерживается, что является действительно простым случаем ввода и вывода.

В качестве части программирования выходов, вот матричный светодиодный дисплей, запрограммированный на отображение «hp07». Аппаратная часть для этого слишком прямолинейна, поэтому я остановился на симуляции.

АЦП:

Любопытно, что Proteus также может моделировать ЖК-дисплеи. При перемещении потенциометра из положения минимального сопротивления в положение максимального сопротивления напряжение изменяется от 0 до 5 В, и оно считывается микроконтроллером с помощью АЦП и отображается.

   

ШИМ:

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

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

UART:

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

При нажатии кнопки передачи данные передаются через универсальный асинхронный приемник-передатчик (во время этой процедуры горит зеленый светодиод). Другой микроконтроллер принимает данные и отображает их с помощью ИС 7447 и 7-сегментного индикатора с общим анодом.

Счетчик обнуляется после каждой передачи.

И поэтому я закончил свои эксперименты с PIC. Да, я провел те же эксперименты, что и с микроконтроллерами AVR. Мне легко использовать термистор вместо потенциометра и разместить его как цифровой термометр в эксперименте с АЦП. Но все это технически тривиальные проявления основы, которой является модуль АЦП. Что имеет значение, так это программа и базовая схема, чтобы заставить ее работать, и я сделал это — поэтому миссия выполнена!

Видео аппаратной реализации с использованием PIC есть на моем канале YouTube: https://www.youtube.com/user/harshaprabakaran07/videos

  • Дата 28 декабря 2014 г.
  • Теги 16 бит, АЦП, дисплей, эксперименты, аппаратная реализация, светодиод, микроконтроллер, контроллер периферийного интерфейса, ПОС, ШИМ
Стандарт

Люблю схемотехнику и программирование. Поэтому микроконтроллеры для меня буквально рай. Хотя долгое время отраслевым стандартом микроконтроллеров был 8051, я действительно предпочел микроконтроллеры Atmel AVR. В частности, сочетание Proteus (для моделирования), WinAVR (для программирования) и, безусловно, самого микроконтроллера — ATmega16 — было великолепно для работы. Я разработал почти все его основные функции, от простого ввода-вывода до связи по UART. В этой статье я буду публиковать фотографии симуляции, а видео — реальной аппаратной реализации.

Простой ввод-вывод:

Это настолько просто, насколько может быть реализована схема микроконтроллера. Для вывода все, что он делает, это заставляет мигать светодиод. Чтобы добавить немного входа в схему, я добавил кнопочный переключатель. Таким образом, светодиод мигает нормально, но при нажатии кнопки (ввод) светодиод остается включенным.

Светодиодный матричный дисплей фактически содержит 7×5 светодиодов. Каждый из этих 35 светодиодов может быть индивидуально включен или выключен. Эта схема также полностью посвящена выходам, но здесь я выбрал определенные светодиоды, которые будут включены в каждом столбце. Затем он программирует микроконтроллер для отображения всех столбцов, кроме одного столбца за раз, быстро создавая буквы.

АЦП:

 

Одной из лучших особенностей AVR является встроенный аналого-цифровой преобразователь. Эта схема преобразует аналоговое значение напряжения, подаваемого через переменный резистор (потенциометр 10 кОм), и отображает его на символьном ЖК-дисплее 16×2. На видео показан весь диапазон значений от 0 до 5В при повороте потенциометра с одного конца на другой.

ШИМ:

 

AVR имеет довольно удобные внутренние счетчики и таймеры. Используя их, можно получить широтно-импульсную модуляцию практически любой скважности. Я использовал ШИМ для уменьшения яркости светодиода, а также для управления скоростью двигателя постоянного тока. Двигатель был на 150 об/мин, и я даже снял вал двигателя, чтобы посмотреть, должны ли внутренние шестерни заметно изменить скорость. Для глаз делали, для камеры не уверен. Таким образом, разница в скорости не очевидна, но внимательное наблюдение ясно покажет изменение скорости, если яркость светодиода используется в качестве эталона. Когда светодиод тусклый, скорость двигателя должна быть низкой, и наоборот (яркая и быстрая) также верно.

UART:

Это протокол, с помощью которого микроконтроллер может обмениваться данными или передавать данные на другое устройство. В этом случае микроконтроллер передает данные другому микроконтроллеру, который их отображает. Вот что происходит: каждый раз, когда нажимается нижняя кнопка, вызывается прерывание и увеличивается значение счетчика. Это значение счетчика хранит, сколько раз была нажата нижняя кнопка. Каждый раз, когда загорается красный свет, регистрируется счет. При нажатии верхней кнопки загорается зеленый свет и данные передаются на другой микроконтроллер.

Если присмотреться, то единственной связью между двумя микроконтроллерами является один-единственный желтый провод.

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

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