激光投影POV

回忆录 - 2019年新年制作 - 激光投影POV

原贴发布在51黑单片机论坛

记得是2017年的一时兴起开了这个坑,当时做出来了显示效果,然后因为学习就一直搁置。过了2年又是我的一时兴起,这次总算是把它做完了。

最终效果

材料

  1. 亚克力板
  2. 亚克力镜子-没错,那个反光板是塑料的,买薄的,好加工而且非常轻
  3. 笔芯-做支架用
  4. CD机的光头-用了那个电机和塑料底座
  5. 5V激光管
  6. 51单片机-STC15F2K16S2-直插28脚封装
  7. 其他各种元器件-排针、三极管、电阻、电容、排线、洞洞板……
红外激光管
焊接到排针上
成品效果

原理图

因为电路很简单,所以没画PCB,只有控制板的电路图,传感器就是红外对管,电机驱动就是一个NMOS加上一些滤波电路,后来还拆了个12V电机上的转速稳定电路装上了。
单片机IO不是直接驱动激光管,应连接PNP三极管。这里省略……

原理(示意)图

工作原理

电机带动反光镜(尽量)匀速旋转,红外对管检测镜面位置,检测到镜面位置给单片机外部中断信号,单片机开始计时。这个时间结束的时候就是镜面转到开始显示的位置,这时开始点亮激光管,从这里开始原理就和摇摇棒一样了。
还有个有意思的创新,这回我用上位机串口通信,直接传送点阵数据过来显示,这样就相当于用电脑上面的字库,解决了汉字字库的问题,只要上位机文本框里能显示,单片机就能把它投影出来。不过现在16个点还是有点捉鸡,大的东西显示不了……

上位机界面
上位机用C#写的,VS2012编译,Debug模式。代码很简单,而且都是一些事件的触发,直接看代码就可以,有注释很容易理解。

程序结构

流程图

资源占用

资源 | 占用对象

  • | -
    外部中断0 | 红外对管 |
    定时器0 | 反光镜旋转一圈计时 |
    定时器1 | 激光点亮延时 |
    定时器2 | 波特率发生器 |
    串口1 | 上位机 |
    CCP0 | 电机PWM |
    CCP1 | 串口接收定时器-用于判定数据帧 |

注意事项

  1. 单片机工作频率为27MHz 串口通信波特率默认9600 。基本参数的设置在各个头文件中。
  2. 串口优先级已经调整为最高。
  3. 上位机使用C#编写,VS2012编译,Debug模式。

程序文件


……剩下的想不起来了……等想起来再加吧……
posted @ 2020-02-12 19:16  AdjWang  阅读(370)  评论(1)    收藏  举报