ARDUINO: Получение веса с весов МЕРА по протоколу ОКА

image
Исследуя просторы интернета при подготовке к написанию данной статьи, мной были обнаружены два устойчивых подхода в вопросе измерения веса в самоделках:


  1. Я ВСЕ СДЕЛАЮ САМ. На известном китайском сайте есть готовые тензодатчики, разные измерительные платформы и в интернете куча типовых реализаций.
  2. ОЙ, ТАМ ВСЕ НЕПРОСТО. Это в случае, если разрабатываемое устройство требует поверки как средство измерения веса и (хотя бы, учитывая нынешние реалии) присутствовать в Государственном реестре средств измерения.

Как раз о втором случае и пойдет мое краткое повествование.


Для одного из проектов были использованы подходящие по параметрам готовые весы МЕРА ПВм-3/15-Т. Они входят в ГРСИ, и для них производителем давно решены все вопросы по поверке и калибровке через ЦТО. Задача стояла простая: с помощью Arduino получить с весов значение измереренного веса.


image


Согласно инструкции по ремонту и настройке, данные весы поддерживают несколько протоколов взаимодействия с внешними устройствами по последовательному интерфейсу: 9байт, Ока, Мера-Авто. Протокол 9байт выглядит весьма мудреным. Протокол Мера-Авто категорически отказался включаться. А протокол ОКА заработал, и нам удалось получить значение веса.


image


image


Надо отметить, что для обмена данными и обновления прошивки, в разных моделях весов МЕРА используются сходные типы подключения. В основе – это RS232. В качестве интерфейсного разъема на ПВм-3/15-Т используется розетка RJ-45. Для подключения к ПК производителем выпускаются два кабеля-переходника: один из них обычный USB-RS232 конвертор, а второй – преобразователь уровней RS232 для подключения к «старому» COM-порту.


Контакты розетки RJ-45:


  1. TxD
  2. RxD
  3. TxD-RS (контакт для прямого подключения к COM-порту ПК)
  4. RxD-RS (контакт для прямого подключения к COM-порту ПК)
  5. 3v (этим напряжением питается схема весов при отключенном штатном БП)
  6. GND
  7. КЗ (в нашем случае не используется)
  8. n/c (не подключен)

Т.к. в Arduino на пинах 0/1 (RX/TX) мы имеем RS232 низкого уровня, то можем смело подключать ее к соответствующим контактам интерфейсного разъема весов.


image


Для работы скетча была написана библиотека для работы по последовательному каналу по протоколу ОКА. Скетч, который по протоколу ОКА опрашивает весы 1 раз в секунду и выводит значение веса на ЖК индикатор:


#include <ScaleOKA.h>
#include <LiquidCrystal.h>

ScaleOKA oka;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
uint32_t w = 0;

void setup() {
  oka.initialize();
  oka.setPrice(10000);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Weight (grams)  ");
}

void loop() {
  w = oka.getWeight();
  lcd.setCursor(0, 1);
  lcd.print(w);
  lcd.print("      ");
  delay(1000);
}

Заключение


Данное решение по получению измеренного веса скорее всего будет работать со всеми весами МЕРА, поддерживающими обмен по протоколу ОКА.

Tags:
arduino uno, diy или сделай сам, весы МЕРА, протокол обмена ОКА, измерение веса

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.