Весы – прибор для определения массы тел по действующему на них весу. Различают весы: образцовые (для поверки гирь), лабораторные (аналитические, микроаналитические, пробирные и др.) и общего назначения; по принципу действия - рычажные, пружинные, электротензометрические (см. Тензометр), гидравлические и гидростатические. Вес тела– это сила, действующая на опору или подвес со стороны тела. Т.е, если встать на весы в момент старта лифта вверх, показания будут больше, чем в состоянии покоя, а если в момент старта вниз – меньше. Это происходит за счёт того, что помимо ускорения свободного падения действует ещё и другое ускорение, направленное либо в ту же, либо а противоположную сторону.
Рассмотрим весы общего назначения. Существует целое множество разнообразных конструкций весов, среди которых:
Весы с чашечками – груз кладётся на одну чашечку, а эталонные гири на другую. Необходимо добиться равновесия, при этом вес груза будет равен весу гирек. Это неудобно, т.к. добиться равновесия довольно трудно. В данном случае точность измерения веса зависит от чувствительности весов и от номинала гирек.
Весы со стрелкой – груз, весом до одного килограмма взвешивается без дополнительных гирек, а свыше требует установки противовеса, в этом случае вес груза вычисляется как сумма веса гирек и показаний стрелки. Точность измерения зависит от чувствительности стрелки (на какое расстояние она смещается при каком весе).
Электрические весы – Существует чувствительный элемент, который реагирует на изменение веса, этой реакцией может быть: изменение сопротивления, изменение напряжения, изменение тока, редко изменение потребляемой мощности. В случае изменения сопротивления, необходимо нагрузить этот элемент на источник питания, и последовательно с ним поставить амперметр. Значение тока будет пропорционально значению веса. Если изменяется напряжение, просто можно поставить вольтметр. Точность измерения зависит от чувствительности амперметра (вольтметра).
Электронные весы – наиболее удобный в эксплуатации прибор. Необходимо только положить груз на весы, а дальше они сделают всё сами. При просмотре значения веса на электронных весах нет неоднозначности, как в случае со стрелкой (никогда нельзя однозначно сказать, на какое значение она указывает), значение выводится в понятном цифровом виде.
Микропроцессорное управление весов позволяет обеспечить большую точность измерения по сравнению с механическим прибором, электронные весы более долговечны, т.к. практически не имеют изнашивающихся деталей.
Немаловажным является тот фактор, что точность измерения во многих весах зависит от положения объекта на них (чем дальше от центра, тем меньше точность), это происходит за счёт того, что в них датчик веса или один и стоит посередине, или четыре и стоят по углам. В случае четырех датчиков микроконтроллер вычисляет среднее арифметическое от их показаний, это и есть результат.
В данной работе эта проблема решена следующим образом: измеряется не вес, а давление, оказываемое объектом на подушку с водой, посредством пластины, к подушке подсоединен датчик, измеряющий давление воды. Всё это обеспечивает независимость показаний от позиции объекта на весах.
1. Обзор существующих решений
1.1 Тензодатчики и весы на Arduino и НХ711
Работа датчика веса основана на изменении какого-либо физического параметра, пропорционально весу измеряемого предмета. Параметр зависит от того, какой элемент используется в датчике. Так при изменении нагрузки на пьезокерамическую пластину меняется напряжение, снимаемое с электродов на концах пьезодатчика. При использовании ёмкостного датчика меняется ёмкость переменного конденсатора. В данной конструкции используется датчик веса, выполненный на упругом резисторе и при изменении веса, меняется его сопротивление, а, следовательно, и напряжение, снимаемое с мостовой схемы.
Датчик представляет собой прямоугольный брусок из алюминиевого сплава, с отверстием в центре. На его боковые поверхности нанесены тонкоплёночные резисторы, соединённые по мостовой схеме, поэтому резистивный датчик имеет 4 гибких вывода. Все элементы датчика залиты эпоксидным компаундом. На бруске предусмотрены резьбовые отверстия для крепления его к основанию и для установки пластины под измеряемый груз. На торцевой стороне датчика нанесена маркировка, указывающая максимальный вес измеряемого груза. Для того чтобы резисторы изменяли своё сопротивление, тензометрический датчик должен одним концом фиксироваться на основании, а на другой его конец должен действовать груз так, чтобы возникла деформация бруска и, соответственно, плёночных резисторов. Для того чтобы преобразовать аналоговый сигнал с выхода тензорного датчика в двоичный код, применяется аналого-цифровой преобразователь (АЦП) НХ711.
Интегральная микросхема НХ711 представляет собой аналого-цифровой преобразователь с частотой дискретизации 24 бит и встроенным малошумящим операционным усилителем. Мультиплексор позволяет выбирать один из двух имеющихся входных каналов. Канал А имеет программируемый выбор коэффициента усиления, который может быть 64 или 128. Канал В работает с предустановленным коэффициентом, равным 32.
В состав микросхемы входит интегральный стабилизатор напряжения, что исключает необходимость применения внешнего стабилизатора. На вход синхронизации может быть подан любой импульсный сигнал от внешнего источника, вместе с тем АЦП допускает работу от встроенного генератора.
Основные технические характеристики НХ711:
· Разрядность АЦП – 24 бит
· Усиление по входу А – 64 или 128
· Усиление по входу В – 32
· Частота измерений – 10 или 80 раз в секунду
· Питающее напряжение – 2,6-5,5 В
· Потребляемый ток – менее 10 мА
· Входное напряжение – ± 40 мВ
На плате с АЦП имеются два разъёма – J1 и JP2, на которых имеются следующие обозначения:
· J1
o E –, E + питание тензорного моста
o A –, A + дифференциальный вход канала А
o В –, В + дифференциальный вход канала В
· JP2
o GND, VCC питание
o DT, SCK — информационные шины.
Поскольку резисторы тензорного датчика включены по мостовой схеме, от устройства отходят 4 проводника, имеющих разную цветовую маркировку. На два плеча моста подаётся опорное напряжение, а с двух других плеч снимается выходное напряжение, которое подаётся на вход операционного усилителя микросхемы НХ711. Подключение по цветам проводов осуществляется следующим образом:
· Красный – Е +
· Чёрный – Е –
· Белый – А –
· Зелёный – А +
Для дальнейшей обработки и передачи информации осуществляется подключение НХ711 к Ардуино UNO. Для этого контакты питания GND и VCC HX711 подключаются к точкам GND и 5V разъёма POWER модуля Arduino UNO, а контакты DT и SCK подключаются к точкам A1 и A0 разъёма ANALOG IN. Тензодатчик НХ711 через контроллер Arduino UNO можно подключить к жидкокристаллическому дисплею LCD 1602 или компьютеру, используя USB порт и стандартные библиотеки для Ардуино.
Поскольку на выходе измерительного моста изменяется напряжение, то именно оно преобразуется в бинарный код. Диапазон контролируемых напряжений зависит от выбранного коэффициента усиления. Если коэффициент равен 128, диапазон измеряемых напряжений варьируется от – 20 mV до + 20 mV, выбор коэффициента усиления 64 определяет пределы измерения от – 40 mV до + 40 mV и при коэффициенте равном 32 пределы измерения определяются величинами – 80 mV и + 80 mV. Эти данные будут корректными только при напряжении питания +5 V. Если входное напряжение выйдет за нижнюю границу диапазона, АЦП выдаст код 800000h, а если за верхнюю, то код будет 7FFFFFh.
Недостатки и преимущества: Недостатков в принципе нет, Работа происходит. Преимущество моей схемы в том, что ее можно собрать самому и это будет стоит намного дешевле.
1.2
1.1 Электронные весы на базе HX711
На базе этой микросхемы в поднебесной делается несколько видов модулей: копеечные модули без экрана и чуть дороже с экранированием элементов. Модуль с экранированием теоретически должен давать более стабильный результат измерений.
Основные параметры микросхемы АЦП HX711:
· Два входных канала для измерения
· Регулируемый коэффициент усиления 32, 64, 128
· Простой цифровой интерфейс, не требующий программирования (так гласит даташит, хотя по большому счету программирование параметров присутствует)
· Регулируемое количество выборок 10 или 80
· Разрядность АЦП 24 бита
· Фильтр на 50 и 60 Гц питания
· Потребление тока до 1,5 мА
· Напряжение питания от 2,7 до 5,5 вольт
· Диапазон рабочих температур от минус 40 до плюс 85 градусов Цельсия
· Знаковые выходные данные от 800000h до 7FFFFFh
Для подключения к микроконтроллеру используется простой цифровой интерфейс, схожий с I2C, но имеющий с ним мало общего, поэтому придется управлять выводами интерфейса выводами микроконтроллера (в простонародии ногодрыг), так как аппаратного интерфейса ни на одном микроконтроллере нет – это некоторая импровизация для упрощения работы микросхемой, хотя на самом деле, уходя от стандартов, это все только усложняет. Пример использования этого интерфейса присутствует в даташите, поэтому все можно делать просто по примеру и аналогии.
После того, как получим данные от АЦП необходимо учесть два нюанса. Первое, значение представляет собой чистые данные АЦП, то есть количество отсчетов относительно приложенного веса. Что бы не забивать себе голову пересчетами количества отсчетов в значение веса или массы, вспоминаем, что все зависимости у нас линейные, а значит пропорциональные, поэтому нам нужен всего один общий коэффициент для этого пересчета. Для моего экземпляра коэффициент равен 430 при пересчете в единицы грамм. Как это узнать? Есть два способа – строгий математический, с поиском различных справочных данных по материалу из которого изготовлен датчик, поиска параметров тензорезисторов для выведения зависимости модуля упругости материала в данной геометрической конфигурации к сопротивлению тензорезисторов при упругой деформации датчика. Второй способ не самый точный, но крайне быстрый и простой. Необходимо просто замерить сколько отсчетов АЦП приходится на единицу приложенной массы. Для этого необходимо учесть второй нюанс – сама конструкция имеет некоторый вес и перед измерениями его нужно просто убрать – вычесть и получить «ноль» на весах. Далее поставить на весы гирьку определенной известной массы и получить некоторое значение АЦП. Это количество отсчетов будет приходится на единицу массы на весах:
К=(количество отсчетов с массой гирьки – количество отсчетов без приложенной массы) / масса гирьки
Далее этот коэффициент используется после каждого измерения АЦП для перевода в значение единиц массы и выводится на дисплей. Для моего экземпляра этот коэффициент равен 430.
Для сборки весов используем микроконтроллер STM32.
Исходный код для микроконтроллера находится в конце статьи. Схему удобно собирать на минимальной отладочной плате, потому что в этом случае необходимо минимум деталей для сборки - соединяем между собой плату с микроконтроллером, дисплей и модуль АЦП с датчиком, подключаем к питанию.
Для оценки точности измерений, а также для определения коэффициент для перевод значения АЦП в массу лучше всего использовать груз с заведомо точно известной массой. Для этой цели хорошо подойдут мерные гирьки. Вот такой раритетный экземпляр, например.Как видим, схема показывает весьма неплохие результаты точности измерения (небольшое видео находится в конце статьи). Стоит помнить также о том, что датчик рассчитанный на измерение массы до 200 кг не даст такой точности до сотых долей грамма как датчик, рассчитанный на измерение массы до 100 г. Поэтому при выборе датчика обязательно нужно учитывать сферу применения весов для получения наиболее оптимальных результатов.
Недостатки и преимущества: Первый недостаток- высокая стоимость, второй недостаток – тяжелая схема для сборки.
1.3 Электронные весы на Arduino
В общем, каждая весоизмерительная ячейка имеет четыре тензодатчика, которые закреплены в мостовой моста из пшеничного камня, как показано выше.
Четыре провода, выходящие из датчика для подключение имеют следующие цветовые маркировки , обычно:
• Питание + (E +) или VCC красное
• Питание- (Е) или земля черное.
• Выход + (O +), Сигнал + (S +) + или Усилитель + (A +) белый
• O-, S- или A- зеленый или синий
Некоторые датчики могут иметь небольшие различия в цветовом кодировании(особенно китайцы любят такой разнобой), такие как синий вместо зеленого или желтого вместо черного или белого, если имеется только четыре провода (это означает, что экран не задействован ,или отсутствует вовсе ). Даже если цвета имеют другую маркировку , то всегда можно вызвонить датчик по сопротивлению , установив мультиметр на диапазор 2кОм , прозванивая пару проводов , провода питания будут иметь сопротивление порядка 400 ОМ ,провода сигнала 350 (пара) , питание + сигнал будут иметь сопротивление 300Ом .
Если показания веса у вас идут со значением «-» просто на плате HX711 поменяйте O + / O-провода местами.
После того как вы подключили датчик к плате 711 , вы можете подключить VCC, DAT, CLK и GND к микроконтроллеру, например к плате Arduino.
В примере кода DAT и CLK подключены к контактам цифровым 3 и 2на плате Ардуино, но при надобности их можно легко изменить в коде. Питание платы начинается от 3 в , а питание датчика от 5 в, по этому можно смело питать от Ардуины .
2. Разработка структурной схемы
Согласно техническому заданию, в электронные весы должны входить следующие компоненты: Датчик давления – первичный преобразователь давления в электрическое напряжение
Индикатор – элемент, отображающий значение веса в виде десятичных цифр
Микроконтроллер – элемент, управляющий электронными весами, т.е. опрашивающий датчик с некоторой периодичностью и преобразующий его аналоговый электрический сигнал в цифровой. А также выводящий это значение на индикатор
Батарея питания – элемент, питающий электронные весы.
2.1. Блок датчика давления
Блок датчиков необходим для анализа веса людей, животных, предметов и.т.д.
В данном блоке используется потенциометр. Потенциометр — измерительный прибор, предназначенный для определения напряжения путём сравнения двух, в общем случае, различных напряжений или ЭДС с помощью компенсационного метода.
2.2. Блок управления.
Блок управления предназначен для управления исполнительными блоками, обработки данных с блока датчиков, для связи узлов . Если потенциометр равен 100, то вес будет равен нулю, а если вес будет меньше 100, то блок давления посылает через блок управления на блок индикации и вес будет выведен на LCD.
2.3. Блок питания.
Блок питания предназначенный для снабжения узлов сигнализатора электрической энергией постоянного тока, путём преобразования сетевого напряжения до требуемых значений.
2.4 ЖК Индикатор .
Блок ЖК Индикатор предназначен для вывода значений веса, данный блок имеет световую сигнализацию.
Для световой индикации используется экран.
Блок индикации имеет минимальное количество элементов, что увеличивает надежность и компактность данного блока
3. Разработка схемы электрической принципиальной
Для разработки принципиальной схемы я воспользовался программой Proteus 8, что бы убедиться в том, что устройство работает правильно.
Мне понадобилось:
1) Дисплей LCD1602;
2) Три резистора с сопротивлением 100Ом;
3) Две кнопки для сохранения и сброса;
4) Соединительные провода;
USB для прошивки платы
3.1 Выбор датчика
Как уже было сказано в введении необходимо выбрать не датчик веса, а датчик давления. Рассчитаем необходимые параметры. Для начала вычислим диапазон измеряемого давления. Давление это отношение силы давления к площади соприкосновения. В нашем случае сила давления – это сила тяжести, вычисляемая по формуле
F=mg,
где m-масса объекта, g-ускорение свободного падения, равное, для нашего региона 9,8 м/c2.
Площадь прикосновения в нашем случае равна площади пластины, лежащей на подушке, т.е. 0,25 м2 .
Существуют разнообразные датчики давления:
Датчик абсолютного давления. Абсолютное давление, такое как барометрическое давление, измеряется относительно вакуума во встроенной в кристалл датчика полости.
Датчик дифференциального давления. Дифференциальное давление, такое как падение давления в регуляторе тяги или на фильтре в воздушном канале, измеряется подачей давления с противоположных сторон чувствительного элемента датчика.
Датчик относительного давления. Относительное давление, как в случае измерения кровяного давления, является частным случаем дифференциального, в котором в качестве давления сравнения служит атмосферное давление.
В нашем случае нужно выбрать датчик абсолютного давления.
3.2 Выбор микроконтроллера
Вместо микроконтроллера я выбрал плату Arduino UNO. У платы есть все необходимые компоненты для обеспечения работы микроконтроллера. Достаточно подключить USB кабель к компьютеру и подать питание.
Arduino — это электронный конструктор и удобная платформа быстрой разработки электронных устройств, для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов.
Рассылаемые в настоящее время версии могут быть заказаны уже распаянными. Информация об устройстве платы (рисунок печатной платы) находится в открытом доступе и может быть использована теми, кто предпочитает собирать платы самостоятельно. Микроконтроллеры ATmega328 дёшевы и стоят около 200 рублей.
У Arduino Uno:
1) 14 цифровых портов входа-выхода ( 6 из них поддерживают режим ШИМ модуляции);
2) 6 аналоговых входов;
3) частота тактирования 16 МГц;
4) USB порт;
5) разъем питания;
6) разъем внутрисхемного программирования;
7) кнопка сброса;
3.3 Выбор дисплея
Жидкокристаллический дисплей (Liquid Crystal Display) сокращенно LCD построен на технологии жидких кристаллов. При проектировании электронных устройства, нам нужно недорогое устройство для отображения информации и второй не менее важный фактор, наличии готовых библиотек для Arduino.
Из всех доступных LCD дисплеев на рынке, наиболее часто используемой является LCD 1602, который может отображать ASCII символа в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей. Существует огромное количество разновидностей данного ЖК модуля, он может быть 1,2,4–ех строчный с различным числом символов на строке.
LCD 1602 представляет собой электронный модуль основанный на драйвере HD44780 от Hitachi. LCD1602 имеет 16 контактов и может работать в 4-битном режиме (с использованием только 4 линии данных) или 8-битном режиме (с использованием всех 8 строк данных), так же можно использовать интерфейс I2C. Что не маловажно, так как нам нужно экономить ножки.
4. Выбор языка программирования
Программирование микроконтроллеров Arduino осуществляется на языке программирования C++. Этот язык является низкоуровневым, поэтому считается сложным и имеет высокий порог вхождения. Но для программирования Arduino используется упрощенная версия этого языка программирования. Так же для упрощения разработки прошивок существует множество функций, классов, методов и библиотек. Благодаря этому работать с этими микроконтроллерами очень удобно и легко. Описание большинства необходимых функций и операторов вы найдете на этой странице. Этого хватит для написания прошивок под самые разнообразные устройства на базе ардуино. Для всех функций есть небольшие примеры, показывающие как вы можете их использовать.
5. Моделирование
Устройство я смоделировала в программе Proteus, чтобы проверить работу.
Proteus Professional — пакет программ для автоматизированного проектирования электронных схем.
Пакет представляет собой систему схемотехнического моделирования, базирующуюся на основе моделей электронных компонентов принятых в PSpice. Отличительной чертой пакета Proteus Professional является возможность моделирования работы программируемых устройств: микроконтроллеров, микропроцессоров, DSP и прочее. Дополнительно в пакет Proteus Professional входит система проектирования печатных плат. Proteus Professional может симулировать работу следующих микроконтроллеров: 8051, ARM7, ARM Cortex-M3, AVR, Texas Instruments, Motorola, PIC, Basic Stamp. Библиотека компонентов содержит справочные данные.
Заключение
В ходе курсовой работы были разработаны электронные весы, которое полностью удовлетворяет техническому заданию: имеет малую цену по сравнению с существующими аналогами на рынке, так как комплектующие стоят недорого и доступны.
Устройство собрано в среде Proteus. Программа для устройства написана на языке СИ++.