Калибровка потенциостата

Калибровка подаваемого напряжения

Для того чтобы найти зависимость между подаваемым на ЦАП 16-битным значением и результирующим напряжением на электродах выполним калибровку.

Установка напряжения WORKING

Калибровка выполняется для конкретного выбранного неизменяемого напряжения на электроде WORKING. Напряжение на каждом электроде возможно задать в диапазоне от 0 до 3.3 вольт. Выберем напряжение для WORKING в середине этого диапазона, чтобы максимальные по модулю отрицательное и положительное напряжения на электродах были примерно одинаковы. Пусть напряжение WORKING будет равно 1.5 В. Для того, чтобы задать такое напряжение, необходимо подключить потенциостат к компьютеру, загрузить в него прошивку calibration.ino и ввести следующие команды в последовательный порт:

  1. C(1) - устанавливаем режим измерения тока

  2. D(2) - устанавливаем двухэлектродный режим работы (замыкаем электроды COUNTER и REFERENCE)

После этого задаём напряжение, близкое к 1.5 В, на электрод WORKING с помощью команды B(22000). Измерим реальное напряжение мультиметром. Для этого переведем мультиметр в режим вольтметра с диапазоном не менее 2В.

Подключим щуп “+” к электроду WORKING, а щуп “-” к контакту земли GND. Считаем значение напряжения с экрана. Если полученное напряжение меньше желаемого, то постепенно увеличиваем значение 16-битного числа, подаваемого на ЦАП, то есть B(x), где x>22000, до достижения желаемого значения в 1.5 В. Если полученное напряжение больше желаемого, соответственно, уменьшаем. В результате, получим желаемое напряжение на электроде WORKING и соответствующее ему значение 16-битного числа на ЦАП.

Процесс калибровки

Для калибровки напряжения на электродах подключим потенциостат к компьютеру, загрузим прошивку calibration.ino и выполним команды:

  1. C(1) - устанавливаем режим измерения тока

  2. D(2) - устанавливаем двухэлектродный режим работы (замыкаем электроды COUNTER и REFERENCE)

3. B(x) - устанавливаем напряжение на WORKING, x~=22000, находится в предыдущей части. Последовательно будем выполнять команду A(y), которая аналогично команде B(x) задаёт напряжение на электроде REF. Здесь “у” будем менять в диапазоне от 5000 до 45000 с шагом в 5000. Для каждого выполнения команды A(y) измеряем разницу напряжения на электродах мультиметром. Для этого переведем мультиметр в режим вольтметра с диапазоном не менее 2В. Подключим щуп “+” к электроду WORKING, а щуп “-” к электроду REFERENCE. Считаем значение напряжения с экрана и запишем. Получим 2 вектора. Первый вектор с 16-битными значениями, поданными на ЦАП, а второй - с соответствующими им напряжениями на электродах.

Получение линейной зависимости

Аппроксимируем полученные данные до линейной зависимости и получим коэффициенты, связывающие 16-битное значение, поданное на ЦАП, с соответствующим ему напряжением на электродах. Для этого введем полученные данные в переменные DACref и Vdelta программы на языке Python:

import numpy as np

# Параметры теста

#B(21930);C(1); D(2); Vref(delta=0)=22112; Vref(delta=1)=7361;

#Vref(delta=-1)=36863; Vref(0.6)=13239; Vref(-0.6)=30959;

# Вектор 16-битных значений, подаваемых на электрод REF

DACref=np.array([0, 1000, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 48000])

# Вектор полученных напряжений между WORK и REF

Vdelta=np.array([1.488, 1.432, 1.161, 0.821, 0.482, 0.143, -0.196, -0.535, -0.874, -1.213, -1.552, -1.754])

# Аппроксимация к линейной функции

X=np.polyfit(DACref,Vdelta,1)

# Сравнение аппроксимации с реальными значениями

VdelRes=DACref*X[0]+X[1]

Vdiff=Vdelta-VdelRes

print(“k: “+str(X[0]))

print(“b: “+str(X[1]))

print(“Vdiff: “+str(Vdiff))

Сохраним код с именем `calibrationPotential.py`

Для запуска необходимо иметь установленный Python, [инструкция по установке](https://pythonworld.ru/osnovy/skachat-python.html).

Чтобы запустить код программы, перейдем в папку, в которой находится программа:

_images/explorer.png

Введем в адресной строке cmd и нажмем Enter.

_images/explorerCMD.png

Откроется командная строка, в которой вводим команду python calibrationPotential.py и нажимаем Enter.

_images/cmdRun.png

Коэффициенты k и b будут результатом калибровки подаваемого напряжения.


Калибровка получаемого тока

Получение данных

Для того чтобы найти зависимость между получаемым с АЦП 16-битным значением и результирующим током на электродах выполним калибровку. Выполним подключение резистора с известным сопротивлением R~=33кОм к электродам (к WORKING и к REFERENCE). Электроды REFERENCE и COUNTER замкнуты между собой.

_images/potentiostat.jpg

Подключим потенциостат к компьютеру, загрузим прошивку calibrationCurrent.ino и выполним команды:

  1. C(1) - устанавливаем режим измерения тока

  2. D(2) - устанавливаем двухэлектродный режим работы (замыкаем электроды COUNTER и REFERENCE)

  3. B(x) - устанавливаем напряжение 1.5 В на WORKING, x~=22000, находится в предыдущей части.

Последовательно будем выполнять команду A(y), которая задаёт напряжение на электроде REF. Здесь “у” будем менять в диапазоне от 5000 до 45000 с шагом в 5000. Для каждого выполнения команды A(y) измеряем разницу напряжения на электродах мультиметром. Для этого переведем мультиметр в режим вольтметра с диапазоном не менее 2В. Подключим щуп “+” к электроду WORKING, а щуп “-” к электроду REFERENCE. Считаем значение напряжения с экрана и запишем. Запишем число, выводимое на экран последовательного порта. Получим 3 вектора. Первый вектор с 16-битными значениями, поданными на ЦАП, второй - с соответствующими им напряжениями на электродах, а третий с 16-битными значениями, принятыми АЦП. Разделим значения напряжений второго вектора на сопротивление резистора и получим токи.

Получение линейной зависимости

Аппроксимируем полученные второй и третий векторы до линейной зависимости и получим коэффициенты, связывающие токи в электродах с 16-битными значениями, полученными на АЦП. Для этого введем полученные данные в переменные DACref, Vdelta, ADCout программы на языке Python:

import numpy as np

#Параметры снятых данных

#B(14390);C(1); R=33kOm; D(2)

#Сопротивление резистора, Ом

R=32900

# Вектор 16-битных значений, подаваемых на электрод REF

DACref=np.array([0, 1000, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 48000])

# Вектор полученных напряжений между WORK и REF

Vdelta=np.array([1.488, 1.432, 1.161, 0.821, 0.482, 0.143, -0.196, -0.535, -0.874, -1.213, -1.552, -1.754])

# Вектор полученных 16-битных значений АЦП

ADCout=np.array([34051, 33765, 32439, 30889, 29229, 27716, 26079, 24448, 22868, 21259, 19692, 18696])

# Аппроксимация к линейной функции

X=np.polyfit(ADCout[4:11],Vdelta[4:11]/R,1)

# Сравнение аппроксимации с реальными значениями

Ires=ADCout*X[0]+X[1]

Idelta=Vdelta/R-Ires

print(“k:”+str(X[0]))

print(“b:”+str(X[1]))

print(“Idelta:”+str(Idelta))

Сохраним код с именем `calibrationCurrent.py`

Для запуска необходимо иметь установленный Python, [инструкция по установке](https://pythonworld.ru/osnovy/skachat-python.html).

Чтобы запустить код программы, перейдем в папку, в которой находится программа:

<a name=”explorerC”></a><div align=”center”><img width=”500” src=”imgCalibration/explorerC.png”></div>

Введем в адресной строке cmd и нажмем Enter

<a name=”explorerCMDC”></a><div align=”center”><img width=”500” src=”imgCalibration/explorerCMDC.png”></div>

Откроется командная строка, в которой вводим команду python calibrationCurrent.py и нажимаем Enter.

<a name=”vplavka”></a><div align=”center”><img width=”500” src=”imgCalibration/cmdRunC.png”></div>

Коэффициенты k и b будут результатом калибровки получаемого тока.