描述
视觉的持久性很酷,但是我之前从未见过完整的3维图像,该项目的目标是创建3D图像。最终,将以3D动画为目标,但这将取决于我在atmega328-PU上的压缩能力。
细节
这是我进行过的最苛刻的项目之一,它始于8月底,并一直进行到3月初。目的是创建一个LED矩阵显示器,该显示器可以快速旋转以生成3D图像。在这个项目上不乏需要克服的问题。这是最终的项目视频:
软件更新
到现在为止,我一直在尽可能多地避免提及软件,因为在整个项目中,它在大多数情况下都是不断变化的。这次,该软件或多或少地完成了一些调整。
自从我上次谈论它以来,代码的基本格式没有太大变化,但是这里是:
1.从程序存储器中获取数组(用于表示图像)并将其移入ram
2.取阵列并将其分成多个不同的颜色阵列
3.将这些颜色阵列移出到阳极侧移位寄存器
4.移位阴极侧移位寄存器以使那些LED点亮
5.重复2-4,直到加载新图像。
另外,我创建了一个中断子例程,该例程通过解释旋转速率和调整帧显示时间来处理旋转计算。由于矩阵将其旋转分为5帧,因此我们可以获取每个中断之间经过的总时间,并计算再次到达同一点应该 花费多长时间, 然后将其除以确定每个帧的时间。
硬件更新
现在我们回到了我的能力范围,让我们开始吧!我在该项目中遇到的最大问题是图像会缓慢旋转,但永远不会保持稳定。有了这种行为,就不可能显示3D动画,这是该项目的最终目标。为了消除此问题,必须进行两次硬件更改,并且这两项都是反馈。
以前,我在电机控制器上使用了粗略的反馈系统,该系统可使ATtiny85控制电调具有一些旋转速度的信息。至于为什么要这样做,因为我正在使用带有ESC的无刷电机,这是另外一个问题。但是,以前的反馈是通过一个限位开关完成的,每次旋转完成后,都会按下该开关。该解决方案有效,但远非理想,该装置存在明显的磨损问题,最终我两次更换了限位开关。现在,电动机会从更有用的光电断路器电路获得反馈,因为主齿轮和该光电断路器永远不会接触,因此它们永远不会磨损。所讨论的光电中断是EE-SX4070,它具有足够宽的开口以对我的应用有用。整个传感器模块使用的原理图非常简单(如下所示)。每当触发光遮断器时,它都会向ATtiny85发送高信号,该信号将被计数并用于测量/调节电动机的速度。
但是对于项目的旋转部分,我必须更具创造力。由于顶部仍然有些摆动(大约3毫米的游隙),因此EE-SX4070(具有8毫米深的插槽)是该部分的较难选择,因为放入一些东西触发它很容易最终导致其被破坏。由于这个问题,我决定只制造自己的光遮断器,为此我利用了现有的东西:
我使用了一些2.2k电阻,一个GM5539光电电阻和一个MCP6241轨到轨运算放大器。电阻器和光敏电阻形成一个麦石桥,该桥在点亮时会在桥上产生一个-.9v的电势(在我的万用表上左中心接地),而当LED被阻塞时,电势会升至约1.2v。对于该电路,运算放大器仅用作比较器,但它的工作很好。每当来自LED的光被遮挡时,都会向矩阵驱动器板发送5v信号,而当未被遮挡时,输出线将变为0v。我自己进行此操作的主要优点是,我可以创建一个又高又高的组件,以达到所需的确切尺寸要求。该零件的主体在Google SketchUp中建模,并进行3D打印,然后将所有组件构建到原型板上,然后进行电源,接地,然后将信号线固定到主板上。这并不理想,特别是因为我最初计划将此选项作为选项,但是未能在PCB上保留任何焊盘以容纳它。
责任编辑:pj
-
驱动器
+关注
关注
52文章
8232浏览量
146279 -
寄存器
+关注
关注
31文章
5342浏览量
120272 -
存储器
+关注
关注
38文章
7485浏览量
163787
发布评论请先 登录
相关推荐
评论