【广局拙作】相当够本的定时开伞
novakon2013/07/13电子技术 IP:广东
DSC_3459.jpg
DSC_3461.jpg   

STM8S103F3P6单片机

AMS1117-3.3

IRLML2502 MOS管

按键,自锁开关,小扬声器,橙色led

- 使用说明 -

自锁开关控制电源通断。电源接口有蓝黄橙三条线(有排针引出,照片中被挡住了),分别是地、3.7~4.2V(锂电池)、5~15V(方块电池、镍氢电池组),使用时只需要接其中一种电压即能工作。

开机后会发出:
嘀————————
间隔三秒

间隔三秒
……
表示电源接通,等待用户操作。

按一次按键,发出嘀嘀嘀嘀嘀,进入定时时间设置。
嘀——  嘀——  嘀——每一次代表一秒钟。当到达需要的时间,再次按按键,发出嘀嘀嘀嘀嘀,表示设置已经保存。将会以这个时间作为开伞延时。

黄色线是触发线,将引出的两条黄色线短接(或者把板上对应的排针用跳线帽短路),进入等待发射状态,发出嘀  嘀  嘀  嘀声。
在等待状态下,将黄色线分离,或者将跳线帽拔出,则进入定时状态。发出嘀嘀嘀嘀嘀……声
当时间到达预设的延时时间,将会发出嘀——————————————————的声音,MOS管将会导通,板上led会亮起(此led是mos管控制的),连接绿色线的点火头将会被电池电压通电。

通电一段时间后会回到初始状态,等待用户操作。
-------------------------------------------------------

点火最大电流:4A(前提是你的电池能提供这么大电流。如果输出电压低于2.9v单片机工作电压,或者低于稳压IC的最低工作电压4.8v,会导致重启等问题)
延时设置会被保存在单片机内置的EEPROM中,掉电不会丢失,非常实用。
+1  科创币    五成熟的牛排    2013/07/15 这跳线我瞬间笑了怎么破
来自:电子信息 / 电子技术
18
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
.........
11年7个月前 IP:未同步
547345
要加光耦..
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yanli12321
11年7个月前 IP:未同步
547346
小扬声器无爱.........用蜂鸣器多好
叉童鞋的焊工实在不敢恭维.........这恐怕无法承受住火箭的加速度吧
+1
科创币
kc地毯清洁员
2013-07-13
好无聊的签名
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
彩虹之巅
11年7个月前 IP:未同步
547347
引用第2楼yanli12321于2013-07-13 13:04发表的  :
小扬声器无爱.........用蜂鸣器多好
叉童鞋的焊工实在不敢恭维.........这恐怕无法承受住火箭的加速度吧




完全能承受住火箭的加速度,呃,其实......其实插接件都没问题。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
奇侠
11年7个月前 IP:未同步
547350
焊锡不太好吧?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
11年7个月前 IP:未同步
547362
引用第2楼yanli12321于2013-07-13 13:04发表的  :
小扬声器无爱.........用蜂鸣器多好
叉童鞋的焊工实在不敢恭维.........这恐怕无法承受住火箭的加速度吧

刚才试着摔了几次,正常工作。我的焊工被吐槽不是第一天了,淡定。蜂鸣器找不到,应该是没有,只好用这个。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yanli12321
11年7个月前 IP:未同步
547386
回 5楼(novakon) 的帖子
这样焊好一点吧.........又整齐有美观占用空间还小 0991.jpg
+1
科创币
123123123
2013-07-13
用铜线引比较好吧,只在转折点和连接点上锡,这样太废焊锡了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
13580080355
11年7个月前 IP:未同步
547452
回 楼主(novakon) 的帖子
用ne555不就行了吗?浪费!
+1
科创币
yanli12321
2013-07-13
NE555容易鬼畜不适合这种场合,单片机靠谱
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
11年7个月前 IP:未同步
547528
回 7楼(13580080355) 的帖子
NE555的话,我改一次时间设置,就要改一次电阻阻值,改完还要掐秒表测试。而且,怎么指示工作状态呢?

用STM8单片机来做,用户只要按按钮就可以设置时间了,岂不快哉。
STM8很便宜的,1.7元一片,最贵的都是人工费用。

测试中出现了洞洞板焊盘脱落的情况,充分地验证了“花钱少,麻烦多”这一伟大理论。马上找了非常高级的洞洞板,重新焊了一个 ,刷上程序,万事大吉。

DSC_3465.jpg
DSC_3467.jpg
+1
科创币
kc地毯清洁员
2013-07-14
花钱少麻烦多,花钱多麻烦更多
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
11年7个月前 IP:未同步
547554
回 8楼(novakon) 的帖子
洞洞板焊盘脱落说明你的烙铁温度高了……或者加热时间长了……
还是找个时间多练练焊工吧……
到时候别把单片机焊烧了……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
11年7个月前 IP:未同步
547555
源汁源味
//timerchute.c

#include <stmduino.h>
uint time=0;
uint delaytimer=0;
#define buttondelay 200
#define minimumtime 1000
#define beep pwmout(t2c1,62)
#define nobeep pwmout(t2c1,0)
uint binterval=3000/8;
uint bcounter=2800/8;
uchar beepstate=0xff;

uint setting=0;
uchar state=0;
/*
states
0 wait
1 setting

3 starting
4 triggered(wire broken, wait for certain time.
5 chute(noreturn unless button.
*/

void tick()
{
  bcounter++;
  bcounter%=binterval;
  if(bcounter==0||(bcounter==2980/8&&state==0)){
    if(beepstate){
      //beep;
      timer2(COUNT);
    }else{
      //nobeep;
      timer2(STOP);
    }
    if(bcounter==2980/8&&state==0)
    {
      beepstate=0x0;
    }
    else
    {
      beepstate=!beepstate;
    }
  }
  
  if(delaytimer!=0){
    delaytimer--;
  }
  else
  {
    
    switch(state)
    {
    case 0:
      binterval=3000/8;
      if(pinread(A2))
      {
        //if high: button not pusht
        if(pinread(A3)){
          //if a3 is high:not connected
        }
        else
        {
          //if a3 is conn to gnd:start waiting for line break
          state=3;
          delaytimer=buttondelay*5/8;
        }
      }
      else
      {
        //if low: button pusht,enter setting mode
        state=1;
        time=0;
        delaytimer=500/8;
        binterval=50/8;
      }
      break;
    case 1:
      binterval=500/8;
      time++;
      if(pinread(A2)){
        //button is not pushed
      }
      else
      {
        //button is pusht
        setting=time;
        eeuint(600)=setting;
        time=0;
        state=0;
        binterval=50/8;
        delaytimer=1000/8;
      }
      break;
    case 3:
      binterval=200/8;
      if(pinread(A3)){
        //if a3 is not connected
        state=4;//enter timing mode
        time=0;
      }
      else
      {//dont do anyting.
      }
      break;
    case 4://wire broken. timing...
      binterval=50/8;
      time++;
      if(time>setting)
      {
        //triggered, please chute!
        state=5;
        delaytimer=100/8;
      }
      else
      {
        
      }
      break;
    case 5://execute chute operation
      beepstate=0xff;
      
      pinhigh(A1);
      time--;
      if(time==0){
        state=0;
        delaytimer=500/8;
        pinlow(A1);
        binterval=50/8;
      }
      
      break;
    }
  }
  
}

void main()
{
  clock(2M);
  cpudivider(2);
  
  
  timer4clock(64,249);//8ms interrput
  
  pinMode(A3,INPUT);
  //a3 is wire,shall connected to gnd
  
  pinMode(A2,INPUT);
  //a2 is button,connected to gnd
  
  pinMode(A1,OUTPUT);
  //a1 is chute ctrl
  
  timer2clock(2,124);
  unlock();
  CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C,DISABLE);
  CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1,DISABLE);
  CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI,DISABLE);
  pwmset(t2c1);
  pwmout(t2c1,62);
  pinlow(A1);
  
  //load settings
  if(eeuint(600)<minimumtime){
    setting=minimumtime;
  }
  else
  {
    setting=eeuint(600);
  }
  
  job mstick=employ(tick);
  linkjob (timer4tick,mstick);
  
  interrupts();
  while(1){sleep();}
}
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
bg8npk
11年7个月前 IP:未同步
547624
加速度测试。。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
t01051
11年7个月前 IP:未同步
547697
表示STM8的程序看不大懂................还有你的焊工真的不敢恭维啊[s:225]
提一个小白意见:个人感觉如果你用继电器的话或许不会这么复杂
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
kevin
11年7个月前 IP:未同步
547705
为啥我想起了拆弹。。。该剪哪一根。。到底哪一根呢。。啊。。只剩2秒了!!不管了!!先剪红的!!!轰!!!!!!
+1
科创币
kc地毯清洁员
2013-07-14
剪插进去的..
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
【四方】
11年7个月前 IP:未同步
547710
线啊。。。。好多[s:221]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
13580080355
11年7个月前 IP:未同步
547737
回 8楼(novakon) 的帖子
ne555可调,有公式的呀,越简单的东西越靠的住,体积小的多,你这个不必跳线和洞洞板,直接焊好灌封!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yanli12321
11年7个月前 IP:未同步
547821
回 8楼(novakon) 的帖子
烙铁戳喇叭上了吧..............
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
彩虹之巅
11年7个月前 IP:未同步
547826
Re:回 8楼(novakon) 的帖子
引用第16楼yanli12321于2013-07-14 17:01发表的 回 8楼(novakon) 的帖子 :
烙铁戳喇叭上了吧..............


观察力真仔细~[s:274]
+1
科创币
kc地毯清洁员
2013-07-14
= =当时那个洞我看好久了...&nbsp;&nbsp;强迫症啊
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

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

所属专业
上级专业
同级专业
novakon
学者 机友 笔友
文章
1256
回复
8386
学术分
16
2008/03/29注册,2年11个月前活动

已走,勿送

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}