P0 셀프서비스 결정론 리포트 — 적산·물질수지 폐합·cleaning 마스크 (+ P1 온라인 스펙) #1
136
docs/끓는점-계산방법-FROM-MSDS.md
Normal file
136
docs/끓는점-계산방법-FROM-MSDS.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# 진공압력에 따른 끓는점 계산 (FROM MSDS)
|
||||
|
||||
> 목적: MSDS의 상압 비점·증기압 정보로부터 **임의의 진공압력에서의 끓는점**을 계산하는 방법 정리.
|
||||
> 배경: 본 공정은 감압 증류 → 단별 온도(reb-A>T_B>T_C>T_D)가 **진공압력에 종속**. 따라서 제품·진공이 정해지면 끓는점이 결정됨.
|
||||
> 참조: [`docs/MSDS_PMA_PGMEA_EL.md`](MSDS_PMA_PGMEA_EL.md)
|
||||
|
||||
---
|
||||
|
||||
## 1. 끓는점의 정의
|
||||
|
||||
끓는점 = **포화증기압(P_sat)이 외부(계) 압력과 같아지는 온도**.
|
||||
|
||||
- 상압(760 mmHg)에서 끓는 온도 = 상압 비점 (PMA 146℃, EL 154℃).
|
||||
- 진공(예: 113 mmHg)에서는 더 낮은 온도에서 P_sat가 그 압력에 도달 → **끓는점이 낮아짐**.
|
||||
|
||||
즉 "진공압력 P가 주어졌을 때의 끓는점" = **P_sat(T) = P 를 만족하는 T**.
|
||||
그래서 온도↔증기압 관계식만 있으면 역산으로 끓는점이 나온다. 그 관계식이 **Antoine 식**.
|
||||
|
||||
---
|
||||
|
||||
## 2. Antoine 식과 상수 A, B, C
|
||||
|
||||
### 2.1 식
|
||||
|
||||
$$\log_{10} P = A - \frac{B}{C + T}$$
|
||||
|
||||
- **P** : 포화증기압
|
||||
- **T** : 온도
|
||||
- **A, B, C** : 물질별 경험상수 (Antoine 상수)
|
||||
|
||||
끓는점을 구하려면 P에 목표 압력(진공값)을 넣고 T에 대해 푼다:
|
||||
|
||||
$$T_b = \frac{B}{A - \log_{10} P} - C$$
|
||||
|
||||
### 2.2 각 상수의 의미
|
||||
|
||||
| 상수 | 물리적 의미 | 영향 |
|
||||
|---|---|---|
|
||||
| **A** | 증기압 곡선의 절편(스케일). 대략 고온 극한에서의 log P 수준 | A↑ → 전체 증기압↑ → 같은 압력에서 끓는점↓ |
|
||||
| **B** | 곡선의 기울기. **증발잠열(ΔH_vap)에 비례** (B ≈ ΔH_vap / (2.303·R) 근사) | B↑ → 온도에 따른 증기압 변화 급함(잠열 큰 물질) |
|
||||
| **C** | 온도축 보정항(offset). 저온에서 식이 발산하지 않도록 곡선을 이동 | 정확도 핵심. 0으로 두면 단순 Clausius–Clapeyron으로 퇴화 |
|
||||
|
||||
### 2.3 ⚠ 반드시 주의할 점 — 단위·로그·온도기준
|
||||
|
||||
Antoine 상수는 **출처마다 단위계가 다르다.** 그대로 쓰면 안 되고 세트로 확인:
|
||||
|
||||
1. **압력 단위** : mmHg(Torr) / kPa / bar — 출처마다 다름.
|
||||
2. **온도 단위** : ℃ 기준 상수 vs K 기준 상수. (NIST는 보통 K + bar, 화학공학 핸드북은 ℃ + mmHg)
|
||||
3. **로그 밑** : `log10` (대부분) vs `ln` (일부 DIPPR 형식은 5상수 확장식).
|
||||
4. **유효 온도범위** : Antoine 상수는 **특정 온도구간에서만 fitting**된 값. 구간 밖 외삽은 오차 큼 → 저압(저온)일수록 다른 상수세트가 필요할 수 있음.
|
||||
|
||||
> 출처: NIST WebBook, DIPPR, Yaws' Handbook, Perry's Chemical Engineers' Handbook 등.
|
||||
|
||||
---
|
||||
|
||||
## 3. MSDS만으로 가능한가?
|
||||
|
||||
| 가진 정보 | 가능한 계산 | 정확도 |
|
||||
|---|---|---|
|
||||
| **Antoine 상수(A,B,C)** | $T_b = B/(A-\log_{10}P) - C$ 로 직접 역산 | ★★★ 최선 |
|
||||
| 상압비점 + 증기압 1점(예: 3.7 mmHg@20℃) | 2점(상압비점=760mmHg, 그 1점)으로 **Clausius–Clapeyron 2-점 근사** | ★★ 근사 |
|
||||
| 상압비점만 | ΔH_vap 가정 필요 → Clausius–Clapeyron | ★ 거침 |
|
||||
|
||||
MSDS에는 보통 **상압비점 + 증기압 1점**만 있어 **2-점 Clausius–Clapeyron**까지는 즉시 가능하고, **정밀하려면 Antoine 상수(외부 DB)** 가 필요하다.
|
||||
|
||||
### 3.1 Clausius–Clapeyron 2-점 근사 (MSDS만으로)
|
||||
|
||||
$$\ln\frac{P_2}{P_1} = -\frac{\Delta H_{vap}}{R}\left(\frac{1}{T_2}-\frac{1}{T_1}\right)\quad(T\text{는 K})$$
|
||||
|
||||
- 점1 = 증기압 1점 (예: PMA `P_1=3.7\,\text{mmHg}, T_1=20℃=293.15K`)
|
||||
- 점2 = 상압비점 (`P_2=760\,\text{mmHg}, T_2=146℃=419.15K`)
|
||||
- 두 점으로 ΔH_vap를 역산 → 이후 목표압력 P에서 T_b 계산.
|
||||
|
||||
---
|
||||
|
||||
## 4. 본 프로젝트 물질 (MSDS 발췌)
|
||||
|
||||
| 물질 | CAS | 상압비점 | 증기압(1점) |
|
||||
|---|---|---|---|
|
||||
| PMA / PGMEA | 108-65-6 | 146 ℃ | 3.7 mmHg @ 20℃ |
|
||||
| EL (Ethyl Lactate) | 97-64-3 | 154 ℃ | 1.5 mmHg @ 20℃ |
|
||||
|
||||
> PMA·PGMEA는 동일물질(동일 증기압 곡선). EL은 별도.
|
||||
> **본 문서의 Antoine 상수는 MSDS에 없으므로, 정밀계산 시 NIST/DIPPR에서 물질별 (A,B,C,단위,유효범위)를 확보해 채워야 한다.** (아래 표는 자리표시자)
|
||||
|
||||
| 물질 | A | B | C | 압력단위 | 온도단위 | 유효범위 | 출처 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| PMA/PGMEA | _TBD_ | _TBD_ | _TBD_ | _TBD_ | _TBD_ | _TBD_ | _TBD_ |
|
||||
| EL | _TBD_ | _TBD_ | _TBD_ | _TBD_ | _TBD_ | _TBD_ | _TBD_ |
|
||||
|
||||
---
|
||||
|
||||
## 5. 계산 예시 코드 (Python, 참고)
|
||||
|
||||
```python
|
||||
import math
|
||||
|
||||
# --- Antoine 역산: 목표 압력에서의 끓는점 ---
|
||||
# 주의: A,B,C는 (압력단위, 온도단위) 세트가 일치해야 함. 아래는 mmHg + ℃ 가정.
|
||||
def boiling_point_antoine(P_mmHg, A, B, C):
|
||||
"""log10(P) = A - B/(C+T) → T = B/(A - log10 P) - C"""
|
||||
return B / (A - math.log10(P_mmHg)) - C
|
||||
|
||||
# --- MSDS만으로: Clausius–Clapeyron 2-점 근사 ---
|
||||
R = 8.314 # J/mol/K
|
||||
def dHvap_from_two_points(P1, T1_C, P2, T2_C):
|
||||
T1, T2 = T1_C + 273.15, T2_C + 273.15
|
||||
return -R * math.log(P2 / P1) / (1/T2 - 1/T1) # J/mol
|
||||
|
||||
def boiling_point_CC(P_target, P_ref, Tb_ref_C, dHvap):
|
||||
"""P_ref(상압비점 압력)·Tb_ref에서 dHvap로 P_target에서의 Tb 역산"""
|
||||
Tb_ref = Tb_ref_C + 273.15
|
||||
inv_T = 1/Tb_ref - (R/dHvap) * math.log(P_target / P_ref)
|
||||
return 1/inv_T - 273.15 # ℃
|
||||
|
||||
# 예) PMA: 상압비점 146℃@760mmHg, 증기압 3.7mmHg@20℃ → 113mmHg에서 끓는점?
|
||||
dH = dHvap_from_two_points(3.7, 20, 760, 146)
|
||||
print(round(boiling_point_CC(113, 760, 146, dH), 1), "℃ @113mmHg (PMA, CC근사)")
|
||||
```
|
||||
|
||||
> Clausius–Clapeyron 2-점 근사는 ΔH_vap를 온도무관 상수로 보므로 넓은 압력범위에서 오차가 커진다.
|
||||
> 운전구간(예: 113 mmHg 부근) 한정이면 충분히 쓸 만하나, 정밀도가 필요하면 §2의 Antoine 식 사용.
|
||||
|
||||
---
|
||||
|
||||
## 6. 본 시스템에서의 활용 (연결점)
|
||||
|
||||
- 온도프로파일 기준밴드(`{col}_tempref.json`)는 **데이터에서 산출**한 실측 median/σ다.
|
||||
- 본 계산식은 그 기준밴드와 **교차검증/물리적 해석**에 쓸 수 있다:
|
||||
- "현재 진공 113 mmHg에서 PMA 끓는점 이론값 ≈ X℃" ↔ 실측 reb-A median 비교.
|
||||
- 제품 식별 보조: 진공압력 보정한 이론 끓는점으로 어느 제품인지 가늠.
|
||||
- 단, 단탑 온도는 끓는점 외에 조성·환류비 영향도 받으므로 **이론 끓는점은 참고선**, 운전 기준은 실측 밴드 우선.
|
||||
|
||||
---
|
||||
|
||||
*상압비점·증기압은 MSDS 발췌. Antoine 상수는 외부 물성 DB(NIST/DIPPR) 확보 필요 — §4 표 채우기 전까지는 §3.1 Clausius–Clapeyron 근사를 사용.*
|
||||
Reference in New Issue
Block a user