Как стать автором
Обновить

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);
}

Заключение


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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.