DIY一个铝箔测速仪 飞矢飞弹测速
忆昔长别2016/02/15极客DIY IP:广西
原理是用单片机的定时器计时测出时间,然后除去距离得到速度,测试中要仔细调整铝箔的间距,保证穿破的时候两片铝箔可以接通,一片铝箔大概可以测几十次用弹弓实验两次分别是92m/s和112m/s
以下为程序:
/*************************
名称:铝箔测速仪
功能:0.5m的两块铝箔依次被炮弹击穿,接通0.4和0.5,
根据时间和位移计算速度1~9999米/秒,慢于1米/秒的显示0
备注:铝箔间距50cm 开机显示5536
若改变距离可以修改displayLED(50000/t)括号中的数字
时间=10*t微秒 displayLED(距离/时间)
作者:忆昔长别
***********************/
#include<stc12c5a.h>
unsigned char table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned long int t=0;
unsigned char i=0;//为了锁死定时器开关TR0
unsigned char *p; //为了判断语句控制外面的定时器开关
unsigned char second=0,minute=0;
unsigned int t1=0;
sbit K1=P3^6; //铝箔开关1
sbit K2=P3^7;//铝箔开关2
void displayLED(unsigned int a) //四位数显示函数带小数点
{
  unsigned char b[4];
  unsigned char i,j;
  for(i=0;i<4;i++)
  {
    b[i]=a%10;
a=a/10;
  }
  P0=0XF7;
  for(i=0;i<4;i++)
  {
     P2=table[b[i]];
for(j=0;j<100;j++);
P2=0x00;
P0=P0>>1;
  }
  P2=0X80;P0=0X0d; //显
  for(j=0;j<100;j++); //示
  P2=0x00; //小数点
}
void timer0_init()
{
   TL0 =0xEC; //设置定时初值
   TH0 =0xEC;
   TMOD=0X02;
   ET0=1;
   EA=1;
}
void displayLED_(unsigned int a) //四位数显示函数不带小数点
{
  unsigned char b[4];
  unsigned char i,j;
  for(i=0;i<4;i++)
  {
    b[i]=a%10;
a=a/10;
  }
  P0=0XF7;
  for(i=0;i<4;i++)
  {
     P2=table[b[i]];
for(j=0;j<100;j++);
P2=0x00;
P0=P0>>1;
  }
}

void main()//这里把main写出了mian半天没看出来!
{
    P2M0=0Xff;
P2M1=0X00;
P3|=0xc0;
p= &i;
timer0_init();
while(1)
{
      TR0=i;
  if(t==0) //结合定时器状态的双重判断,防止开关误判
  {
     if(K1==0)*p=1;   //第一块铝箔击中瞬间打开定时器
  }
  if(t!=0)
  {
     if(K2==0)*p=0;   //在第二块铝箔击中瞬间关闭定时器
  }
  if(i==0)
    displayLED_(165600/t);
  if(i==1)
    displayLED(100*minute+second);
}
}
void T0_Service() interrupt 1
{
   t++;//10微秒计数
t1++;//1毫秒跑秒
if(t1==100)
{
    t1=0;
second++;
if(second==100)
{
   second=0;
   minute++;
}
if(minute==100)
   minute=0;
}
}
最后 。。。发不了图片
end
来自:综合交流区 / 极客DIY
8
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
ls.ls
8年11个月前 IP:重庆
808890
改成光电会好些吧
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
huojunan2
8年11个月前 IP:北京
808900
电路图呢?要从程序倒推?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lin_2
8年11个月前 IP:湖南
809177
是不是铝箔被穿破的时候,通过判断铝箔开关断开的时间差来得到速度?
表示没电路图,不好理解
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
qq030711
8年11个月前 IP:浙江
809416
这要四片吧,两片之间距离要小,击穿了能导通,计算两组之间导通时间差、。只是改变了检测方式,和光电差不多,但有耗材,而且更换不见得方便,这个比较适合检测速度衰减,远离发射点,射击精度要求低。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
忆昔长别作者
6年4个月前 IP:广西
849986

是的,正是这样。两片铝箔挨的很近,当子弹打过来的时候会把他们接通。只要测量两次,根据速度公式V(速度)=S(路程)/T(时间)就可以算出来速度了。

上面的程序就是用来检测两个时间,然后计算速度的。

不过由于年代久远,我以及找不到电路图了。不过根据程序里的

<code>sbit K1=P3^6; //铝箔开关1
sbit K2=P3^7;//铝箔开关2</code>

这两句话,我知道铝箔开关1接在单片机的P3.6引脚,铝箔开关2接在单片机的P3.7引脚。

数码管的话根据下面的

<code>P2=table[b[i]];</code>

知道四段数码管的a、b、c、d、e、f、g、dot接在单片机的P2.0~P2.7引脚。

具体接线的话,根据下面的

<code>P0=P0>>1;</code>

以及

<code>P0=0XF7;0xf7=1111 0111(二进制),0在倒数第4位点亮四段数码管的第一位</code>

知道四段数码管的A、B、C、D接在单片机的P0.0~P0.3接口,而且数码管型号是”共阳四位八段数码管“。


总结:

1.铝箔开关接线。第一块铝箔接P3.6,第二块铝箔接3.7。为了让铝箔打穿时产生开关信号,需要另外两片铝箔很靠近他们平行放置,并且接地。

2.四位八段数码管(共阳)接线。a、b、c、d、e、f、g、dot分别接到P2.0~P2.7引脚。A、B、C、D接到P0.0~P0.3。

3.单片机型号。stc89c52。搭建最小电路即可。




引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
忆昔长别作者
6年4个月前 IP:广西
849987

@huojunan2回答你的问题了。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
忆昔长别作者
6年4个月前 IP:广西
849988

@qq030711光电的我也知道好,可是不会啊😂

觉得光电发射接受,成本就高了。而且需要子弹会反光吧,不一定都好用,也容易被外部光线干扰。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
忆昔长别
进士 学者 机友 笔友
文章
15
回复
93
学术分
2
2015/12/24注册,9个月0天前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:黑龙江
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}