单片机程序用C51编写 keil 4编译
#include<reg52.h>
#include<absacc.h>
#include<math.h>
sbit S=P1^0;
sbit O1=P2^0;
sbit O2=P2^1;
void delay20ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
}
void delayT(unsigned char T)
{
unsigned char x,y;
for(x=50;x>0;x--)
for(y=T;y>0;y--);
}
void main()
{
while(1)
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
S=1;
O1=1;
O2=1;
if(S==0)
{
delay20ms();
if(S==0)
{
O1=0;
delayT(3);
O2=0;
delayT(200);
O1=1;
delayT(3);
O2=1;
}
}
while(S==0)
;
}
}
----------------------------------------------------------------------------------------------------------------------------------
以下是Proteus双联仿真的输出波形:
将示波器触发通道选择在CH A 触发模式为下降沿触发 这样选择是因为触发开关在被按下的时候 产生一个下降沿 为电磁炮的启动信号
输出波形如图所示
可以看见CH B CH C两通道输出间隔1.7mS的宽度100mS的触发脉冲
啦啦啦啦~~~这就是电磁炮的驱动信号了
----------------------------------------------------------------------------------------------------------------------------------
将程序文件烧录进单片机 用示波器观察实际输出波形
示波器在Oneshot触发模式下 自动Stop 储存触发之后的一段波形
可见为非常漂亮的负电平方波输出
经过放大电路放大和反相之后
输出内阻抗为5Ω 电平幅值为5V的驱动方波 能提供高达1A的驱动电流
足够驱动KP50A
利用Curs功能测量出一级线圈导通后经过1.44mS的时间 二级线圈将被灌入电流
这个导通时间对应在程序中就是 t 这个时间能够精确到mm的等级
当然这只是初始估计数值 需要根据弹丸威力不断调试能够带来最佳效果的关键参数 t
这种无传感器磁阻式加速器的优势就被体现出来了 它和传统传感器多级加速电磁炮不同 它的调试只需要调语句中的某个值即可改变效果 给减小工作量能带来非常大的帮助 同时也为将来的磁阻式紧密电磁加速铺下了基奠
-------------------------------------------------------------------------------------------------------------------------------------------------------------
通告:
这台电磁炮Buliding至今 已经能够实现发射了 至于结果呢 不告诉你 噗 ~
由于明天要去南昌弄一些关于DRSSTC建设的东西 所以三天之内木有更新了
三天之后 回来优化程序 到那时就是这台电磁炮的完全体了 撒花 撒花~~
在这之前 有木有信心打穿铝罐呢?~~~ 那根杜邦线怎么用呢~~~ 欢迎坛友提问 吐槽 射击视频会择机放出 噗~!~~(>_<)~~
200字以内,仅用于支线交流,主线讨论请采用回复功能。