(开源)为电磁加速器配套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 作者
12年11个月前 IP:未同步
371282
元件介绍:

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

1.jpg


红外(接收)二极管

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


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

2.jpg


LM339、LM393 电压比较器

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




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

3333.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 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作者
12年11个月前 IP:未同步
371691
有点老年痴呆了,看来还是要重新理一下这个动作过程。

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

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


反查,MCU 中断的触发电平是什么  ,   在选择,参考电压和接收管因接在哪边
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 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字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 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字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年11个月前 IP:未同步
371865
引用第20楼拔刀斋于2012-02-27 16:17发表的  :

黑封装阻挡可见光干扰




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

QQ截图20120228105854.jpg
+1
科创币
科学人
2012-03-02
8错
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 IP:未同步
372480
已经想到更小体积的方案,有待测试,还是选完成这个把
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 IP:未同步
372707
2.jpg

恶心阿发现LM339的封装有错~~~~~      还好焊板子时发现了~~~[s:213]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 IP:未同步
372729
基本完成检测部分的调试,电路中加了上拉电阻~~~~ 333.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 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字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 IP:未同步
373233
硬件电路,测试通过,与设计的工作原理相符合,

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

最高速度还是保守在 1000M/S 或 200M/S [s:274]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 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年10个月前 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年10个月前 IP:未同步
374327
4444.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 IP:未同步
375114
666666666.jpg


777777777777.jpg




该死的5110字库~~~~折腾得我要生要死的  最后我用XLS表格算出来
9999999.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 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字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 IP:未同步
375570
提供:MCU-hex文件  和源代码   下载个软件就能自己修改或下载了

这东西作成产品真的好麻烦,要花不少精力,收费太底,基本在倒贴。
还是受人于渔好了。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年10个月前 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年10个月前 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年6个月前 IP:未同步
419936
补上~~~2个上拉电阻

9999.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年6个月前 IP:未同步
421713
回 49楼(lxy999) 的帖子
能用不过计算起来麻烦多了,  反正现在这个的性能能满足一般的应用了~~~乖照帮省事多了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年6个月前 IP:未同步
427605
1.jpg


使用洞洞板的格子作为距离标准也是一个方法,比手工打的洞有保证得多,
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年3个月前 IP:未同步
454907
YY 一个理低成本的方案:

  就是记录数据不直观,而且只能作为数值参考,不能作为速度依据,目前看看这个方案只为低级成本而且去的,


主要元件

红外发射,红外接收管各一个
MCU 1个 (STC: 15F204 /89C52)
晶振 一个人
按钮 3~5个

发光二极管.....12个~15个 /或 1位8字数码管
电阻一些

主要就这些了  

使用单管检测的方法得到,物体通过的记数值。
由于只有一位置数码管,
各个数位的显示通过按动按钮来显示

成本预计

MCU 5块
红外管一对 1块  
8位管  1~2块
5个按钮 2块~3块
电阻~~~ 1块
晶振+ 电容  1块
PCB    1块

预计整体成本   10~20块


电源自行解决 5V  150ma


草图

QQ截图2012092703321800000000.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年0个月前 IP:未同步
486993
根据~~~众多受益者的反应 ,和使用中出现的问题。

准备修善良以下问题:
                    
                     【】连续使用中可能出现没测试到的问题。减少逻辑自修正时间,
                     【】修正有方向性问题,随便哪个口进都可以。
                     【】辅助校正长度距离,及设置 机置(重大改善,辅助校正后测试出来的数据,各自己DIY的测速器数值都会比较接近,能减少不同DIY作品的数值差。而且不用使用专业的设备来校准,日常生活中常有的。。。。。。。保密~~~等发布)。
                     【】 5110显示的数位。 前边蛋蛋~~~太多。 大多刚玩的爱好者~~~ 果真与之前的预测一样,没有突破100M/S 的速度。有必要把显示的数位处理一下看起来方便, 还有小数位也相应用减少,

                   【】  5110 的字库 数字部分重新换成大1~2号的字好看一些。

                  【】  加入记录数据和查询上次数据的功能, 使用系统记时和一个流水号为标记,(为了不改变原有硬件架构,只使用MCU当软时钟,掉电不计时,或重新设置时间,或看流水号。) 可能会是2个MCU板本。C51的使用2401/2  12C5A06xx 的使用自带的 。

                 【】 视情况与: (开源)小会会的小功率磁阻式多级电磁加速器控制器 .XXXXXXXXXXXXXXXXXXXXXXXX/t/48022
                  合并为一体,(目前还没动工~~~)                  



          天大的坑爹就是~~~~~  这玩样被大量玩BB的采用了~~~而不是玩电磁G的~~~~ 搭棚的主既然把单台成本作到 8.RMB 不到~~~~使用一块9X12cm洞洞板PCB 的零售价元件参考成本约 12.RMB 。有人省去了339/393 。也可以正常工作...............
      
+25
科创币
delete
2013-06-10
有人省去了339/393, 解释一下吧! 顺便说说相关可能产生的影响!同时感谢LZ的耐心教导!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
12年0个月前 IP:未同步
487014
最后的哪个成本是无5110 下直接电脑
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
11年8个月前 IP:未同步
524125
目前收到 一个受益者的图片,
~~~~离爆音速不远了,
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
11年7个月前 IP:未同步
534433
回 60楼(qq363606096) 的帖子
......你是先下套子阿


  339 最明显的一个性能就是,1mv 差就能让电平翻转

三极管就麻烦多了,简单的是直接电阻分压,  这样就要使翻转点控制到0.6V(以不同三极管的说明为准). 反正是个折腾人的,没点模拟基础不要试.
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
11年7个月前 IP:未同步
534458
回 62楼(qq363606096) 的帖子
40~46楼11111111111
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh作者
11年7个月前 IP:未同步
534478
回 64楼(qq363606096) 的帖子
有个贴子提到,   用哪个 1N4007 表示
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

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

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

.

主体类型:个人
所属领域:无
认证方式:邮箱
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)}}