Вычислитель количества теплоты ВКТ-7-02

SNOOPY
Offline
Зарегистрирован: 24.07.2011

Люди, очень нужна помощь...

Для начала коротко расскажу, что такое ВКТ-7

  • ВКТ - Вычислитель количества теплоты
  • 7 - модель
  • 02 - версия

Небольшая штука, считывающая и хранящая  в себе данны о потребленных "благах" цивилизации. (подробнее)

Есть задача, обратить к данному устройству и считать данные, передав последние через SMS.

Вторая часть задачи, отправить SMS, решена 100%

Есть проблемы с "первой".

И так, что имеется:

  1. Кабель RS-232
  2. Arduino Uno

Сделал все как сказано в документации:

  • свой RX (pin2) на pin3 ВКТ
  • свой TX (pin3) на pin2 ВКТ
  • свой GND (pin5) на pin5 ВКТ
  • "Плюсовой" заряд от доп. батареи (Крона 9В) на пин 8 ВКТ

И написал простенькую прогу:

#include <GSM_Shield.h>

#define TIMEOUT 3000		/* 1 second */
#define MAX_RESPONSE_LENGTH 70
/* errors */
#define PORT_ERROR -5

//NewSoftSerial Serial(2, 3);  //rx, tx
GSM gsm;
int error;
int i;
int debug = 0;

void setup() {
  delay(10000); //startup delay

  gsm.TurnOn(19200); //module power on
  gsm.InitParam(PARAM_SET_1);//configure the module
  gsm.Echo(0); //enable AT echo
  //Serial.end();

  char number[] = "+7**********"; 
  char responce3[] = "Responce data is not available";
  char responce[MAX_RESPONSE_LENGTH];

  Serial.begin(9600);
  if(debug == 1) Serial.println("Start");

  char query1[] = {0xff, 0xff, 0x00, 0x10, 0x3f, 0xff, 0x00, 0x00, 0xcc, 0x80, 0x00, 0x00, 0x00, 0x64, 0x54 };
  i = put(query1, sizeof(query1));

  i = get(responce);
  if( i > 0) {
    sendSMS(number, responce);
  }
  else
  {
    sendSMS(number, responce3);
  }
}

//***********************************************************************
// put(query_string, query_length )
// Function to send a query out to a modbus slave.
//***********************************************************************
int put(char *query, size_t string_length)
{
  int i;
  for (i = 0; i < string_length; i++) {
    Serial.print(query[i], BYTE);
  }

  delay(200); // without the following delay, the reading of the response might be wrong apparently
  return i; 
}

// **********************************************************************
// get( array_for_data )
// 
// Function to monitor for the reply from the modbus slave.
// This function blocks for timeout seconds if there is no reply.
// 
// Returns:	Total number of characters received.
// ***********************************************************************
int get(char *received_string)
{
  int bytes_received = 0;
  int i = 0;
  /* wait for a response; this will block! */

  while(Serial.available() == 0) {
    delay(1);
    if (i++ > TIMEOUT)
      return bytes_received;
  }

  while(Serial.available()) {
    received_string[bytes_received] = Serial.read();
    bytes_received++;
    if (bytes_received >= MAX_RESPONSE_LENGTH) return PORT_ERROR;
  }    

  return (bytes_received);
}

void sendSMS(char *num, char *text) {
  error=gsm.SendSMS(num, text);
  if(debug == 1) if(error) Serial.println("Unable to send SMS");
}

void loop() {
  delay(2000);
}

В результате, все время приходит "Responce data is not available"

Потом я попробовал поменять RX и TX местами, но все равно, ни чего не получилось.

Сейчас нашел пример на оф. сайте пример, но не думаю, что это поможет...

76region
Offline
Зарегистрирован: 08.07.2011

не вдаваясь в код, а Вы как ардуино подключаете к прибору, ведь у атмеги рс232 с уровнями ттл, а вкт полный рс232 тоесть +\-12в,надо как то уровни согласовать мах232 например.А терминалом, с компа обмен происходит нормально?

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

а что за GSM развязка? 

SNOOPY
Offline
Зарегистрирован: 24.07.2011

А можно по-подробнее про TTL и "полный" RS232?...

SNOOPY
Offline
Зарегистрирован: 24.07.2011

Я не знаю как параллельно мониторить, что именно происходит на плате в момент работы с ВКТ. Поэтому юзаю СМС...

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

 TTL уровни это 0-5V(0 и 1 логические соответственно) RS232 стандарт полный 0-12V - MAX232  микросхема нужна

SNOOPY
Offline
Зарегистрирован: 24.07.2011

мммм, понятно, т.е. вы хотите сказать, что "силы голоса моей платы" не достаточно для того, что бы услышал ВКТ? Ему надо "говорить по-громче"?...

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Для согласования всего лишь надо купить недорогую микросхемку, дабы уберечь ардуино. 

SNOOPY
Offline
Зарегистрирован: 24.07.2011

Это не так просто в нашем городе...

Нужна ведь плата именно под ардуино.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

В смысле? Микросхему можно подпаять навесным монтажем 

SNOOPY
Offline
Зарегистрирован: 24.07.2011

я вас не правильно понял, вы сказал MAX232, я подумал, что уже есть готовые решения для ардуино.

Но сейчас вижу, что max232 это просто микросхема, а все остальное нужно паять самому.

76region
Offline
Зарегистрирован: 08.07.2011

можно спалить контроллер в ардуино если подключить напрямую,если спаять самому сложно то можно купить тут например http://www.masterkit.ru/main/set.php?code_id=41081 , пришлют по почте, хотя там ничего сложного . Можно в магазинах сотовых телефонов попытаться найти шнур для телефонов старых для ком порта (не юсб) для сименс,ериксон..

 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

зачем так сложно, ведь там всего то надо 5 конденсаторчиков и одна микросхема

 

SNOOPY
Offline
Зарегистрирован: 24.07.2011

блин, звонил в магазин радиодеталей, сказали под заказ и пару недель, а нужно быстро...

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

звоните в другой магазин;) 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

звоните в другой магазин;) 

SNOOPY
Offline
Зарегистрирован: 24.07.2011

Adessit пишет:

зачем так сложно, ведь там всего то надо 5 конденсаторчиков и одна микросхема

 

 

А как быть с пинами 8 и 7? Они нужны...

76region
Offline
Зарегистрирован: 08.07.2011

Adessit пишет:

 TTL уровни это 0-5V(0 и 1 логические соответственно) RS232 стандарт полный 0-12V - MAX232  микросхема нужна

"0"=-12в\ "1"= +12в, если быть точнее

SNOOPY
Offline
Зарегистрирован: 24.07.2011

76region пишет:

Adessit пишет:

 TTL уровни это 0-5V(0 и 1 логические соответственно) RS232 стандарт полный 0-12V - MAX232  микросхема нужна

"0"=-12в\ "1"= +12в, если быть точнее

 

Также возникает вопрос, откуда взяться 12В если схема питается от 5В?!....

76region
Offline
Зарегистрирован: 08.07.2011

 

насколька я понял из протокола обмена нужен еще сигнал RTS, хотя проверьте терминалом с компа, есть еще хорошая прога rs232pro с ней удобно с компортом работать

http://www.aggsoft.ru/rs232-pinout-cable/pinout-and-signal.htm ТУТ ПРО RS232

SNOOPY
Offline
Зарегистрирован: 24.07.2011

Разговаривал с инжинерами в магазине, они говорят что MAX232 выдаст 0 - 0В и 1 - 5В

также и в компе, все что выше 0В = 1, а все прочие, т.к. 0В = 0.

Возникает вопрос: чем же отличается сигнал на выходе у Uno (pin0/pin1) если на выходе у MAX232 все тоже самое?!...

Что-то не вижу разницы о которой говорил Adessit

76region
Offline
Зарегистрирован: 08.07.2011

их мах232 сделает, в протоколе написано сигнал RTS ДОЛЖЕН ИМЕТЬ УРОВЕНЬ НЕ МЕНЬШЕ 9 В

SNOOPY
Offline
Зарегистрирован: 24.07.2011

76region пишет:

их мах232 сделает, в протоколе написано сигнал RTS ДОЛЖЕН ИМЕТЬ УРОВЕНЬ НЕ МЕНЬШЕ 9 В

 

странно, откуда? Кондерами что ли?

76region
Offline
Зарегистрирован: 08.07.2011

с инженерами спорить не буду но без согласоания уровней работать не будет,еще и атмегу спалите,

SNOOPY
Offline
Зарегистрирован: 24.07.2011

в общем, я не понял какие пины за что отвечают в схеме от Adessit?

нашел похожую на нее www.hardware.zp.ua/mobile/data-cable-max232.html

 

поехал в магазин, думаю из 5в сделать 9 не получится, но вот из "0"-"сигнала" сделать "настоящий" 0 думаю получится, т.е. сделать что бы 0 был не 0В, а -5В.

76region
Offline
Зарегистрирован: 08.07.2011

попробуйте сначала установить связь с компьютером ,чтоб понять если ли обмен и на какую скорость сконфигурирова порт устройства

76region
Offline
Зарегистрирован: 08.07.2011

главное чтоб от прибора был не +12 а мах +5 чтоб контроллер не попалить,чтоб не мучаться сделайте сначала то что постом выше,чтобы быть уверенным что связь есть.

76region
Offline
Зарегистрирован: 08.07.2011

насколько я понял протокол обмена прибор не будет принимать команды пока на его 8 рине "cts" не появится "1" уровнем не менее +9в......

прошу прощения проглядел " "Плюсовой" заряд от доп. батареи (Крона 9В) на пин 8 ВКТ",так что тут все правильно.

76region
Offline
Зарегистрирован: 08.07.2011

кстати есть смысл проверить соответствующие порты ардуино , к которым подключали

76region
Offline
Зарегистрирован: 08.07.2011

теперь по коду:

сразу скажу я сам начинающий программист ,но из кода мне не понятно как организована связь с вкт,по каким пинам и по каким пинам gsm связь? Ведь вроде чтоб использовать любые пины для uart нужна "SoftSerial", а я у вас в коде ее не увидел, так же как и обявление какие пины используются как рх,тх для gsm и вкт,поясните пожалуйста для моего собственного развития :). Правильно ли я понимаю , что связь с gsm пин 4,5(по умолчанию) а связь с вкт пин 0,1 через стандартный UART?

SNOOPY
Offline
Зарегистрирован: 24.07.2011

76region пишет:

теперь по коду:

сразу скажу я сам начинающий программист ,но из кода мне не понятно как организована связь с вкт,по каким пинам и по каким пинам gsm связь? Ведь вроде чтоб использовать любые пины для uart нужна "SoftSerial", а я у вас в коде ее не увидел, так же как и обявление какие пины используются как рх,тх для gsm и вкт,поясните пожалуйста для моего собственного развития :). Правильно ли я понимаю , что связь с gsm пин 4,5(по умолчанию) а связь с вкт пин 0,1 через стандартный UART?

Вы правы на счет пинов 0 и 1, это стандартные пины для стандартного класса Serial, есть также другие классы Serial1,2,3 которые смотрят на другие стандартные предустановленые, предоговоренные пины.

GSM шлюз, смотрит на пины 8 и 9, кажись, они выставлены в самой библиотеке :), поправит там.

SNOOPY
Offline
Зарегистрирован: 24.07.2011

кстати есть смысл проверить соответствующие порты ардуино , к которым подключали 

Проблема №1 и самая главная - у меня ноут и как вам наверное стало понятно, ни о каких портах 90-х чечи даже не идет. Юзаю конвертер, посмотрим что получится...

обязательно отпишусь

SNOOPY
Offline
Зарегистрирован: 24.07.2011

В общем, купил монтажную плату, все соберу согласно схеме выше, посмотрим, а пока "скрестим пальцы".

 

Да, кстати, виделся с тем инжинером, он говорит что сомнивается что проблема в том, И не важно, +5 там или +9, пусть зоть +1 000 000. Может он и прав, но пока сигнал от платы отличается от сигнала который выдает комп, а это -5=0 и +5=1, нельзя быть уверенными, что max232 не поможет :)

76region
Offline
Зарегистрирован: 08.07.2011

включив в софте ардуино мониторинг компорта что нибудь видно? и откуда известно что вкт работает на скорости 9600?

76region
Offline
Зарегистрирован: 08.07.2011

я правильно понимаю что тх вкт подключен на пин 0 а рх вкт на пин1 ардуино,вы ведь для обмена с вкт используете Serial.begin(9600); а он умеет работать только с пинами 0,1 или я заблуждаюсь?

SNOOPY
Offline
Зарегистрирован: 24.07.2011

76region пишет:

я правильно понимаю что тх вкт подключен на пин 0 а рх вкт на пин1 ардуино,вы ведь для обмена с вкт используете Serial.begin(9600); а он умеет работать только с пинами 0,1 или я заблуждаюсь?

:) Я уже писал выше, что у Uno есть стандартный класс, для работы со "стандартными" пинами 0 и 1.

Stoyan
Offline
Зарегистрирован: 05.08.2011

Для согласования всего лишь надо 2 транзистора, 2 диода, 5 резистора - как в ArduinoSerial:

Arduino serial

а можно и :

www.kmitl.ac.th/~kswichit/ap275/ap275.htm

или 

www.scienceprog.com/alternatives-of-max232-in-low-budget-projects/

 

 

SNOOPY
Offline
Зарегистрирован: 24.07.2011

Собрал схему о которой писал ранее. Начал приходить ответ на строку инициализации.

Далее, по инструкции, нужно отправить команду о предстоящем чтении данных и вот тут облом, ответа нет.

SNOOPY
Offline
Зарегистрирован: 24.07.2011

SNOOPY пишет:

Собрал схему о которой писал ранее. Начал приходить ответ на строку инициализации.

Далее, по инструкции, нужно отправить команду о предстоящем чтении данных и вот тут облом, ответа нет.

мне кажется что дело в стоповых битах, их по доке сказано =2

ща поставил

Serial.begin(9600);
UCSR0C = UCSR0C | B00001000; // 8n2

посмотрим что будет

SNOOPY
Offline
Зарегистрирован: 24.07.2011

SNOOPY пишет:

SNOOPY пишет:

Собрал схему о которой писал ранее. Начал приходить ответ на строку инициализации.

Далее, по инструкции, нужно отправить команду о предстоящем чтении данных и вот тут облом, ответа нет.

мне кажется что дело в стоповых битах, их по доке сказано =2

ща поставил

Serial.begin(9600);
UCSR0C = UCSR0C | B00001000; // 8n2

посмотрим что будет

не получилось, ответа нет, хотя должен быть... :(

76region
Offline
Зарегистрирован: 08.07.2011

4.7 Запрос «Начало сеанса связи»
Запрос предназначен для подготовки вычислителя к сеансу связи и определе-
ния значения «Версия сервера». Должен быть выполнен первым.
Начальный адрес = 0x3FFF;

Готовый вариант запроса:
0x00 0x10 0x3f 0xff 0x00 0x00 0xcc 0x80 0x00 0x00 0x00 0x64 0x54

то есть на эту строку ответ приходит?

SNOOPY
Offline
Зарегистрирован: 24.07.2011

да, далее, есть запрос на чтение, на него не приходит.

kuler
Offline
Зарегистрирован: 30.11.2011

долго читал но я всё делаю проще КУПИЛ ШНУР АДАПТЕР ЗА 300 РУБЛИКОВ ТО ЕСТЬ ПЕРЕХОДНИК КОМУ КАК НРАВИТЬСЯ  USB ---- COM ПОРТ  и все данные  архива через программу эйси 2   сохраняю в экселе  НО эйси2 неможет изменить архив она только считывает его вот и возникла мысль и разумеется попрос К  УМЕЛЬЦУ  SNOOPY  СПОМОШЬЮ КАКОЙ ПРОГИ  ВОЗМОЖНО ПОВЛИЯТЬ НА ЗАПИСЬ АРХИВА то есть осуществить програмирование данных в память флеш  самого прибора   ЗАЩИТУ НА ЗАПИСЬ Я УЖЕ НАУЧИЛСЯ СНИМАТЬ  а програмировать неумею МОЖЕТ УВАЖАЕМЫЙ  SNOOPY  Сстукнет мне в аську    вот номер   362313995    я с 9.00 утром и до 18.00 на связи  ВОЗМОЖНО С ОТСЫЛКОЙ   СМС ВАМ ПОМОГУ  есть мысли 30 лет всёж с электроникой на ты.

 

SNOOPY
Offline
Зарегистрирован: 24.07.2011

а что именно тебя интересует?

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Теме БАПМ! Планирую фиксировать расход электричества и возможно измерять нагрузку на сеть, по моему есть аналогия расхода тепла и электричества, я прав?

Какой прибор использовать для снятия параметров эл. цепи в доме и передачи их на ардуину?

Спасибо.

SNOOPY
Offline
Зарегистрирован: 24.07.2011

.c8r пишет:

Теме БАПМ! Планирую фиксировать расход электричества и возможно измерять нагрузку на сеть, по моему есть аналогия расхода тепла и электричества, я прав?

смотря о какой аналогии ты спрашиваешь. Тепло - это не электричество. Тут свои датчики и вычислители. Я юзаю Вычислитель количества теплоты ВКТ-7-02

.c8r пишет:

 

Какой прибор использовать для снятия параметров эл. цепи в доме и передачи их на ардуину?

Спасибо.

Как сказано в теме - Вычислитель количества теплоты ВКТ-7-02

Tolchoks
Offline
Зарегистрирован: 27.05.2016

Stoyan пишет:

Могу предложить хорошую цена на ВКТ-5: http://energoteplolider.ru/teplovychisliteli/vkt-5.html

Сайт: energoteplolider.ru/teplovychisliteli/vkt-5.html

ВКТ-5 цена

Для согласования всего лишь надо 2 транзистора, 2 диода, 5 резистора - как в ArduinoSerial:

Arduino serial

а можно и :

тепловычислитель  - ВКТ 7.

www.kmitl.ac.th/~kswichit/ap275/ap275.htm

или выбрать вычислитель ВКТ-7 от Теплоком:

http://www.teplocom.msk.ru/catalog/teplovich/vkt_7/

да, вы правы.

semy
Offline
Зарегистрирован: 11.02.2017

Очень интересно чем закончиласи история, удалось считывать данные с ВКТ-7 ардуиной?