【嵌入式系统】旋转POV显示屏的实现

\quad 基本功能:本项目主要实现了单叶片灯条高速旋转时由于视觉暂留现象产生显示效果,清晰度与屏幕相当,在黑暗环境中可以达到浮空显示的全息效果。

灵感来源于
https://www.bilibili.com/video/BV1Wy4y1a7t6/?spm_id_from=333.788.recommend_more_video.-1
项目实现完全自主设计,未参考任何开源项目

\quad 基本原理:根据电机转速n,求出每一圈的时间 △ t △t t,然后人为地对一圈均匀划分m份,划分数越高,分辨率也越高,同时也考虑到动态模糊,划分到一定程度其实清晰度会达到饱和。每一个划分的时间就是 △ t m \frac{△t}{m} mt,本实例中考虑到传输速度的缘故,取m=45,即将360°划分为45份,每一份是8°,即每转过8°,灯条就需要改变其颜色、亮灭来匹配完整图案。【嵌入式系统】旋转POV显示屏的实现_第1张图片 \quad 问题解决
\quad 单片机的选择  在掌握了基本原理之后,我们开始构想结构组成,这时候我们发现,由于灯条在叶片上,对灯条进行控制需要电源和单片机,或者为了减轻重量可以用无线接收模块和IO模块来控制灯条。于是我们选择了一个结合的办法,使用的是搭载了乐鑫ESP8266的Node-MCU来控制灯条,这款单片机的好处就是可以通信且重量轻,如果时间足够,我们甚至可以直接使用ESP8266焊接在电路板上进一步减少重量。
\quad 电源的选择   我们发现单片机和灯条是在旋转的叶片上的,因此供电只有三种方式1、直接在叶片上安装电池供电 2、使用电刷供电以连接定子与转子 3、使用无线供电模块进行供电。尽管方法1会导致叶片过于沉重,测试时还会带来危险,但是方法一也有其好处,电源供电稳定,电压电流充足,使用五号电池直接供电方便更换。方法2的电刷结构不满足我们的使用,安装存在问题,无法解决我们的难点。方法3的模块安装困难,并且无线供电距离很近(5cm以内),也无法满足我们的需求,因此我们采用了方法1. 我们将重量最大电池安装在转轴上,尽可能地减小其 旋转时不稳定的力矩对电机产生的影响。而灯带和控制器Node-MCU我们采用力矩平衡方法进行调整。
\quad 通讯方法的选择  我的灯条选择的是SK9822,此种型号支持的是SPI传输,优点是传输速度快,因为我们经过计算发现,只有SPI可以满足之前划分的45个独立间隔时间内的快速点亮。此外ESP8266的SPI有软件和硬件SPI之分,这里选择了硬件SPI(最高80Mhz以满足其驱动速度。)
\quad 此外,为了进一步提高其显示能力,充分使用ESP8266的wifi能力,我使用了电脑端的python程序对输入图片进行裁剪,像素化,然后进行自动分配,为45帧灯条的上每个灯的rgb以及亮度数据进行分配,并在开始时通过UDP协议发送给ESP8266.在ESP8266上使用的是micropython,由于我们采用的是硬件SPI驱动,因此不必担心python语言造成的速度不够的问题。micropython在ESP8266上有微型在线操作系统webrepl可以进行远程控制
【嵌入式系统】旋转POV显示屏的实现_第2张图片

复合的通讯架构

【嵌入式系统】旋转POV显示屏的实现_第3张图片

电路原理图

【嵌入式系统】旋转POV显示屏的实现_第4张图片

结果展示

【嵌入式系统】旋转POV显示屏的实现_第5张图片
以上为主要设计内容,具体代码参见本人
github
https://github.com/SuperiorLQF/POV-Rotating-Led

你可能感兴趣的:(单片机,stm32,嵌入式硬件)