전체 과정 P2 장비 조작법 따라하기 · 약 100분 · 초급

CH04샘플러 · 컬럼 · 검출기 설정

바이알을 트레이에 놓고 주입량을 정하며, 컬럼을 방향에 맞춰 장착 · 평형하고, 검출 파장과 램프를 설정하는 방법을 익힙니다.

선수 챕터: CH02 CH03

학습 목표#

  • 시료 양에 맞춰 바이알 · 셉타 캡 · 인서트를 고르고, 기포 없이 적정 높이로 채워 트레이의 위치 번호에 놓을 수 있습니다.
  • 시뮬레이터의 샘플러 설정 화면에서 주입량 · 니들 세척을 정하고, 주입 밸브의 Load → Inject 동작을 애니메이션으로 따라가며 설명할 수 있습니다.
  • 컬럼 라벨(충전제 · 길이 × 내경 · 입자 크기 · 최대 압력 · pH 범위)을 읽고, 유로 방향 → 입구 먼저 → 출구 순서로 장착한 뒤 30 °C 에서 평형시킬 수 있습니다.
  • 비어-람베르트 법칙(A = ε·b·c)으로 흡광도와 농도 · 광로 길이의 관계를 설명하고, 분석물 흡수와 용매 UV 컷오프를 함께 고려해 검출 파장을 고를 수 있습니다.
  • 램프 예열 · 피크 폭(응답 시간) · Balance(오토 제로) 를 설정하고, Python 으로 베이스라인의 노이즈 · 드리프트를 계산해 비교할 수 있습니다.

이론#

1교시 — 바이알 샘플러 설정과 컬럼 장착#

이 단원에서 할 일#

ch03 에서 이동상을 준비하고 펌프 압력이 안정되는 것까지 확인했습니다. 이제 이동상이 지나가는 길 위의 나머지 두 모듈, 바이알 샘플러(G7129A) 와 멀티컬럼 온도조절기(G7116A) 를 설정합니다. 이번 단원에서는 바이알을 준비해 트레이에 놓고, 주입량 · 니들 세척을 정한 뒤, C18 컬럼을 방향에 맞게 달고 평형(equilibration) 시킵니다. 마지막으로 Python 으로 컬럼 부피와 평형 시간을 계산합니다.

3D 모델 준비 상황

3D 장비 모델(assets/robot/robot.json)은 강좌 진행에 맞춰 추가됩니다. 차시 머리에 3D 뷰어 버튼이 보이지 않으면 아직 준비 중입니다. 그동안은 이 차시의 그림과 Playground 실습으로 같은 내용을 익히고, 모델이 준비되면 아래 따라하기를 다시 해 봅니다.

바이알 · 셉타 캡 · 인서트 고르기#

부품고르는 기준이 강좌의 기본값
바이알 (vial)샘플러 트레이에 맞는 크기. 빛에 약한 시료는 갈색(amber) 유리2 mL 투명 유리 바이알
셉타 캡 (septum cap)니들이 뚫고 들어가는 막. 안쪽 면이 시료와 닿으므로 PTFE 면이 시료 쪽을 향하게 끼웁니다. 여러 번 찌를 시료는 다시 막히는(resealing) 셉타를 씁니다스크루 캡 + PTFE/실리콘 셉타
인서트 (insert)시료가 적어(수백 µL 이하) 2 mL 바이알 바닥에서는 니들이 빨 수 없을 때 넣는 작은 내부 용기250 µL 유리 인서트 (필요할 때만)
  • 바이알 · 캡 · 인서트의 정확한 규격(지름 · 높이)은 트레이와 샘플러 모델이 정합니다. 실물에서는 애질런트 소모품 목록에서 G7129A 호환 제품을 확인합니다.
  • 셉타를 거꾸로 끼우면 실리콘 면이 시료(특히 유기 용매)에 닿아 불순물 피크가 생길 수 있습니다.
① 2 mL 바이알 (적정 높이) 캡 셉타 (PTFE / 실리콘) 시료 액면 - 어깨 아래 (약 2/3 ~ 3/4, 위는 여유 공간) 니들 끝 - 바닥에서 조금 위 그 아래 시료 = 빨 수 없는 양 ② 인서트 사용 (시료가 적을 때) 캡 인서트 (예: 250 µL, 뾰족한 바닥) 시료 100 ~ 150 µL 니들이 인서트 바닥에 닿지 않게 → 니들 높이 오프셋 확인 기포는 바이알 벽을 가볍게 톡톡 쳐서 위로 올려 보냅니다. 인서트 바닥의 기포는 니들이 공기를 빨게 만듭니다.
바이알 단면. 왼쪽: 2 mL 바이알에 어깨 아래까지 채운 모습. 오른쪽: 인서트에 소량 시료를 넣은 모습. 니들 끝은 바닥보다 조금 위에 멈춥니다.

시료를 채우는 높이와 기포 제거

  1. 시료는 바이알 어깨 아래(약 2/3 ~ 3/4) 까지 채웁니다. 가득 채우면 니들이 셉타를 뚫을 때 시료가 넘치거나 압력이 생깁니다.
  2. 너무 적게 채우면 니들 끝이 액면 위에 있어 공기를 빨아들입니다(주입량 부족 · 피크 면적 감소).
  3. 캡을 닫은 뒤 바이알을 세워 들고 벽을 손가락으로 가볍게 톡톡 쳐서 바닥 · 벽의 기포를 위로 올립니다. 인서트는 바닥이 뾰족해 기포가 잘 걸리므로 특히 확인합니다.
  4. 바이알 겉면에 시료 이름 · 날짜를 적습니다. 라벨 스티커가 두꺼우면 트레이 칸에 끼므로 얇은 라벨이나 바이알 전용 펜을 씁니다.

트레이 위치 번호와 시퀀스#

ch02 에서 본 것처럼, 시뮬레이터는 트레이를 앞줄 왼쪽부터 1, 2, 3, … 으로 번호를 매깁니다(실물 1260 의 위치 표기는 트레이 · 서랍 종류에 따라 다르므로 설명서의 트레이 그림을 확인합니다).

  • 장비는 바이알의 내용을 모릅니다. 오직 위치 번호로 바이알을 찾아가 시료를 빨아들입니다.
  • 그래서 나중에 시퀀스(ch05)를 만들 때 "1번 줄: 위치 1, 시료명 STD-1, 주입량 10 µL" 처럼 위치 번호와 시료 이름을 짝지어 적습니다. 바이알을 다른 칸에 놓으면 장비는 엉뚱한 시료를 엉뚱한 이름으로 기록합니다.
  • 이 강좌는 위치를 다음처럼 나눠 씁니다: 1 ~ 6 시료 · 표준물, 7 세척 바이알, 그 밖은 비워 둠.
트레이 배치표를 먼저 만듭니다

바이알을 놓기 전에 종이나 메모에 "위치 → 시료" 표를 먼저 적고, 그 표대로 놓은 뒤 3D 뷰에서 칸마다 마우스를 올려 다시 확인합니다. 바이알을 놓은 다음에 표를 만들면 놓은 순서와 기억이 섞입니다.

주입량 · 니들 세척과 주입 밸브 동작#

설정뜻정하는 기준
주입량 (injection volume)한 번에 컬럼으로 보내는 시료 부피 (µL)일반 분석 컬럼(4.6 mm)에서는 수 ~ 수십 µL. 많이 넣으면 피크가 커지지만 넓어지고, 컬럼 용량을 넘으면 모양이 일그러짐
흡입 · 토출 속도 (draw / eject speed)계량 장치가 시료를 빨고 내보내는 속도점도가 큰 시료는 흡입 속도를 낮춰 기포가 생기지 않게 함
니들 높이 오프셋 (needle height offset)니들 끝이 바이알 바닥에서 멈추는 높이를 위아래로 조정인서트를 쓰면 바닥이 높고 뾰족하므로 니들이 닿지 않게 확인
니들 세척 (needle wash)주입 전 니들 바깥에 묻은 시료를 씻어 다음 시료로 옮겨 가지(carryover) 않게 함세척 바이알(트레이의 한 칸) 또는 플러시 포트(옵션 장착 시)

시뮬레이터의 주입량 범위는 기본 계량 장치 기준 0.1 ~ 100 µL 입니다. 실물은 장착된 계량 장치 · 루프 옵션에 따라 다르므로 설명서를 확인합니다.

한 번 주입할 때 일어나는 일 — ch02 의 주입 밸브 그림을 시간 순서로 펼친 것입니다.

  1. Load: 이동상은 펌프 → 밸브 → 곧장 컬럼으로 흐릅니다. 시료 경로(니들 · 시트 · 계량 장치)는 흐름에서 떨어져 있습니다.
  2. 니들 세척(설정했다면): 니들이 세척 바이알에 잠깐 담갔다가 나옵니다.
  3. 흡입(draw): 니들이 정한 위치의 바이알로 가서 셉타를 뚫고, 계량 장치가 주입량만큼 시료를 빨아들입니다.
  4. 니들이 니들 시트로 돌아와 꽂힙니다.
  5. Inject: 밸브가 돌아가 이동상이 시료 경로를 지나며 시료를 컬럼으로 밀어 넣습니다. 이 순간이 크로마토그램의 시간 0 입니다.
  6. 애질런트 바이알 샘플러는 흐름 통과(flow-through) 방식이라 분석이 끝날 때까지 이동상이 시료 경로를 계속 씻어 냅니다(ch02 팁: Inject ≈ Mainpass).
파일 편집 보기 모드 도움말 모드 › 샘플러 설정 (Ctrl+Shift+L) A 바이알 트레이 (위에서 본 모습) 뒷줄 1237 89 앞줄 (사용자 쪽) - 앞줄 왼쪽부터 1, 2, 3 ... 색칠된 칸 = 바이알 있음 (1, 2: 시료 · 7: 세척 바이알) 칸에 마우스를 올리면 번호 · 바이알 종류 · 시료량 표시 칸 더블클릭 = 바이알 놓기 / 빼기 B 주입 설정 주입량 [ 10.0 ] µL (시뮬레이터 범위 0.1 ~ 100 µL) 흡입 속도 [ 100 ] µL/min · 토출 속도 [ 400 ] µL/min 니들 높이 오프셋 [ 0.0 ] mm · 바이알 위치 [ 1 ] 입력 후 Enter 로 적용 C 니들 세척 방식 ( ) 없음 (•) 세척 바이알 ( ) 플러시 포트(옵션) 세척 바이알 위치 [ 7 ] · 담그는 횟수 [ 1 ] D 주입 밸브 애니메이션 Load 실선: 펌프 → 곧장 컬럼 점선: 니들이 바이알에서 흡입 한 번 주입 ▶ 밸브 전환: V Load → 흡입 → Inject → 세척
샘플러 설정 화면 구성도. A 바이알 트레이 · B 주입 설정 · C 니들 세척 · D 주입 밸브 애니메이션.
영역이름하는 일
A바이알 트레이트레이를 위에서 본 지도. 칸을 더블클릭하면 바이알을 놓거나 뺍니다. 마우스를 올리면 번호 · 바이알 종류 · 시료량이 보입니다.
B주입 설정주입량 · 흡입/토출 속도 · 니들 높이 오프셋 · 시험 주입할 바이알 위치
C니들 세척세척 방식(없음 / 세척 바이알 / 플러시 포트)과 세척 바이알 위치
D주입 밸브 애니메이션밸브 유로를 실선(이동상) · 점선(시료 경로)으로 보여 줍니다. 한 번 주입 ▶ 을 누르면 위 1 ~ 5 단계를 천천히 재생합니다.

따라하기 — 바이알 놓고 주입 설정하기#

물:메탄올 70:30 이동상을 시료 대신 넣은 "바탕(blank)" 바이알 두 개와 세척 바이알 하나를 놓는다고 하겠습니다.

  1. ch03 처럼 펌프가 1 mL/min 에서 ● 안정 인 상태에서 시작합니다(펌프는 켜 둡니다).
  2. 상단 메뉴에서 <b>모드 › 샘플러 설정</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>L</kbd>)을 고릅니다. 3D 뷰가 샘플러 앞쪽으로 확대되고 A ~ D 영역이 나타납니다.
  3. <b>편집 › 바이알 준비</b>에서 바이알 2 mL 투명, 캡 스크루 + PTFE/실리콘, 인서트 없음, 시료량 1.2 mL, 시료 이름 BLANK-1 을 넣고 만들기를 누릅니다. 3D 뷰에 바이알이 손에 들린 상태로 나타납니다.
  4. 3D 뷰에서 바이알을 클릭한 채 <kbd>T</kbd> 를 눌러 톡톡 치기를 합니다. 바닥의 작은 기포가 위로 올라가 사라지는 것을 봅니다.
  5. 트레이 지도(A)에서 1번 칸을 더블클릭하면 바이알이 그 칸에 놓입니다. 3 ~ 5 단계를 반복해 BLANK-2 를 2번 칸에 놓습니다.
  6. 같은 방법으로 시료량 1.5 mL, 이름 WASH (메탄올) 인 세척 바이알을 만들어 7번 칸에 놓습니다.
  7. 주입 설정(B)에 주입량 10.0 µL, 흡입 속도 100 µL/min, 토출 속도 400 µL/min, 니들 높이 오프셋 0.0 mm, 바이알 위치 1 을 넣고 <kbd>Enter</kbd> 를 누릅니다.
  8. 니들 세척(C)에서 세척 바이알을 고르고 위치 7, 담그는 횟수 1 을 넣습니다.
  9. D 영역에서 한 번 주입 ▶ 을 누릅니다. 애니메이션이 Load → 세척(7) → 흡입(1) → 시트 복귀 → Inject 순서로 재생되는 것을 봅니다.
  10. 다시 Load 로 돌리려면 3D 뷰에서 주입 밸브를 클릭하고 <kbd>V</kbd> 를 누릅니다. 이벤트 로그에 Injection valve: Load 가 뜹니다.

3D 시뮬레이터 열기

3D 뷰어 열기

결과 확인#

  • 트레이 지도(A)에서 1 · 2 · 7번 칸이 색칠되어 있고, 마우스를 올리면 BLANK-1 · 1.2 mL 처럼 보입니다.
  • 이벤트 로그가 Needle wash (vial 7) → Draw 10.0 uL from vial 1 → Injection valve: Inject 순서입니다.
  • 주입 순간 펌프 제어 화면(ch03)의 압력 그래프에 아주 짧은 흔들림이 보입니다. 밸브가 돌면서 유로가 잠깐 바뀌기 때문이며 정상입니다.
자주 하는 실수
  • 바이알을 트레이 배치표와 다른 칸에 놓습니다 → 장비는 위치 번호만 보고 주입하므로 결과가 다른 시료 이름으로 저장됩니다.
  • 셉타를 거꾸로(실리콘 면이 시료 쪽) 끼웁니다 → 시뮬레이터는 Septum orientation 경고를 띄우고, 바탕 크로마토그램에 작은 불순물 피크를 넣습니다.
  • 인서트를 넣고 니들 높이 오프셋을 그대로 둡니다 → 니들이 인서트 바닥을 쳐서 Needle bottom contact 오류가 납니다(아래 오류 2번).
  • 세척 바이알 위치를 시료 칸(예: 1)으로 적습니다 → 니들이 시료에 담갔다가 다시 시료를 빨아 세척이 되지 않습니다.
동작메뉴 · 버튼단축키
샘플러 설정 화면 열기 / 닫기<b>모드 › 샘플러 설정</b><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>L</kbd>
바이알 만들기<b>편집 › 바이알 준비</b>—
바이알 톡톡 치기 (기포 제거)3D 뷰에서 바이알 선택 후<kbd>T</kbd>
바이알 놓기 / 빼기트레이 지도(A) 칸더블클릭
주입 밸브 Load ↔ Inject 전환3D 뷰에서 밸브 선택 후<kbd>V</kbd>
한 번 주입 (애니메이션)D 영역 한 번 주입 ▶—
입력값 적용입력 칸에서<kbd>Enter</kbd>

컬럼 정보 읽기#

컬럼 몸통이나 상자 · 성적서(certificate)에는 다음 정보가 적혀 있습니다. 이 강좌의 시뮬레이터 기본 컬럼은 C18, 150 × 4.6 mm, 5 µm 입니다.

항목예뜻
충전제 (stationary phase)C18 (옥타데실, ODS)실리카 입자 표면에 탄소 18개 사슬을 붙인 역상(reversed-phase) 충전제. 소수성이 큰 성분일수록 오래 붙잡습니다.
길이 × 내경150 × 4.6 mm길수록 분리는 좋아지지만 압력 · 분석 시간이 늘어납니다. 내경 4.6 mm 는 1 mL/min 정도 유속에 맞는 "일반 분석용" 크기입니다.
입자 크기5 µm작을수록 피크가 날카롭지만 압력이 크게 오릅니다.
최대 압력예: 400 bar이 값을 넘기면 충전층이 상할 수 있습니다. ch03 의 최대 압력 한계는 이보다 낮게 정합니다.
pH 범위예: pH 2 ~ 9실리카 기반 충전제는 범위를 벗어나면 결합상이 떨어지거나 실리카가 녹습니다.
온도 한계예: 60 °C컬럼마다 다릅니다.
일련번호 (S/N)—컬럼 사용 기록(주입 횟수 · 압력 변화)을 남길 때 씁니다.

위 표의 최대 압력 · pH · 온도는 예시입니다. 실제 컬럼은 제조사 성적서의 값을 따릅니다(확인 필요).

컬럼 장착 순서#

컬럼 라벨 읽기 입구 출구 C18 · 150 x 4.6 mm · 5 µm · 최대 400 bar · pH 2 - 9 유로 화살표 충전제 · 길이 x 내경 · 입자 크기 · 한계 장착 순서 1 방향 확인 화살표가 열교환기 → 검출기 쪽을 가리킴 2 입구 먼저 열교환기 출구 → 컬럼 입구 연결 출구는 아직 열어 둠 3 낮은 유속 0.2 mL/min 으로 흘려 출구에서 방울 확인 (공기 · 보관 용매 배출) 4 출구 연결 컬럼 출구 → 플로셀 입구, 문 닫기 30 °C · 1 mL/min 평형
컬럼 라벨 읽기와 장착 순서. 유로 화살표 확인 → 입구 먼저 연결 → 낮은 유속으로 출구에서 방울 확인 → 출구 연결.
  1. 유로 방향 확인 — 컬럼 몸통의 화살표(→)가 열교환기 쪽에서 검출기 쪽을 가리키게 잡습니다(ch02).
  2. 입구 먼저 — 열교환기 출구 캐필러리를 컬럼 입구에 연결합니다. 출구는 아직 연결하지 않습니다.
  3. 낮은 유속으로 밀어내기 — 0.2 mL/min 정도로 흘려 컬럼 출구에서 방울이 일정하게 떨어지는지 봅니다. 컬럼 안의 보관 용매와 공기가 이때 빠져나갑니다. 공기를 검출기 플로셀로 보내지 않으려는 것입니다.
  4. 출구 연결 — 방울이 고르게 떨어지면 펌프를 잠시 멈추고 컬럼 출구를 검출기 플로셀 입구 캐필러리에 연결합니다.
  5. 유속을 단계적으로 — 0.2 → 0.5 → 1.0 mL/min 으로 올리며 압력이 매끄럽게 따라 오르는지 봅니다. 한 번에 올리면 압력 충격이 생깁니다.
  6. 온도 설정 · 문 닫기 — 컬럼 온도를 정하고 온도조절기 문을 끝까지 닫습니다.
보관 용매와 이동상이 섞일 수 있는지 먼저 봅니다

새 컬럼이나 보관했던 컬럼에는 보관 용매(보통 아세토니트릴/물 같은 유기 용매 혼합액)가 들어 있습니다. 이동상에 완충액이 들어 있으면, 곧바로 흘렸을 때 ch03 에서 본 염 석출이 컬럼 안에서 일어납니다. 이때는 염이 없는 물/유기 용매 혼합액으로 먼저 바꾼 뒤 완충액 이동상을 흘립니다. 이번 차시의 이동상(물/메탄올)은 염이 없어 바로 흘려도 됩니다.

컬럼 온도 설정#

  • 온도조절기는 이동상을 열교환기에서 먼저 데운 뒤 컬럼에 넣습니다. 그래서 실온이 바뀌어도 머무름 시간이 흔들리지 않습니다.
  • 이 강좌는 30 °C 를 씁니다. 실온보다 조금 높게 잡아야 온도조절기가 "데우는 쪽"으로만 제어해 안정됩니다.
  • 온도가 오르면 이동상 점도가 줄어 압력이 낮아지고 머무름 시간이 짧아집니다. 그래서 온도가 설정값에 도달한 뒤에 평형을 판단합니다.
  • 실물 G7116A 의 설정 범위 · 승온 속도는 사용자 설명서를 확인합니다(확인 필요). 시뮬레이터는 실온 25 °C 에서 30 °C 까지 약 5분 걸리게 만들었습니다.

컬럼 평형 — 얼마나 흘려야 하나#

평형(equilibration)은 컬럼 충전제 표면이 지금 흐르는 이동상과 완전히 같은 상태가 되도록 충분히 흘리는 일입니다. 평형이 덜 되면 머무름 시간 · 베이스라인이 분석 내내 움직입니다.

  • 기준: 보통 컬럼 부피(column volume)의 10배 이상을 흘립니다. 이동상 조성이 크게 바뀌었거나 첨가제가 있으면 더 흘립니다.
  • 컬럼 부피(V₀, 빈 공간 부피) ≈ π · r² · L · ε — r 은 내경의 절반, L 은 길이, ε 은 충전층에서 용매가 차지하는 비율(전체 공극률, 다공성 실리카 컬럼은 대략 0.6 ~ 0.7).
  • 150 × 4.6 mm 컬럼: 빈 관 부피 = π × 0.23² × 15 ≈ 2.49 mL, ε = 0.65 이면 V₀ ≈ 1.6 mL. 10배는 약 16 mL 이므로 1 mL/min 에서 약 16분입니다.
  • 계산 시간만 믿지 않고, 압력과 베이스라인이 둘 다 안정한지 화면으로 확인합니다.
판단 항목어디서 보나안정 기준 (시뮬레이터)
압력펌프 제어(ch03) E 영역30 s 창 RSD 0.5 % 이하, 앞 창과 평균 차이 1 bar 이하
컬럼 온도컬럼 · 온도 화면설정값 ± 0.5 °C 안에서 2분 이상 유지
베이스라인검출기 설정(2교시) D 영역드리프트 · 노이즈가 2교시 기준 이하

따라하기 — C18 컬럼 장착과 평형#

  1. 펌프를 끕니다(<kbd>F9</kbd>). 컬럼을 연결 · 분리할 때는 항상 흐름을 멈춥니다.
  2. <b>모드 › 컬럼 · 온도</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd>)를 고릅니다. 3D 뷰가 온도조절기 문을 연 상태로 확대됩니다.
  3. 왼쪽 컬럼 보관함에서 C18 150 x 4.6 mm 5 um 을 고르고 <b>정보 보기</b>(<kbd>I</kbd>)로 라벨의 최대 압력 · pH 범위를 확인합니다.
  4. 컬럼을 끌어 컬럼 클립 위에 놓습니다. 화살표가 반대이면 놓기 전에 <kbd>R</kbd> 로 앞뒤를 뒤집습니다. 놓은 뒤 화살표가 열교환기 → 검출기 쪽인지 다시 봅니다.
  5. 열교환기 출구 캐필러리 끝을 끌어 컬럼 입구에 놓습니다. 로그에 Column inlet connected 가 뜹니다.
  6. 펌프 제어(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>F</kbd>)에서 유속 0.2 mL/min 을 넣고 펌프를 켭니다(<kbd>F9</kbd>). 3D 뷰에서 컬럼 출구 끝에 방울이 떨어지는 것을 확인합니다.
  7. 방울이 고르게 떨어지면 펌프를 끄고, 검출기 쪽 캐필러리(ST 0.12 × 280) 끝을 끌어 컬럼 출구에 놓습니다. 로그에 Column outlet connected.
  8. 컬럼 · 온도 화면에서 온도 30.0 °C 를 넣고 <kbd>Enter</kbd>, 3D 뷰에서 문을 클릭해 닫습니다(로그 Door closed).
  9. 펌프를 켜고 유속을 0.5 → 1.000 mL/min 으로 30 s 쯤 간격을 두고 올립니다. 최대 압력 한계는 컬럼 한계보다 낮은 350 bar 로 정합니다.
  10. 온도가 30.0 °C 에 도달하고, 펌프 압력이 ● 안정 이 될 때까지 기다립니다. 상태 막대의 평형 진행률(흘린 부피 ÷ 10 컬럼 부피)이 100 % 가 되는지도 봅니다.

결과 확인#

  • 이벤트 로그가 Column inlet connected → Column outlet connected → Temperature reached 30.0 C → Equilibration 100 % 순서입니다.
  • 펌프 압력은 컬럼을 달기 전(ch03)보다 높아졌고, 온도가 오르는 동안 조금 내려갔다가 일정해졌습니다.
  • 컬럼 · 온도 화면의 컬럼 카드에 방향 OK · 연결 2/2 · 30.0 C 가 표시됩니다.
자주 하는 실수
  • 컬럼 출구까지 한꺼번에 연결하고 펌프를 켭니다 → 컬럼 속 공기가 플로셀로 들어가 베이스라인에 뾰족한 잡음이 생깁니다.
  • 유속을 0 에서 곧바로 1 mL/min 으로 올립니다 → 압력이 급하게 올라 시뮬레이터가 Pressure ramp too fast 경고를 띄웁니다.
  • 컬럼 최대 압력을 확인하지 않고 ch03 의 400 bar 한계를 그대로 둡니다 → 한계가 컬럼 허용치와 같아 컬럼을 지켜 주지 못합니다.
  • 온도가 설정값에 닿기 전에 "압력이 안정됐다"고 판단합니다 → 온도가 오르며 압력이 계속 조금씩 내려갑니다.
동작메뉴 · 버튼단축키
컬럼 · 온도 화면 열기 / 닫기<b>모드 › 컬럼 · 온도</b><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd>
컬럼 정보 보기컬럼 선택 후 <b>정보 보기</b><kbd>I</kbd>
컬럼 앞뒤 뒤집기컬럼을 들고 있을 때<kbd>R</kbd>
펌프 켜기 / 끄기상단 도구 막대 펌프<kbd>F9</kbd>
온도조절기 문 열기 / 닫기3D 뷰에서 문 클릭<kbd>O</kbd> (선택 후)
되돌리기<b>편집 › 되돌리기</b><kbd>Ctrl</kbd>+<kbd>Z</kbd>

단축키는 시뮬레이터 버전에 따라 바뀔 수 있습니다. <b>도움말 › 단축키 목록</b>(<kbd>?</kbd>)에서 항상 최신 목록을 확인합니다.

Python 으로 컬럼 부피와 평형 시간 구하기#

python시뮬 실행 가능
import math

# 컬럼 크기 -> 빈 관 부피, 컬럼 부피(V0), 10 컬럼 부피를 흘리는 시간
def column_volume_mL(length_mm, id_mm, porosity=0.65):
    r_cm = id_mm / 10 / 2                 # mm -> cm, 반지름
    empty = math.pi * r_cm ** 2 * (length_mm / 10)   # cm3 = mL
    return empty, empty * porosity

for L, d in [(150, 4.6), (250, 4.6), (100, 2.1)]:
    empty, v0 = column_volume_mL(L, d)
    t10 = 10 * v0 / 1.0                   # 1 mL/min 일 때 분
    print(f"{L:3d} x {d:3.1f} mm  빈 관 {empty:5.2f} mL  V0 {v0:5.2f} mL  "
          f"10 CV = {10 * v0:5.1f} mL  ({t10:4.1f} min @ 1 mL/min)")
  • 2.1 mm 컬럼은 부피가 작아 1 mL/min 이면 금방 평형되지만, 실제로는 내경에 맞춰 유속도 낮춰 씁니다(대략 내경² 비율). 그 계산은 ch08 에서 다룹니다.
  • 공극률 0.65 는 설명용 가정값입니다. 실제 컬럼의 V₀ 는 머무르지 않는 성분이 나오는 시간(t₀) × 유속으로 잴 수 있으며, ch07 에서 다시 씁니다.

2교시 — 검출기 설정과 베이스라인 확인#

이 단원에서 할 일#

컬럼에서 나온 성분은 검출기 플로셀을 지나며 빛을 흡수합니다. 이번 단원에서는 흡광도의 원리(비어-람베르트 법칙)를 짧게 정리하고, 램프 켜기 · 예열 → 파장 고르기 → 피크 폭 설정 → Balance → 베이스라인 확인 순서로 VWD 를 설정합니다. 마지막으로 파장을 바꿔 가며 노이즈를 비교합니다.

흡광도와 비어-람베르트 법칙#

검출기는 플로셀에 들어간 빛의 세기(I₀)와 지나온 빛의 세기(I)를 비교해 흡광도(absorbance, A) 를 계산합니다.

  • A = log₁₀(I₀ / I) — 빛이 1/10 로 줄면 A = 1, 1/100 이면 A = 2 입니다. 단위는 AU(absorbance unit)이고, 크로마토그램에는 보통 mAU(1/1000 AU)로 표시합니다.
  • 비어-람베르트 법칙: A = ε · b · c
    • ε — 몰 흡광 계수(L·mol⁻¹·cm⁻¹). 물질과 파장마다 다릅니다.
    • b — 광로 길이(cm). 빛이 시료를 지나는 길이, 즉 플로셀 광로 길이입니다.
    • c — 농도(mol/L).
  • 흡광도는 농도에 비례합니다. 그래서 피크 면적으로 농도를 구할 수 있습니다(정량은 ch07).
  • 광로가 2배면 같은 농도에서 흡광도도 2배입니다. 1260 VWD · DAD 의 표준 플로셀 광로는 10 mm 이고, 감도를 높이는 긴 광로 플로셀 · 부피를 줄인 마이크로 플로셀이 따로 있습니다(모델별 사양은 설명서 확인).
python시뮬 실행 가능
# 비어-람베르트: A = e * b * c
eps = 9740            # L/(mol cm), 273 nm 부근 카페인 몰 흡광계수 (문헌 근사값)
mw = 194.19           # g/mol, 카페인
b_cm = 1.0            # 10 mm 플로셀

for mg_L in [1, 5, 10, 20, 50]:
    c = mg_L / 1000 / mw              # mol/L
    A = eps * b_cm * c
    print(f"{mg_L:3d} mg/L -> {c * 1e6:7.2f} umol/L -> A = {A:6.4f} AU = {A * 1000:7.1f} mAU")
  • 이것은 플로셀에 그 농도의 용액이 가득 찼을 때의 값입니다. 실제 피크는 컬럼에서 희석되어 꼭대기 높이가 이보다 훨씬 낮습니다.
  • 흡광도가 너무 크면(대략 1 ~ 2 AU 이상) 지나온 빛이 너무 약해 직선성이 깨집니다. 이 범위는 검출기 사양을 확인합니다(확인 필요).

램프 켜기 · 예열과 사용 시간#

1260 VWD · DAD 는 중수소(D2) 램프로 자외선을 냅니다.

항목내용
켜기데이터 시스템이나 장비에서 램프를 켭니다. 점등 직후에는 빛의 세기가 계속 변해 베이스라인이 흘러내립니다(드리프트).
예열베이스라인이 안정될 때까지 기다립니다. 실물은 보통 수십 분 ~ 1시간 정도 예열하라고 권장합니다(설명서 확인). 시뮬레이터는 30분 예열 막대를 보여 줍니다.
사용 시간램프가 켜져 있던 누적 시간. D2 램프는 쓸수록 세기가 줄어 노이즈가 커집니다. 시뮬레이터는 2000 h 를 교체 권장 시점으로 가정합니다.
강도(intensity) 확인램프 세기를 파장별로 재는 진단 기능. 세기가 낮아지면 램프 교체 · 플로셀 오염을 의심합니다. 교체 절차는 ch09 에서 다룹니다.
  • 램프를 자주 껐다 켜면 수명이 줄어듭니다. 하루 안에 분석이 이어지면 켜 둡니다.
  • 분석을 다 마친 날에는 끕니다. 밤새 켜 두면 사용 시간만 늘어납니다.

검출 파장 고르기#

흡광도 파장 (nm) 190 220 250 280 310 메탄올 (컷오프 약 205 nm) 아세토니트릴 (약 190 nm) 분석물 흡수 최대 (예: 273 nm) 210 254 273 컷오프 가까이(210 nm, 메탄올 이동상)에서는 바탕 흡광도와 노이즈가 커집니다. 모양은 개념도이며 실제 스펙트럼이 아닙니다.
파장에 따른 흡광도 개념도. 분석물의 흡수 최대 근처를 고르되, 이동상 용매의 UV 컷오프 가까이는 피합니다.

파장은 두 가지를 함께 보고 고릅니다.

  1. 분석물의 최대 흡수 파장(λmax) — 흡광도가 가장 커서 감도가 좋고, 파장이 조금 흔들려도 신호가 덜 변합니다. 예: 카페인은 273 nm 근처.
  2. 이동상 용매의 UV 컷오프(UV cutoff) — 용매 자체가 빛을 많이 흡수하기 시작하는 파장. 이보다 짧은 파장에서는 바탕 흡광도가 높아 노이즈 · 드리프트가 커집니다.
용매UV 컷오프 (대략)뜻
물190 nm 미만거의 문제없음
아세토니트릴 (ACN)약 190 nm짧은 파장(200 ~ 220 nm)에서도 쓰기 좋음
메탄올 (MeOH)약 205 nm210 nm 근처에서는 바탕 흡광도가 높아 노이즈 · 기울기 드리프트가 커짐
  • 컷오프 값은 용매 등급 · 제조사 표에 따라 조금씩 다릅니다. 사용하는 용매 병의 성적서 값을 확인합니다.
  • 254 nm 는 많은 방향족 화합물이 흡수하는 "범용" 파장으로 자주 씁니다. 최적 파장은 아니지만 처음 보는 시료를 훑어볼 때 편합니다.
  • ch03 에서 본 첨가제(포름산 · 아세트산 등)도 짧은 파장에서 흡수합니다. 짧은 파장을 쓸 때는 첨가제 컷오프도 확인합니다.

VWD 와 DAD 의 파장 설정#

항목VWD (G7114A, 기본)DAD (설정에서 바꿔 봄)
신호기본은 한 파장. 시간 프로그램으로 분석 중에 파장을 바꿀 수 있음여러 파장 신호(예: A ~ H)를 동시에 기록
대역폭 (bandwidth)고정신호마다 대역폭을 정함 (넓으면 노이즈↓, 선택성↓)
기준 파장 (reference)없음분석물이 흡수하지 않는 파장을 기준으로 빼서 드리프트를 줄임. 기준 파장에서도 흡수하는 성분이 있으면 피크가 작아지므로 주의
스펙트럼 저장없음없음 / 피크 정점 / 모두 중 선택. "모두"는 파일이 커지지만 나중에 아무 파장이나 다시 볼 수 있음
  • 정량이 목적이고 파장을 이미 알면 VWD 한 파장으로 충분합니다.
  • 피크가 한 성분인지(피크 순도) 확인하거나, 처음 보는 시료의 λmax 를 찾을 때 DAD 스펙트럼이 필요합니다.

피크 폭(peak width)과 응답 시간#

검출기 설정의 피크 폭(peak width) 은 "내가 볼 가장 좁은 피크의 폭"을 알려 주는 값입니다. 장비는 이 값에 맞춰 응답 시간(response time, 신호를 평활하는 시간) 과 데이터 속도(Hz) 를 정합니다.

피크 폭 설정 (시뮬레이터)응답 시간데이터 속도쓰는 경우
> 0.025 min0.5 s10 Hz아주 좁은 피크 (작은 입자 · 짧은 컬럼)
> 0.05 min1 s5 Hz좁은 피크
> 0.1 min2 s2.5 Hz이 강좌 기본 (150 × 4.6 mm, 5 µm)
> 0.2 min4 s1.25 Hz넓은 피크
  • 위 표는 시뮬레이터 값입니다. 실물의 선택지는 검출기 모델 · 펌웨어에 따라 다르므로 설명서의 표를 확인합니다(확인 필요).
  • 응답 시간이 길면 노이즈가 줄어 베이스라인이 매끈하지만, 좁은 피크는 낮고 넓게 뭉개지고 뒤로 밀립니다.
  • 응답 시간이 짧으면 피크 모양은 정확하지만 노이즈가 커지고 데이터 파일이 커집니다.
  • 기준: 가장 좁은 관심 피크의 반높이 폭에 맞는 설정을 고릅니다. 실습 D 에서 직접 비교합니다.

오토 제로(Balance)와 베이스라인 확인#

Balance(오토 제로, auto zero) 는 지금의 흡광도를 0 mAU 로 다시 맞추는 기능입니다. 이동상 자체의 바탕 흡광도를 빼 주어 크로마토그램이 0 근처에서 시작하게 합니다.

  • Balance 는 평형이 끝난 뒤, 분석을 시작하기 직전에 합니다. 평형 중에 하면 베이스라인이 계속 움직여 금방 다시 벗어납니다.
  • Balance 는 신호를 옮길 뿐 노이즈 · 드리프트를 줄이지 않습니다.

베이스라인은 두 숫자로 판단합니다.

지표뜻재는 법 (이 강좌)시뮬레이터 안정 기준
노이즈 (noise)짧은 시간의 무작위 흔들림30 s 구간마다 최댓값 − 최솟값(peak-to-peak), 그 평균0.1 mAU 이하
드리프트 (drift)시간에 따라 한쪽으로 꾸준히 움직임10분 신호에 직선 맞춤 → 기울기를 1시간당으로 환산2 mAU/h 이하

이 기준은 시뮬레이터가 정한 연습용 값입니다. 실물 검출기의 노이즈 · 드리프트 사양과 측정 조건은 설명서를 따릅니다.

파일 편집 보기 모드 도움말 모드 › 검출기 설정 (Ctrl+Shift+D) · 램프 켜기/끄기 F10 A 램프 상태 ● 켜짐 (예열 중 18 / 30 min) 사용 시간 1 240 h 강도 시험 › 결과 보기 B 파장 VWD 신호 [ 254 ] nm DAD 신호 A~H · 대역폭 · 기준 파장 스펙트럼 저장 [ 없음 ▾ ] DAD 로 바꾸면 칸이 늘어남 C 피크 폭 (응답 시간) [ >0.1 min (2 s) ▾ ] 데이터 속도 2.5 Hz D 실시간 신호 (mAU) mAU 시간 Balance 0 mAU 근처에서 다시 시작 노이즈 0.03 mAU · 드리프트 0.4 mAU/h · 흡광도(기준) 0.12 AU Balance (Z) ● 베이스라인 안정
검출기 설정 화면 구성도. A 램프 · B 파장 · C 피크 폭 · D 실시간 신호와 Balance.
영역이름하는 일
A램프켜짐/꺼짐, 예열 진행 막대, 누적 사용 시간. 강도 시험으로 램프 세기를 확인합니다.
B파장VWD 신호 파장(nm). DAD 로 바꾸면 신호 A ~ H, 대역폭, 기준 파장, 스펙트럼 저장 칸이 생깁니다.
C피크 폭피크 폭 선택 → 응답 시간 · 데이터 속도가 함께 표시됩니다.
D실시간 신호신호(mAU)와 노이즈 · 드리프트 · 바탕 흡광도, Balance 버튼, ● 베이스라인 안정 표시

따라하기 — 램프 켜기부터 베이스라인 확인까지#

  1. 1교시에서 평형시킨 상태(30 °C, 1 mL/min, 물:메탄올 70:30)에서 시작합니다.
  2. <b>모드 › 검출기 설정</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>D</kbd>)을 고릅니다. 3D 뷰가 VWD 앞판으로 확대되고 A ~ D 영역이 나타납니다.
  3. 램프가 꺼져 있으면 <kbd>F10</kbd> 을 누릅니다. 로그에 Lamp ignited 가 뜨고 A 영역에 예열 막대가 차오릅니다. 시뮬레이터에서 기다리는 시간을 줄이려면 <b>보기 › 시간 배속 › ×10</b>(<kbd>Ctrl</kbd>+<kbd>]</kbd>)을 씁니다.
  4. A 영역에서 사용 시간을 읽고, <b>검출기 설정 › 진단 › 강도 시험</b>을 눌러 결과가 Pass 인지 확인합니다.
  5. 파장(B)에 254 nm 를 넣고 <kbd>Enter</kbd> 를 누릅니다.
  6. 피크 폭(C)에서 >0.1 min (2 s) 를 고릅니다.
  7. 예열이 끝나면(로그 Lamp warm-up complete) D 영역의 Balance 를 누르거나 <kbd>Z</kbd> 를 누릅니다. 신호가 0 mAU 근처로 옮겨집니다.
  8. 10분(배속이면 1분) 동안 D 영역을 지켜보고 노이즈 · 드리프트 값을 읽습니다. ● 베이스라인 안정 이 뜨는지 확인합니다.
  9. <b>파일 › 그래프 내보내기 › CSV</b>로 신호 로그를 저장합니다. 파일 이름에 파장을 넣습니다(예: baseline_254nm.csv).

결과 확인#

  • 로그가 Lamp ignited → Lamp warm-up complete → Wavelength 254 nm → Balance 순서입니다.
  • D 영역에 노이즈 0.1 mAU 이하, 드리프트 2 mAU/h 이하, ● 베이스라인 안정 이 보입니다.
  • Balance 전 바탕 흡광도(예: 0.1 AU 안팎)가 표시되고, Balance 뒤 신호가 0 mAU 근처입니다.
자주 하는 실수
  • 램프를 켜자마자 Balance 하고 분석을 시작합니다 → 예열 중이라 베이스라인이 계속 흘러내립니다.
  • 메탄올 이동상에서 205 nm 같은 컷오프 근처 파장을 고릅니다 → 바탕 흡광도가 높고 노이즈가 커서 작은 피크가 묻힙니다.
  • 피크 폭을 가장 넓은 값(> 0.2 min)으로 두면 "베이스라인이 예뻐진다"고 그대로 씁니다 → 좁은 피크가 낮고 넓어져 분리가 나빠 보입니다.
  • Balance 로 드리프트를 없앴다고 생각합니다 → Balance 는 0 으로 옮길 뿐이며, 드리프트는 곧 다시 나타납니다.
동작메뉴 · 버튼단축키
검출기 설정 화면 열기 / 닫기<b>모드 › 검출기 설정</b><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>D</kbd>
램프 켜기 / 끄기상단 도구 막대 램프<kbd>F10</kbd>
Balance (오토 제로)D 영역 Balance<kbd>Z</kbd>
램프 강도 시험<b>검출기 설정 › 진단 › 강도 시험</b>—
시간 배속 올리기 / 내리기<b>보기 › 시간 배속</b><kbd>Ctrl</kbd>+<kbd>]</kbd> / <kbd>Ctrl</kbd>+<kbd>[</kbd>
신호 로그 저장 (CSV)<b>파일 › 그래프 내보내기 › CSV</b>—
검출기 종류 바꾸기 (VWD ↔ DAD)<b>설정 › 장비 구성 › 검출기</b>—

Python 으로 노이즈와 드리프트 구하기#

D 영역이 하는 계산을 직접 해 봅니다. 신호를 30 s 구간으로 나눠 peak-to-peak 노이즈를 구하고, 전체 신호에 직선을 맞춰 드리프트를 구합니다.

python시뮬 실행 가능
import numpy as np

# 시뮬레이터 CSV 형식과 같은 베이스라인 (2.5 Hz, 10분)
rng = np.random.default_rng(4)
hz = 2.5
t = np.arange(0, 600, 1 / hz)                 # s
signal = 0.0003 * t + rng.normal(0, 0.008, t.size)   # mAU: 느린 기울기 + 무작위 흔들림

def noise_pp(t, y, seg_s=30):
    vals = []
    for s in np.arange(0, t[-1], seg_s):
        w = y[(t >= s) & (t < s + seg_s)]
        if w.size > 2:
            vals.append(w.max() - w.min())
    return float(np.mean(vals))

slope, intercept = np.polyfit(t, signal, 1)   # mAU / s
print(f"노이즈 (30 s 구간 p-p 평균): {noise_pp(t, signal):.3f} mAU")
print(f"드리프트: {slope * 3600:.2f} mAU/h")
  • np.polyfit(t, y, 1) 은 1차식(직선) 맞춤으로 [기울기, 절편] 을 돌려줍니다. 기울기 × 3600 이 1시간당 드리프트입니다.
  • p-p 노이즈는 점이 많을수록 커지는 성질이 있으므로, 비교할 때는 같은 구간 길이 · 같은 데이터 속도로 잽니다.

실습 (시뮬레이터)#

실습 A — C18 컬럼 장착 · 30 °C 평형과 평형 시간 계산 (1교시)
  1. 1교시 따라하기 1 ~ 10단계대로 C18 150 × 4.6 mm, 5 µm 컬럼을 방향에 맞게 달고, 30 °C · 1 mL/min 에서 평형시킵니다.
  2. 이벤트 로그에서 펌프를 1 mL/min 으로 올린 시각과 Equilibration 100 % 가 뜬 시각을 적습니다.
  3. 아래 코드의 TODO 를 채워 컬럼 부피 · 10 CV 부피 · 평형 시간을 구하고, 시뮬레이터의 시간과 비교합니다.
  4. 추가로 조성을 바꿀 때를 대비해 20 CV 로 평형하면 몇 분인지도 구합니다.
python시뮬 실행 가능
import math

length_mm, id_mm = 150, 4.6
porosity = 0.65            # 전체 공극률 (가정값)
flow_mL_min = 1.0
n_cv = 10

empty_mL = 0               # TODO: 빈 관 부피 = pi * r^2 * L  (cm 단위로 계산하면 mL)
v0_mL = 0                  # TODO: 컬럼 부피 = 빈 관 부피 * 공극률
need_mL = 0                # TODO: n_cv 배 부피
minutes = 0                # TODO: 그 부피를 흘리는 시간

print(f"빈 관 {empty_mL:.2f} mL, V0 {v0_mL:.2f} mL")
print(f"{n_cv} CV = {need_mL:.1f} mL -> {minutes:.1f} min @ {flow_mL_min} mL/min")
풀이
python시뮬 실행 가능
import math

length_mm, id_mm = 150, 4.6
porosity = 0.65
flow_mL_min = 1.0

r_cm = id_mm / 10 / 2
empty_mL = math.pi * r_cm ** 2 * (length_mm / 10)
v0_mL = empty_mL * porosity
print(f"빈 관 {empty_mL:.2f} mL, V0 {v0_mL:.2f} mL")

for n_cv in (10, 20):
    need_mL = n_cv * v0_mL
    minutes = need_mL / flow_mL_min
    print(f"{n_cv} CV = {need_mL:.1f} mL -> {minutes:.1f} min @ {flow_mL_min} mL/min")

# 빈 관 부피를 기준으로 잡는 실험실도 있습니다 (더 보수적)
print(f"(빈 관 기준 10배 = {10 * empty_mL:.1f} mL -> {10 * empty_mL / flow_mL_min:.1f} min)")

빈 관 부피는 약 2.49 mL, V₀ 는 약 1.62 mL 이므로 10 CV 는 약 16 mL, 1 mL/min 에서 약 16분입니다(20 CV 는 약 32분). 시뮬레이터의 평형 진행률은 V₀ 기준이지만, 컬럼 온도가 30 °C 에 닿을 때까지 기다리면 실제 걸린 시간은 이보다 길 수 있습니다. 시간보다 압력 · 온도 · 베이스라인 안정을 함께 보고 판단합니다.

실습 B — 바이알 하나로 몇 번 주입할 수 있을까 (1교시, numpy)

2 mL 바이알에 시료 1.2 mL 를 넣었습니다. 니들 끝 아래에 남아 빨 수 없는 양이 약 0.1 mL 이고, 주입 한 번에 주입량 + 여분 5 µL(니들 · 시트를 채우는 양, 가정값)가 빠져나간다고 합시다. 주입량 5 · 10 · 20 · 50 µL 일 때 몇 번 주입할 수 있는지 구하고, 같은 시료를 250 µL 인서트(시료 150 µL, 빨 수 없는 양 약 10 µL)에 넣으면 어떻게 되는지 비교합니다.

python시뮬 실행 가능
import numpy as np

inj_uL = np.array([5, 10, 20, 50])
extra_uL = 5                     # 주입마다 더 빠지는 양 (가정값)

vial_uL, dead_vial_uL = 1200, 100
insert_uL, dead_insert_uL = 150, 10

n_vial = 0     # TODO: (시료량 - 빨 수 없는 양) // (주입량 + 여분), 주입량 배열 전체에 대해
n_insert = 0   # TODO: 인서트에 대해 같은 계산

print(f"주입량 (uL): {inj_uL}")
print(f"2 mL 바이알 : {n_vial}")
print(f"인서트      : {n_insert}")
풀이
python시뮬 실행 가능
import numpy as np

inj_uL = np.array([5, 10, 20, 50])
extra_uL = 5

vial_uL, dead_vial_uL = 1200, 100
insert_uL, dead_insert_uL = 150, 10

n_vial = (vial_uL - dead_vial_uL) // (inj_uL + extra_uL)
n_insert = (insert_uL - dead_insert_uL) // (inj_uL + extra_uL)

print(f"주입량 (uL): {inj_uL}")
print(f"2 mL 바이알 : {n_vial}")
print(f"인서트      : {n_insert}")

# 시료가 150 uL 밖에 없는데 인서트 없이 2 mL 바이알에 넣으면?
print("인서트 없이 150 uL :", np.maximum((150 - dead_vial_uL) // (inj_uL + extra_uL), 0))

1.2 mL 바이알은 10 µL 주입으로 73번, 인서트(150 µL)는 9번 주입할 수 있습니다. 시료가 150 µL 뿐인데 인서트 없이 2 mL 바이알에 넣으면 빨 수 있는 양이 50 µL 밖에 안 되어 10 µL 로도 3번이 한계이고, 액면이 낮아 니들이 공기를 빨 위험이 큽니다. 시료가 적으면 인서트를 씁니다. 같은 바이알을 여러 번 찌르면 셉타 조각 · 증발도 생기므로, 반복 주입이 많으면 바이알을 나눠 놓습니다.

확인 문제 1

C18 컬럼(150 × 4.6 mm)을 장착하는 순서로 가장 알맞은 것은?

  1. 입구 · 출구를 모두 연결하고 1 mL/min 으로 바로 흘린다
  2. 출구를 먼저 검출기에 연결하고, 입구를 연결한 뒤 1 mL/min 으로 흘린다
  3. 화살표 방향을 확인하고 입구를 먼저 연결한 뒤, 낮은 유속으로 출구에서 방울을 확인하고 출구를 연결한다
  4. 화살표 방향과 관계없이 연결하고, 압력이 높으면 뒤집는다
정답 보기③ — 방향 확인 → 입구 먼저 → 낮은 유속으로 공기 · 보관 용매를 밀어내 출구에서 방울 확인 → 출구 연결 순서입니다. ①②는 컬럼 속 공기가 플로셀로 들어가고 압력 충격이 생깁니다. ④ 거꾸로 흘리면 입구 쪽 입자가 충전층을 흐트러뜨릴 수 있습니다.
확인 문제 2

샘플러 설정에서 세척 바이알을 7번에 놓고 주입 위치를 1번으로 정했습니다. 그런데 시퀀스의 1번 줄에 시료 이름 STD-1 을 적었고, 실제로 STD-1 바이알은 2번 칸에 놓았습니다. 무슨 일이 생길까요?

  1. 장비가 바이알 라벨을 읽어 자동으로 2번 칸의 STD-1 을 찾아 주입한다
  2. 1번 칸의 바이알이 주입되고, 그 결과가 STD-1 이라는 이름으로 저장된다
  3. 7번 세척 바이알이 주입된다
  4. 이름이 맞지 않아 주입이 취소된다
정답 보기② — 장비는 바이알의 내용이나 글씨를 모르고 **위치 번호**로만 찾아갑니다. 그래서 1번 칸에 있던 다른 시료가 STD-1 이름으로 기록됩니다. 바이알을 놓기 전에 위치 → 시료 배치표를 만들고, 놓은 뒤 트레이 지도에서 다시 확인합니다.
실습 C — 검출 파장 210 · 254 · 273 nm 에서 베이스라인 노이즈 비교 (2교시)
  1. 2교시 따라하기 1 ~ 7단계로 램프를 예열하고, 이동상 물:메탄올 70:30, 30 °C, 1 mL/min, 피크 폭 >0.1 min (2 s) 로 맞춥니다.
  2. 파장(B)을 210 nm 로 바꾸고 <kbd>Enter</kbd> → 2분 기다린 뒤 Balance(<kbd>Z</kbd>) → 10분 동안 신호를 기록하고 CSV 로 저장합니다(baseline_210nm.csv).
  3. 같은 방법으로 254 nm, 273 nm 에서도 기록합니다. 이동상 · 유속 · 온도 · 피크 폭은 바꾸지 않습니다.
  4. 아래 코드의 TODO 를 채워 파장별 바탕 흡광도 · 노이즈 · 드리프트 표를 만듭니다. 시뮬레이터가 준비되지 않았다면 코드가 만든 예시 신호로 진행합니다.
  5. 표를 보고 "이 이동상에서 210 nm 를 쓰면 어떤 문제가 생기는지" 한 문장으로 적습니다.
python시뮬 실행 가능
import numpy as np

# 파장별 베이스라인 예시 - 시뮬레이터 CSV 의 신호 열과 같은 형식 (2.5 Hz, 10분)
rng = np.random.default_rng(21)
hz = 2.5
t = np.arange(0, 600, 1 / hz)
# 파장: (Balance 전 바탕 흡광도 AU, 노이즈 크기 mAU, 드리프트 mAU/h) - 시뮬레이터 모델 값
model = {210: (0.62, 0.060, 4.0), 254: (0.05, 0.008, 0.6), 273: (0.03, 0.007, 0.5)}
logs = {}
for wl, (bg, sd, dr) in model.items():
    logs[wl] = (bg, dr / 3600 * t + rng.normal(0, sd, t.size))

def noise_pp(t, y, seg_s=30):
    # TODO: 30 s 구간마다 (최댓값 - 최솟값) 을 구해 평균을 돌려주세요
    return 0.0

def drift_per_h(t, y):
    # TODO: np.polyfit 으로 기울기(mAU/s)를 구해 1시간당 값으로 돌려주세요
    return 0.0

print("파장(nm) | 바탕 흡광도(AU) | 노이즈 p-p(mAU) | 드리프트(mAU/h) | 판정")
for wl, (bg, y) in logs.items():
    n, d = noise_pp(t, y), drift_per_h(t, y)
    ok = "안정" if (n <= 0.1 and abs(d) <= 2) else "불안정"
    print(f"{wl:8d} | {bg:15.2f} | {n:15.3f} | {d:15.2f} | {ok}")
풀이
python시뮬 실행 가능
import numpy as np

rng = np.random.default_rng(21)
hz = 2.5
t = np.arange(0, 600, 1 / hz)
model = {210: (0.62, 0.060, 4.0), 254: (0.05, 0.008, 0.6), 273: (0.03, 0.007, 0.5)}
logs = {}
for wl, (bg, sd, dr) in model.items():
    logs[wl] = (bg, dr / 3600 * t + rng.normal(0, sd, t.size))

def noise_pp(t, y, seg_s=30):
    vals = []
    for s in np.arange(0, t[-1], seg_s):
        w = y[(t >= s) & (t < s + seg_s)]
        if w.size > 2:
            vals.append(w.max() - w.min())
    return float(np.mean(vals))

def drift_per_h(t, y):
    slope, _ = np.polyfit(t, y, 1)
    return slope * 3600

print("파장(nm) | 바탕 흡광도(AU) | 노이즈 p-p(mAU) | 드리프트(mAU/h) | 판정")
for wl, (bg, y) in logs.items():
    n, d = noise_pp(t, y), drift_per_h(t, y)
    ok = "안정" if (n <= 0.1 and abs(d) <= 2) else "불안정"
    print(f"{wl:8d} | {bg:15.2f} | {n:15.3f} | {d:15.2f} | {ok}")

n210 = noise_pp(t, logs[210][1])
n273 = noise_pp(t, logs[273][1])
print(f"210 nm 노이즈는 273 nm 의 약 {n210 / n273:.0f} 배")

210 nm 는 메탄올의 UV 컷오프(약 205 nm)에 가까워 바탕 흡광도가 높고, 지나오는 빛이 약해 노이즈가 수 배 커지며 드리프트도 기준(2 mAU/h)을 넘습니다. 254 · 273 nm 는 바탕 흡광도가 낮고 노이즈 · 드리프트가 모두 기준 이하입니다. 210 nm 에서 분석해야 한다면 컷오프가 더 짧은 아세토니트릴로 이동상을 바꾸는 방법을 생각합니다(조건 최적화는 ch08). 이 예시의 모델 값은 시뮬레이터가 쓰는 연습용 값이며, 실물 수치는 장비 · 용매 로트마다 다릅니다.

실습 D — 피크 폭(응답 시간) 설정이 피크와 노이즈에 주는 영향 (2교시, numpy)

반높이 폭 약 0.1 min(6 s)인 피크 하나에 노이즈가 섞인 신호를 만들고, 응답 시간 0.5 · 2 · 8 s 로 평활했을 때 피크 높이 · 피크 꼭대기 시간 · 노이즈가 어떻게 바뀌는지 표로 봅니다. 응답 시간은 1차 지연 필터(신호가 새 값을 천천히 따라가는 필터)로 흉내 냅니다.

python시뮬 실행 가능
import numpy as np

rng = np.random.default_rng(3)
dt = 0.1                                     # s, 원 신호 간격
t = np.arange(0, 120, dt)
fwhm = 6.0                                   # s, 반높이 폭
sigma = fwhm / 2.355
true = 20 * np.exp(-0.5 * ((t - 60) / sigma) ** 2)   # mAU
raw = true + rng.normal(0, 0.15, t.size)

def lag_filter(y, tau_s):
    # TODO: out[i] = out[i-1] + a * (y[i] - out[i-1]),  a = dt / (tau_s + dt)
    return y.copy()

print("응답시간(s) | 피크 높이(mAU) | 꼭대기 시간(s) | 노이즈 SD(mAU)")
for tau in (0.5, 2, 8):
    f = lag_filter(raw, tau)
    base = f[(t > 20) & (t < 40)]            # 피크 앞 구간 = 베이스라인 (필터 시작 구간 제외)
    print(f"{tau:11.1f} | {f.max():14.2f} | {t[f.argmax()]:14.1f} | {base.std():14.3f}")
풀이
python시뮬 실행 가능
import numpy as np

rng = np.random.default_rng(3)
dt = 0.1
t = np.arange(0, 120, dt)
fwhm = 6.0
sigma = fwhm / 2.355
true = 20 * np.exp(-0.5 * ((t - 60) / sigma) ** 2)
raw = true + rng.normal(0, 0.15, t.size)

def lag_filter(y, tau_s):
    a = dt / (tau_s + dt)
    out = np.empty_like(y)
    out[0] = y[0]
    for i in range(1, y.size):
        out[i] = out[i - 1] + a * (y[i] - out[i - 1])
    return out

print("응답시간(s) | 피크 높이(mAU) | 꼭대기 시간(s) | 노이즈 SD(mAU)")
for tau in (0.5, 2, 8):
    f = lag_filter(raw, tau)
    base = f[(t > 20) & (t < 40)]
    print(f"{tau:11.1f} | {f.max():14.2f} | {t[f.argmax()]:14.1f} | {base.std():14.3f}")
print(f"참값: 높이 20.00 mAU, 꼭대기 60.0 s")

응답 시간이 길어질수록 노이즈 SD 는 줄지만, 피크는 낮아지고 꼭대기가 뒤로 밀립니다. 8 s 에서는 높이가 크게 줄고 꼭대기가 수 초 늦어집니다. 반높이 폭이 6 s(0.1 min)인 피크에는 2 s(>0.1 min) 정도가 노이즈와 모양 사이의 균형점입니다. 피크가 좁아지는 조건(작은 입자 컬럼 등)에서는 피크 폭 설정도 함께 줄입니다.

확인 문제 3

물:메탄올 이동상으로 분석하면서 검출 파장을 205 nm 로 정했더니 베이스라인 노이즈가 크고 계속 흘러내립니다. 가장 알맞은 설명과 조치는?

  1. 램프가 고장 났으므로 바로 교체한다
  2. 메탄올의 UV 컷오프(약 205 nm)에 가까워 바탕 흡광도가 높기 때문이므로, 더 긴 파장을 쓰거나 아세토니트릴로 바꾸는 것을 검토한다
  3. Balance 를 여러 번 누르면 노이즈가 없어진다
  4. 피크 폭을 가장 좁은 값으로 바꾸면 노이즈가 줄어든다
정답 보기② — 컷오프 근처에서는 용매가 빛을 많이 흡수해 지나오는 빛이 약하고, 그만큼 노이즈 · 드리프트가 커집니다. ③ Balance 는 0 으로 옮길 뿐 노이즈를 줄이지 않습니다. ④ 피크 폭을 좁히면 응답 시간이 짧아져 노이즈는 오히려 커집니다. ① 다른 파장에서도 같은 증상이 있을 때 램프 강도 시험으로 확인합니다.
확인 문제 4

10 mm 플로셀에서 어떤 성분의 흡광도가 0.20 AU 였습니다. 같은 용액을 광로 길이가 6 mm 인 플로셀로 재면 흡광도는 얼마일까요? (다른 조건은 같음)

  1. 0.12 AU
  2. 0.20 AU
  3. 0.33 AU
  4. 0.06 AU
정답 보기① — A = ε·b·c 에서 ε 와 c 가 같으면 흡광도는 광로 길이 b 에 비례합니다. 0.20 × 6/10 = 0.12 AU 입니다. 광로가 짧은 플로셀은 감도가 낮지만 부피가 작아 좁은 피크를 덜 넓힙니다.

자주 나는 오류와 해결#

1) 주입했는데 피크가 작거나 들쭉날쭉함#

text
[Sampler] Warning: air drawn - liquid level below needle tip (vial 2)
  • 원인: 바이알 시료량이 적어 니들 끝이 액면 위에 있거나, 인서트 바닥에 기포가 있어 시료 대신 공기를 빨았습니다.
  • 해결: 바이알을 빼서(트레이 칸 더블클릭) 시료를 어깨 아래까지 채우거나, 시료가 적으면 인서트를 씁니다. 바이알을 선택하고 <kbd>T</kbd> 로 톡톡 쳐 기포를 올린 뒤 다시 놓습니다.

2) 니들이 바이알 바닥에 닿음#

text
[Sampler] Error: needle bottom contact (vial 1) - injection aborted
  • 원인: 인서트를 넣었거나 바닥이 높은 바이알인데 니들 높이 오프셋이 0 입니다. 실물에서는 니들 끝이 휘거나 인서트가 깨질 수 있습니다.
  • 해결: 주입 설정(B)의 니들 높이 오프셋을 올립니다(시뮬레이터 인서트 기본 권장값은 바이알 정보에 표시). 실물 값은 설명서와 인서트 규격을 확인합니다.

3) 바이알이 없다는 오류#

text
[Sampler] Error: no vial at position 3
  • 원인: 주입 위치(또는 시퀀스의 위치 번호)에 바이알이 없습니다. 바이알을 다른 칸에 놓았을 가능성이 큽니다.
  • 해결: 트레이 지도(A)에서 실제 바이알 위치를 확인하고, 바이알을 옮기거나 주입 위치를 고칩니다. 배치표와 트레이를 번호 하나씩 맞춰 봅니다.

4) 컬럼 방향 오류#

text
[Column] Error: flow direction reversed (C18 150 x 4.6 mm) - pump start blocked
  • 원인: 컬럼 화살표가 검출기 → 열교환기 쪽을 가리킵니다.
  • 해결: 펌프가 꺼진 상태에서 컬럼 출구 · 입구 연결을 풀고, 컬럼을 들어 <kbd>R</kbd> 로 뒤집은 뒤 입구 먼저 다시 연결합니다. 실물에서 거꾸로 흘린 적이 있으면 압력 · 피크 모양 변화를 기록해 담당자에게 알립니다.

5) 컬럼을 단 뒤 압력이 한계를 넘어 펌프가 멈춤#

text
[Pump] Pressure above upper limit (350 bar) - pump stopped
[Column] Flow ramp 0.0 -> 1.0 mL/min in 1 s
  • 원인: 유속을 0 에서 한 번에 올렸거나, 컬럼 온도가 아직 낮아 이동상 점도가 큰 상태에서 높은 유속을 넣었습니다. 압력이 계속 높으면 입구 프릿 막힘일 수 있습니다.
  • 해결: 0.2 → 0.5 → 1.0 mL/min 으로 단계적으로 올리고, 온도가 설정값에 닿은 뒤 압력을 판단합니다. 같은 조건에서 전보다 압력이 크게 높으면 ch09 의 막힘 진단을 봅니다.

6) 램프가 켜지지 않음#

text
[VWD] Lamp ignition failed (attempt 3/3)
  • 원인: 시뮬레이터 시나리오에서 램프 사용 시간이 수명을 넘었거나, 앞판이 열린 상태입니다. 실물에서는 램프 노후 · 커넥터 접촉 불량 등이 원인입니다.
  • 해결: 3D 뷰에서 검출기 앞판이 닫혔는지 확인하고 <kbd>F10</kbd> 으로 다시 켭니다. A 영역의 사용 시간이 2000 h 를 넘었으면 램프 교체 시나리오(ch09)로 넘어갑니다. 실물 램프는 뜨겁고 자외선을 내므로 끈 뒤 충분히 식힌 다음 다룹니다.

7) 베이스라인이 계속 흘러내리거나 노이즈가 큼#

text
[VWD] Baseline drift 9.8 mAU/h, noise 0.21 mAU - not stable
  • 원인: (a) 램프 예열이 덜 됨, (b) 용매 컷오프 근처 파장, (c) 컬럼 평형 · 온도 미도달, (d) 플로셀에 기포.
  • 해결: (a) 예열 막대가 끝날 때까지 기다림 → (b) 파장을 확인(메탄올이면 210 nm 이하 피함) → (c) 컬럼 · 온도 화면에서 Equilibration 100 % · 온도 도달 확인 → (d) 유속을 잠시 올렸다 내려 기포를 밀어냄. 하나씩 바꾸고 다시 10분 기록합니다.

과제 / 팀 미션#

실습 과제 (객관식) — 샘플러 · 컬럼 · 검출기 설정

아래 다섯 문제를 풀고, 각 답의 근거를 한 줄씩 적어 제출합니다. 실습 C 에서 만든 파장별 노이즈 표도 함께 냅니다.

  1. 시료가 120 µL 밖에 없을 때 알맞은 준비는? ① 2 mL 바이알에 그대로 넣는다 ② 인서트를 넣은 바이알에 넣고 니들 높이를 확인한다 ③ 물을 부어 1 mL 로 만든다 ④ 바이알을 눕혀 놓는다
  2. 150 × 4.6 mm 컬럼(공극률 0.65)을 1 mL/min 에서 10 컬럼 부피만큼 평형하는 데 걸리는 시간에 가장 가까운 것은? ① 약 2분 ② 약 16분 ③ 약 60분 ④ 약 150분
  3. 컬럼을 장착할 때 출구를 마지막에 연결하는 가장 큰 이유는? ① 출구 피팅이 더 약해서 ② 컬럼 속 공기 · 보관 용매를 먼저 빼 검출기 플로셀로 보내지 않으려고 ③ 온도를 빨리 올리려고 ④ 주입량을 정확히 하려고
  4. 물:메탄올 이동상에서 노이즈가 가장 클 것으로 예상되는 파장은? ① 210 nm ② 254 nm ③ 273 nm ④ 세 파장 모두 같다
  5. 피크 폭(응답 시간) 설정을 필요 이상으로 크게 하면 생기는 일은? ① 노이즈가 커지고 피크가 날카로워진다 ② 노이즈가 줄지만 좁은 피크가 낮고 넓어지며 뒤로 밀린다 ③ 아무 변화가 없다 ④ 바탕 흡광도가 0 이 된다
정답 보기1-② 소량 시료는 인서트로 액면을 높이고, 인서트 바닥에 니들이 닿지 않게 오프셋을 확인합니다. 2-② V₀ ≈ π × 0.23² × 15 × 0.65 ≈ 1.6 mL, 10배 16 mL ÷ 1 mL/min ≈ 16분. 3-② 입구로 밀려 나온 공기 · 보관 용매를 출구에서 방울로 빼낸 뒤 연결합니다. 4-① 메탄올 컷오프(약 205 nm)에 가까워 바탕 흡광도 · 노이즈가 큽니다. 5-② 응답 시간이 길면 평활이 세져 노이즈는 줄지만 피크 모양이 뭉개집니다.

참고자료#

  • Agilent 1260 Infinity II LC 시스템 제품 페이지: https://www.agilent.com/en/product/liquid-chromatography/hplc-systems/analytical-hplc-systems/1260-infinity-ii-lc-system
  • Agilent 1260 Infinity II Vialsampler (G7129A) · Multicolumn Thermostat (G7116A) · Variable Wavelength Detector (G7114A) User Manual — 주입량 범위 · 니들 높이 · 온도 범위 · 피크 폭 표 · 램프 예열. Agilent 문헌 라이브러리에서 모델 번호로 검색: https://www.agilent.com/en/support
  • Agilent, The LC Handbook — Guide to LC Columns and Method Development (컬럼 선택 · 평형 · 검출 파장): https://www.agilent.com/cs/library/primers/public/LC-Handbook-Complete-2.pdf
  • 이 사이트의 도구: Python Playground · 3D 뷰어 · 3D 시뮬레이터
  • 이전 차시: ch03 이동상 준비와 펌프 조작 · 다음 차시: ch05 메서드와 시퀀스 작성