提问

火箭发动机测力台(三)

火箭与航天  / 倒序浏览   © 著作权归作者本人所有

#楼主# 2016-8-15

跳转到指定楼层
继上两篇帖子


先把程序发上来,这是是STM32的。


遥控器端程序 发射程序.zip (7.22 MB, 下载次数: 291)


测力计端程序
接收程序.zip (7.46 MB, 下载次数: 143)


然后是接线方式
继上次的图便于说明


电源部分就不说了。。。。


OLED接线方式
CS---------PA5
RST-------PB7
RS---------PB6
SCLK-----PB9
SDIN------PB8

NRF24L01接线方式
CE-------PB0
IRQ------PB1
CSN-----PA4
SCK-----PA5
MISO----PA6
MOSI----PA7


继电器接线方式
继电器1------PD3
继电器2------PD5


测力计接线方式
SCK---PB10
DT-----PB11


然后是遥控器部分

NRF24L01与OLED接线方式同测力计端方式一样
关于矩阵键盘
8个接口分别对应
PD0------PD7






键位说明
A-----发射按钮(输入好密码点击发射,就会成功出发接收端的点火器哟)
B-----清空按钮(什么密码输错了怎么办?需不需要重启复位啊?不要这么麻烦,按一下B就好了)
C-----手动改测力计采集频率按钮(按下去后会将测力器端的采集频率改为1次每秒,肉眼观察到发动机燃烧完毕后,按一下。妈妈再也不用担心无用数据太多啦)
D-----这个按钮什么用都没有哟
* -----同上(╯-_-)╯╧╧(你们可以自己开发啦)
#-----同上上( ▼-▼ )(年轻人自己开发吧,不要怂,就是干!)


*******************************************************我是分隔线******************************************************************(哼ヽ(≧Д≦)ノ,就是这么傲娇)
然后简单讲一讲程序了吧
首先是遥控器端(发射端)


先是矩阵键盘驱动代码,超简单哒。
一次一次的扫描

unsigned char KeyScan(void)
{
line_0 = 0;
line_1 = 1;
line_2 = 1;
line_3 = 1;
if(!list_0) return 1;

else if (!list_1) return 2;
else if (!list_2) return 3;
else if (!list_3) return 4;


line_0 = 1;
line_1 = 0;
line_2 = 1;
line_3 = 1;
if(!list_0) return 5;
else if (!list_1) return 6;
else if (!list_2) return 7;
else if (!list_3) return 8;

line_0 = 1;
line_1 = 1;
line_2 = 0;
line_3 = 1;
if(!list_0) return 9;
else if (!list_1) return 10;
else if (!list_2) return 11;
else if (!list_3) return 12;

line_0 = 1;
line_1 = 1;
line_2 = 1;
line_3 = 0;
if(!list_0) return 13;
else if (!list_1) return 14;
else if (!list_2) return 15;
else if (!list_3) return 16;

else
  {
a=0;
return 17;
}

line_0 = 1;
line_1 = 1;
line_2 = 1;
line_3 = 1;

  list_0 = 1;
  list_1 = 1;
  list_2 = 1;
  list_3 = 1;
}
检测到相应按键被按下就会返回对应一个值,比如说按下1键便会返回1这个值
然后看主程序中

if(x==1&&a==0)
{
  a=1;//先将标志位置1
  y=10*y+x;//Y就会加1位1
  OLED_ShowNum(5,0,x ,3,12);//显示X
  OLED_ShowNum(5,20,y ,6,12);//显示Y
  OLED_Refresh_Gram(); //刷新PLED
}
再来看看发射按钮

if(x==4&&a==0)//A键发送
{
  a=1; //先将标志位置1
  Password=y;
  Tx_Buf1[0]=Password/256;
  Tx_Buf1[1]=Password%256;
  NRF24L01_TxPacket(Tx_Buf1); //发送这个数组
}
这个就简单介绍到这里。
关于OLED驱动,NRF驱动什么的。。基本都是网上这里捞捞,那里复制复制。。。
说以也没什么讲的了。。




关于测力计端口
首先看一下中断函数中(20ms进入一次中断)

if(TIM3->SR&0X0001)
{        
  a1++;          //a1默认值是0
  if(a1>=a2)  //a2默认值是50,所以再未点火前只有当a1等于50的时候才会向SD卡中写入一次,即50*20ms=1秒,一秒写入一次
         {
    a1=0;
           xieSD();  //向SD卡写入数据
   }
  }


然后是主函数中

     if(shuju==10203)
{
a2=0;                 //直接将a2变为0,那么之前的一秒写入一次数据变为20ms写入一次数据,这也是点火的时候。
jidianqi1=1;  
jidianqi2=1;        //两个继电器同时激活
                       delay_ms(100);   //延长继电器工作时间,保证点火成功率。
}


然后是如何将写入速度再次改为1秒一次

if(shuju==55555)
{
a2=50;  //灰常简单,将a2改为50即可。
}


然后是关于写卡

int xieSD()
   {
f_mount(0,&fs);
itoa(PressCalcuate (), TXT_Str, 10);                                                                //一个转换函数,转为字符串
  
res = f_open(&fnew, "0.txt", FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
                res = f_lseek(&fnew, f_size(&fnew));                                                                //把指针指向文件末端
res = f_write(&fnew,&TXT_Str, sizeof(TXT_Str), &bw);                                    //像记事本写入
f_close(&fnew);               



//char enter=0xd;//char line_break=0xa; 这两个就是回车的 ASCII码了 写进去就相当于自动换行啦


res = f_open(&fnew, "0.txt", FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
                res = f_lseek(&fnew, f_size(&fnew));
res = f_write(&fnew, &enter, sizeof(enter), &bw);                                             // 写入0x  ASCII码
f_close(&fnew);  

res = f_open(&fnew, "0.txt", FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
                res = f_lseek(&fnew, f_size(&fnew));
res = f_write(&fnew,&line_break, sizeof(line_break), &bw);                             //写入0xa   ASCII码
f_close(&fnew);  
  
    f_mount(0, NULL);


    ii++;                   //写入一次ii加一,便于观察写入次数
  
  }




关于测力计程序,是之前从51上面移植过来的,其代码已经很成熟了,这里就不说明了。






上面的代码 仅供参考。
代码很乱很乱,,,,,,,没多少时间整理了,望见谅。
其还可以优化的地方很多很多,希望大家把自己的看法,意见,建议什么的,别藏着掖着啦,都“吐”出来吧(●ˇ∀ˇ●)


好啦,就这样啦。
转播转播 分享淘帖
回复

使用道具

8

主题

74

帖子

4464

积分

少尉

积分
4464
沙发
陈科帝 发表于 2016-8-15 23:14:37
对了这些注释什么的,程序上才没有呢。刚刚在文章上面加的注释。。。。
回复

使用道具 举报

8

主题

74

帖子

4464

积分

少尉

积分
4464
板凳
陈科帝 发表于 2017-7-21 19:16:16
对了,几天前黄司机一套带走事件,有必要说明一下。不要带电拔插!不要带电拔插!不要带电拔插!
还有,不同测力计的线序颜色是不一样的!!!要根据测力计厂家提供的线序来接HX711。。。照着上面图的接线方式不一定能用。。。。
回复

使用道具 举报

0

主题

3

帖子

42

积分

列兵

积分
42
地板
零度 发表于 2018-4-7 17:53:43
呜呜呜呜,下载不了
回复

使用道具 举报

8

主题

74

帖子

4464

积分

少尉

积分
4464
5#
陈科帝 发表于 2018-4-10 17:52:51
[quote=零度,7205]呜呜呜呜,下载不了[/quote] 可以下载啊。
回复

使用道具 举报

0

主题

3

帖子

42

积分

列兵

积分
42
6#
零度 发表于 2018-4-14 14:13:44
[quote=陈科帝,7215]可以下载啊。[/quote] 等级不够
回复

使用道具 举报

B Color Link Quote Code Smilies

关于作者

陈科帝

少尉

  • 主题

    8

  • 帖子

    74

  • 关注者

    5

Archiver|手机版|小黑屋|MakerTime 创客时代  
Powered by Discuz! X3.3  © 2001-2017 Comsenz Inc.