Author Archives: lyping

现代爱迪生,SN10实现成功软着陆

北京时间2021年3月4日7时许,SpaceX星舰原型(代号SN10)在得克萨斯州博卡奇卡(Boca Chica)成功进行了高空飞行测试,这是SpaceX星舰原型第三次挑战10公里级高度,也是首次成功软着陆,具有重要的里程碑意义。虽然SN10在落地后不久着火爆炸倒地,但这已经不太重要了。

图注:星舰原型SN10从高空飞回稳稳落地。

星舰首先飞行到最高点,随后进行姿态调整,使腹部冲下,借助腹部增大与空气接触面积,加大空气对星舰的阻力,然后星舰徐徐向地面飘落,在距离地面一定高度时,发动机再次点燃,使星舰重新直立起来,靠发动机的反推成功进行了软着陆。

在本次试验之前,2020年12月10日和2021年2月3日,星舰原型SN8和SN9分别进行了10公里级高度的测试飞行,发射和返回的前期都非常成功,但都是在最后着陆阶段发生了触地爆炸。其中SN8未能成功着陆的原因是飞船的燃料箱压力不足,发动机推力不够,未能让飞船成功软着陆。SN9的三台发动机在着陆的最后阶段只有一台点火工作,推力不够,发生粉碎性爆炸坠毁事故。

注释:这是SN8测试时的画面。
注释:这是SN9测试时旁观群众拍摄到的爆炸画面。

从完成度上讲,SN8甚至比SN9还要更好一些。SN8虽然发生了爆炸,但已经非常接近成功,SpaceX团队放出消息称,该拿到的数据都已经拿到,可看作是一次成功的失败。然而,谁也没想到的是,后续的SN9失败的还要更惨烈一些。因此,在本次SN10测试之前,马斯克也变得谨慎的乐观,称成功的概率只有60%。

2021年2月24日,SN10成功进行了第一次发动机静态点火测试,并发现了一台发动机存在故障。

2021年2月26日,在重新更换发动机之后,SN10成功进行了第二次发动机静态点火测试,三部火箭发动机持续运转了几秒钟时间。

实用版SpaceX星舰什么样子?

从SpaceX给这艘航天器起的名字就可以看出其用途,这是一种能够重复使用,两级入轨的重型火箭发射系统。目标是能够搭载大宗物资往返地球和太空、地球和月球、甚至地球和火星之间,终极愿景甚至支持火星殖民。

完整来源链接:https://mp.weixin.qq.com/s/YyjihWBcLYy67RYRJNhBSw

STM32驱动TMC5160步进电机芯片

1、STM32CubeMX工程设置

管脚定义

硬件SPI 参数设置

2、软件编写

//TMC5160 takes 40 bit data: 8 address and 32 data
void sendData(unsigned long address,long datagram)
{
	unsigned char i;
	cmd[0]=address;
	cmd[1]=(datagram >> 24) & 0xff;
	cmd[2]=(datagram >> 16) & 0xff;
	cmd[3]=(datagram >> 8) & 0xff;
	cmd[4]=datagram & 0xff;
	
	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_RESET); 		//SPI_CS片选拉低	
//	SPI_SendByte(address);
//	SPI_SendByte((datagram >> 24) & 0xff);
//	SPI_SendByte((datagram >> 16) & 0xff);
//	SPI_SendByte((datagram >> 8) & 0xff);
//	SPI_SendByte(datagram & 0xff);
	for(i=0;i<5;i++)
	{
		if(HAL_SPI_Transmit(&hspi1,&cmd[i],1,100) == HAL_OK)
		{
		}
		else;
	}	
	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_SET);  	//SPI_CS片选拉高
}

unsigned long ReadData(long address)
{
	char data[4] = {0, 0, 0, 0};
	unsigned long datagram = 0;
	
	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_RESET); 	//SPI_CS片选拉低
	
	SPI_SendByte(address);
	data[0] = SPI_ReceiveByte();//SPI_ReceiveByte((datagram >> 24) & 0xff);
	data[1] = SPI_ReceiveByte();//SPI_ReceiveByte((datagram >> 16) & 0xff);
	data[2] = SPI_ReceiveByte();//SPI_ReceiveByte((datagram >> 8) & 0xff);
	data[3] = SPI_ReceiveByte();//SPI_ReceiveByte(datagram & 0xff);	
	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_SET); 	//SPI_CS片选拉高
	
	datagram = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];	
	return datagram;
}