(开源)为电磁加速器配套DIY一个测速度器--APAK-01
jrcsh2012/02/25电磁炮 IP:江西
取名为:APAK-01
是为记念在KC曾今在电磁加速器上作出杰出来贡献的 阿丕,安酷,
他们在发光热的日子,俺几只个小小小菜鸟,天天缠着他们求指导。哈哈

这个电路最早也是 阿丕 提供的光电解发检测电路, 利用红外二极管和红外发光二级管给成了一个,光路的触发电路,又利用电压比较器(LM339/LM393) 提高灵敏度,输送电平信号给MCU,

我之前也发过类似贴子,本贴作为响应KC开源的活动,专门把整套系统用到的功能归纳在本贴并作一些应用上的说明。

测速器的性能指标: 能测出的最高速度,暂定50M/S 或 200M/S  ,考虑到大多数作品是没有超出 50M/S 的可能会更偏向50M/S 这个指标。

必需要说明的是,这只是一个DIY级作品,误差还是有的,误差多大要作出来试试才知[s:220]   ,还有精度由于~~~无基准条件,只有理论上的精度~~~~~[s:213]  



使用的元件:
5V电源
电阻
红外发光二极管
红外二极管
LM339、LM393 电压比较器
STC89C52/STC15F204

显示数据上,
还没确定使用哪个。
a、数据码管
b、液晶屏(LCD-1602)
C、通过RS232接口,把数据直接发到电脑上。感觉就一个数据值真蛋疼


  也请,大家提意一下,想要哪些功能~~~~我视情况条件评估看能不能加上

最终会提供:原理图
                      PCB布线图
                      实物及效果(~~~~~用手指触发.....没空去搞个电磁加速器出来玩了....事情还是多多的)
                     MCU-源代码
                     MCU-软件工程文件
                     MCU-hex文件(编译后的文件,不会写程序的同伙要用软件输入(烧写)到MCU就可以用了)
                     MCU-烧写软件(或下载地址,费用浪费论坛空间容量)
+10  科创币    科学人    2012/02/26 我更喜欢槽型光耦~
+1  科创币    master863    2012/02/29 非常感谢你的辛勤劳动。
+100  科创币    delete    2012/03/14 有实物
+25  科创币    chaily94520    2012/08/29 制作很精致,很有创作性
来自:物理高能技术 / 电磁炮
74
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
jrcsh 作者
13年0个月前 IP:未同步
371282
元件介绍:

红外发光二极管
通电后发出不可见的红外光
工作电压,1.4V~1.65V 左右 建议1.5V
电流 =< 10ma 可以视情况降低电流,降低电流二极管所发出的红外光强度下降。
外观与普通发光二极管无明显区别,工作时管内可以看到一个红集点。非一定有与工艺选用有关

1.jpg


红外(接收)二极管

特点:红外接收二极管能很好地接收红外发光二极管发射的波长为940nm的红外光信号,
          而对于其他波长的光线则不能接收。因而保证了接收的准确性和灵敏度。
工作电压, 不知/忘记了
工作电流      不知/忘记了  可以参考普通发光二极管的=< 10ma
外观与普通发光二极管相类似,但封装材料的颜色明显为黑紫色、


详细说明可以参考:XXXXXXXXXXXXXXXXXXXXXX/view/XXXXXXXXXXm

2.jpg


LM339、LM393 电压比较器

XXXXXXXXXXXXXXXXXXXXXX/view/XXXXXXXXXm
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
rudolf
13年0个月前 IP:未同步
371294
接收管我买到了透明的,一样好用。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
371317
引用第2楼rudolf于2012-02-26 02:01发表的 :
接收管我买到了透明的,一样好用。




没有用过,有何不同了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
371342
核心功能电路, 显示数值电路未有。

3333.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
科学人
13年0个月前 IP:未同步
371346
与多级加速的单片机部分合为一体

电压等状态实时显示

编写APP

使用蓝牙串口将数据发送至PC/IOS/ANDROID/塞班等设备

由手机控制发射

自动同步
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
科学人
13年0个月前 IP:未同步
371349
传统1602也忒土了吧,而且STN横行反应速度慢,并口浪费资源,价格高

数码管数据量太小

320240TFT~~~

串口至少也要VCP,配合2303才可以

愿意用2102 2232也可以

外挂EEPROM配置设备属性

真有感觉
+1
科创币
jrcsh
2012-07-12
庐山升龙拳
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
科学人
13年0个月前 IP:未同步
371352
可以和高速图像记录设备通讯~~

触发拍照/摄像

计算子弹动能~~~

自动上传到SNS~~

操纵杆+舵机控制炮管方向~~

搭载摄像机模块

用WIFI/蓝牙返回图像~~

故障自检~~
+50
科创币
jrcsh
2012-03-11
天马流星拳
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
科学人
13年0个月前 IP:未同步
371355
环境温湿度~~

TTS语音播报~~

或者控制SIRI

当前时间

关系图像

XLS和PDF生成

GPS定位

配合SNS网站

分享给好友

环境亮度补偿

差不多了
就这些
+30
科创币
jrcsh
2012-02-26
庐山升龙霸~~~~~~~~~~~~~~~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
10班陈大葱22号
13年0个月前 IP:未同步
371408
光电二极管串的电阻比较大了把10k换成1k吧 响应快些,不过发光管的电流就得调大了
感觉麻烦的还是怎样适应各种各样的炮口和子弹,放的位置稍有偏差估计就会无法触发或是直接打到管子上了。
或者把二极管换成激光管,5mW的那种,比如这个XXXXXXXXXXXXXXXXXXXXXX/XXXXXXXm?id=13713864618,然后再调整焦距让激光聚焦后再扩散到光电二极管上,测速的时候就让子弹穿过焦点保证完全触发
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
black
13年0个月前 IP:未同步
371413
LS那种激光模组 实测普通的红外接收二极管对它的响应并不理想
不过也可能是没对准

普通二极管不完全触发 我想也是能零误差检测的
因为触发上升的斜率是一样的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
371684
引用第9楼10班陈大葱22号于2012-02-26 13:11发表的 :
光电二极管串的电阻比较大了把10k换成1k吧 响应快些,不过发光管的电流就得调大了
感觉麻烦的还是怎样适应各种各样的炮口和子弹,放的位置稍有偏差估计就会无法触发或是直接打到管子上了。
或者把二极管换成激光管,5mW的那种,比如这个XXXXXXXXXXXXXXXXXXXXXX/XXXXXXXm?id=13713864618,然后再调整焦距让激光聚焦后再扩散到光电二极管上,测速的时候就让子弹穿过焦点保证完全触发  



使用 10K管是为了更好的灵敏度, 在后边我还会提到调整这个的技巧, 10K 只是一个保守值,可以田加到20K, 这样触发的灵敏度更高,

电路上可能反了,看看是在软件处理还是要在调整过来,


适应各种各样的炮口和子弹,  实验应用中~~~一般也就 8~4mm口径内 , 我除直径的 3/5以上 调整好灵敏度,(过道管内也有反射问题,使用对管就比较灵活了,要是使用成品的光电开关,就要选好尺寸了)

  激光管还得调制~~~ 恒流、恒压~~~~ 折腾死人了 ,,,,  还是从灵敏订下手简单得多
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
371691
有点老年痴呆了,看来还是要重新理一下这个动作过程。

无物体通过测速器时, 红外二极管是导通的,    这时LM339因当输出高电平,(先高电平是因为,一但触发高电平下降得比低电平快<在这个电路上>)

有物体通过测速器时, 物体遮挡了红外线,红外管导通量下降,当下降到流出电流小于,限流电阻的电流时,通向LM339端的电压着上升,当大于另一端的电压(>1mV)时,输出端口着反转,  MCU的中断也被触发。


反查,MCU 中断的触发电平是什么  ,   在选择,参考电压和接收管因接在哪边
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
vocal@ルカ
13年0个月前 IP:未同步
371707
回 8楼(科学人) 的帖子
电池电压自检

部署时候低功耗待机

防拆解报警

2次冗余设计
防止意外失效

提供fpv接口
允许倒挂

主动组团设计
提供关门打狗模式

攻击损失评级

主动送粮食

粮食剩余报告

活动目标追踪

激光照射警告

红外线照射警告

烟雾发射器

提供视频输出
用于接虚拟眼镜

''''''
+18
科创币
科学人
2012-02-26
送出剩余分数
+5
科创币
jrcsh
2012-02-27
还好有一半是搞得出来的~~~~ 不过这成本~~~和技术含量又上去了~~~小朋问起来~~~我让他们找你解答好了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
mr-l
13年0个月前 IP:未同步
371709
呃............俺手头上就有一个成品,最大量程1/50us。初始设定两对光电管间隔10cm.(200m/S范围内的都可测量,200m/s以上的只要增加光电管的距离即可)
+5
科创币
jrcsh
2012-02-27
PCB面积有限。。。。。9*15cm 的比较合适作这个,更换更快的MCU是个省事活
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
mr-l
13年0个月前 IP:未同步
371711
引用第14楼mr-l于2012-02-26 23:53发表的  :
呃............俺手头上就有一个成品,最大量程1/50us。初始设定两对光电管间隔10cm.(200m/S范围内的都可测量,200m/s以上的只要增加光电管的距离即可)

错了,时间单位是ms
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
mr-l
13年0个月前 IP:未同步
371712
回 14楼(mr-l) 的帖子
错了,时间单位是ms
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
371718
Re:回 14楼(mr-l) 的帖子
引用第16楼mr-l于2012-02-26 23:54发表的 回 14楼(mr-l) 的帖子 :
错了,时间单位是ms  



C52?


12M下刚好对应1M   定时器的速度 1us    用中断加定时器~~~ 这也是大神们早早提示我的方法,只是哪时~~~俺刚学点51一定要找别的方法折腾折腾~~~不过最后还是用个方法,精度和速度都是相对比较好的
+1
科创币
mr-l
2012-02-28
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
vocal@ルカ
13年0个月前 IP:未同步
371726
回 17楼(jrcsh) 的帖子
我家不管饭''''
lz考虑到日光灯那个50hz对光电管影响没有'''''
+1
科创币
jrcsh
2012-02-27
直接作在铝管中,有过类似应用测试,示波器中未见干扰
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
371845
通过查阅STC-89C52的厂家技术文档
STC89C51RC-RD+_GUIDE-CHINESE.pdf


1.jpg


确定中断的触发电平为只有低电平触发,但可以设置成,低电平方式 、下降沿方式


哪么确定下,MCU的中断电平因保持为高电平,


LM339,在无物体通过开关管时因输出高电平,


根据红外二极管(接收到红外光)的工作状态无物体通过时为导通,此时该采集点为低电平,之前采用的上接电阻为10K,改变1K上拉/限流电阻 这样在电路从低向高电平切换时,电压的上升时间将更短,(其实这种应用电路对这点时间太严格的要求,只是纯粹对性能的一点YY《10班陈大葱22号恭喜说中了~~··无奖品》不过我到是反对给太发光管太大电流,我喜欢把电压控制在临界点附近这样,物体一通过触发的灵敏度就很高了)


2.jpg


图上哪上二极管1n4007只是随便找个型号替代红外二极管,




我决定~··偷工减料,数据直接从TTL哪输出成232接口,使用串口数据接收软件接收数据。
这样外围显示电路都省了~~~~~ 哈哈


不过这个输出显示的接口还是要预留出来的。




初步PCB布局
3333.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
拔刀斋
13年0个月前 IP:未同步
371862
引用第3楼jrcsh于2012-02-26 09:28发表的  :
没有用过,有何不同了


黑封装阻挡可见光干扰
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
371865
引用第20楼拔刀斋于2012-02-27 16:17发表的  :

黑封装阻挡可见光干扰




就这么简单太坑爹了把 [s:215]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
372238
1.jpg

QQ截图20120228105854.jpg
+1
科创币
科学人
2012-03-02
8错
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
master863
13年0个月前 IP:未同步
372289
非常不错,淘宝上有卖这个的,不过贵了,要400多元,期待实验结果。
+1
科创币
jrcsh
2012-02-29
结果是ok 的~~~·在n年前玩玩这个的时间就作好了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
372480
已经想到更小体积的方案,有待测试,还是选完成这个把
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
13年0个月前 IP:未同步
372707
2.jpg

恶心阿发现LM339的封装有错~~~~~      还好焊板子时发现了~~~[s:213]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
372729
基本完成检测部分的调试,电路中加了上拉电阻~~~~ 333.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
372899
程序主体框架:
      
#include<REG52.H>
      
void delay(unsigned char ms ) //延时函数
{      
      unsigned char i;      
            while(ms--)      
               for(i=0;i<110;i++);      
}          
void main( )
{      

      EA=1; //开全局中断      
      EX0=1; //开外部中断0      
      EX1=1; //开外部中断1      
      ET1=1; //开定时中断1      
      ET2=1; //开定时中断2    
      IT0=0; //外部中断0低电平触发    
      IT1=0; //外部中断1低电平触发    
      PX0=1; //外部中断0高 优先级  
      PX1=1; //外部中断1高 优先级    
      TMOD = 0x21; //T0T1方式控制
      TH0= 0x3c; // T0高8位
      TL0= 0xb0; // T0低8位
                //T2为波特率发生器模式......
                      
      RCLK = 1; //T2为接收波特率发生器
      RCAP2H = 0xff; //T2高8位  // 2400
      RCAP2L = 0xf3; //T2低8位
      TCLK = 1; //T2为发送波特率发生器
      RCAP2H = 0xff; //T2高8位
      RCAP2L = 0xf3; //T2低8位
      SCON = 0x50; //串口模式
    
delay(1); //延时函数,延时1ms......
      
            //TR0=1;  //启动T0
            //TR1=1;  //启动T1      
            //TR2=1;  //启动T2      
            //TR0=0;  //停止T0      
            //TR0=0;  //停止T0      
            //TR1=0;  //停止T1      
            //TR2=0;  //停止T2      
      
      
}      
      
            
void interint0() interrupt 0 //using **
      //外部中断0处理      
{    
      
      
}    
void interint1() interrupt 2 //using **
      //外部中断1处理      
{    
      
      
}    
void intertimer1() interrupt 3 //using **
      //T1定时中断处理      
{    
      
      
}    
void intertimer2() interrupt 5 //using **
      //T2定时中断处理      
{    
      
      
}
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66
12年11个月前 IP:未同步
372912
回 8楼(科学人) 的帖子
你牛人呀 一口气说了那么多 我气都不看喘了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66
12年11个月前 IP:未同步
372921
楼主的思路貌似和我之前给一个坛友的程序很像 不知道楼主的程序完成的怎么样了 我也把自己的贴出来 希望能对楼主有帮助,无用的话就当俺路过

attachment icon 电火包.rar 63.75KB RAR 64次下载
图片中的两个按键就相当于红外管触发 可以仿真
76N@RKYSN}2_LA{I`JCNJUC.jpg
+30
科创币
jrcsh
2012-03-02
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
373233
硬件电路,测试通过,与设计的工作原理相符合,

初步测速性能估计 2000M/S~~1.5M/S  可以检测检测范围内. 速度还会在取小在点[s:274]  估计到 0.01M/S

最高速度还是保守在 1000M/S 或 200M/S [s:274]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
373294
#include <REG51.H>
#include <intrins.h>
#include <absacc.h>
#define uint unsigned long int
#define uchar unsigned char

uchar code commm[]={'0','1','2','3','4','5','6','7','8','9'};


uint aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,lll,ttt;




void interint1() interrupt 2 //using ** 入口
      //外部中断1处理      
{    
TR0=1;  //启动T0
ttt=1;    //状态标记  
      
}    
      
void interint0() interrupt 0 //using **  出口
      //外部中断0处理      
{    
  if(ttt==1)
   {
    TR0=0;  //停止T0
  ttt=2;
}


}    
    
void intertimer1() interrupt 1 //using **
      //T1定时中断处理      
{    
    TR0=0;  //启动T0  
    TH0= 0x00; // T0高8位
     TL0= 0x03; // T0低8位 //补偿
     TR0=1;  //启动T0  
     hhh++;
}    
  






void main()
{
//unsigned int   aaa,bbb,ccc; // mmm;//mmm99
        //2400bps@24.000MHz
      EA=1; //开全局中断
    PCON &= 0x7F;        //波特率不倍速
    SCON = 0x50;        //8位数据,可变波特率
//    AUXR &= 0xBF;        //定时器1时钟为Fosc/12,即12T
//    AUXR &= 0xFE;        //串口1选择定时器1为波特率发生器
    TMOD &= 0x0F;        //清除定时器1模式位
//    TMOD = 0x21;    
    TL1 = 0xE6;        //设定定时初值
    TH1 = 0xE6;        //设定定时器重装值
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;        //启动定时器1
    
      EX0=1; //开外部中断0      
      EX1=1; //开外部中断1      
      ET0=1; //开定时中断1      
     // ET1=1; //开定时中断2    
      IT0=0; //外部中断0低电平触发    
      IT1=0; //外部中断1低电平触发    
      PX0=1; //外部中断0高 优先级  
      PX1=1; //外部中断1高 优先级    
      TMOD = 0x21; //T0T1方式控制
      TH0= 0x00; // T0高8位
      TL0= 0x00; // T0低8位






while(1)
{  


if(ttt==2)
{
ttt=3;




SBUF='=';
while(!TI);    
TI=0;
SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;
SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;
aaa=TH0;
bbb=TL0;
TH0=0;
TL0=0;
ccc=hhh*65535+aaa*255+bbb*2;
ddd=ccc*2;
fff=1026400000/ddd;






SBUF='a';
while(!TI);    
TI=0;
SBUF='a';
while(!TI);    
TI=0;
SBUF='a';
while(!TI);    
TI=0;
SBUF='=';
while(!TI);    
TI=0;

SBUF=commm[aaa/100%10];
while(!TI);    
TI=0;
SBUF=commm[aaa/10%10];
while(!TI);    
TI=0;
SBUF=commm[aaa%10];
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;


SBUF='b';
while(!TI);    
TI=0;
SBUF='b';
while(!TI);    
TI=0;
SBUF='b';
while(!TI);    
TI=0;
SBUF='=';
while(!TI);    
TI=0;

SBUF=commm[bbb/100%10];
while(!TI);    
TI=0;
SBUF=commm[bbb/10%10];
while(!TI);    
TI=0;
SBUF=commm[bbb%10];
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;


SBUF='h';
while(!TI);    
TI=0;
SBUF='h';
while(!TI);    
TI=0;
SBUF='h';
while(!TI);    
TI=0;
SBUF='=';
while(!TI);    
TI=0;

SBUF=commm[hhh/100%10];
while(!TI);    
TI=0;
SBUF=commm[hhh/10%10];
while(!TI);    
TI=0;
SBUF=commm[hhh%10];
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;
SBUF='c';
while(!TI);    
TI=0;
SBUF='c';
while(!TI);    
TI=0;
SBUF='c';
while(!TI);    
TI=0;
SBUF='=';
while(!TI);    
TI=0;
SBUF=commm[ccc/1000000%10];
while(!TI);    
TI=0;
SBUF=commm[ccc/100000%10];
while(!TI);    
TI=0;
SBUF=commm[ccc/10000%10];
while(!TI);    
TI=0;
SBUF=commm[ccc/1000%10];
while(!TI);    
TI=0;  
SBUF=commm[ccc/100%10];
while(!TI);    
TI=0;
SBUF=commm[ccc/10%10];
while(!TI);    
TI=0;
SBUF=commm[ccc%10];
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;


SBUF='f';
while(!TI);    
TI=0;
SBUF='f';
while(!TI);    
TI=0;
SBUF='f';
while(!TI);    
TI=0;
SBUF='=';
while(!TI);    
TI=0;
SBUF=commm[fff/1000000000%10];
while(!TI);    
TI=0;
SBUF=commm[fff/100000000%10];
while(!TI);    
TI=0;
SBUF=commm[fff/10000000%10];
while(!TI);    
TI=0;
SBUF=commm[fff/1000000%10];
while(!TI);    
TI=0;
SBUF=commm[fff/100000%10];
while(!TI);    
TI=0;
SBUF=commm[fff/10000%10];
while(!TI);    
TI=0;
SBUF='.';
while(!TI);    
TI=0;
SBUF=commm[fff/1000%10];
while(!TI);    
TI=0;  
SBUF=commm[fff/100%10];
while(!TI);    
TI=0;
SBUF=commm[fff/10%10];
while(!TI);    
TI=0;
SBUF=commm[fff%10];
while(!TI);    
TI=0;
SBUF='M';
while(!TI);    
TI=0;
SBUF='/';
while(!TI);    
TI=0;
SBUF='S';
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=' ';
while(!TI);    
TI=0;
SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;


hhh=0;


}




aaa++;
if(aaa>30)
{
aaa=0;
bbb++;
}


if(bbb>300)
{


bbb=0;


SBUF='*';//28;    
while(!TI);    
TI=0;




ccc++;
if(ccc>36)
{
ccc=0;
SBUF='<';//28;    
while(!TI);    
TI=0;


SBUF=0xd;//28;    
while(!TI);    
TI=0;


SBUF=0xa;//28;    
while(!TI);    
TI=0;
}


} // bbb >1000








    }//w1
}//ma







完成核心代码, 通过串口发送数据给Pc机通过串口接收软件接收显示数据
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
373296
aaa=155  
bbb=223  
hhh=004  
ccc=0302111  
fff=0000003397  
*<
**********=


aaa=134  
bbb=125  
hhh=004  
ccc=0296560  
fff=0000003461  
*<
***************************<
***************=


aaa=228  
bbb=178  
hhh=004  
ccc=0320636  
fff=000000.1600M/S  
*<
**************=


aaa=186  
bbb=036  
hhh=004  
ccc=0309642  
fff=000000.1657M/S  
*<
*******=


aaa=165  
bbb=158  
hhh=004  
ccc=0304531  
fff=000000.1685M/S  
*<
******=


aaa=037  
bbb=077  
hhh=003  
ccc=0206194  
fff=000000.2488M/S  
*<
*********=


aaa=116  
bbb=026  
hhh=002  
ccc=0160702  
fff=000000.3193M/S  
*<
*****=


aaa=110  
bbb=146  
hhh=002  
ccc=0159412  
fff=000000.3219M/S  
*<
*****=


aaa=086  
bbb=053  
hhh=002  
ccc=0153106  
fff=000000.3351M/S  
*<
******=


aaa=134  
bbb=031  
hhh=002  
ccc=0165302  
fff=000000.3104M/S  
*<
**********=


aaa=234  
bbb=115  
hhh=002  
ccc=0190970  
fff=000000.2687M/S  
*<
******=


aaa=131  
bbb=077  
hhh=002  
ccc=0164629  
fff=000000.3117M/S  
*<
***************************=


aaa=124  
bbb=115  
hhh=147  
ccc=9665495  
fff=000000.0053M/S  
*<
*************************************<
******=


aaa=012  
bbb=158  
hhh=004  
ccc=0003376  
fff=000015.2014M/S  
*<
******************=


aaa=025  
bbb=162  
hhh=304  
ccc=9732734  
fff=000000.0026M/S  
*<
********=


aaa=073  
bbb=135  
hhh=152  
ccc=9718065  
fff=000000.0052M/S  
*<
********=


aaa=081  
bbb=198  
hhh=146  
ccc=9327021  
fff=000000.0055M/S  
*<
*****=


aaa=115  
bbb=044  
hhh=104  
ccc=6582913  
fff=000000.0077M/S  
*<
*******=


aaa=215  
bbb=018  
hhh=129  
ccc=8246736  
fff=000000.0062M/S  
*<
****=


aaa=075  
bbb=084  
hhh=084  
ccc=5262093  
fff=000000.0097M/S  
*<
**************=


aaa=037  
bbb=230  
hhh=004  
ccc=0009895  
fff=000005.1864M/S  
*<
*****************=


aaa=132  
bbb=028  
hhh=280  
ccc=8776726  
fff=000000.0027M/S  
*<
*************************************<
**************************







从这个测试器的数据来看,只要400g重量速度达到 1m/S 头是尖的硬物,打入复合板、软木板等,都是轻易的。





接来下就是整理一下资料了,准备结贴
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
374327
4444.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
375114
666666666.jpg


777777777777.jpg




该死的5110字库~~~~折腾得我要生要死的  最后我用XLS表格算出来
9999999.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wkk123
12年11个月前 IP:未同步
375261
[s:286] 灰常好。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
潜伏者
12年11个月前 IP:未同步
375354
有套件发售吗?我上次做了一个不太成功。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
375540
引用第37楼狩猎者于2012-03-10 19:54发表的 :
有套件发售吗?我上次做了一个不太成功。  



完全开源的项目:

  最终会提供:
    原理图
                      PCB布线图
                      实物及效果(~~~~~用手指触发.....没空去搞个电磁加速器出来玩了....事情还是多多的)
                     MCU-源代码
                     MCU-软件工程文件
                     MCU-hex文件(编译后的文件,不会写程序的同伙要用软件输入(烧写)到MCU就可以用了)
                     MCU-烧写软件(或下载地址,费用浪费论坛空间容量)

用洞洞板就能作了, 提供最小核心的图纸,像显示部分,默认带有串口数据输出,其实的数码管什么的什么加上去之后修改代码就行了,  我在代码中注意用到的几个变量,在哪哪位置取数据出来,其它人就能接着加功能上去了。

这次用的是STC89C52   22Mhz的晶振,  2个红外管相距离0.10246M(理想值,经过100M示波器作为时间基本源进行标定,这个距离下时间产生的时间误差是 +16us -30us)定位器最小时间是0.5us  理论上可以测试出2000M/S 的速度

200M/S 的理论精度是  正负0.0001M
传感器多种因素累加的误差有 ±50us 左右误差,(误差来至:加速物的通过位置、加速度物的头尖、加速度物体的直径)
精度至少因当在 0.005M/S

加速度物体的直径:
1~2.5mm有比较高的漏过机率,但靠中心点的话能检测出来,
3~10mm 是比较合适的直径
10~11mm 勉强能过,但是铝管壁有比较多的摩擦挂损,
11.5mm 以不上建议通过~~~~ 一不小心测速器也一同飞机了!~~~~~

作为业余应用的设备这样的精度已经远远的满足,
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
10班陈大葱22号
12年11个月前 IP:未同步
375568
不是有字库生成程序的么?
感觉这个相当好用:
attachment icon PCtoLCD2002完美版.rar 703.70KB RAR 58次下载
+50
科创币
jrcsh
2012-03-11
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
10班陈大葱22号
12年11个月前 IP:未同步
375569
感觉最好还是能出套件,不会写单片机程序的估计也没法烧程序...
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
375570
提供:MCU-hex文件  和源代码   下载个软件就能自己修改或下载了

这东西作成产品真的好麻烦,要花不少精力,收费太底,基本在倒贴。
还是受人于渔好了。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
w_b_b_w
12年11个月前 IP:未同步
375772
设计了个利用成品高频计数器(50000次/秒)搞的测速器,配件明天到货,弄完后有兴趣的哥们帮忙测试啊,因为我还没有搞电磁加速器哈哈。。。
+50
科创币
jrcsh
2012-03-11
加油,可以拿个别的东西扔过去~~~~~ 用数字示波器看时间
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
17620462
12年11个月前 IP:未同步
375951
我AVR的测速程序也写好了,看了小灰灰电路部分,正好优化一下自己的光电电路。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
376237
整理文档贴

最终会提供:原理图
                      PCB布线图
                      实物及效果(~~~~~用手指触发.....没空去搞个电磁加速器出来玩了....事情还是多多的)
                     MCU-源代码
                     MCU-软件工程文件
                     MCU-hex文件(编译后的文件,不会写程序的同伙要用软件输入(烧写)到MCU就可以用了)
                     MCU-烧写软件(或下载地址,费用浪费论坛空间容量)





核心原理图:(光电检测部分,数据显示部分由爱好者自行选定了)

{注意下图中少了2个上拉10K电阻,位于LM339的输出}
1.jpg


实物及效果:
2.jpg

3.jpg



MCU-源代码  (已经包含在工程文件中,基本功能从TTL上发送数据出来,12T 下是2400波特, 也可外接一块5110液晶屏直接显示,接口定义为:
sbit    sce =P2^4;   //片选
sbit    res =P2^3;   //复位,0复位
sbit    dc  =P2^2;  //1写数据,0写指令
sbit    sdin =P2^1;  //数据
sbit    sclk =P2^0;  //时钟  

到3月下旬有时间在解说一下整个程序代码)
MCU-软件工程文件  
attachment icon 03-2-f5110-ok.rar 52.69KB RAR 101次下载
MCU-hex文件(编译后的文件,不会写程序的同伙要用软件输入(烧写)到MCU就可以用了)  :  
attachment icon 5551110.rar 3.49KB RAR 71次下载
MCU-烧写软件(或下载地址,费用浪费论坛空间容量)  :XXXXXXXXXXXXXXXXXXXXXXXXX/datasheet/stc/STC-ISP-V4.88/STC-ISP-V4.88-NOT-SETUP-CHINESE.EXE





性能评估:


这次用的是STC89C52   22Mhz的晶振,  2个红外管相距离0.10246M(理想值,经过100M示波器作为时间基本源进行标定,这个距离下时间产生的时间误差是 +16us -30us)定位器最小时间是0.5us  理论上可以测试出2000M/S 的速度


200M/S 的理论精度是  正负0.0001M

传感器多种因素累加的误差有 ±50us 左右误差,(误差来至:加速物的通过位置、加速度物的头尖、加速度物体的直径)

精度至少因当在 0.005M/S


加速度物体的直径:

1~2.5mm有比较高的漏过机率,但靠中心点的话能检测出来,

3~10mm 是比较合适的直径

10~11mm 勉强能过,但是铝管壁有比较多的摩擦挂损,

11.5mm 以不上建议通过~~~~ 一不小心测速器也一同飞机了!~~~~~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
376537
去除附加功能后的核心代码~~~~ 真TmmD简单 、特波发生器的代码没清~~~ 不想一个个找出来了 就在ma设置哪

#include<reg52.h>
//#include"5110.h"
//#define uchar unsigned char
#define uint unsigned long int


uint aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,lll,ttt,qqq; //乱七八糟自己删除没用的



void interint1() interrupt 2 //using ** 入口
      //外部中断1处理      
{    
TR0=1;  //启动T0
ttt=1;    //状态标记  
P1=0xff;  //输出调试信号方便校正时间
}    
      
void interint0() interrupt 0 //using **  出口
      //外部中断0处理      
{          
if(ttt==1)
{
  TR0=0;  //停止T0
  ttt=2;
}
P1=0x00; //输出调试信号方便校正时间
}    
    
void intertimer1() interrupt 1 //using **
      //T1定时中断处理      
{    
  
     TR0=1;  //启动T0  
     hhh++;
}    
  

void main()
{

    EA=1; //开全局中断
    PCON &= 0x7F;        //波特率不倍速
    SCON = 0x50;        //8位数据,可变波特率
    TMOD &= 0x0F;        //清除定时器1模式位    
    TL1 = 0xE6;        //设定定时初值
    TH1 = 0xE6;        //设定定时器重装值
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;        //启动定时器1    
      EX0=1; //开外部中断0      
      EX1=1; //开外部中断1      
      ET0=1; //开定时中断1      
      IT0=0; //外部中断0低电平触发    
      IT1=0; //外部中断1低电平触发    
      PX0=1; //外部中断0高 优先级  
      PX1=1; //外部中断1高 优先级    
      TMOD = 0x21; //T0T1方式控制
      TH0= 0x00; // T0高8位
      TL0= 0x00; // T0低8位


while(1)
{  

if(hhh>30)
{

ttt=3;
TH0=0;
TL0=0;
hhh=0;
TR0 = 0;    
}

if(ttt==3)
{
if(k2==0)
{
//输出调试信号方便校正
}
if(k3==0)
{
//输出调试信号方便校正
}
}//tt=3

if(ttt==2)
{
ttt=3;

ccc=(hhh*65536+TH0*256+TL0)/2;

fff=1026400000/ccc;//1026400000是经过处理的距离,实际距离是0.10264M 使用百分尺测出
                   //后边加多了几个零是对应了时间了向后移动的位数。这样避免了进入更长的沉浮点运算
                   //处理数据的速度就快了,只要在显示时把小数点在对应的地方标上着行。

//(在此输出数据给显示部分)
// ccc的结果是时间后弟一位为us
//fff 的结果就是速度、由速度的公式得来、速度=距离/时间
//
hhh=0;
TH0=0;
TL0=0;
}
}//w1
}//ma




工作流程:  物体从入口处进入,遮挡了红外光触发电压比较器,比较器输出低电平,
触发中断1/ 中断1处理函数/子程序内有起动定时器0的代码,使到定时器0开始计时。
定时器开发中断,如果定时器计时满了溢出,着在计数变量上加1

物体从出口经过 遮挡了红外光触发电压比较器,比较器输出低电平,触发了中断0
中断0处理函数/子程序内有停止定时器0的代码,使到定时器0停止计时。

在主程序收到,完成记得的信号完,读出定时器0的当前数据和溢出的计数,解出数据,就是物体的通过时间了,在用2个红外管的距离除去时间就得出速度。


这个东西的重点还是在校准上,虽然我是使用了100M数字示波器都校准了时间的,但是元件和工艺等问题误差还是有的。






整个程序的框架我是用工具生成的~~~我只是规划了一下要用到的功能,


我主要就是完成了


ccc=(hhh*65536+TH0*256+TL0)/2;


fff=1026400000/ccc;//1026400000是



这个解出时间的公式



其实的都是东拼一点西凑一点,在加上一些逻辑上的保护与保障就交差了

可以看看为什么我在程序中作了几个状态标记,比如 ttt  这个变量, 1,2,3 这3个数值起了什么作用
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年7个月前 IP:未同步
419936
补上~~~2个上拉电阻

9999.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eleunx
12年7个月前 IP:未同步
419939
回 46楼(jrcsh) 的帖子
挖坟了......
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
听我说瞎话
12年7个月前 IP:未同步
420165
不得已而挖之。。。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lxy999
12年7个月前 IP:未同步
421545
22.1184MHZ 石英晶振 ,不知道能不能用,精度应比22M的更好
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年7个月前 IP:未同步
421713
回 49楼(lxy999) 的帖子
能用不过计算起来麻烦多了,  反正现在这个的性能能满足一般的应用了~~~乖照帮省事多了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
博海
12年7个月前 IP:未同步
422705
哈哈
好东西
谢谢分享啊
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

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

jrcsh
学者 笔友
文章
491
回复
6730
学术分
4
2009/01/02注册,7年0个月前活动

.

主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

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