EN | JP

第4章:キャラクタリゼーションと分析

BET、分光法、顕微鏡法、ML支援データ解釈

読了時間:30-35分 難易度:中級 コード例:6

学習目標

本章を修了すると、以下ができるようになります:

4.1 比表面積測定:BET法

BET式

ブルナウアー・エメット・テラー(BET)法は、比表面積測定の標準的な手法です。ラングミュアの単分子層モデルを多層吸着に拡張したものです:

$$\frac{P/P_0}{n(1-P/P_0)} = \frac{1}{n_m C} + \frac{C-1}{n_m C} \cdot \frac{P}{P_0}$$

ここで:

BET比表面積の計算

$$S_{BET} = \frac{n_m \cdot N_A \cdot A_m}{m}$$

ここで、$N_A$ はアボガドロ数、$A_m$ は吸着分子の断面積(N₂では0.162 nm²)です。

コード例1:BET解析

"""
BET surface area analysis from N2 adsorption data
Demonstrates linearization and surface area calculation
"""
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# Simulated N2 adsorption data (P/P0, Volume adsorbed in cm³/g STP)
p_p0 = np.array([0.05, 0.10, 0.15, 0.20, 0.25, 0.30])
volume_ads = np.array([45.2, 52.1, 58.3, 64.8, 72.1, 80.5])

# BET linearization: y = (P/P0) / [V(1-P/P0)] vs x = P/P0
# Linear form: y = 1/(Vm*C) + [(C-1)/(Vm*C)] * x
y = p_p0 / (volume_ads * (1 - p_p0))
x = p_p0

# Linear regression
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)

# Calculate BET parameters
Vm = 1 / (slope + intercept)  # Monolayer volume (cm³/g STP)
C = 1 + slope / intercept      # BET constant

# Surface area calculation
# At STP: 1 mole of gas = 22,414 cm³
# N2 cross-sectional area: 0.162 nm² = 0.162e-18 m²
Na = 6.022e23
Am = 0.162e-18  # m²
V_molar = 22414  # cm³/mol at STP

S_BET = Vm * Na * Am / V_molar  # m²/g

# Create figure
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Left: Raw isotherm
ax1.scatter(p_p0, volume_ads, s=100, c='blue', edgecolors='black', zorder=5)
ax1.plot(p_p0, volume_ads, 'b-', linewidth=1.5, alpha=0.7)
ax1.set_xlabel('Relative Pressure P/P₀', fontsize=12)
ax1.set_ylabel('Volume Adsorbed (cm³/g STP)', fontsize=12)
ax1.set_title('N₂ Adsorption Isotherm', fontsize=13, fontweight='bold')
ax1.grid(alpha=0.3)
ax1.set_xlim(0, 0.35)

# Right: BET plot
ax2.scatter(x, y, s=100, c='red', edgecolors='black', zorder=5)
x_line = np.linspace(0, 0.35, 100)
y_line = slope * x_line + intercept
ax2.plot(x_line, y_line, 'r--', linewidth=2, label=f'y = {slope:.4f}x + {intercept:.5f}')
ax2.set_xlabel('P/P₀', fontsize=12)
ax2.set_ylabel('P/P₀ / [V(1-P/P₀)]', fontsize=12)
ax2.set_title('BET Plot (Linearized)', fontsize=13, fontweight='bold')
ax2.legend(fontsize=10)
ax2.grid(alpha=0.3)
ax2.set_xlim(0, 0.35)

# Add equation and results
textstr = f'$R^2$ = {r_value**2:.4f}\n$V_m$ = {Vm:.1f} cm³/g\nC = {C:.1f}\n$S_{{BET}}$ = {S_BET:.1f} m²/g'
ax2.text(0.05, 0.95, textstr, transform=ax2.transAxes, fontsize=11,
         verticalalignment='top', bbox=dict(boxstyle='round', facecolor='wheat'))

plt.tight_layout()
plt.show()

print("\nBET Analysis Results:")
print(f"• Monolayer volume (Vm): {Vm:.2f} cm³/g STP")
print(f"• BET constant (C): {C:.1f}")
print(f"• BET Surface Area: {S_BET:.1f} m²/g")
print(f"• R² of linear fit: {r_value**2:.4f}")

4.2 活性サイトの同定:化学吸着

異なる金属のためのプローブ分子

プローブ 対象サイト 化学量論 得られる情報
H₂ Pt、Pd、Ni H:M = 1:1 金属分散度
CO Pt、Pd、Rh、Cu CO:M = 1:1 ~ 1:2 金属表面積
O₂ Ag、Cu O:M = 1:1 反応性酸素
NH₃ 酸点 - 総酸量(TPD)
ピリジン ルイス酸/ブレンステッド酸 - 酸の種類(FTIR)

金属分散度

金属分散度は、表面に露出している金属原子の割合です:

$$D = \frac{\text{表面金属原子}}{\text{総金属原子}} = \frac{n_{chem} \cdot S_f}{n_{total}}$$

ここで、$S_f$ は化学量論因子(例:H:Pt = 1:1 の場合は1)です。

コード例2:分散度と粒子サイズ

"""
Calculate metal dispersion and particle size from chemisorption data
"""
import numpy as np
import matplotlib.pyplot as plt

def calculate_dispersion(V_chem_cm3_g, metal_loading_wt_pct, metal_mw,
                         stoichiometry=1, VM=22414):
    """
    Calculate metal dispersion from chemisorption volume

    Args:
        V_chem_cm3_g: Chemisorbed volume (cm³/g catalyst at STP)
        metal_loading_wt_pct: Metal loading (wt%)
        metal_mw: Metal molecular weight (g/mol)
        stoichiometry: Chemisorption stoichiometry (probe:metal)
        VM: Molar volume at STP (cm³/mol)
    """
    # Moles of probe chemisorbed per g catalyst
    n_probe = V_chem_cm3_g / VM

    # Moles of surface metal atoms
    n_surface_metal = n_probe / stoichiometry

    # Total moles of metal in catalyst
    n_total_metal = (metal_loading_wt_pct / 100) / metal_mw

    # Dispersion
    D = n_surface_metal / n_total_metal

    return min(D, 1.0)

def dispersion_to_particle_size(D, metal='Pt'):
    """
    Estimate particle size from dispersion (spherical particles)
    d = 6 * V_atomic / (a * D)
    """
    # Atomic parameters (approximate)
    params = {
        'Pt': {'V_atomic': 15.1e-24, 'a': 8.0e-20},  # cm³, cm²
        'Pd': {'V_atomic': 14.7e-24, 'a': 7.9e-20},
        'Rh': {'V_atomic': 13.8e-24, 'a': 7.6e-20},
    }
    p = params.get(metal, params['Pt'])

    if D > 0:
        d_cm = 6 * p['V_atomic'] / (p['a'] * D)
        return d_cm * 1e7  # Convert to nm
    return np.inf

# Example: Pt/Al2O3 catalyst with 1 wt% Pt
metal_loading = 1.0  # wt%
metal_mw = 195.08    # g/mol for Pt

# Different chemisorption volumes
V_chem_values = np.linspace(0.05, 0.5, 50)

dispersions = [calculate_dispersion(V, metal_loading, metal_mw) for V in V_chem_values]
particle_sizes = [dispersion_to_particle_size(D) for D in dispersions]

# Create figure
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Left: Dispersion vs chemisorption volume
ax1.plot(V_chem_values, np.array(dispersions) * 100, 'b-', linewidth=2)
ax1.set_xlabel('H₂ Chemisorption (cm³/g STP)', fontsize=12)
ax1.set_ylabel('Dispersion (%)', fontsize=12)
ax1.set_title('Pt Dispersion vs Chemisorption', fontsize=13, fontweight='bold')
ax1.grid(alpha=0.3)
ax1.axhline(y=50, color='green', linestyle='--', alpha=0.5, label='50% dispersion')
ax1.legend()

# Right: Particle size vs dispersion
D_range = np.linspace(0.05, 1.0, 100)
sizes = [dispersion_to_particle_size(D) for D in D_range]

ax2.plot(np.array(D_range) * 100, sizes, 'r-', linewidth=2)
ax2.set_xlabel('Dispersion (%)', fontsize=12)
ax2.set_ylabel('Particle Size (nm)', fontsize=12)
ax2.set_title('Particle Size vs Dispersion', fontsize=13, fontweight='bold')
ax2.grid(alpha=0.3)
ax2.set_ylim(0, 20)

# Add size regions
ax2.axhspan(0, 2, alpha=0.2, color='green', label='Clusters (<2 nm)')
ax2.axhspan(2, 5, alpha=0.2, color='yellow', label='Small NPs (2-5 nm)')
ax2.axhspan(5, 20, alpha=0.2, color='orange', label='Large NPs (>5 nm)')
ax2.legend(loc='upper right', fontsize=9)

plt.tight_layout()
plt.show()

# Example calculation
V_example = 0.25
D_example = calculate_dispersion(V_example, metal_loading, metal_mw)
size_example = dispersion_to_particle_size(D_example)

print(f"\nExample: 1 wt% Pt/Al₂O₃ with V_chem = {V_example} cm³/g")
print(f"• Dispersion: {D_example*100:.1f}%")
print(f"• Estimated particle size: {size_example:.1f} nm")

4.3 分光法

X線光電子分光法(XPS)

XPSは、表面組成と酸化状態に関する情報を提供します:

コード例3:XPSピーク解析

"""
Simulate and analyze XPS spectrum for Pt catalyst
Demonstrates peak fitting and oxidation state identification
"""
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def gaussian(x, amp, cen, wid):
    """Gaussian peak function"""
    return amp * np.exp(-(x - cen)**2 / (2 * wid**2))

def multi_gaussian(x, *params):
    """Multiple Gaussian peaks"""
    n_peaks = len(params) // 3
    y = np.zeros_like(x)
    for i in range(n_peaks):
        amp = params[3*i]
        cen = params[3*i + 1]
        wid = params[3*i + 2]
        y += gaussian(x, amp, cen, wid)
    return y

# Binding energy range for Pt 4f
BE = np.linspace(68, 82, 200)

# Simulate Pt 4f spectrum with Pt(0) and Pt(II) components
# Pt(0) 4f7/2: 71.0 eV, 4f5/2: 74.5 eV (spin-orbit splitting ~3.5 eV)
# Pt(II) 4f7/2: 72.5 eV, 4f5/2: 76.0 eV (shifted +1.5 eV)

# True parameters (what we're trying to recover)
true_params = [
    100, 71.0, 0.8,   # Pt(0) 4f7/2
    67, 74.5, 0.8,    # Pt(0) 4f5/2 (ratio 0.67 from degeneracy)
    40, 72.5, 1.0,    # Pt(II) 4f7/2
    27, 76.0, 1.0,    # Pt(II) 4f5/2
]

# Generate synthetic spectrum with noise
np.random.seed(42)
spectrum = multi_gaussian(BE, *true_params)
noise = np.random.normal(0, 3, len(BE))
spectrum_noisy = spectrum + noise
background = 5 + 0.5 * (BE - 68)  # Shirley-like background
spectrum_noisy += background

# Fit the spectrum (simplified - in practice, more sophisticated fitting is used)
initial_guess = [90, 71.2, 0.9, 60, 74.6, 0.9, 35, 72.8, 1.1, 23, 76.3, 1.1]
popt, pcov = curve_fit(lambda x, *p: multi_gaussian(x, *p) + 5 + 0.5*(x-68),
                       BE, spectrum_noisy, p0=initial_guess, maxfev=5000)

# Create figure
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Left: Raw spectrum with fit
ax1.plot(BE, spectrum_noisy, 'k-', linewidth=1.5, label='Experimental')
ax1.plot(BE, multi_gaussian(BE, *popt) + 5 + 0.5*(BE-68), 'r-',
         linewidth=2, label='Fitted')

# Individual components
colors = ['blue', 'blue', 'green', 'green']
labels = ['Pt(0) 4f₇/₂', 'Pt(0) 4f₅/₂', 'Pt(II) 4f₇/₂', 'Pt(II) 4f₅/₂']
for i in range(4):
    peak = gaussian(BE, popt[3*i], popt[3*i+1], popt[3*i+2])
    ax1.fill_between(BE, background, peak + background, alpha=0.3,
                     color=colors[i], label=labels[i])

ax1.set_xlabel('Binding Energy (eV)', fontsize=12)
ax1.set_ylabel('Intensity (a.u.)', fontsize=12)
ax1.set_title('Pt 4f XPS Spectrum', fontsize=13, fontweight='bold')
ax1.legend(fontsize=9, loc='upper left')
ax1.invert_xaxis()  # XPS convention: higher BE on left
ax1.grid(alpha=0.3)

# Right: Oxidation state quantification
pt0_area = popt[0] * popt[2] + popt[3] * popt[5]  # Pt(0) 4f7/2 + 4f5/2
pt2_area = popt[6] * popt[8] + popt[9] * popt[11]  # Pt(II)
total_area = pt0_area + pt2_area

pt0_pct = pt0_area / total_area * 100
pt2_pct = pt2_area / total_area * 100

categories = ['Pt(0)\nMetallic', 'Pt(II)\nOxidized']
values = [pt0_pct, pt2_pct]
colors_bar = ['#2196f3', '#4caf50']

bars = ax2.bar(categories, values, color=colors_bar, edgecolor='black', width=0.5)
ax2.set_ylabel('Relative Amount (%)', fontsize=12)
ax2.set_title('Pt Oxidation State Distribution', fontsize=13, fontweight='bold')
ax2.set_ylim(0, 100)

for bar, val in zip(bars, values):
    ax2.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 2,
             f'{val:.1f}%', ha='center', fontsize=12, fontweight='bold')

plt.tight_layout()
plt.show()

print("\nXPS Analysis Results:")
print(f"• Pt(0) metallic: {pt0_pct:.1f}%")
print(f"• Pt(II) oxidized: {pt2_pct:.1f}%")
print(f"• Pt(0) 4f₇/₂ binding energy: {popt[1]:.2f} eV")
print(f"• Pt(II) 4f₇/₂ binding energy: {popt[7]:.2f} eV")

4.4 顕微鏡法

TEMとSEM

手法 分解能 得られる情報 試料調製
TEM 約0.1 nm 粒子サイズ、結晶性、格子縞 薄膜試料(約100 nm)
STEM-HAADF 約0.1 nm Z-コントラスト像、単原子観察 薄膜試料
SEM 約1-10 nm 表面形態、多孔性 導電性コーティング
EDX 約100 nm 元素マッピング TEM/SEMと併用

コード例4:粒子サイズ分布解析

"""
Analyze particle size distribution from TEM data
Demonstrates histogram fitting and statistics
"""
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# Simulated TEM particle size measurements (nm)
np.random.seed(123)
# Lognormal distribution (common for nanoparticles)
particle_sizes = np.random.lognormal(mean=1.0, sigma=0.4, size=200)
particle_sizes = particle_sizes[particle_sizes < 10]  # Remove outliers

# Calculate statistics
mean_size = np.mean(particle_sizes)
std_size = np.std(particle_sizes)
median_size = np.median(particle_sizes)
d10 = np.percentile(particle_sizes, 10)
d50 = np.percentile(particle_sizes, 50)
d90 = np.percentile(particle_sizes, 90)

# Create figure
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Left: Histogram with fitted distribution
n, bins, patches = ax1.hist(particle_sizes, bins=25, density=True,
                             alpha=0.7, color='steelblue', edgecolor='black')

# Fit lognormal distribution
shape, loc, scale = stats.lognorm.fit(particle_sizes, floc=0)
x_fit = np.linspace(0, 10, 200)
pdf_fit = stats.lognorm.pdf(x_fit, shape, loc, scale)
ax1.plot(x_fit, pdf_fit, 'r-', linewidth=2, label='Lognormal fit')

ax1.axvline(x=mean_size, color='green', linestyle='--', linewidth=2,
            label=f'Mean = {mean_size:.2f} nm')
ax1.axvline(x=median_size, color='orange', linestyle=':', linewidth=2,
            label=f'Median = {median_size:.2f} nm')

ax1.set_xlabel('Particle Size (nm)', fontsize=12)
ax1.set_ylabel('Probability Density', fontsize=12)
ax1.set_title('TEM Particle Size Distribution', fontsize=13, fontweight='bold')
ax1.legend(fontsize=9)
ax1.set_xlim(0, 8)
ax1.grid(alpha=0.3)

# Right: Cumulative distribution
sorted_sizes = np.sort(particle_sizes)
cumulative = np.arange(1, len(sorted_sizes) + 1) / len(sorted_sizes) * 100

ax2.plot(sorted_sizes, cumulative, 'b-', linewidth=2)
ax2.axhline(y=10, color='gray', linestyle='--', alpha=0.5)
ax2.axhline(y=50, color='gray', linestyle='--', alpha=0.5)
ax2.axhline(y=90, color='gray', linestyle='--', alpha=0.5)

ax2.scatter([d10, d50, d90], [10, 50, 90], s=100, c='red', zorder=5)
ax2.text(d10, 15, f'd₁₀={d10:.2f}', fontsize=10)
ax2.text(d50, 55, f'd₅₀={d50:.2f}', fontsize=10)
ax2.text(d90, 85, f'd₉₀={d90:.2f}', fontsize=10)

ax2.set_xlabel('Particle Size (nm)', fontsize=12)
ax2.set_ylabel('Cumulative %', fontsize=12)
ax2.set_title('Cumulative Size Distribution', fontsize=13, fontweight='bold')
ax2.grid(alpha=0.3)
ax2.set_xlim(0, 8)

plt.tight_layout()
plt.show()

print("\nTEM Particle Size Analysis:")
print(f"• Number of particles measured: {len(particle_sizes)}")
print(f"• Mean diameter: {mean_size:.2f} ± {std_size:.2f} nm")
print(f"• d₁₀/d₅₀/d₉₀: {d10:.2f}/{d50:.2f}/{d90:.2f} nm")
print(f"• Polydispersity index (PDI): {(d90-d10)/d50:.2f}")

4.5 オペランド分光法

In Situ vs オペランド

In situ:制御された雰囲気/温度下で、実際の反応を行わない測定。オペランド:実際の触媒反応中に、同時に活性を測定しながら行う測定。オペランド法は、構造-活性の直接的な相関関係を提供します。

主要なオペランド手法

手法 得られる情報 時間分解能
オペランドDRIFTS 表面吸着種、中間体
オペランドXAS 酸化状態、配位環境 秒~分
オペランドラマン 触媒構造、吸着種
環境制御TEM 形態変化、シンタリング サブ秒

4.6 ML支援スペクトル解析

2025-2026年:触媒キャラクタリゼーションにおけるAI革命

機械学習は、自動化されたスペクトル解釈を可能にし、分析時間を30-50%短縮し、複雑なデータに隠されたパターンを発見することで、触媒分析を変革しています。

コード例5:MLベースのスペクトル分類

"""
Machine learning classification of catalyst states from spectra
Demonstrates training and prediction for catalyst health monitoring
"""
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
import seaborn as sns

# Generate synthetic spectral data for different catalyst states
np.random.seed(42)
n_samples = 200
n_features = 100  # Spectral points

def generate_spectrum(state, noise_level=0.1):
    """Generate synthetic IR spectrum for different catalyst states"""
    x = np.linspace(1000, 2000, n_features)

    if state == 'fresh':
        # Strong metal carbonyl peak at 2050, weak hydroxyl
        spectrum = 0.8 * np.exp(-(x - 2050)**2 / 100) + \
                   0.2 * np.exp(-(x - 1600)**2 / 200)
    elif state == 'active':
        # Medium carbonyl, reaction intermediates
        spectrum = 0.5 * np.exp(-(x - 2050)**2 / 100) + \
                   0.4 * np.exp(-(x - 1800)**2 / 150) + \
                   0.3 * np.exp(-(x - 1500)**2 / 100)
    elif state == 'deactivated':
        # Weak carbonyl, strong coke peaks
        spectrum = 0.2 * np.exp(-(x - 2050)**2 / 100) + \
                   0.6 * np.exp(-(x - 1400)**2 / 200) + \
                   0.5 * np.exp(-(x - 1300)**2 / 150)

    spectrum += np.random.normal(0, noise_level, n_features)
    return spectrum

# Generate dataset
states = ['fresh', 'active', 'deactivated']
X = []
y = []

for state in states:
    for _ in range(n_samples // len(states)):
        X.append(generate_spectrum(state))
        y.append(state)

X = np.array(X)
y = np.array(y)

# Split data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,
                                                      random_state=42)

# Train classifier
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)

# Predict
y_pred = clf.predict(X_test)

# Create figure
fig, axes = plt.subplots(2, 2, figsize=(14, 10))

# Top-left: Example spectra
ax1 = axes[0, 0]
x = np.linspace(1000, 2000, n_features)
for state, color in zip(states, ['blue', 'green', 'red']):
    spectrum = generate_spectrum(state, noise_level=0.02)
    ax1.plot(x, spectrum, color=color, linewidth=2, label=state.capitalize())

ax1.set_xlabel('Wavenumber (cm⁻¹)', fontsize=11)
ax1.set_ylabel('Absorbance (a.u.)', fontsize=11)
ax1.set_title('Example FTIR Spectra', fontsize=12, fontweight='bold')
ax1.legend()
ax1.invert_xaxis()
ax1.grid(alpha=0.3)

# Top-right: Feature importance
ax2 = axes[0, 1]
importance = clf.feature_importances_
ax2.plot(x, importance, 'purple', linewidth=1.5)
ax2.fill_between(x, importance, alpha=0.3, color='purple')
ax2.set_xlabel('Wavenumber (cm⁻¹)', fontsize=11)
ax2.set_ylabel('Feature Importance', fontsize=11)
ax2.set_title('ML Feature Importance', fontsize=12, fontweight='bold')
ax2.invert_xaxis()
ax2.grid(alpha=0.3)

# Bottom-left: Confusion matrix
ax3 = axes[1, 0]
cm = confusion_matrix(y_test, y_pred, labels=states)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=states,
            yticklabels=states, ax=ax3)
ax3.set_xlabel('Predicted', fontsize=11)
ax3.set_ylabel('True', fontsize=11)
ax3.set_title('Confusion Matrix', fontsize=12, fontweight='bold')

# Bottom-right: Accuracy by class
ax4 = axes[1, 1]
accuracy = cm.diagonal() / cm.sum(axis=1) * 100
bars = ax4.bar(states, accuracy, color=['blue', 'green', 'red'], edgecolor='black')
ax4.set_ylabel('Classification Accuracy (%)', fontsize=11)
ax4.set_title('Accuracy by Catalyst State', fontsize=12, fontweight='bold')
ax4.set_ylim(0, 105)
for bar, acc in zip(bars, accuracy):
    ax4.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 2,
             f'{acc:.1f}%', ha='center', fontsize=11)

plt.tight_layout()
plt.show()

# Classification report
print("\nML Classification Results:")
print(classification_report(y_test, y_pred, target_names=states))

4.7 触媒の失活

失活メカニズム

メカニズム 原因 検出方法 再生
シンタリング 高温、粒子移動 TEM、化学吸着量低下 多くの場合不可逆
コーキング 炭素析出 TPO、TGA、ラマン 酸化再生
被毒 強い吸着質の結合 化学吸着、XPS 被毒物質による
ファウリング 物理的閉塞 BET、細孔解析 洗浄、焼成

4.8 章のまとめ

重要なポイント

  1. BETはN₂吸着から総比表面積を提供する
  2. 化学吸着は活性サイトと金属分散度を定量化する
  3. XPSは表面組成と酸化状態を明らかにする
  4. TEMはナノ粒子の原子分解能イメージングを提供する
  5. オペランド手法はリアルタイムの構造-活性相関を可能にする
  6. MLはスペクトル解析を加速し、自動化された触媒モニタリングを可能にする
  7. 失活のキャラクタリゼーションは再生戦略を導く

演習

演習1:BET計算

傾き = 0.015、切片 = 0.001のBETデータから、Vm、C、比表面積を計算しなさい。

演習2:分散度解析

2 wt% Pt/SiO₂触媒がH₂化学吸着量0.35 cm³/gを示しました。分散度を計算し、粒子サイズを推定しなさい。

演習3:XPS解釈

XPSスペクトルで、Pt 4f₇/₂ピークが71.2 eVと73.5 eVに見られます。どのような酸化状態が存在しますか?高い結合エネルギー成分の原因として考えられることは何ですか?

演習4:失活診断

水素化触媒が100時間後に50%の活性を失いました。BET比表面積は変化していませんが、CO化学吸着量は60%低下しました。最も可能性の高い失活メカニズムは何ですか?

免責事項