This tutorial walks through using PiezoD to calculate the properties of a single crystal silicon cantilever beam.
Start MATLAB and add the PiezoD code to your path:
addpath('PiezoD');Clear any existing variables (run twice to avoid occasional optimization slowdowns):
clear
clearDefine the length, width and thickness of the cantilever beam. All dimensions are in MKS units.
l = 100e-6; % 100 um
w = 4e-6; % 4 um
t = 1e-6; % 1 uml_pr_ratio = 0.8; % PR extends 80% of cantilever length
t_pr_ratio = 0.5; % PR is 50% of beam thickness (500 nm)
doping_type = 'phosphorus'; % n-type, <100> orientation, E = 130 GPa
dopant_concentration = 1e18;
v_bridge = 2; % 2V across Wheatstone bridgeChoosing 'phosphorus' implicitly sets the cantilever to the <100> orientation where the piezoresistive coefficient is maximum. Choosing 'boron' would use the <110> direction (E = 169 GPa) with corresponding piezoresistive coefficients.
freq_min = 1; % Hz
freq_max = 1000; % Hzc_epitaxy = cantileverEpitaxy(freq_min, freq_max, ...
l, w, t, l_pr_ratio, v_bridge, doping_type, dopant_concentration, ...
t_pr_ratio);Examine the object:
c_epitaxyList available methods:
methods('cantileverEpitaxy')c_epitaxy.stiffness() % Spring constant (N/m)
c_epitaxy.omega_vacuum_hz() % Resonant frequency in vacuum (Hz)
c_epitaxy.omega_damped_hz() % Resonant frequency in fluid (Hz)c_epitaxy.number_of_carriers()
c_epitaxy.sheet_resistance()
c_epitaxy.resistance()
c_epitaxy.integrated_amplifier_noise()
c_epitaxy.integrated_hooge_noise()
c_epitaxy.integrated_johnson_noise()
c_epitaxy.integrated_noise()
c_epitaxy.johnson_noise_density()
c_epitaxy.plot_noise_spectrum()c_epitaxy.force_sensitivity() % V/N
c_epitaxy.beta() % Piezoresistor efficiency factor
c_epitaxy.force_resolution() % N
c_epitaxy.displacement_resolution() % mc_epitaxy.print_performance() % Formatted output
c_epitaxy.print_performance_for_excel() % Tab-delimited for spreadsheetsc_epitaxy.fluid = 'water'; % Options: 'vacuum', 'air', 'water'Define constraints:
omega_min_hz = 5*freq_max; % Resonant freq >= 5x measurement bandwidth
max_power = 2e-3; % Max 2 mW power dissipation
constraints = {{'min_t', 'min_w', 'max_v_bridge'}, {1e-6, 4e-6, 10}};Run optimization:
c_epitaxy = c_epitaxy.optimize_performance_from_current(max_power, omega_min_hz, constraints);Check improved performance:
c_epitaxy.print_performance()A typical optimization improves force resolution from ~125 pN to ~2.5 pN.
- See
sampleCode.mfor additional examples including diffusion and ion implantation - Check
cantilever.mcomments for advanced features like thermal actuator modeling and Monte Carlo stress analysis