MEMS振镜扫描的Lissajous图形Matlab仿真

2024-05-06 21:48

本文主要是介绍MEMS振镜扫描的Lissajous图形Matlab仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     激光扫描系统中主要有如下几种扫描方式:检流式扫描振镜(包括共振振镜),Nipkow盘扫描,里斯利棱镜,多面转镜和MEMS振镜,最常用的为采用光栅扫描的检流式振镜,其中MEMS振镜体积小巧,单镜即可实现二维扫描,在激光扫描系统中也有较多应用,但是MEMS振镜的扫描轨迹常为Lissajous图像,与相比光栅扫描,较为复杂,在图像采集或者图像输出时,需要将图像按照扫描轨迹进行重建。


Matlab 仿真图像如下.

clear;close all;clc;
Ax = 1;             %振幅
Ay = 1; wy = 2;
wx = 3;            %频率
deltaTheta = 1/2 * pi;    %相位差(初始相位不考虑)
wf = gcd(wx,wy);    %重复扫描频率(只扫一个周期)x = Ax * cos(wx * t );
t = linspace(0,2*pi/wf,10000);plot(x,y);
y = Ay * cos(wy * t + deltaTheta);

Lissajous图像

1).通过修改扫描频率和相位差可以改变图像轨迹的密集度,均匀度,甚至是是否闭环。
2).轨迹实现闭环的条件是:X向极点数与Y向极点数之比等于频率之比。

3).通过计算X或者Y的极点位置时,另一向的坐标分布的均匀性来判断Lissajous曲线分布是否较均匀。


以下程序是根据MEMS振镜(LM2120)计算的扫描路径规划,(暂未实物校验)

%% function 1 
% 计算有效的fps,满足条件:图像帧频是x和y频率的最大公约数
% warining:fps也可能是小数,这里不考虑
wxMin = 25900;              %查表得 x 的最大振动频率
wxMax = 25990;              %查表得 x 的最小振动频率
wyMin = 2060;               %查表得 y 的最大振动频率
wyMax = 2140;               %查表得 y 的最小振动频率
wx    = (wxMin+wxMax)/2;    %暂时设定x频率
wy    = (wyMin+wyMax)/2;    %暂时设定y频率
validFps = zeros(1,100);
validNum = 0;
for nf = 5:100fps    = nf;        %设定 帧频wx    = round(wx/fps)*fps;  %优化设定x频率wy    = round(wy/fps)*fps;  %优化设定y频率wf    = gcd(wx,wy);         %扫描频率if((fps==wf)&&(wx>wxMin)&&(wx<wxMax)&&(wy>wyMin)&&(wy<wyMax))validNum = validNum + 1;validFps(validNum) = fps;end
end%% funciton 2 
% step 1:设定采样点数和扫描帧频
nSpots = 1280;      %设定 x 向采样点
nLine  = 1024;      %设定 y 向采样点
fps    = 24;        %设定 帧频
sT     = 1 / fps;   %得 扫描周期% step 2:根据输入电压,查表得到扫描频率工作范围
wxMin = 25900;              %查表得 x 的最大振动频率
wxMax = 25990;              %查表得 x 的最小振动频率
wyMin = 2060;               %查表得 y 的最大振动频率
wyMax = 2140;               %查表得 y 的最小振动频率% step 3:优化图像扫描频率和周期,满足周期的整数倍
wx    = (wxMin+wxMax)/2;    %暂时设定x频率
wy    = (wyMin+wyMax)/2;    %暂时设定y频率
wx    = round(wx/fps)*fps;  %优化设定x频率
wy    = round(wy/fps)*fps;  %优化设定y频率
wf    = gcd(wx,wy);         %验证扫描频率xT = 1 / wx;                %对应 x 的振动周期
yT = 1 / wy;                %对应 y 的振动周期nR = sT/yT;                 %y交叉扫描点数
nL = sT/xT;                 %y总扫描行数t = linspace(0,sT,nSpots*nLine);phi = 1/2 * pi;
x=cos(2*pi*wx*t);
y=sin(2*pi*wy*t + phi);
plot(x,y)

这篇关于MEMS振镜扫描的Lissajous图形Matlab仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965471

相关文章

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

Android我的二维码扫描功能发展史(完整)

最近在研究下二维码扫描功能,跟据从网上查阅的资料到自己勉强已实现扫描功能来一一介绍我的二维码扫描功能实现的发展历程: 首页通过网络搜索发现做android二维码扫描功能看去都是基于google的ZXing项目开发。 2、搜索怎么使用ZXing实现自己的二维码扫描:从网上下载ZXing-2.2.zip以及core-2.2-source.jar文件,分别解压两个文件。然后把.jar解压出来的整个c

Android SurfaceFlinger——图形内存分配器(十一)

前面的文章中的图层合成器(HWC),这里我们接着看一下 SurfaceFlinger 中的另一个重要服务——图形内存分配器。 一、简介         android.hardware.graphics.allocator@2.0 是 Android 系统中硬件抽象层(HAL)的一个组件,专门用于图形内存的分配和管理。它是 SurfaceFlinger 在处理图形数据时所依赖的

图形编辑器基于Paper.js教程03:认识Paper.js中的所有类

先来认一下Paper的资源对象,小弟有哪些,有个整体的认识。认个脸。 在Paper.js的 官方文档中类大致有如下这些: 基类: ProjectViewItemPointToolSizeSegmentRectangleCurveCurveLocationMatrixColorStyleTweenToolEventGradientGradientStopEvent 二级或三级类 继承Ite

MATLAB算法实战应用案例精讲-【数模应用】三因素方差

目录 算法原理 SPSSAU 三因素方差案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解惑 均方平方和类型? 事后多重比较的类型选择说明? 事后多重比较与‘单独进行事后多重比较’结果不一致? 简单效应是指什么? 边际估计均值EMMEANS是什么? 简单简单效应? 关于方差分析时的效应量? SPSSAU-案例 一、案例

鹅算法(GOOSE Algorithm,GOOSE)求解复杂城市地形下无人机避障三维航迹规划,可以修改障碍物及起始点(Matlab代码)

一、鹅算法 鹅优化算法(GOOSE Algorithm,GOOSE)从鹅的休息和觅食行为获得灵感,当鹅听到任何奇怪的声音或动作时,它们会发出响亮的声音来唤醒群中的个体,并保证它们的安全。 参考文献 [1]Hamad R K, Rashid T A. GOOSE algorithm: a powerful optimization tool for real-world engineering

基于NURBS曲线的数据拟合算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1NURBS曲线基础 4.2 数据拟合原理 5.完整程序 1.程序功能描述        基于NURBS曲线的数据拟合算法,非均匀有理B样条(Non-Uniform Rational B-Splines,简称NURBS)曲线是一种强大的数学工具,广泛应用于计算机图形学、CAD/CA

使用AGG里面的clip_box函数裁剪画布, 绘制裁剪后的图形

// 矩形裁剪图片, 透明void agg_testImageClipbox_rgba32(unsigned char* buffer, unsigned int width, unsigned int height){// ========= 创建渲染缓冲区 =========agg::rendering_buffer rbuf;// BMP是上下倒置的,为了和GDI习惯相同,最后一个参数是

matlab sift算法使用的记录

最近在做个三维建模的东西,用到了sift算子,需要在matlab上使用。网上介绍使用了 David Lowe的源代码。源码地址为: http://www.cs.ubc.ca/~lowe/keypoints/ 在使用的过程中,会出现以下错误: 不知道是为什么,在一片博客中看到图像大小大致要800*600的说明,我就猜想是不是因为我的图像太大了。原始图像3000*1200的,于是我就把图

金蝶盘点机PDA,序列号SN管理扫描入库出库质量追溯溯源防串货

比如有5个红米手机,红米手机的代码是100001, 那么这5个红米手机的条码是:100001+001,100001+002,100001+003,100001+004,100001+005, 那么入库时,依次扫描这些条码,自动生成金蝶里的入库单。并记录序列号信息。这样能实现序列号追溯,以后通过序列号就能查询出来该序列号的产品是从哪里进货的什么时候进货的,什么时间销售给谁了。 第一步:商