你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

脉冲序列HAT控制激光灯显示Raspberry Pi

[复制链接]
木木&点点 发布时间:2019-3-10 11:24
本帖最后由 点点&木木 于 2019-4-13 10:41 编辑
; r% a+ w# {; s+ s, X+ p* C% F9 P/ J! b4 K
使用PWM和电流计扫描仪,使用Raspberry Pi控制激光灯的Pulse Train HAT。
1.jpg
- z" l, @% ?1 z. x/ Y

% G  @! ]& M2 @9 p9 T5 @. E8 ^8 f
5 N1 s6 z3 K  E4 M8 e* y9 h/ G
硬件组件
Raspberry Pi 2模型B.     ×  1      
Raspberry Pi 3型号B.     ×  1      
脉冲火车帽      ×  1      
便宜的电流计扫描仪   ×  1      
运算放大器电路   ×  1      
激光笔   ×  1      
  }) ~) m3 n% Q. l0 L! `
/ q6 f4 U5 n% {" g
介绍
   通过这个例子,我们展示了如何使用PulseTrain Hat控制几个廉价的中国振镜扫描仪,以创建一个简单的激光表演。
   在PTHAT的下一个固件版本中,我们添加了一些新命令来控制两个配置为PWM输出的备用引脚。现在允许脉冲宽度调制超出PTHAT,以及通常的脉冲串。
   脉冲宽度调制可以用于一系列应用,我们认为使用PWM来控制每个X和Y型振镜的位置会很有趣。

6 g$ V% w1 @& e0 V  @
电流计
这些是Ebay的低成本电流计。
该套件附带:
2个带镜子的电流计
; a# E* q* D8 ?0 Q; H) r" {" L
1个电源,输出+ 12 / -12V
2.jpg
" ^+ L+ d1 K, T, {1 d
   我们并没有期待太多这些,但在尝试伺服电机并决定需要更高的速度之后,我们实际上对它们的表现感到惊讶,因为只有20Kpps(每秒千克点),相比之下,价格高达60Kpps的更贵的或更高。

# q/ q2 h, k0 @3 v
他们如何工作
   驱动器控制每个振镜的位置,并输入信号为0 =10V +和0-10V-以及来自控制器的GND线。
   如果你想象一个网格,X从左到右,Y从上到下。因此,你的网格左上角有零,这是X和Y两端电压为0伏时的位置。当电压为10伏时,位置将移动到网格的右下角。
   如此简单,如果您希望位置位于网格中间,那么您将为每个X和Y驱动程序提供5伏特。
   您需要Bi-Polar电源的原因是您可以获得galvos的全角度范围。你可以使用0-5伏特,但图片大小只有一半。
" Q' q$ S+ F- b" ?  e8 P+ }6 @
控制驱动程序
      Pulse Train Hat使用专用的DDS IC,为每个轴生成非常精确的高速脉冲序列,但是您无法改变这些脉冲的脉冲宽度,因此无法创建我们需要的可变电压输出。
   我们有STM32F411 ARM处理器的备用输出,我们可以用它来做其他事情,其中​​两个碰巧有定时器,可以用作PWM输出,也可以用在备用引脚上。
   所以这很酷,我们现在有一种方法可以创建0-3.3volts输出,分辨率为12位。这给了我们0-4095步的除数。
   接下来,我们将一些新命令放入PTHAT的固件中,以便我们控制PWM输出。
     PTHAT接收来自Raspberry Pi串行端口的命令,这对于我们的激光器定位的每个点都不足以设置PWM,因为我们正在研究移动之间125微秒的速度。
   为了解决这个问题,我们添加了一个缓冲循环,可以存储多达2000个命令,并在每个命令之间设置所需的暂停。
   现在我们有一种设置和控制X和Y的PWM的方法,以及用于快速控制这些的命令。
   下一个问题是我们只有3.3伏的输出电压,我们需要0-10伏。哦,我们还需要它作为正电压和负电压。
   为了获得这些信号,我们敲了一个小电路,首先将3.3伏电压升至5伏,然后使用几个运算放大器来产生10伏的正负电压。
   我们为每个轴设置了几个底池,以调整增益和偏移。

6 ?+ F8 U. A( i- @) y6 z
3.jpg
8 D" P. \8 d/ }$ ?# g. {/ u: b$ t

* t9 Q: ~! l) a( t
   我们需要做的最后一件事是在跳转到未连接在一起的矢量的起始位置时关闭激光的方法。幸运的是,我们使用的小型激光器仅拉动几个电压并以5伏特运行。因此,在我们的固件中,我们添加了一个消隐位,用于设置每个移动命令,并将激光器连接到PTHAT的一个AUX输出。

7 P" u7 ?- G. d9 V
软件
现在有了硬件排序,是时候让软件运行了。
像往常一样,我们在Visual Studio2017中开发并创建了一个适用于Windows 10IOT的C#Universal Application,它可以在RaspberryPi上很好地运行。
4.jpg
$ o8 ^# f, a# X
   大多数激光表演软件将允许您加载基于国际激光显示协会(ILDA)格式的文件。http://www.ilda.com/
   我们首先查看了文件格式ILD文件的ILDA规范,并编写了一个导入例程,该例程加载文件然后在画布上绘制出框架。
     ILD文件有很多分数,专为高规格振镜而设计。为了解决这个问题,我们设置了一个减少点数的例程,这使我们可以加载和测试Web上的大量ILD文件。
   此外,我们希望能够导入为CNC加工创建的Gcode文件。这将允许我们简单地创建具有更少点的形状并且还跟踪位图以获得矢量点。
   一旦加载了ILD文件或Gcode文件,它就会转换为PTHAT用于设置每个PWM输出的命令。
   然后,当单击“开始”按钮时,它会将所有命令下载到PTHAT缓冲区,并在传输完所有命令后开始执行。
, `) D8 Y0 d2 ?
5 O8 M9 v6 w) A1 L
结果
   起初我们使用了超亮的绿色激光,但是消隐的开启/关闭时间并不好。所以我们剥下了激光指针并取下了几个电容器,这整理了一段时间,但最终激光烧坏了。所以我们不得不使用红色激光来完成这个例子。
   在我们显示红色激光之前,可以在本项目底部的视频中看到绿色激光。
   拍摄激光灯显示很困难,因为它会显示出很多闪烁和破碎的点,但是人眼看它非常流畅。拍摄照片似乎更好,下面是我们创建的一些测试帧以及视频。
   大约有5个控制器,可以控制许多设置,例如我们根本没有修剪的过冲。因此需要进一步调整。
  ]3 N2 h+ k5 f' Y: v
5.jpg
' G# O( `: r% F  X- D$ m4 v
6.jpg

- i( U  c4 e$ M# L1 \# K& A) [
7.jpg

$ o5 O6 K+ d9 o0 @7 {9 x4 B( l7 U
8.jpg

1 C: R3 s# Q4 D# O5 E; c" u
9.jpg

8 I; i# N  l7 O$ w
10.jpg
! l0 k8 X1 j+ R* I3 u
11.jpg
) a- Y- g) `5 W0 `; x+ ?+ K. h
- h9 J) k5 ]( h; F
   总体而言,我们对这些廉价的电视节目感到满意,并且通过更多调整,它们将产生更好的效果。
   我们将在新的一年更新PTHAT示例页面,以及固件更新和软件源代码。
0 h5 W! B6 ~4 ^, Z" E" w$ ]

% j) p4 e7 v  e1 e- r, l& P" H& R6 G) I/ X- j% V

评分

参与人数 1 ST金币 +1 收起 理由
donghaiyang + 1 很给力!

查看全部评分

赞 收藏 评论0 发布时间:2019-3-10 11:24

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版