Цифровой измеритель веса
Разновидности конструктивных решений реализации весового оборудования. Разработка блок-схемы предустановок, блок-схемы измерения веса, блок-схемы вывода информации о весе в компьютер, блок-схемы устройства и программы работы микропроцессорного блока.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.02.2023 |
Размер файла | 525,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования Республики Беларусь Учреждение Образования
«Белорусский государственный университет информатики и радиоэлектроники»
Факультет радиотехники и электроники
Кафедра: Теоретических основ электротехники
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Дисциплина: «Микропроцессорная техника»
к курсовой работе на тему
“Цифровой измеритель веса”
- Содержание
- Введение
- 1. Обзор литературы
- 1.1 Общее сведения о весовом оборудовании и разновидность конструктивных решений их реализации
- 1.2 Классификация весового оборудования
- 1.3 Основные параметры весового оборудования
- 1.4 Автомобильные весы и их разновидности
- 1.5 Тензодатчики. Основные типы и принцип работы
- 2. Анализ технического задания
- 2.1 Вводные данные
- 2.1.1 Наименование курсового проекта
- 2.1.2 Срок выполнение курсового проекта
- 2.2 Цель выполнения курсового проекта
- 2.3 Технические требования к изделию
- 2.3.1 Состав устройства
- 2.3.2 Назначение устройства
- 2.3.3 Функции прибора
- 2.3.4 Метрологические характеристики
- 2.3.5 Требование к электропитанию
- 3. Разработка структурной схемы
- 3.1 Структурная схема
- 3.2 Принцип действия блоков схемы
- 3.3 Структурная схема
- 4. Разработка схемы электрической принципиальной
- 5. Разработка функционального алгоритма
- 5.1 Блок схема предустановок
- 5.2 Блок схема измерения веса
- 5.3 Блок схема вывода информации о весе в компьютер
- 5.4 Блок схема автоматической калибровки
- 5.5 Блок схема устройства
- 6. Разработка программы работы микропроцессорного блока
- Заключение
- Список используемых источников
Введение
весовой оборудование микропроцессорный блок
Цифровые измерители веса применяются в различных сферах деятельности, где необходимо вести учет грузов. Весы применяют как в сельском хозяйстве, на промышленных предприятиях, таможнях, различных складах, так и в бытовых вопросах.
Для более подробного анализа в своем курсовом проекте я взял за основу автомобильные весы. Так как сегодня они являются наиболее востребованными, а также позволяют проводить самое точное взвешивание в сравнении с простыми механическими.
Электронные весы имеют ряд преимуществ, среди которых, кроме точности взвешивания, следует выделить широкие возможности обработки данных: вывод веса на выносной индикатор и/или передача сигнала в единую автоматизированную сеть с последующей его обработкой.
Автомобильные весы позволяют проводить взвешивание перевозимого груза автотранспортом, не прибегая к его разгрузке. Такие весы могут контролировать как общую, так и осевую нагрузку на дорожное полотно.
Автомобильные весы имеют различные типы конструкций, которые применяются в зависимости от условий их использования. Конструкции бывают следующих видов: пандусные или врезные. Пандусные весы могут быть оснащены платформами различных размеров и могут применяться для взвешивания самых тяжелых грузовиков - 80 - 120 тонн.
Для установки весов на фиксированное место применяются врезные автовесы. Такие весы устанавливаются на уровне поверхности, благодаря чему заезжать, съезжать и маневрировать на таких весах легко и удобно.
Автомобильные платформенные весы могут состоять из нескольких элементов-модулей, а также применяться с использованием платформы на базе армированного бетона.
1. Обзор литературы
1.1 Общее сведения о весовом оборудовании и разновидность конструктивных решений их реализации
Весовое оборудование - это устройство для определения массы тел по действующему на них весу (взвешивания), приближённо считая его равным силе тяжести. Вес тела может быть определён как через сравнение с весом эталонной массы (как в рычажных весах), так и через измерение этой силы через другие физические величины.
В настоящее время существует целое множество разнообразных конструктивных решений весов, но рассмотрим наиболее известные:
- Рычажные весы - груз кладётся на одну чашечку, а эталонные гири на другую. Необходимо добиться равновесия, при этом вес груза будет равен весу гирек. В данном случае точность измерения веса зависит от чувствительности весов и от номинала гирек.
- Пружинные весы - это весы, на которых уравновешивание силы тяжести взвешиваемого тела достигается с помощью пружинного силоизмерителя. Примером могут быть ручные пружинные весы.
- Электронные весы - существует чувствительный элемент, который реагирует на изменение веса, этой реакцией может быть: изменение сопротивления, изменение напряжения, изменение тока, редко изменение потребляемой мощности. В случае изменения сопротивления, необходимо нагрузить этот элемент на источник питания, и последовательно с ним поставить амперметр. Значение тока будет пропорционально значению веса. Если изменяется напряжение, просто можно поставить вольтметр. Точность измерения зависит от чувствительности амперметра (вольтметра). Значение выводится в понятном цифровом виде. Микропроцессорное управление весов позволяет обеспечить большую точность измерения по сравнению с механическим прибором, электронные весы более долговечны, т.к. практически не имеют изнашивающихся деталей.
Характерной особенностью современного электронного весового оборудования является то, что результат измерений мы можем передавать с помощью современных устройств передачи информации (проводные и беспроводные устройство передачи) на современные вычислительные устройства ( ПК, ноутбуки, смартфоны и др.).
1.2 Классификация весового оборудования
В зависимости от области применения весовое оборудование можно классифицировать следующим образом:
По эксплуатационному назначению:
- Вагонные весы;
- Автомобильные весы;
- Крановые весы;
- Товарные весы;
- Элеваторные весы - это бункерные весы общего назначения для взвешивания зерновых продуктов;
- багажные весы;
- медицинские весы и др.
По точности взвешивания:
- весовое оборудование среднего класса точности;
- весовое оборудование обычного класса точности.
По способу установки на месте эксплуатации:
- встроенные весы;
- врезные весы;
- напольные весы;
- настольные весы;
- передвижные весы;
- подвесные весы;
- стационарные весы.
По виду уравновешивающего устройства:
– электромеханические (электронные) весы- весы, в уравновешивающем устройстве которых сила преобразуется в электрический сигнал;
– механические весы.
По виду грузоприемного устройства:
– бункерные весы;
– конвейерные весы;
– крюковые весы;
– платформенные весы и др.
По способу достижения весовым оборудованием положения равновесия:
– с автоматическим уравновешиванием - это весы, на которых положение равновесия достигается автоматически во всем диапазоне взвешивания;
– с полуавтоматическим уравновешиванием - весы, на которых положение равновесия достигается автоматически только в определенном интервале диапазона взвешивания, за пределами которого получение равновесия может быть достигнуто только с участием оператора;
– с неавтоматическим уравновешиванием - весы, на которых положение равновесия может быть достигнуто только с участием оператора.
1.3 Основные параметры весового оборудования
Основными параметрами весового оборудования являются:
– Наибольший предел взвешивания (НПВ) весового оборудования - это верхняя граница предела взвешивания, определяющая наибольшую массу, измеряемую при одноразовом взвешивании.
– Наименьший предел взвешивания (НМПВ) весового оборудования - это нижняя граница предела взвешивания, определяется минимальным грузом, при одноразовом взвешивании которого относительная погрешность взвешивания не должна превышать допустимого значения.
– Цена деления (d) весового оборудования - это разность значений массы, соответствующих двум соседним отметкам шкалы весов с аналоговым отсчетным устройством, или значение массы, соответствующее дискретности отсчета цифровых весов.
– Цена проверочного деления (е) весового оборудования - это условная величина, выраженная в единицах массы, используемая при классификации весов и нормировании требований к ним.
– Число проверочных делений (n) весового оборудования значение равно
– Предельно допустимая погрешность измерений весового оборудования определяется ценой поверочного деления.
1.4 Автомобильные весы и их разновидности
Автомобильные весы - измерительные приборы позволяющие измерять вес пустого и загруженного автомобиля. Разница в массе составляет веc груза. Поэтому ни одно предприятие, продающее товар тоннами не обойдется без автомобильных весов. Основной характеристикой автомобильных весов можно считать их грузоподъемность.
Разновидности автомобильных весов:
1.Для статического взвешивания:
- Платформенные;
Платформенные весы - это оборудование, в задачи которого входит статичное взвешивание грузов, разнообразных как по форме, так и по весу. Замеры проводятся на специальной платформе. Опционально могут иметь выносной дисплей для более удобного считывания информации. Высокий уровень надежности и сравнительная простота в обслуживании делает их использование незаменимым в процессе контроля и учета товаров.
- Колейные;
Колейные весы-это вариант, когда цельные только колеи для постановки и движения автотранспорта
- Бесфундаментные;
Передвижные автовесы ВСА-С легко собираются-разбираются и могут быть установлены на любой твёрдой поверхности - даже в чистом поле.
Отлично подходят для всех отраслей сельского хозяйства, металлобаз, предприятий угольной промышленности и других сфер деятельности.
- Подкладные;
Переносные подкладные автомобильные весы типа RW-10 предназначены для поосного взвешивания автомобильного транспорта. Могут быть использованы для весового контроля нагрузки на ось, коммерческого учета различных материалов, контроля за передвижением транспорта через зоны КПП.
2.Для взвешивания в динамике (в движении)
- взвешивание на низких скоростях (весы устанавливаются вне основного потока движения, устанавливается ограничение скорости)
- взвешивание на высоких скоростях (взвешивание всего потока транспортных средств, следующих по автодороге, без ограничения скорости)
Принцип действия весов основан на преобразовании силы тяжести взвешиваемого груза посредством тензорезисторных датчиков в электрический сигнал, который обрабатывается в электронном показывающем устройстве с целью отображения на цифровом индикаторе массы взвешиваемого груза.
Весы состоят из двух основных узлов: грузоприемного устройства и показывающего устройства, связанных через соединительные кабели.
Грузоприемное устройство состоит из весовой платформы, установленной на тензорезисторных датчиках, закрепленных симметрично. Показывающее устройство индицирует массу взвешиваемого груза.
1.5 Тензодатчики. Основные типы и принцип работы
Тензодатчик - это датчик, который способен преобразовать величину деформации в электрический сигнал. С их помощью можно измерять деформацию, вес, объем и другие физические величины.
В основу работы тензодатчика заложены простые законы механики: при воздействии на конструкцию внешних сил, она меняет свою форму так, чтобы противостоять им. Под воздействием груза, имеющего определенный вес, в тензометрическом датчике возникает деформация, которую он учитывает и преобразует в электрический сигнал, который может быть цифровым или аналоговым. Затем он передается на вторичный прибор, называемый индикатором веса, где и происходит отображение массы груза,подлежащего взвешиванию.
Основные виды тензодатчиков:
– Одноточечные. В этой конструкции датчик единственный и располагают его в центральной части платформы. Они способны измерять малые нагрузки и используются при производстве платформенных весов, дозаторов, оборудования для фасовки;
– Балочные или консольные. Они способны преобразовывать деформацию сдвига в электрические сигналы. Основная сфера их применения - напольные весы, способные выдерживать нагрузку до 7 тонн.
– S-образные. Такие датчики способны преобразовать в электрический сигнал силу растяжения либо сжатия. Они имеют высокую чувствительность и используются в крановых и подвесных бункерных весах;
– Цилиндрические.Они имеют форму, соответствующую названию и используются в автомобильных, вагонных, бункерных и других многотонных весах. Их широко используют при модернизации механических моделей весов, а также при замерах напряженности строительных конструкций;
– Комбинированные. В этом случае высокотемпературный тензодатчик имеет корпус из нержавеющей стали. В маркировке изделия в этом случае присутствует обозначение «НТ». Их можно использовать самых сложных условиях, когда агрессивная среда сочетается с высокими температурами.
2. Анализ технического задания
2.1 Вводные данные
Вводные данные для курсового проекта:
– Источник питания - перезаряжаемая батарея и сетевое питание;
– Нагрузка - от 40т до 100т.;
– Вывод информации - ПК;
– Наличие интерфейсов передачи данных на ПК RS-485;
– Дополнительная счетная функция - Возможность расчёта перегруза.
2.1.1 Наименование курсового проекта
Тема курсового проекта «Цифровой измеритель веса».
2.1.2 Срок выполнение курсового проекта
Защита курсового проекта с: 4.12.2021 по 21.12.2021.
2.2 Цель выполнения курсового проекта
Целью курсового проекта являются:
– Формирование умений краткого изложения материала с использование индивидуального стиля;
– Формирование умений самостоятельной работы с литературой;
– Получение теоретических сведений и практических навыков при работе с микроконтролером.
2.3 Технические требования к изделию
2.3.1 Состав устройства
– В состав разрабатываемого устройства входят следующие компоненты:
– Микроконтроллер;
– Тензодатчик;
– 7-сегментные индикаторы;
– Перезаряжаемая батарея и сетевое питание;
– Модуль передачи данных RS-485.
2.3.2 Назначение устройства
Весы предназначены для автоматизированного статического взвешивания автомобилей массой от 40 до 100 тонн.
2.3.3 Функции прибора.
– выполнения диагностики процедуры, оцифровка и сохранение
– данных в памяти прибора.
– вывод информации на персональный компьютер.
2.3.4 Метрологические характеристики
Нагрузка от 40 до 100 тонн.
2.3.5 Требования к электропитанию
Перезаряжаемая батарея и сетевое питание 220 В.
3. Разработка структурной схемы
3.1 Принцип действия устройства
Рисунок 3.1.1 Схема измерения веса автомобиля
Пронумерованными стрелками показано направление потока информации от датчиков. Общее число датчиков выбрано - 8.
Теоретически для описания (задания) плоскости достаточно всего 3 точки. В данном случае необходимо 4 точки, т.к. возможно, что нагрузка на различные точки будет неравномерной, причем может очень сильно различаться. Весы двух платформенные - поэтому общее число точек контроля (датчиков) в два раза больше - 8 штук.
Так, как нагрузка распределяется между опорными точками, в которых расположены датчики, то каждый датчик преобразует частичный вес автомобиля. Для получения общего веса автомобиля необходимо просуммировать все частичные весы. Это можно сделать как до оцифровки, так и после. Оцифровка необходима для того, чтобы передать информацию (полученный вес) в компьютер. Причем данные в компьютер могут поступать в любой форме.
Предполагается располагать само устройство недалеко от платформ. Дело в том, что полезный сигнал, снимаемый с датчиков очень мал (48...48000 мкВ). Поэтому, для уменьшения уровня помех и уменьшения потерь на соединительных кабелях расстояние должно быть малым. Само устройство подключается к компьютеру через последовательный порт.
3.2 Принцип действия блоков схемы
3.2.1 Первичный преобразователь. Тензорезисторный мост
В роли первичного преобразователя выступает тензорезисторный мост.
Тензодатчики веса и давления - это устройства, которые могут преобразовать механическую деформацию тела в электрический сигнал, который позволяет определить уровень растяжения и сжатия конкретного предмета. Он является резистивным преобразователем и считается одним из главнейших составляющих высокоточного весового оборудования.
Исходя из количества тензодатчиков и максимальной массы взвешиваемого автомобиля выбираем тензодатчики типа ДСТВ - 1, рассчитанные на 16 тонн.
Система с такими тензодатчиками может взвешивать автомобили, массой до. При этом существует запас на 28 тонн. Этот запас необходим, т.к. возможно, что вес не будет равномерно распределен между контрольными точками (датчиками). К тому же в взвешиваемый вес будет включаться и вес платформ.
Здесь учитывается, также то, что при торможении поезда на платформу действует дополнительное усилие. Т.к. данные тензодатчики способны выдерживать дополнительную нагрузку на 50% от номинальной, то
что позволяет выдерживать общую нагрузку
, т.е. почти в 2 раза. (3.2)
Таблица 3.2.1.1
Основные параметры тензодатчиков ДСТВ - 1
Параметр |
Значение |
|
Номинальная нагрузка |
||
Нижний предел измерения |
||
Значение рабочего коэффициента передачи (РКП) при номинальной нагрузке |
||
Значение начального коэффициента передачи (НКП) не более |
||
Категория точности |
||
Входное сопротивление |
||
Выходное сопротивление |
||
Наибольшее допустимое значение напряжения питания постоянного или переменного тока с частотой до 1.5 кГц |
||
Допустимое значение перегрузки, процентов выше номинальной нагрузки, кратковременной и длительной |
||
Предельный диапазон рабочих температур |
||
Га бариты, (мм) |
Рисунок 3.2.1.1 Чертеж тензодатчиков ДСТВ - 1
Здесь 1 - это концентрическая упругая поверхность, чья деформация преобразуется с помощью тензорезисторов в электрический сигнал; 2 - корпус первичного преобразователя, служащий для защиты устройства от попадания внутрь твердых веществ и воды; 3 - трубка, защищающая соединительные провода.
При оказывании давления на концентрическую поверхность (1), она деформируется. На эту поверхность с внутренней стороны нанесены тензорезисторы. Причем тензорезисторы включены по схеме моста (рисунок 3.2.1.2). К тензорезисторам подводится напряжение , при этом, при условии максимальной нагрузки в, на выходе моста будет напряжение, пропорциональное максимальной нагрузке .
Рисунок 3.2.1.2 Тензорезисторный мост
3.2.2 Нормирующий преобразователь. Инструментальный усилитель
Учитывая выходные параметры первичного преобразователя, выбираем усилительный элемент.
Так как полезный сигнал будет поступать с большим синфазным сигналом, приблизительно равным напряжению питания тензорезисторного моста , то необходимо, чтобы усилитель имел очень высокий уровень подавления синфазного сигнала.
Это соответствует
Значит, необходимо выбрать такой усилительный элемент, который обеспечивает ослабление синфазного сигнала минимум в .
Коэффициент усиления должен быть таким, чтобы максимальный уровень полезного сигнала усиливался до опорного напряжения АЦП, что соответствовало бы максимальному коду. Опорное напряжение выбираем стандартное . Тогда
Тогда выбираем инструментальный операционный усилитель фирмы BURR BROWN INA128.
Инструментальный усилитель (он же измерительный) -- разновидность дифференциального усилителя, применяемая для точных измерений разностного сигнала и тестирующего оборудования. Инструментальный усилитель работает так же как и дифференциальный усилитель, но свободен от его недостатков, сохраняя при этом простоту схемы. Инструментальный усилитель широко используются в различных измерительных устройствах из-за нескольких очень полезных свойств, которых другие усилители не имеют. Самым большим плюсом является возможность регулировки усиления при помощи всего одного резистора.
Как и выше упомянуто в инструментальных усилителях коэффициент усиления задается с помощью подключения внешнего сопротивления , значение которого высчитывается для INA128 по следующей формуле
Тогда , выбираем стандартное сопротивление.
Полученный коэффициент усиления будет равен:
Такое значение допускается, т.к. первичный преобразователь выбирался с запасом, т.е. уровень полезного сигнала на выходе тензорезисторного моста не будет достигать своего максимального значения.
Это соответствует нагрузке на все 8 датчиков.
При этом остается запас .
3.2.4 Выбор мультиплексора
Мультиплексор представляет собой комбинированное цифровое устройство, обеспечивающее поочередную передачу на один выход нескольких входных сигналов. Он позволяет передавать (коммутировать) сигнал с желаемого входа на выход, в этом случае выбор требующегося входа реализуется определенной комбинацией управляющих сигналов. Число мультиплексных входов принято называть количеством каналов, их может быть от 2 до 16, а число выходов называют разрядами мультиплексора, обычно это 1 -- 4.
Поэтому для того, чтобы можно было оцифровывать все 8 сигналов одним АЦП необходимо использовать аналоговый мультиплексор. При этом нет требований к его быстродействию, так как взвешивание происходит в статике.
Выбор канала должен осуществляться с помощью трех управляющих выводов, задающих номер канала. Этим будет заниматься микроконтроллер.
Выбираем мультиплексор фирмы BURR BROWN MPC508A.
3.2.5 Выбор микроконтроллера
Микроконтроллер -- микросхема, предназначенная для управления электронными устройствами.
Так как процесс измерения веса происходит в статике, то нет необходимости в очень высоком быстродействии схемы. Поэтому не целесообразно проектировать данное устройство на DSP.
Одним из самых распространенных микроконтроллеров на сегодняшний день является МК семейства MCS-8051, первоначально разработанные фирмой INTEL.
INTEL MCS-8051 предназначен для построения контроллеров и микро-эвм различного назначения, отличающихся низкими аппаратными затратами при сохранении универсальности и быстродействия. Область применения MCS-8051 - от локальных систем автоматики до устройств управления бытовыми приборами.
Основными программно-доступными устройствами MCS-8051 являются:
1) 8-разрядный аккумулято(а);
2) 8-разрядный вспомогательный регистр(в);
3) триггеры признаков результата: C (переноса), AC (вспомогательного переноса), OV (переполнения), P (четности);
4) триггеры выбора банка рабочих регистров RS0 и RS1;
5) триггер программно-управляемого флага F0;
6) 16-разрядный счетчик команд PC;
7) 16-разрядный регистр указателя данных DPTR;
8) 8-разрядный регистр указателя стека SP;
9) внутренняя память программ емкостью 4 кбайт, расширяемая внешними устройствами до 64 кбайт;
10) внутренняя память данных емкостью 128 байт, в которой размещается от одного до четырех банков рабочих регистров R0-R7, область стека и побитово адресуемая область памяти;
11) внешняя память данных емкостью до 64 кбайт;
12) два программируемых 16-разрядных таймера-счетчика;
13) программируемый двухнаправленный последовательный порт ввода-вывода и соответствующие устройства управления;
14) четыре 8-разрядных двухнаправленных параллельных порта ввода-вывода;
15) двухуровневая приоритетная система прерываний.
Предлагается использовать микроконтроллер MCS-8051 следующим образом:
Порт Р0 и Р2 будут работать с данными, поступающими с АЦП.Порт Р1 будет настраивать мультиплексор и АЦП. Калибровка системы будет производиться по сигналу с компьютера. Калибровка, также, будет осуществляться по прерыванию INT0. С помощью RxD и TxD будет осуществляться связь с компьютером.
Рисунок 3.2.5.1 Внутренняя структура микроконтроллера INTEL MCS-8051
3.2.6 Передача информации через последовательный порт. Интерфейс RS-485
Далее, нам необходимо передать данные от микроконтроллера к ПК. Согласно ТЗ, для этого необходимо использовать интерфейс RS-485.
Интерфейс RS-485 (другое название - EIA/TIA-485) - один из наиболее распространенных стандартов физического уровня связи. Физический уровень - это канал связи и способ передачи сигнала (1 уровень модели взаимосвязи открытых систем OSI).
Сеть, построенная на интерфейсе RS-485, представляет собой приемопередатчики, соединенные при помощи витой пары - двух скрученных проводов. В основе интерфейса RS-485 лежит принцип дифференциальной (балансной) передачи данных. Суть его заключается в передаче одного сигнала по двум проводам. Причем по одному проводу (условно A) идет оригинальный сигнал, а по-другому (условно B) - его инверсная копия. Другими словами, если на одном проводе "1", то на другом "0" и наоборот. Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при "1" она положительна, при "0" - отрицательна.
Рисунок 3.2.6.1 Принцип дифференциальной передачи данных
Именно этой разностью потенциалов и передается сигнал. Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе. Синфазной называют помеху, действующую на оба провода линии одинаково. К примеру, электромагнитная волна, проходя через участок линии связи, наводит в обоих проводах потенциал. Если сигнал передается потенциалом в одном проводе относительно общего, как в RS-232, то наводка на этот провод может исказить сигнал относительно хорошо поглощающего наводки общего ("земли"). Кроме того, на сопротивлении длинного общего провода будет падать разность потенциалов земель - дополнительный источник искажений. А при дифференциальной передаче искажения не происходит. Потенциал в обоих одинаково нагруженных проводах изменяется одинаково, при этом информативная разность потенциалов остается без изменений.
Аппаратная реализация интерфейса - микросхемы приемопередатчиков с дифференциальными входами/выходами (к линии) и цифровыми портами (к портам UART контроллера).
D (driver) - передатчик; R (receiver) - приемник; DI (driver input) - цифровой вход передатчика; RO (receiver output) - цифровой выход приемника; DE (driver enable) - разрешение работы передатчика; RE (receiver enable) - разрешение работы приемника; A - прямой дифференциальный вход/выход; B - инверсный дифференциальный вход/выход; Y - прямой дифференциальный выход (RS-422); Z - инверсный дифференциальный выход (RS-422).
Рисунок 3.2.6.2 Внутренняя структура RS-485
Остановлюсь поподробнее на приемопередатчике RS-485. Цифровой выход приемника (RO) подключается к порту приемника UART (RX). Цифровой вход передатчика (DI) к порту передатчика UART (TX). Поскольку на дифференциальной стороне приемник и передатчик соединены, то во время приема нужно отключать передатчик, а во время передачи - приемник. Для этого служат управляющие входы - разрешение приемника (RE) и разрешения передатчика (DE). Так как вход RE инверсный, то его можно соединить с DE и переключать приемник и передатчик одним сигналом с любого порта контроллера. При уровне "0" - работа на прием, при "1" - на передачу.
Рисунок 3.2.6.3 Принцип соединения микроконтроллера и RS-485
Приемник, получая на дифференциальных входах (AB) разность потенциалов (UAB) переводит их в цифровой сигнал на выходе RO.
Чувствительность приемника может быть разной, но гарантированный пороговый диапазон распознавания сигнала производители микросхем приемопередатчиков пишут в документации. Обычно эти пороги составляют ± 200 мВ. То есть, когда UAB > +200 мВ - приемник определяет "1", когда UAB < -200 мВ - приемник определяет "0". Если разность потенциалов в линии настолько мала, что не выходит за пороговые значения - правильное распознавание сигнала не гарантируется. Кроме того, в линии могут быть и не синфазные помехи, которые исказят столь слабый сигнал.
Все устройства подключаются к одной витой паре одинаково: прямые выходы (A) к одному проводу, инверсные (B) - к другому.
Входное сопротивление приемника со стороны линии (RAB) обычно составляет 12 КОм. Так как мощность передатчика не беспредельна, это создает ограничение на количество приемников, подключенных к линии. Согласно спецификации RS-485 c учетом согласующих резисторов передатчик может вести до 32 приемников. Однако есть ряд микросхем с повышенным входным сопротивлением, что позволяет подключить к линии значительно больше 32 устройств.
3.3 Структурная схема
Система, разработанная в рамках данной работы, состоит из одного ведущего и одного ведомого. В качестве ведущего выступает персональный компьютер (ПК), ведомый - микроконтроллер (МК). Так как данная система рассчитана на применение интерфейса RS485, необходимо применение специальных драйверов, как со стороны ПК, так и со стороны МК. Драйвер RS-485 рассчитан на работу с ТТЛ уровнями сигналов, следовательно, для подключения драйвера к COM порту ПК необходимо преобразовать уровни напряжений сигналов. При подключении драйвера к МК необходимость в преобразователе уровней отпадает, так как микроконтроллер работает с ТТЛ-совместимыми уровнями сигналов. Микроконтроллер осуществляет настройки и опрос АЦП, который подключен непосредственно к МК. Структурная схема описанной выше системы изображена на рисунке 3.3.1. Питание для удалённой части схемы (драйвер RS-485, МК, DS1620) подаётся с внешнего блока питания. Для питания преобразователя уровней и драйвера RS-485 можно использовать ПК
Рисунок 3.3.1 Структурная схема
4. Разработка схемы электрической принципиальной
Рисунок 4.1 Схема электрическая принципиальная
5. Разработка функционального алгоритма
Программа для микроконтроллера состоит из трех основных блоков:
Предварительная установка. Запускается по RESET или при включении питания микроконтроллера;
Измерение веса (считывания кодов с АЦП, обрабатывающего последовательно 8 аналоговых каналов). Запускается по сигналу INT0, соответствующему сигналу готовности данных на выходе микросхемы аналого-цифрового преобразователя;
Вывод информации на компьютер. Запускается по вызову из подпрограмм измерения веса или обработки последовательного порта (по получению управляющего сигнала с компьютера);
Калибровка. Считывание кодов с АЦП, обрабатывающего последовательно 8 аналоговых каналов. Причем полученный код считается соответствующим нулевому весу. Данные значения будут вычитаться в последствии из кода, полученного при измерении веса автомобиля. Запускается по сигналу INT1, соответствующему сигналу готовности данных на выходе микросхемы аналого-цифрового преобразователя.
5.1 Блок-схема предустановок
Рисунок 5.1.1 блок-схема предустановок
5.2 Блок-схема измерения веса
Рисунок 5.2.1 Блок-схема измерения веса
5.3 Блок-схема вывода информации о весе в компьютер
Рисунок 5.3.1 Блок-схема вывода информации о весе на компьютер
Примечание: здесь DWORD - начальный адрес двух ячеек памяти, в которых содержится младший и старший байты кода, соответствующего измеренному весу для канала (в данном случае - для первого).
5.4 Блок-схема автоматической калибровки
Рисунок 5.4.1 Блок-схема автоматической калибровки
Необходимо отметить, что подпрограмма калибровки запускается только по управляющему сигналу от компьютера. Дело в том, что если организовать запуск по включению, может оказаться, что на весах уже стоит автомобиль. При этом, на выходе устройства будет выдаваться код, соответствующий нулевому весу. Т.к. мы имеем дело с тяжелыми автомобилями, может оказаться накладным откатывать автомобиль только для калибровки.
Калибровка должна производиться при отсутствии грузов (автомобиля и т.п.) на измерительной площадке.
5.5 Блок-схема устройства
Размещено на http://www.allbest.ru/
Рисунок 5.5.1 Блок-схема устройства
На рисунке 5.5.1 изображена блок схема, поясняющая принцип работы схемы. Группа первичных преобразователей производит преобразование веса в соответствующие уровни напряжения. Далее нормирующие преобразователи формируют уровни напряжения Unorm для каждого канала в заданном диапазоне для того, чтобы напряжение было "удобным" для дальнейших с ним действий. Этот процесс происходит непрерывно и независимо от всех остальных.
В то же время происходит цифро-аналоговое преобразование выбранного канала. Причем используется один АЦП, поэтому сигналы мультиплексируются. Мультиплексор управляется микроконтроллером. Полученный код веса записывается в микроконтроллер. Затем, МК меняет адрес канала и процесс преобразования повторяется для нового канала. После того, как будут опрошены все каналы и будут записаны полученные коды, характеризующие частичный вес, происходит суммирование частичного веса. Эта сумма характеризует полный вес автомобиля.
Затем, данные с устройства передаются в последовательном коде в компьютер. Для этого используется драйвер последовательного порта RS-248. Программа-терминал на компьютере, при необходимости, считывает данные из буфера последовательного порта и высвечивает массу автомобиля на мониторе.
6. Разработка программы работы микропроцессорного блока
#include <stm32f4xx.h> // подключение библиотек
#include <stm32f4xx_gpio.h>
#include <stm32f4xx_rcc.h>
#include <system_stm32f4xx.h>
#include <stm32f4xx_adc.h>
#include <stm32f4xx_tim.h>
#include <stm32f4xx_usart.h>
#include <misc.h>
void ADC_ini(void) //создаём указатель ALC_ini ; (void) означает что основная функция не имеет параметров
{
GPIO_InitTypeDef GPIO_Init_LED;
ADC_InitTypeDef ADC_Init_user;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_Init_LED.GPIO_Pin = GPIO_Pin_6;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_AN;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_Init_LED);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
ADC_Init_user.ADC_Resolution = ADC_Resolution_12b;
ADC_Init_user.ADC_ScanConvMode = DISABLE;
ADC_Init_user.ADC_ContinuousConvMode = DISABLE;
ADC_Init_user.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_Init_user.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_Init_user.ADC_DataAlign = ADC_DataAlign_Right;
ADC_Init_user.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_Init_user);
ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_56Cycles);
NVIC_EnableIRQ(ADC_IRQn);
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
ADC_Cmd(ADC1, ENABLE);
}
#ifndef LEDINDICATOR_H //Если имя макроса не определено ранее в операторе #define, то последовательность операторов, стоящих между #ifdef и #endif, будет компилироваться.
#define LEDINDICATOR_H
#define INDICATORS_TYPE 'A'
#define LED0_RCC_FUNC RCC_AHB1PeriphClockCmd // заменяем (RCC_AHB1PeriphClockCmd ) эту последовательноть символов при компиляции на макрос (LED0_RCC_FUNC), тем же самым мы занимаемся дальше
#define LED0_RCC RCC_AHB1Periph_GPIOE
#define LED0_PIN GPIO_Pin_7
#define LED0_PORT GPIOE
#define LED1_RCC_FUNC RCC_AHB1PeriphClockCmd
#define LED1_RCC RCC_AHB1Periph_GPIOE
#define LED1_PIN GPIO_Pin_8
#define LED1_PORT GPIOE
#define LED2_RCC_FUNC RCC_AHB1PeriphClockCmd
#define LED2_RCC RCC_AHB1Periph_GPIOE
#define LED2_PIN GPIO_Pin_9
#define LED2_PORT GPIOE
#define LED3_RCC_FUNC RCC_AHB1PeriphClockCmd
#define LED3_RCC RCC_AHB1Periph_GPIOE
#define LED3_PIN GPIO_Pin_10
#define LED3_PORT GPIOE
#define LED4_RCC_FUNC RCC_AHB1PeriphClockCmd
#define LED4_RCC RCC_AHB1Periph_GPIOE
#define LED4_PIN GPIO_Pin_11
#define LED4_PORT GPIOE
#define LED5_RCC_FUNC RCC_AHB1PeriphClockCmd
#define LED5_RCC RCC_AHB1Periph_GPIOE
#define LED5_PIN GPIO_Pin_12
#define LED5_PORT GPIOE
#define LED6_RCC_FUNC RCC_AHB1PeriphClockCmd
#define LED6_RCC RCC_AHB1Periph_GPIOE
#define LED6_PIN GPIO_Pin_13
#define LED6_PORT GPIOE
#define IND0_RCC_FUNC RCC_AHB1PeriphClockCmd
#define IND0_RCC RCC_AHB1Periph_GPIOE
#define IND0_PIN GPIO_Pin_3
#define IND0_PORT GPIOE
#define IND1_RCC_FUNC RCC_AHB1PeriphClockCmd
#define IND1_RCC RCC_AHB1Periph_GPIOE
#define IND1_PIN GPIO_Pin_4
#define IND1_PORT GPIOE
#define IND2_RCC_FUNC RCC_AHB1PeriphClockCmd
#define IND2_RCC RCC_AHB1Periph_GPIOE
#define IND2_PIN GPIO_Pin_5
#define IND2_PORT GPIOE
#define IND3_RCC_FUNC RCC_AHB1PeriphClockCmd
#define IND3_RCC RCC_AHB1Periph_GPIOE
#define IND3_PIN GPIO_Pin_6
#define IND3_PORT GPIOE
#define IND0_HIGH GPIO_SetBits(IND0_PORT, IND0_PIN) // тут происходит тоже самое только макрос имеет уже параметры(IND0_PORT, IND0_PIN)
#define IND0_LOW GPIO_ResetBits(IND0_PORT, IND0_PIN)
#define IND1_HIGH GPIO_SetBits(IND1_PORT, IND1_PIN)
#define IND1_LOW GPIO_ResetBits(IND1_PORT, IND1_PIN)
#define IND2_HIGH GPIO_SetBits(IND2_PORT, IND1_PIN)
#define IND2_LOW GPIO_ResetBits(IND2_PORT, IND1_PIN)
#define IND3_HIGH GPIO_SetBits(IND3_PORT, IND1_PIN)
#define IND3_LOW GPIO_ResetBits(IND3_PORT, IND1_PIN)
#define LED0_HIGH GPIO_SetBits(LED0_PORT, LED0_PIN)
#define LED0_LOW GPIO_ResetBits(LED0_PORT, LED0_PIN)
#define LED1_HIGH GPIO_SetBits(LED1_PORT, LED1_PIN)
#define LED1_LOW GPIO_ResetBits(LED1_PORT, LED1_PIN)
#define LED2_HIGH GPIO_SetBits(LED2_PORT, LED2_PIN)
#define LED2_LOW GPIO_ResetBits(LED2_PORT, LED2_PIN)
#define LED3_HIGH GPIO_SetBits(LED3_PORT, LED3_PIN)
#define LED3_LOW GPIO_ResetBits(LED3_PORT, LED3_PIN)
#define LED4_HIGH GPIO_SetBits(LED4_PORT, LED4_PIN)
#define LED4_LOW GPIO_ResetBits(LED4_PORT, LED4_PIN)
#define LED5_HIGH GPIO_SetBits(LED5_PORT, LED5_PIN)
#define LED5_LOW GPIO_ResetBits(LED5_PORT, LED5_PIN)
#define LED6_HIGH GPIO_SetBits(LED6_PORT, LED6_PIN)
#define LED6_LOW GPIO_ResetBits(LED6_PORT, LED6_PIN)
char IndData[3]={0}; // Переменной присваевается целочисленный тип данных
char IndCount=0;
void Indikator_ini(void) // Создаем индикатор(Inditor_ini) который не имеет параметров
{
GPIO_InitTypeDef GPIO_Init_LED; // Указываем содержимое переменной Inditor_ini
LED0_RCC_FUNC(LED0_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = LED0_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LED0_PORT, &GPIO_Init_LED);
LED1_RCC_FUNC(LED1_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = LED1_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LED1_PORT, &GPIO_Init_LED);
LED2_RCC_FUNC(LED2_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = LED2_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LED2_PORT, &GPIO_Init_LED);
LED3_RCC_FUNC(LED3_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = LED3_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LED3_PORT, &GPIO_Init_LED);
LED4_RCC_FUNC(LED4_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = LED4_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LED4_PORT, &GPIO_Init_LED);
LED5_RCC_FUNC(LED5_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = LED5_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LED5_PORT, &GPIO_Init_LED);
LED6_RCC_FUNC(LED6_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = LED6_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LED6_PORT, &GPIO_Init_LED);
IND0_RCC_FUNC(IND0_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = IND0_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(IND0_PORT, &GPIO_Init_LED);
IND1_RCC_FUNC(IND1_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = IND1_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(IND1_PORT, &GPIO_Init_LED);
IND2_RCC_FUNC(IND2_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = IND2_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(IND2_PORT, &GPIO_Init_LED);
IND3_RCC_FUNC(IND3_RCC, ENABLE);
GPIO_Init_LED.GPIO_Pin = IND3_PIN;
GPIO_Init_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init_LED.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init_LED.GPIO_OType = GPIO_OType_PP;
GPIO_Init_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(IND3_PORT, &GPIO_Init_LED);
}
void USART_ini(void) // Создаем индикатор(USART_ini) который не имеет параметров
{
GPIO_InitTypeDef GPIO_Init_USART;
USART_InitTypeDef USART_InitUser;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_Init_USART.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;
GPIO_Init_USART.GPIO_Mode =
GPIO_Mode_AF;
GPIO_Init_USART.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init_USART.GPIO_OType = GPIO_OType_PP;
GPIO_Init_USART.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_Init_USART);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
USART_InitUser.USART_BaudRate=9600;
USART_InitUser.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitUser.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_InitUser.USART_Parity=USART_Parity_No;
USART_InitUser.USART_StopBits=USART_StopBits_1;
USART_InitUser.USART_WordLength=USART_WordLength_8b;
USART_Init(USART2, &USART_InitUser);
NVIC_EnableIRQ(USART2_IRQn);
USART_ITConfig(USART2, USART_IT_TXE, ENABLE);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
USART_Cmd(USART2, ENABLE);
}
void delay_ms (volatile uint32_t tick) // Создаем delay с параметрами
{
for (uint32_t i=0; i<tick;i++); //Цикл
}
uint16_t data_adc;
uint16_t data_m;
char16_t tisyachi, sotni, desyatki, edenici;
uint8_t Recieve_buf[256];
void ADC_IRQHandler(void)
{
if (ADC_GetITStatus(ADC1, ADC_IT_EOC) == SET)
{
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
data_adc = ADC_GetConversionValue(ADC1);
data_m=(2800* data_adc)/5000;
float data_mm= Unit16ToFloat(data_m,ffFixed,4,0);
tisyachi=FloatToChar((data_mm/1000),ffFixed,1,0);
sotni = FloatToChar((data_mm- tisyachi*1000)/100),ffFixed,1,0);
desyatki = FloatToChar((data_mm- (tisyachi*1000+ sotni*100))/10),ffFixed,1,0);
edenici = desyatki = FloatToChar((data_m- (tisyachi*1000+ sotni*100+ desyatki*10))),ffFixed,1,0);
void SelInd(0);
void SetNum(char tisyachi);
void SelInd(1);
void SetNum(char sotni);
void SelInd(2);
void SetNum(char desyatki);
void SelInd(3);
void SetNum(char edenici);
}
}
void SetNum(char Num)
{
#if INDICATORS_TYPE == 'A'
if (Num == '0')
{
LED0_HIGH;
LED1_LOW;
LED2_HIGH;
LED3_HIGH;
LED4_LOW;
LED5_HIGH;
LED6_HIGH;
LED7_HIGH;
} else if (Num == '1') {
LED0_LOW;
LED1_LOW;
LED2_LOW;
LED3_HIGH;
LED4_LOW;
LED5_LOW;
LED6_LOW;
LED7_HIGH;
} else if (Num == '2'){
LED0_LOW;
LED1_HIGH;
LED2_HIGH;
LED3_HIGH;
LED4_LOW;
LED5_HIGH;
LED6_HIGH;
LED7_LOW;
} else if (Num == '3') {
LED0_LOW;
LED1_HIGH;
LED2_HIGH;
LED3_HIGH;
LED4_LOW;
LED5_LOW;
LED6_HIGH;
LED7_HIGH;
} else if (Num == '4'){
LED0_HIGH;
LED1_HIGH;
LED2_LOW;
LED3_HIGH;
LED4_LOW;
LED5_LOW;
LED6_LOW;
LED7_HIGH;
} else if (Num == '5'){
LED0_HIGH;
LED1_HIGH;
LED2_HIGH;
LED3_LOW;
LED4_LOW;
LED5_LOW;
LED6_HIGH;
LED7_HIGH;
} else if (Num == '6'){
LED0_HIGH;
LED1_HIGH;
LED2_HIGH;
LED3_LOW;
LED4_LOW;
LED5_HIGH;
LED6_HIGH;
LED7_HIGH;
} else if (Num == '7'){
LED0_LOW;
LED1_LOW;
LED2_HIGH;
LED3_HIGH;
LED4_LOW;
LED5_LOW;
LED6_LOW;
LED7_HIGH;
} else if (Num == '8'){
LED0_HIGH;
LED1_HIGH;
LED2_HIGH;
LED3_HIGH;
LED4_LOW;
LED5_HIGH;
LED6_HIGH;
LED7_HIGH;
} else if (Num == '9'){
LED0_HIGH;
LED1_HIGH;
LED2_HIGH;
LED3_HIGH;
LED4_LOW;
LED5_LOW;
LED6_HIGH;
LED7_HIGH;
}
}
void SelInd(uint8_t num)
{
if (num == 0)
{
IND0_LOW;
IND1_HIGH;
} else if (num == 1) {
IND0_HIGH;
IND1_LOW;
} else if (num == 2) {
IND0_HIGH;
IND1_LOW;
} else if (num == 3) {
IND0_HIGH;
IND1_LOW;
}
}
void USART2_IRQHandler(void)
{
if (USART_GetITStatus(USART2, USART_IT_TXE) == SET)
{
USART_ClearITPendingBit(USART2, USART_IT_TXE);
if (Recieve_buf!= 0)
{
USART_SendData(USART2, tisyachi);
USART_SendData(USART2, sotni);
USART_SendData(USART2, desyatki);
USART_SendData(USART2, edinici);
}
}
if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
Recieve_buf = USART_ReceiveData(USART2);
}
}
int main(void) // Вызываем все параметры,чтобы программа работала
{
ADC_ini();
Indicator_ini();
USART_ini(void);
while(1)
{
delay_ms(1000);
ADC_SoftwareStartConv(ADC1);
}
}
Заключение
В процессе выполнения курсовой работы был произведен анализ существующих технических решений автомобильных весов для статического взвешивания.
Была разработана оптимально технологическая и экономически выгодная электрическая, структурная и принципиальная схема автомобильных весов для статического взвешивания.
Разработанные автомобильные весы для статического взвешивания удовлетворяет требованиям технического задания.
Список используемых источников
Интернет ресурсы:
1. https://asvik.kiev.ua/
2. https://sitmag.ru/
3. http://www.vesserviceplus.com/
4. http://www.raznoves.ru/
5. http://ecology-of.ru/
6. http://narodstream.ru/
7. https://wiredlogic.io/
8. http://infogeo.ru/
9. http://kilogramus.ru/
10. https://www.vostok.dp.ua/
11. http://www.how.net.ua/
Размещено на Allbest.ru
Подобные документы
Понятие алгоритма, его назначение, представление (изобразительные средства для описания), типы, способы записи, схемы. Основные принципы разработки алгоритмов и программ. Характеристика языков программирования. Средства и правила построения блок-схем.
реферат [87,9 K], добавлен 26.03.2010Сравнительный анализ существующих приборов. Разработка функциональной схемы устройства. Выбор и статистический расчет элементов, входящих в систему: датчика, источник тока, усилителя, микроконтроллера, блок питания. Блок-схема управляющей программы.
курсовая работа [769,9 K], добавлен 12.01.2015Описание работы элементов программы в виде блок-схем. Анализ структурной схемы модели домофона. Блок-схема работы открытия двери ключом. Моделирование в Proteus: принцип динамического опроса и индикации, внешний вид жидкокристаллического дисплея.
курсовая работа [1,4 M], добавлен 12.04.2019Общая характеристика и принцип работы электронных весов. Порядок преобразования аналогового сигнала веса в цифровую форму с участием микропроцессора. Составление блок-схемы алгоритма работы электронных весов. Описание интерфейсов ввода и вывода.
курсовая работа [784,9 K], добавлен 28.06.2011Описание алгоритма работы и разработка структурной схемы МКС. Схема вывода аналогового управляющего сигнала, подключения ЖК-дисплея, клавиатуры и аварийного датчика. Разработка блок-схемы алгоритма главной программы работы МКС. Функция инициализации.
курсовая работа [5,7 M], добавлен 26.06.2016Построение базовой линейной структуры и организация ввода с формы переменной. Определение значения функции и построение блок-схемы базовой структуры "ветвление". Использование цикла со счетчиком. Рассмотрение особенностей работы с одномерными массивами.
контрольная работа [1,4 M], добавлен 10.12.2021Алгоритм реализации арифметической операции и разработка блок-схемы устройства. Составление и минимизация логических выражений работы блоков. Логическая схема регистра, сумматора, сдвига и мультиплексора. Анализ и синхронизация работы устройства.
курсовая работа [1,2 M], добавлен 27.02.2014Разработка алгоритма работы. Выбор и обоснование структурной схемы. Разработка функциональной схемы блока ввода и блока вывода. Проектирование принципиальной схемы блока ввода и блока вывода, расчет элементов. Разработка программного обеспечения.
курсовая работа [1,7 M], добавлен 25.12.2011Составление блок-схемы алгоритма решения задачи, погрешности вычисления суммы членов числового ряда. Разработка программ на языке на Visual Basic, работа с массивами. Особенности работы со строковыми данными. Варианты реализации формы приложения.
контрольная работа [220,4 K], добавлен 18.06.2010Основные аналитические соотношения. Блок схемы и алгоритм решения задачи. Проверка работоспособности алгоритма вручную. Таблица идентификации переменных. Формы входной и выходной печати. Разработка и отладка программы. Инструкция для работы с программой.
курсовая работа [69,8 K], добавлен 13.02.2012