224   221     15   57    
13.03.2019   Уроки   Теги статьи #, #

Подключаем измеритель мощности Thorlabs PM101 к Arduino

В этом небольшом уроке разбираемся как установить последовательную связь между измерителем мощности Thorlabs PM101 и Arduino.

Комплектующие

Собственно, из комплектующих нам нужны всего лишь:

  • Thorlabs PM101
  • Arduino Uno

Измеритель мощности Thorlabs PM101 имеет USB и последовательный интерфейс для считывания значений измерителя мощности с прибора. Т.е. работает через UART.

Вы можете создать свой собственный автономный измеритель мощности с Arduino. Расширьте пример, например, со светодиодом, который показывает, было ли достигнуто определенное значение измерителя мощности.

Установите поддерживаемую скорость передачи Arduino Uno для PM101, используя одну из следующих возможностей:

  • Применение измерителя оптической мощности Thorlabs
  • Функция «Установить скорость передачи» драйвера TLPM
  • Команда SCPI в инструментальном коммуникаторе Thorlabs "SYST: SEN: TRAN: BAUD"

Схема соединения

Схема соединения платы и измерителя мощности Thorlabs PM101 ниже:

Подключаем всё следующим образом:

  • PM101 Pin -> Arduino Uno
  • TxD -> Pin 10
  • RxD -> Pin 11
  • VxD -> 5V
  • GND -> GND

Также для понимания нам пригодится схема:

Код проекта

Ниже вы можете скопировать код/скетч проекта для вашего Аруино:

// SoftwareSerial - Version: Latest 
#include <SoftwareSerial.h>

// Sets the speed (baud rate) for the serial communication to the Thorlabs PM10x. Supported baud rates are 
// 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 31250, 38400, 57600, 115200 
const int tlBaudrate = 19200;

const byte rxPin = 10; // the pin 10 of the Arduino board is used to receive the data
const byte txPin = 11; // the pin 11 of the Arduino board is used to transmit the data

// read all transmitted data from the Thorlabs PM10x until the end char '\n' and convert the response to a double value
bool readDoubleValue(double* powerValue);

// initialize the serial communication with the defined pins on the Arduiono board
SoftwareSerial tlSerial(rxPin, txPin); // RX, TX

// setup the serial communication to the Thorlabs PM10x and the USB/serial Monitor
void setup() 
{
   Serial.begin(19200); // baudrate of the USB/serial communication to the PC
   while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  
  // initialize the serial communication with the Thorlabs Powermeter
   tlSerial.begin(tlBaudrate);
   
   Serial.write("**** Communication Initialized ****\n");
}

void loop() 
{ 
  double powerValue;
  
  // request a new power value from the Thorlabs PM10x (all commands are listed in the manual)
  tlSerial.write("meas?\n");
    
  // read the response and convert it into a double value
  if(readDoubleValue(&powerValue))
  {  
    Serial.print("\nPower: ");
  	Serial.print(powerValue, 8); // print the power value with an accuracy of 8 digits behind the separator
  }
}

bool readDoubleValue(double* powerValue)
{  
  char responseBuffer[256];
  char* responsePrt;

  delay(100);
  
  responsePrt = responseBuffer;
  
  // if there's any serial available, read it:  
  char c = 1;
	while(tlSerial.available() > 0 && c != '\n' && c != 0)
	{
	  c = tlSerial.read();
	  *responsePrt = c;
	  responsePrt++;
	}
	
	if (responsePrt == responseBuffer)
	{
	  // no response
	  return false;
	}
	 	
	// convert the response to the power value
	*powerValue = atof(responseBuffer);  
	
	return true;
}

На этом всё. Хороших вам проектов.

Ардуино+