一种具有三轴圆周64个圆球的弹道导弹变质心装置
技术领域
本实用新型涉及一种具有三轴圆周64个圆球的弹道导弹变质心装置,尤其是弹道导弹变质心装置。
背景技术
现有常规弹道导弹变质心装置是利用内部圆球的滚动来改变导弹质量中心的,它们都很难实现自由灵活的快速改变导弹的质量中心。一种具有三轴圆周64个圆球的弹道导弹变质心装置利用一个圆周上面的64个圆球在这个圆环的圆周上的滚动来改变导弹质量中心的目的。同时它具有3个圆环,分别是X、Y、Z,它们就像空间中的坐标轴一样两两相交90度。而且每个圆环上面都有64个圆球,这63个圆球在这个圆周上面滚动就可以改变导弹的质量中心。
实用新型内容
为了解决常规弹道导弹变质心装置很难灵活方便的改变导弹质心的目的,一种具有三轴圆周64个圆球的弹道导弹变质心装置提供了一种非常容易快速改变导弹质心的装置。这个装置是一种利用三个圆周上面的64个圆球在圆周上面的滚动来改变导弹质心的装置。这三个圆周按照空间中的X、Y、Z三个轴一样分布,它们两两垂直90度。
本实用新型解决其技术问题所采用的技术方案是:一种具有三轴圆周64个圆球的弹道导弹变质心装置,是安装在弹道导弹弹体中部的一个圆环型装置。该弹道导弹的弹头(1)安装在导弹单体(2)上部,变质心装置的圆环(3)安装在导弹弹体中部,火箭发动机(4)安装在导弹底部。如图1所示,变质心装置由圆环和安装在圆环上面的64个圆球组成,这64个圆球可以在圆环上面滚动,进而改变导弹的质心。如图2所示,64个圆球(5)安装在导弹变质心装置的一个圆环(3)上面。这64个圆球分别安装在相互垂直的3个圆环(7),(8),(9)上面。64个圆球(5)分别用圆环圆心处的圆杆(6)和圆环的圆心相连,64个圆球(5)被和圆环圆心相连的圆杆(6)拉着在圆环(3)上面滚动,就会使导弹单体的质心发生改变,进而会使打导弹的质心发生改变。如图3所示,3个圆环(7),(8),(9)分别控制着空间中X,Y,Z三个轴的质心,利用圆杆(6)围绕圆环(7),(8),(9)圆心的转动,进而改变圆球(5)在圆环上面的滚动,就会改变这个圆环的质心,进而改变导弹的质心。
同时可以讲相邻的8个圆球分为一组,这样就可以将每个圆环上面的64个圆球分为8组,只要同时改变8个圆球在圆环上面的滚动方向就可以改变一个方向上面的质心。同时利用电磁铁代替圆球,同时增大或减少8个相邻电磁铁的电压,就会使8组电磁铁之间的电磁力减小或增大,进而就会改变一个方向上面的质心,进而就会改变导弹的质心。
利用单片机STC8A8K64S4A12控制8路PWM波形的占空比增大或者减小,再利用PWM驱动电路,将PWM的5V电压升高为24V,就会代替64圆球的64个电磁铁的磁性增大或者减小,进而改变圆环在一个方向上面的质心,进而改变导弹在一个方向上面的质心。如图4所示,单片机STC8A8K64S4A12产生8路PWM波形。L298N驱动一路PWM波形使电磁铁产生电磁力。单片机STC8A8K64S4A12的控制程序可以在百度网盘上面下载微云文件分享:变质心下载地址:
https://share.weiyun.com/5WKskWH
https://pan.baidu.com/s/1Qi4w_aC_XR1dsN94NF4epQ
程序的源代码如下:
#include “config.h”
#include “STC8xxx_PWM.H”
#include “eeprom.h”
#include “Exti.h”
#include “time.h”
#include <math.H>
//#include “EEPROM.H”
#include “USART.h”
#include “delay.h”
#define EE_ADDRESS1 0x0100
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_PROGRAM 2
#define CMD_ERASE 3
#define Baudrate1 115200UL
#define ENABLE_IAP 0x80 //if SYSCLK<30MHz
extern int xdata g_x,g_y,g_z; //陀螺仪矫正参数
extern float xdata a_x,a_y; //角度矫正参数
extern float data AngleX,AngleY;
/************* 本地常量声明 */
u8 code T_Strings[]={“去年今日此门中,人面桃花相映红。人面不知何处去,桃花依旧笑春风。”};
/ 本地变量声明 **************/
u8 xdata tmp[1];
u16 addr;
u8 data h;
int data speed0=0,speed1=0,speed2=0,speed3=0; /机速度参数
int data PWM0=0,PWM1=0,PWM2=0,PWM3=0,PWM4=0,PWM5=0,PWM6=0,PWM7=0; //加载至PWM模块的参数
u8 xdata tmp1[1];
u8 i;
#define EE_ADDRESS2 0x0300
void Timer0_Config(void);
void Timer1_Config(void);
void DisableEEPROM(void);
void EEPROM_read_n(u16 EE_address,u8 DataAddress,u16 number);
void EEPROM_write_n(u16 EE_address,u8 DataAddress,u16 number);
void EEPROM_SectorErase(u16 EE_address);
/*******************************/
/ 外部函数和变量声明 *****************/
u8 CheckData(u8 dat)
{
if((dat >= ‘0’) && (dat <= ‘9’)) return (dat-‘0’);
if((dat >= ‘A’) && (dat <= ‘F’)) return (dat-‘A’+10);
if((dat >= ‘a’) && (dat <= ‘f’)) return (dat-‘a’+10);
return 0xff;
}
u16 GetAddress(void)
{
u16 address;
u8 i;
address = 0;
if(COM1.RX_Cnt < 3) return 65535; //error
if(COM1.RX_Cnt <= 5) //5个字节以内是扇区操作,十进制, 支持命令: E 0, E 12, E 120
// W 0, W 12, W 120
// R 0, R 12, R 120
{
for(i=2; i<COM1.RX_Cnt; i++)
{
if(CheckData(RX1_Buffer[i]) > 9) return 65535; //error
address = address * 10 + CheckData(RX1_Buffer[i]);
}
if(address < 124) //限制在0~123扇区
{
address <<= 9;
return (address);
}
}
else if(COM1.RX_Cnt == 8) //8个字节直接地址操作,十六进制, 支持命令: E 0x1234, W 0x12b3, R 0x0A00
{
if((RX1_Buffer[2] == ‘0’) && ((RX1_Buffer[3] == ‘x’) || (RX1_Buffer[3] == ‘X’)))
{
for(i=4; i<8; i++)
{
if(CheckData(RX1_Buffer[i]) > 0x0F) return 65535; //error
address = (address << 4) + CheckData(RX1_Buffer[i]);
}
if(address < 63488) return (address); //限制在0~123扇区
}
}
return 65535; //error
}
//姿态计算*****************************
void PWM_int (void) interrupt 22 //PWM中断函数
{
PWMCFG = 0; //CBIF; //清除中断标志
}
void PWMGO(void)
{
// int i=1;
//设置需要使用的PWM输出口为强推挽模式
P20 = 0;
P21 = 0;
P22 = 0;
P23 = 0;
// P24 = 0;
// P25 = 0;
// P26 = 0;
// P27 = 0;
P2n_push_pull(0x0f); // PWM0-P2.0 PWM1-P2.1 PWM2-P2.2 PWM3-P2.3 PWM4-P2.4 PWM5