본문 바로가기

상상 Maker Space and US

아두이노따라하기_04. 아두이노와 아티산 프로그램 연동하기

아두이노 우노에 Thermocouple 2ea를 붙여서 PC의 Artisan software와 MODBUS 통해 연동하기 입니다. 

커피 로스팅기계의 온도계가 RS485 통신기능이 없을 경우 RS485 통신기능이 있는 온도계를 구매하여 Artisan 연동이 가능하다고 하였습니다.  궁금하신 분은 아래글을 참고하세요. 

2019/10/29 - [상상 Maker Space and US] - 로스터기 아티산 프로그램 연동하기

2019/12/25 - [상상 Maker Space and US] - 오토닉스 온도계 TX4S-B4S 아티산(artisan) 연동하기

위 방법이 보편적인 방법이고, 본인이 직접 만들기를 좋아 한다면, 오픈하드웨어인 아두이노를 이용하여, 직접 만들어 볼수 있습니다.  아두이노 우노 보드에 Tehrmocouple K type 센서를 MAX31855보드를 통해 Analog to Digital화 하고 아두이노에서 software SPI 통신을 통해 읽어 오고 아두이노와 PC의 아티산Artisan software와는 아두이노 우노 보드의 USB port를 통해 Modbus를 이용하여 연동을 시켜 보려합니다.  

 

●준비물 

 -. 아두이노 우노 1ea

 -. MAX31855 2ea 

 -. Thermocouple 2ea 

 

어디에서 구매하냐에 따라 다르겠지만 약 3,4만원대에서 구현이 가능합니다. 

 

●Connection 

아래 그림대로 연결해줍니다.  컴퓨터의 Artisan program과 연동은 USB PORT를 이용한다. 

 

●Library 

아래의 2개의 라이브러리를 사용할것이니 설치하여 줍니다. 

 1. Modbus-Master-Slave-for-Arduino-master 

 2. Adafruit MAX31855 Library 

 

●code

아래의 코드를 그대로 사용하거나, 조금 변경하시면 되겠습니다. 

 

/*

 *  Recommended Modbus Master: QModbus

 *  http://qmodbus.sourceforge.net/

 *  http://www.modbusdriver.com/modpoll.html

 *  Recommended Modbus slave: 

 *  diagslave http://www.modbusdriver.com/diagslave.html

 *  

 */

#include <ModbusRtu.h>

#include <Adafruit_MAX31855.h>

//#include <SoftwareSerial.h>



// assign the Arduino pin that must be connected to RE-DE RS485 transceiver

//#define TXEN  4 



// data array for modbus network sharing

//uint16_t au16data1[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1 }; // for BT

//uint16_t au16data2[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1 }; // for ET



uint16_t au16data1[16] = {3, 1415, 9265, 4, 2, 7182, 28182, 8, 0, 0, 0, 0, 0, 0, 1, -1 };

uint16_t au16data2[16] = {3, 1415, 9265, 4, 2, 7182, 28182, 8, 0, 0, 0, 0, 0, 0, 1, -1 };

/**

 *  Modbus object declaration

 *  u8id : node id = 0 for master, = 1..247 for slave

 *  u8serno : serial port (use 0 for Serial)

 *  u8txenpin : 0 for RS-232 and USB-FTDI 

 *               or any pin number > 1 for RS-485

 */

Modbus slave1; // this is slave @1 and RS-232 or USB-FTDI

Modbus slave2; 

//Modbus slave(1,0,TXEN); // this is slave @1 and RS-485



#define MAXDO 3

#define MAXCS1 4 //BT

#define MAXCLK 5

#define MAXCS2 6 //ET



Adafruit_MAX31855 thermocouple1(MAXCLK, MAXCS1, MAXDO);  //for BT

Adafruit_MAX31855 thermocouple2(MAXCLK, MAXCS2, MAXDO);  //for ET

  

void setup() {

  slave1 = Modbus(1,0,0);           //slave ID 1 for BT

  slave2 = Modbus(2,0,0);           //slave ID 2 for ET 

  slave1.begin(9600);               //baud rate configuarion with COM Port

  slave2.begin(9600);               //baud rate configuarion with COM Port 

//slave.begin( 19200, SERIAL_8E1 ); // 19200 baud, 8-bits, even, 1-bit stop

  delay(250);  

}



void loop() {

   au16data1[2] = ((uint16_t) thermocouple1.readCelsius()*100);   

   au16data2[2] = ((uint16_t) thermocouple2.readCelsius()*100);  

   slave1.poll(au16data1, 16);

   slave2.poll(au16data2, 16); 

}



●Artisan program setting 

설정부분 몇개를 반드시 바꾸어 주어야 합니다. 

1. 온도센서 설정

-.  MODBUS로 변경 

default 셑팅값이 MODBUS로 선택되어 있음 . 혹시나 MODEBUS로 안되어 있으면 변경필요

 

 

 

 

 

 

2. 시리얼 포트 설정 

-. 장치관리자의 COM port와 같게 맞춰줌(시리얼통신을 위한 기본 사항) 

-. baud rate도 9600으로 변경 

(9600이 default값이므로 대부분 바꿀 필요가 없음) 

 

-. 붉은색 부분이 중요한데 반드시 변경 필요함. 

메모리 주소 2로 변경 

기능 3으로 변경 

Divider 1/100으로 변경

 

 

 

 

●결과물 

 

아래와 같이 온도를 읽어 왔다면 성공하셨습니다. 제 방온도가 현제 23도 인가 봅니다.  9분정도에 Thermocouple 하나를 제 겨드랑에 가져다 놓으니 35도까지 올라가네요.^^; Thermocouple K type의 tolerance 가 +,- 2도정도이니 그 범위에 들어가는것 같네요. 

 

 

●마치며

이렇게 아두이노를 이용하여 2channel  써모커플(Thermocouple, 열전대 센서)을 붙여서, Artisan software와 연동할수 있는 datalogger를 만들어 봤습니다. 그냥 h/w는 주문하여구매하면 되고, s/w도 라이브러리만 잘 찾아서 설치 및 추가해주고, coding는 그냥 몇글자 수정, 몇줄 추가 그게 전부입니다. coding을 좀 안다면 좋겠지만, 저처럼 잘 모르더라도, 라이브러리를 누군가 제공하기 때문에 잘 찾으시고, 조금만 노력하면 할수 있습니다. 이전 글에서 아두이노로 display도 했었고, two button stopwatch도 만들어 봤기때문에 눈치 채셨겠지만 이를 잘 조합하면, 멋진 아티산 데이타 로거가 탄생할수 있을것 입니다. 

 

 

 

2019/10/31 - [상상 Maker Space and US] - 아두이노 따라하기_02_128x64 I2C OLED 구동하기

2019/11/08 - [상상 Maker Space and US] - 아두이노 따라하기_03, 2 button OLED stopwatch