Вы находитесь на странице: 1из 4

KiT#60(7).

qxd 8/4/2006 10:38 PM Page 102

102 www.finestreet.ru датчики

Система измерения давления


на основе PSoC CY8C29466
фирмы Cypress и MPX5010
(MPX2010) фирмы Freescale
В статье рассмотрен вариант создания устройства, контролирующего
давление, в частности при проведении медицинского обследования,
полосных операциях, а также в медицинском оборудовании, когда
Алексей ПАНКРАШКИН
Alexey.Pankrashkin@macrogroup.ru
давление меняется от атмосферного до 10 кПа. Устройство реализовано
Дмитрий КИЛОЧЕК на основе датчиков давления фирмы Freescale и программируемой системы
Геннадий РЕВИН на кристалле PSoC фирмы Cypress.

олупроводниковые датчики давле- циальными выходами, изменяющимися от- ботчики получили мощный инструмент для

П ния компании Freescale Semiconductor


изготавливаются с использованием
технологии МЭМС (формирование микро-
носительно половины напряжения питания.
Выход датчика является масштабируемым
и зависит от напряжения питания. При на-
проектирования (систему на кристалле по це-
не 8-битного микроконтроллера). В чипах
PSoC встроены массивы аналоговых и циф-
механических структур на поверхности пряжении питания 10 В полный диапазон ровых блоков, на порядок более функцио-
кристалла кремния). Датчики разработаны выходного напряжения, соответствующий нальных, чем фиксированная периферия.
для измерения относительного, дифферен- диапазону 10 кПа, составляет 25 мВ, а при Такие стандартные элементы микроконтрол-
циального, абсолютного вакуумного дав- питании 5 В – 12,5 мВ [1, 2]. леров, как АЦП, ЦАП, таймеры, счетчики,
лений влажных и сухих газов в диапазонах С появлением программируемых систем ШИМ, UART, легко реализуются в PSoC. Кро-
от 2,0 кПа до 0–1 МПа. Устройства созданы на кристалле (PSoC) фирмы Cypress разра- ме того, элементы, обычно не входящие в со-
на основе чувствительного элемента (преоб-
разователя) X-ducer, представляющего собой
Х-образную тензорезистивную структуру на
кремниевой мембране. X-ducer имеет хоро-
шие показатели линейности, чувствительно-
сти и отношения сигнал/шум. Он монтиру-
ется в пластмассовый корпус, который в за-
висимости от типа измеряемого давления
имеет один или два порта подвода давления
или выполнен без порта подвода давления.
Большинство датчиков давления Freescale
Semiconductor содержат элементы темпера-
турной компенсации характеристики, кали-
бровки смещения и диапазона, а также схемы
нормализации выходного сигнала, реализо-
ванные на том же кристалле, что и X-ducer.
В качестве датчиков давления в соответст-
вии с требованиями были выбраны два типа —
MPX5010 и MPX2010. Такие датчики являют-
ся относительными, они измеряют разность
между абсолютным давлением и местным ат-
мосферным давлением. Поскольку MPX5010
имеет встроенный усилитель, то обработка
выходного сигнала не представляет особой
сложности. Выходной сигнал для этого дат-
чика, соответствующий диапазону от 0
до 10 кПа, находится в диапазоне 0,2–4,7 В
при напряжении питания 5 В. В случае ис-
пользования датчика MPX2010 обработка его
выходного сигнала немного усложняется. Рис. 1
Датчик MPX2010 оснащен двумя дифферен-

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2006


KiT#60(7).qxd 8/4/2006 10:38 PM Page 103

датчики 103

став 8-битных микроконтроллеров, напри-


мер фильтры, усилители, генераторы случай- AREA bss (RAM,REL,CON) ; берем из таблицы целую часть рассчитанного значения P
mov A, [Pressure_V]
ных чисел также можно разместить в этих Pressure_V: blk 1 Index Pressure_Table
чипах. Соответственно, одна микросхема LCD_String: blk 9 ;8 characters + '\0'
PSoC заменяет несколько компонентов схе- ; переводим число в двоичном виде в десятичное
Hundreds : blk 1 ; не запакованное число
мы, построенной на стандартных микрокон- Tens : blk 1 lcall bin8_to_dec3unp_unsigned
троллерах. Все функции, внутренние соеди- Units : blk 1 mov [LCD_String],[Tens]
add [LCD_String], 30h
нения, внутренняя конфигурация и даже кон- area text (ROM,REL) mov [LCD_String+1],[Units]
такты ввода/вывода перепрограммируются add [LCD_String+1], 30h
пользователем. Данные системы — идеаль- .LITERAL mov [LCD_String+2],'.'
Pressure_Str:
ный вариант для обработки сигналов с раз- ASCIZ «Pressure» ; берем из таблицы дробную часть рассчитанного значения P
личных типов датчиков. Аналоговая перифе- Empty_Str: mov A, [Pressure_V]
ASCIZ « « Index Pressure_fr_Table
рия PSoC фирмы Cypress позволяет легко уси- .ENDLITERAL
ливать и оцифровывать аналоговые сигналы. lcall bin8_to_dec3unp_unsigned
Кроме того, наличие в библиотеке готовых export _main
_main: mov [LCD_String+3],[Tens]
модулей API-функций для управления LCD- add [LCD_String+3],30h
индикатором со стандартным протоколом ; инициализация LCD, усилителя и АЦП mov [LCD_String+4],[Units]
add [LCD_String+4],30h
Hitachi HD44780 позволяет без труда осуще- mov A, INSAMP_MEDPOWER mov [LCD_String+5],'k'
ствить отображение измеряемых величин. lcall INSAMP_Start mov [LCD_String+6],'P'
Присутствие USB-контроллера в одном кри- mov [LCD_String+7],0
mov A, PGA_MEDPOWER
сталле с PSoC позволяет создать гибкую си- lcall PGA_Start ; выводим значение P в десятичном виде на LCD
стему с минимальным набором внешних mov A,01h
mov A, ADC_MEDPOWER mov X,00h
компонентов и реализовать три независимых lcall ADC_Start lcall LCD_Position
канала измерения давления на трех датчиках mov A,>LCD_String
давления MPX5010 или MPX2010 и выводить mov A, DAC_MEDPOWER mov X,<LCD_String
call DAC_Start lcall LCD_PrString
значения на ЖК-индикатор, сравнивать дав- mov A, 13 ret
ление по трем независимым каналам в режи- call DAC_WriteBlind
;---------------------------------------------------------------------------
ме реального времени на экране PC через lcall LCD_Start ;---------------------------------------------------------------------------
USB-интерфейс [3], [4]. lcall LCD_Init bin8_to_dec3unp_unsigned:
Схема оцифровки в PSoC элементарна
;выводим строку «Pressure» на LCD mov [Hundreds], 0
(рис. 1): 8-битный АЦП интегрирующего ти- mov A,00h mov [Tens], 0
па и буферный усилитель для передачи сиг- mov X,00h .h:
lcall LCD_Position cmp A, 100
нала от контакта микросхемы к АЦП, что mov A,>Pressure_Str jc .t
обусловлено архитектурой PSoC. mov X,<Pressure_Str sub A, 100
lcall LCD_PrCString inc [Hundreds]
Зависимость выходного напряжения от дав-
jmp .h
ления для датчика MPX5010 имеет следую- M8C_EnableGInt .t:
щий вид: Vout = Vs (0,09 Q P + 0,02), где Vs — cmp A, 10
.loop: jc .u
напряжение питания. При Vs , равном 5 В, оп- mov A, 255 sub A, 10
ределить давление по выходному напряже- mov X, 255 inc [Tens]
.wait: ; программная задержка jmp .t
нию датчика можно следующим образом:
dec A .u:
P = (Vout – 0,2)/0,45. Эту зависимость легко за- jnc .wait mov [Units], A
дать в программе в табличном виде, предва- dec X ret
jnc .wait ;---------------------------------------------------------------------------
рительно рассчитав значения P для всех вы- ;---------------------------------------------------------------------------
ходных значений АЦП. Опорные напряже- lcall Measure_Pressure ; измеряем давление
lcall Show_Pressure ; выводим результат на LCD .LITERAL
ния для аналоговых блоков и, соответственно, Pressure_Table:
диапазон входных напряжений устанавлива- jmp .loop ; вечный цикл db 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
ется параметром Vref в среде PSoC Designer db 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 2,2,2,2, 2,2,2,2
db 2,2,2,2, 2,2,2,2, 2,2,2,2, 2,2,2,3, 3,3,3,3, 3,3,3,3, 3,3,3,3, 3,3,3,3
как Vref = (Vdd /2)±(Vdd /2), то есть размах вход- ;--------------------------------------------------------------------------- db 3,3,3,3, 3,3,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4, 4,5,5,5
ного сигнала равен напряжению питания [5]. ----- db 5,5,5,5, 5,5,5,5, 5,5,5,5, 5,5,5,5, 5,5,5,5, 6,6,6,6, 6,6,6,6, 6,6,6,6
;--------------------------------------------------------------------------- db 6,6,6,6, 6,6,6,6, 6,6,6,7, 7,7,7,7, 7,7,7,7, 7,7,7,7, 7,7,7,7, 7,7,7,7
Библиотечный модуль ADCINC настроен как ----- db 7,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8, 9,9,9,9, 9,9,9,9
8-разрядный АЦП. Выход модуля ADCINC ; функция измеряет давление db 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,10, 10,10,10,10, 10,10,10,10, 10,10,10,10,
может быть сконфигурирован либо как чис- 10,10,10,10
Measure_Pressure:
ло со знаком в дополнительном коде (от –127 Pressure_fr_Table:
до +127), либо как беззнаковое двоичное чис- and reg[AMX_IN], 0b11110011 db 0,0,0,0, 0,0,0,0, 0,0,0,4, 8,12,17,21, 26,30,34,39,
43,47,52,56, 61,65,69,74, 78,82,87,91
ло (от 0 до 254). В данном случае удобен вто- mov A, 1 db 96,0,4,9, 13,17,22,26, 31,35,39,44, 48,52,57,61, 66,70,74,79,
рой вариант, тогда выбор соответствующе- lcall ADC_GetSamples 83,87,92,96, 1,5,9,14, 18,22,27,31
го значения давления из таблиц осуществ- db 36,40,44,49, 53,57,62,66, 71,75,79,84, 88,92,97,1,
.wait_data_1: 6,10,14,19, 23,27,32,36, 41,45,49,54, 58,62,67,71
ляется инструкцией Index процессора M8C. lcall ADC_fIsDataAvailable db 76,80,84,89, 93,97,2,6, 10,15,19,24, 28,32,37,41,
Шаг дискретизации давления при использо- jz .wait_data_1 45,50,54,59, 63,67,72,76, 80,85,89,94, 98,2,7,11
db 15,20,24,29, 33,37,42,46, 50,55,59,64, 68,72,77,81,
вании 8-битного АЦП составляет примерно lcall ADC_wClearFlagGetData 85,90,94,99, 3,7,12,16, 20,25,29,34, 38,42,47,51
0,0437 кПа. mov [Pressure_V], A db 55,60,64,69, 73,77,82,86, 90,95,99,4, 8,12,17,21,
ret 25,30,34,39, 43,47,52,56, 60,65,69,74, 78,82,87,91
db 95,0,4,9, 13,17,22,26, 30,35,39,44, 48,52,57,61, 65,70,74,79,
include «m8c.inc» ; part specific constants and macros ;--------------------------------------------------------------------------- 83,87,92,96, 0,5,9,14, 18,22,27,31
include «memory.inc» ; Constants & macros for SMM/LMM ;--------------------------------------------------------------------------- db 35,40,44,49, 53,57,62,66, 70,75,79,84, 88,92,97,1,
; and Compiler ; функция выводит результат на LCD 5,10,14,19, 23,27,32,36, 40,45,49,54, 58,62,67,71
include «PSoCAPI.inc» ; PSoC API definitions for all User Modules Show_Pressure: .ENDLITERAL

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2006


KiT#60(7).qxd 8/4/2006 10:38 PM Page 104

104 датчики

Рис. 2

Рис. 3

В случае использования датчика MPX2010 пень усиления с коэффициентом 8, а модуль


.LITERAL
обработка его выходного сигнала немного ус- программируемого усилителя PGA — вто- Pressure_Table:
ложняется. Датчик MPX2010 имеет два диффе- рую, с коэффициентом усиления 48. Резуль- db 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,1
db 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,2, 2,2,2,2, 2,2,2,2
ренциальных выхода, изменяющихся относи- тирующий коэффициент усиления равен 384, db 2,2,2,2, 2,2,2,2, 2,2,2,2, 2,2,2,2, 3,3,3,3, 3,3,3,3, 3,3,3,3, 3,3,3,3
тельно половины напряжения питания. Выход при этом диапазон входного сигнала АЦП db 3,3,3,3, 3,3,3,3, 3,4,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4
db 4,4,5,5, 5,5,5,5, 5,5,5,5, 5,5,5,5, 5,5,5,5, 5,5,5,5, 5,5,5,6, 6,6,6,6
датчика является масштабируемым и зависит составляет Vcc /2 ±2,4 В. Соответственно зна- db 6,6,6,6, 6,6,6,6, 6,6,6,6, 6,6,6,6, 6,6,6,6, 7,7,7,7, 7,7,7,7, 7,7,7,7
от напряжения питания. При напряжении чение давления в килопаскалях можно опре- db 7,7,7,7, 7,7,7,7, 7,7,7,7, 7,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8
db 8,8,8,8, 8,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,10,10
питания 10 В полный диапазон выходного делить по формуле: P = (Vin – 0,1)Q10/4,9.
Pressure_fr_Table:
напряжения, соответствующий диапазону При использовании датчика MPX2010 про- db 0,0,0,0,
10 кПа, составляет 25 мВ, а при питании 5 В — грамма практически не изменится — доба- 0,0,4,8,
12,16,20,24, 28,32,36,40, 44,48,52,56, 60,64,68,72,
соответственно 12,5 мВ. Рекомендованная схе- вится лишь включение модуля INSAMP ин- 76,80,84,88, 92,96,0,4
ма включения, приведенная в [6], реализует- струкциями mov A, INSAMP_MEDPOWER db 8,12,16,20, 24,28,32,36, 40,44,48,52,
56,60,64,68, 72,76,80,84, 88,93,97,1,
ся внутри микросхемы PSoC без использова- и call INSAMP_Start, а также изменится содер- 05,09,13,17, 21,25,29,33
ния каких-либо внешних элементов (рис. 2). жимое таблицы рассчитанных значений дав- db 37,41,45,49, 53,57,61,65, 69,73,77,81,
85,89,93,97, 1,5,9,13,
Библиотечный модуль инструментально- ления. Шаг дискретизации давления в дан- 17,21,25,29, 33,37,41,45, 49,53,57,61
го усилителя INSAMP реализует первую сту- ном случае составляет примерно 0,0402 кПа.

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2006


KiT#60(7).qxd 8/4/2006 10:38 PM Page 105

датчики 105

перед собой цели описать готовое устройст-


db 65,69,73,77, 81,85,89,93, 97,1,5,9, во, а хотели показать на основе практическо-
13,17,22,26, 30,34,38,42,
46,50,54,58, 62,66,70,74, 78,82,86,90 го примера идеологию и преимущества ис-
db 94,98,2,6, 10,14,18,22,
26,30,34,38, 42,46,50,54, 58,62,66,70, 74,78,82,86,
пользования систем на кристалле фирмы
90,94,98,02, 6,10,14,18 Cypress, предназначенных для сенсорики
db 22,26,30,34, 38,42,46,50, 55,59,63,67,
71,75,79,83, 87,91,95,99, 3,7,11,15, и обработки сигналов с различных датчиков.
19,23,27,31, 35,39,43,47 Сейчас изготавливается установочный трех-
db 51,55,59,63, 67,71,75,79, 83,87,91,95,
99,3,7,11, 15,19,23,27, канальный вариант образца устройства
31,35,39,43, 47,51,55,59, 63,67,71,75 с USB-интерфейсом для передачи и обработ-
db 79,83,88,92, 96,0,4,8,
12,16,20,24, 28,32,36,40, 44,48,52,56, ки данных на PC. Тестирование модели прой-
60,64,68,72, 76,80,84,88, 92,96,0,4
.ENDLITERAL
дет в Военно-медицинской академии в Санкт-
Петербурге. ■

Схема устройства с датчиком MPX2010 Литература


и макет устройства приведены на рис. 3 и 4
соответственно. Авторы статьи не ставили 1. w
ww
.freescale.com/webapp/sps/site/
prod_summary.jsp?code=MPX5010&nodeId=
01126990368716
2. w
ww
.freescale.c
om/webapp/sps/site/
prod_summary.jsp?code=MPX2010&nodeId=
01126990368710
3. ww
w
.macro-peterburg.ru/cypress/PSoC/
PSoC.ht
ml
4. w
ww.cypress.c
om
5. Килочек Д. Проектирование на программируе-
мых системах на кристалле PSoC Cypress // Ком-
поненты и технологии. 2006. № 4.
6. Freescale Semiconductor Application Note AN4010.
Рис. 4 Low-pressure sensing using MPX2010 series pres-
sure sensors.

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2006