제품을 설계하다 보면 전압의 변동이나 혹은 Battery의 사용시간을 검토해야 합니다. 이런 일들을 진행하기 위해서는 꾸준히 전압을 측정해야 하기에 오늘은 아두이노(ARDUINO)의 ADC Pin을 이용하여 5Channel의 전압을 측정하는 법을 진행 하겠습니다.
Arduino UNO ADC Pin Map
▲Arduino uno ADC PIN
아두이노 우노(Arduino UNO)같은 경우는 총 6개의 ADC Pin을 가지고 있습니다. 즉, 6개의 아날로그 신호를 읽을 수 있다는 애기죠 이를 이용하기 위해서 Firmware작업을 진행합니다.
Arduino 전압측정 Firmaware작업▲ADC 전압측정 Setup
각 채널을 정수로 선언 -> ADC값을 선언 -> ADC를 전압으로 표현하기 위해 Float를 이용해 실수로 선언 -> ADC0 ~ 4번까지 사용설정 ->Searial통신 시작시 TEST Start를 뿌려주고 진행
▲ 전압측정 값 Serial로 날려줌
각 ADC채널로 읽어 드린 값을 Value1 ~5번이라고 표현 -> Value 1~5번은 ADC가 10BIT이기에 2^10=1024 값 으로 나눠 준다.(0.034는 그냥 제가 넣은 보정 값 입니다.) -> 계산된 출력 Vout 1~5번을 시리얼 통신을 통해서 출력한다.
Firmware작업은 비교작 아주 간단 합니다. 어떠한 조건문도 필요 없죠 단순히 측정만 하면 되기 때문입니다. 제대로 동작되는 것을 확인하기 위해서 아래와 같이 작업을 진행합니다.
전압측정 H/W작업▲ 전압측정 H/W작업
5개의 2.3V Battery를 측정해서 전압을 확인 해보겠습니다.
▲ 측정 간격을 1초로 진횅
측정 간격을 1초로 진행하니 5개의 각 data가 잘나오는 것을 확인했습니다. 단점이 있다면 Arduino에서 지원하는 시리얼 모니터를 통해서 진행할 경우 data가 3만~3만5천줄이 넘어가면 초기 DATA가 지워지는 현상이 보이네요 이 부분은 향후 다른 개선법을 찾아봐야 겠습니다.
[아두이노]를 이용하여 온도 값을 0.91인치 OLED에 Display하는 작업을 진행합니다.
▲ MLX90614측정 값 OLED에 Display된 이미지
위 작업은 최종적으로 작업이 끝난 사진입니다. 아래 부터는 온도를 OLED에 Display하는 작업내용 입니다.
1-1. MLX90614 - I2C
Melexis업체에서 개발한 MLX90614입니다. 온도측정 용도로 사용되며 Measurement Resolution은 0.02°C입니다.
0.02°C면 의료용으로도 사용할 수 있을것으로 보입니다. 아마, 체온에 가까운 온도범위는 정확도가 높고 고온에서 범위는 정확도가 낮을 것으로 보입니다.
▲MLX90614제품 구성도
SCL,SDA를 이용한 I2C통신 방식이며, VDD와 VSS사이에 0.1uF와 I2C풀업저항 4.7K옴이 각각 달려있으니 외부에 따로 작업할 필요는 없습니다. 만약 단품으로 구입하신다면 외부에 회로를 따로 작업해주셔야 합니다.
1-2. 0.91Inch OLED Module 128X32 - I2C
▲ 0.91inch OLED Module 128x32
0.91inch OLED Module이미지 입니다. 저는 2가지 Type중 저는 BLUE Type제품을 구매 하였습니다.
이 제품도 MLX90614와 마찬가지로 제품에 I2C라인 회로가 포함되어 있어 별도의 회로는 구성하지 않아도 됩니다.
(ARDUINO UNO)에 대한 설명은 많기 때문에 제외하겠습니다.
▲ Connection 구성도
Connection구성도는 I2C Line 풀업저항이 제품 내부에 있기에 비교적 간단합니다.
▲ Arduino UNO I2C Pin MAP
Arduino UNO Pin MAP은 위 이미지와 같이 A4는 SDA, A5는 SCL로 정의되어 있습니다.
MLX90614, OLED제품 VCC,GND(VSS),SDA,SCL을 Arduino UNO Board에 묶어주면 Connection은 끝입니다.
MLX90614와 OLED를 사용하기 위해서는 2가지의 라이브러리를 설치해줘야 합니다.
▲ 라이브러리 설치 작업
Arduino IDE를 실행시키고 Tool -> 라이브러리 관리를 실행 시킵니다.
▲ Adafruit_MLX90614 라이브러리 설치
먼저, 적외선 Sensor인 Adafruit_MLX90614라이브러리를 설치합니다.
▲ Adafruit SSD1306 라이브러리 설치
그 다음 작업으로 OLED 라이브러리 Adafruit SSD1306을 설치합니다. 저는 2개다 설치되어 있기에 옆에 초록색으로 INSTALLED라고 되어 있습니다.
▲ 최종 F/W
설치한 라이브러리들을 불러온 후 F/W를 간단하게 필요한기능 만가져다가 사용했습니다. Error부분은 없어도 됩니다. 주석은 달았으니 필요하신분은 참고하여 수정하시면 되며, 추가적으로 궁금한 부분이 있을 것 같아서 소스에 대한 설명을 조금 추가합니다.
▲ Adafruit_MLX90614.CPP파일
다운받으신Adafruit_MLX90614 라이브러리에 들어가시면 Adafruit_MLX90614.CPP,Adafruit_MLX90614.h파일이 있습니다.헤더파일은 정의된 내용이고 온도에 계산식을 보고싶은 분들은 .CPP파일이 있습니다. 여기서 Value가 TOBJ1과 TA가 있습니다.
MLX90614제품에는 이 2가지가 측정이 가능한데 TOBJ1은 실제 측정 온도이고 TA는 외부온도 입니다.
위 이미지는 외부온도에 따라서 오차율이 다르다는 것을 나타낸 이미지 입니다.
제가 위에 작성안 소스도 TOBJ1만 사용한 이유가 그때문입니다. 외부온도 까지 확인하면서 외부온도에 따른 보상해주는 계산식을 넣을 만큼 중요한 작업을 진행하는게 아니기 때문입니다. DATASHEET와 다운받은 소스파일을 보시면 이외에도 많은 수식적 용어가 들어가있으니 필요하신분은 확인하고 응용하시면 됩니다.
▲ MLX90614 OLED 온도 측정 동작 영상
동작 검토 결과 종이컵 물에 온도 손에 온도를 측정한 영상입니다. 실제로 이마 쪽을 측정하면 대략 36~36.58정도 나옵니다. 아무래도 이마쪽에 측두동맥이 있어서 정확이 되는 것 같습니다.
TC-3000(Bluetooth Tester)장비를 이용하여 제품의 RF성능을 측정하려 합니다.
Bluetooth 4.1 규격을 Test할 예정이며, 측정 항목은 아래와 갔습니다.
TX
-Output Power (TRM-LE/CA/01/C)
-Modulation characteristics (TRM-LE/CA/05/C)
-Carrier frequency offset and drift (TRM-LE/CA/06/C)
RX
-Receiver sensitivity (RCV-LE/CA/01/C)
-Maximum input signal level (RCV-LE/CA/06/C)
-PER Report Integrity (RCV-LE/CA/07/C)
6가지에 대한 측정항목에 대한 설명은 아래 제품을 측정하면서 설명 드리도록 하고, 위 항목은 Bluetooth Low Energy(BLE)에 대한 측정항목이니 참고하시길 바랍니다.(Direct Test Mode)
RF 작업을 진행하기 앞서서 먼저 RF 신호가 나오는 RF라인에서 TEST장비와 연결될 수 있게 작업을 진행해야 합니다.
▲ RF Connector 제품 연결 작업
BLE를 사용하는 제품이라면 Antenna가 기본적으로 있을텐데 Antenna나와 BEL제품 과 연결되는 RF라인을 제거 후 BLE RF라인과 RF Connector만 연결 합니다. 보통 Antenna가 연결된 상태에서 Connector를 다시는 분들도 있지만 제거 후 작업을 해야 간섭이 적습니다.
RF Connector부분의 내경에는 RF Line을 외경에는 GND를 연결 합니다. 이 부분에서 핵심은 GND를 최대한 RF라인과 가깝게 합니다. RF 매칭 Line과 GND가 멀어지게 되면 그 거리만큼 인덕터 영향이 있기 때문에 최대한 가깝게 작업 해줘야 합니다.
▲ TC-3000C 장비를 이용한 RF TEST Connection 환경
TC-3000C 장비를 이용한 RF TEST Connection 환경입니다. 보통 BLE RF TEST를 진행하게 되면 사용한 제품의 전용 소프트웨어가 필요합니다. 장비 메뉴얼과 전용 소프트웨어는 무료로 제공하니 Datasheet를 참고하여 진행 합니다.
주파수 대역 및 채널
BLE 2.4GHz 주파수 측정 대역은 2400~2485.MHz입니다. 2400~2485.MHz 범위 안의 채널에서 동작해야 한다는 의미 입니다.
▲ 2402~2480Mhz 0~39Channel BLE 2.4GHz 측정 범위
보통 RF TEST를 진행하면 위처럼 0~39 Channel LOW,MID,HIGH(2402,2440,2480)3가지 Channel을 확인 합니다. 2MHz 단위로 Channel은 구별 됩니다.
▲ Blutooth Specipicatio Version 4.1 Operation Frequency Band
outputpower(TRM-LE/CA/01/C)
4-1. 목적 및 설명
- Outputpower(TRM-LE/CA/01/C) BLE 트랜스미터의 경우 최대 전력 설정에서의 출력 전력 레벨은 아래 표와 같이 0.01mW (-20dBm) ~ 10mW (+10dBm)이어야합니다.
▲ Blutooth Specipicatio Version 4.1 Transmission Power
- 변조는 대역폭 비트 기간 곱 BT = 0.5 인 GFSK (Gaussian Frequency Shift Keying)입니다.변조 지수는 0.45와 0.55 사이 여야합니다.이진수 1은 양의 주파수 편차로 표시되고 이진수 0은 음의 주파수 편차로 표시됩니다.심벌 타이밍은 ± 20 ppm 미만이어야 합니다..(각 전송 Sequence에 대한 주파수 편차를 보기 위함)
5-2. 시험 조건
▼ ∆f1avg
- DUT Transmits Test Packets : 37 Octet Packet Payload
- Sequence : 1111 0000
▼ ∆f2Max and ∆f2avg
- DUT Transmits Test Packets : 37 Octet Packet Payload
- Sequence : 1010 1010
- Frequency: Low(2402), Mid(2440), High(2480)
5-3. 통과 판정
- 225KHz ≤ ∆f1avg ≤ 275KHz
- 10개의 Test Packet 대해 기록 된 모든 ∆f2Max 주파수 값의 99.9%이상이 185KHz보다 커야한다.
5-4. 장비 설정(d = ∆)
- Payload: 11110000 and 1010 bit patterns, Payload's length: 37 bytes, Number of packets: 10
- Modulation characteristics(TRM-LE/CA/05/C) 측정 Data
Sample
CH(MHz)
df1_avg(KHz)
df2_avg(KHz)
df2_min(KHz)
df2_rate(%)
df2/df1
Verdict
Sample 1
0(2402)
246.8
238.5
205.7
100.00
0.97
PASSED
19(2440)
247.5
240.2
207.8
100.00
0.97
PASSED
39(2480)
253.4
245.8
209.0
100.00
0.97
PASSED
Sample 2
0(2402)
243.3
234.4
192.6
100.00
0.96
PASSED
19(2440)
249.3
236.9
202.5
100.00
0.95
PASSED
39(2480)
254.0
240.5
202.4
100.00
0.95
PASSED
Sample 3
0(2402)
250.0
232.3
196.0
100.00
0.93
PASSED
19(2440)
255.5
241.0
203.4
100.00
0.94
PASSED
39(2480)
255.2
244.8
208.2
100.00
0.96
PASSED
Carrier Frequency offset and Drift(TRM-LE/CA/06/C)
6-1. 목적 및 설명
- 패킷 중 중심 주파수의 편차는 초기 주파수 오프셋과 드리프트를 포함하여 ± 150kHZ를 초과하지 않아야합니다.패킷 중 주파수 드리프트는 50kHZ 미만, 패킷 중 주파수 드리프트는 50kHZ 미만, 드리프트 속도는 400 HZ/us 미만이어야합니다. 패킷 내 송신기 중심 주파수 드리프트의 한계는 아래 표에 지정되어 있습니다.
▲ Blutooth Specipicatio Version 4.1 주파수 오프셋 및 드리프트
6-2. 시험 조건
- DUT Transmits Test Packets: 37 Octet Packet Payload
- Sequence: 1010 1010
- Frequency: Low(2402), Mid(2440), High(2480)
6-3. 통과 판정
- fTX – 150KHz ≤ fn ≤ fTX + 150Khz
- | f0 – fn | ≤ 50 KHz
- | f1 – f0 | ≤ 20 KHz and | fn – f(n-5) | n=6,7,8,…k ≤ 20 KHz
6-5. 장비 설정(d = ∆)
- Payload: 1010 bit patterns, Payload's length:37 bytes,
-Maximum input signal level (RCV-LE/CA/06/C) 측정 Data
Sample
CH(MHz)
pkts_sent
pkts_rcvd
PER(%)
Verdict
Sample 1
0(2402)
1500
1497
0.200
PASSED
19(2440)
1500
1498
0.133
PASSED
39(2480)
1500
1500
0.000
PASSED
Sample 2
0(2402)
1500
1384
7.733
PASSED
19(2440)
1500
1453
3.133
PASSED
39(2480)
1500
1440
4.000
PASSED
Sample 3
0(2402)
1500
1498
0.133
PASSED
19(2440)
1500
1497
0.200
PASSED
39(2480)
1500
1499
0.067
PASSED
9-1. 목적 및 설명
- PER 테스트는 테스터가 전송 한 일련의 연속 테스트 패킷 중에서 피 시험 기기가 수신 한 패킷 수를 세는 것에 근거한다.주파수 호핑이 비활성화 된 상태에서 테스터가 수행됩니다.PER = (피 시험 기기가 CRC를 통과 한 패킷 수 / 테스트에 의해 전송 된 총 패킷 수) 100 %
- Limit: pkts_sent >= 1500, 50.00% <= PER <= 65.40%
-PER Report Integrity (RCV-LE/CA/07/C)측정 Data
Sample
CH(MHz)
pkts_sent
pkts_rcvd
PER(%)
Verdict
Sample 1
0(2402)
1500
750
50.00
PASSED
19(2440)
1500
750
50.00
PASSED
39(2480)
1500
750
50.00
PASSED
Sample 2
0(2402)
1500
750
50.00
PASSED
19(2440)
1500
750
50.00
PASSED
39(2480)
1500
749
50.06
PASSED
Sample 3
0(2402)
1500
750
50.00
PASSED
19(2440)
1500
749
50.06
PASSED
39(2480)
1500
749
50.06
PASSED
Bluetooth Specification Version 4.1을 적용하여 검토한 결과 TX : Output Power, Modulation characteristics, Carrier frequency offset and drift RX : Receiver sensitivity, Maximum input signal level, PER Report Integrity 항목에 대한 규격에 적합함을 TC-3000장비를 이용해 확인 하였습니다.
TC-3000장비에는 이 외에도 Quick (OP+MOD+CFOD)이라는 측정항목이 있는데요 이 항목은 test조건이 비슷한 TX테스트 항목 Output power, Modulation Characteristics, Carrier frequency offset and drift를 테스트 시간을 단축하기 위해 일괄 측정하는 양산용 TEST Mode이므로 따로 Bluetooth Specification에 있는 항목은 아닙니다.
[E4407B]Spectrum Analyzer를 이용하여 Dialog Chip에 적용 되는 Crystal의 Crystal Trimming 작업을 진행 하려 합니다.
작업진행에 앞서 Crystal Trimming에 대해서 알아 보려합니다.
▲Oscillator Crystal Image
보통 크리스탈은 발진하여 주파수를 만들어 주는 역할을 합니다. 이 부품은 마이컴의 심장 역할이라고도 불리며 Clock이나 신호를 만들어 주는 중요한 부품 이죠 그렇다면 16MHz Crystal을 사용한다면 정확히 16Mhz의 중심 주파수가 나올까?라는 생각을 하게 됩니다. RF성능을 측정하거나 Clock을 이용하여 신호를 만들때 이 역할은 매우 중요하기 때문입니다.
이 역할을 최대한 오차 없이 하기위한 작업으로 Crystal을 Trimming을 해주어 중심 주파수에 근접하게 만들어주는 작업이 Crystal Trimming 입니다.
장비는 E4407B Spectrum Analyzer를 사용하여 측정 하였습니다. 아래 내용은 장비에 사용에 대한 간단한 설명이니 참고용으로 확인 하시면 됩니다.
▲ E4407B Spectrum Analyzer Front Panel key Image
1.
Power ON
7
Maker 기능 주파수와 진폭을 읽는 기능
Peake Search 가장 높은 진폭을 표시
2
Power OFF
8
측정영역 display 및 Channel설정
3
Frequency Channel 측정 주파수 설정
9
측정 화면 저장
4
X Scale Span Display 주파수 범위 설정
10
Alignment 및 장비 초기 Setup
5
Y Scale Amplitude Ref. Level 및 Offset 설정
11
측정 RF Cable 연결
6
Display 화면의 메뉴 선택 Button
12
reference signal of 50 MHz at –20 dBm.
▲ Display Description Image
No.
Description
Associated Function key
1
Reference level
Ref Level
2
Detector mode
Detector
3
V1 – Veiw1, S2,S3 – Trace 2,3
View/Trace
4
Center frequency or start frequency
Center Freq or Start Freq
5
Resolution bandwidth
Resolution BW Auto Man
6
Display 상태 표시 line
-
7
Video bandwidth
Video BW Auto Man
8
Frequency span 현재 display영역 주파수 범위
Span
9
Front Panel Image Key menu로 컨트롤 가능함
Front Panel Image Key 참고
10
Key menu title
Key 선택에 따라 달라짐
11
Marker amplitude
Maker
12
Marker frequency
Marker or Marker Count On Off
13
function display
Maker, Peak Search
시료 측정은 아래 그림과 같이 시료 측정 부위에 RF Probe를 이용하여 제품 주파수 영역을 측정 할 수 있습니다.
▲ 스팩트럼 시료 주파수 영역 측정 예시(Arduino)
Crystal Trimming작업은 DA14586제품에 적용된 16MHz Crystal 입니다. 조건내용을 간단하게 정리합니다.