Цифровой измеритель веса

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.