基于ATmega48的微功耗电刺激器的设计

[10-10 20:39:48]   来源:http://www.88dzw.com  电源电路   阅读:8999

文章摘要:电刺激器在工作的间歇期进入休眠状态。ATmega48有6种休眠方式,每一种方式休眠的部件不相同,休眠后单片机的功耗也不同。由于电刺激器在休眠时要求定时重新唤醒进行工作,必须保留一个定时器的工作。因此选用的休眠方式为IDLE,在IDLE方式下定时器2仍然可以工作。以下是休眠部分的程序。set_sleep_mode(SLEEP_MODE_IDLE); //设置休眠方式为IDLESMCR |= _BV(SE); //允许休眠_asm_ _volatile_ ('sleep' 'nt' :: ); //进入休眠SMCR &= ~_BV(SE); //从休眠中唤醒,进入工

基于ATmega48的微功耗电刺激器的设计,标签:电源电路,电路设计,http://www.88dzw.com

 电刺激器在工作的间歇期进入休眠状态。ATmega48有6种休眠方式,每一种方式休眠的部件不相同,休眠后单片机的功耗也不同。由于电刺激器在休眠时要求定时重新唤醒进行工作,必须保留一个定时器的工作。因此选用的休眠方式为IDLE,在IDLE方式下定时器2仍然可以工作。以下是休眠部分的程序。

  set_sleep_mode(SLEEP_MODE_IDLE); //设置休眠方式为IDLE
  SMCR |= _BV(SE);            //允许休眠
  _asm_ _volatile_ ('sleep' 'nt' :: ); //进入休眠
  SMCR &= ~_BV(SE); //从休眠中唤醒,进入工作状态,不允许休眠

  定时器2用于对休眠期的时间间隔计时。t2_init_idle(void) 是进入休眠状态前初始定时器2的程序,SIGNAL(SIG_OVERFLOW2)是休眠状态下定时器2的中断服务程序。每1分钟定时器2将会产生溢出中断,唤醒单片机。

  void t2_init_idle(void){ //定时器2进入休眠状态前的初始化
  CLKPR=(1<<CLKPCE); //允许改变系统时钟;进入休眠状态前改变系统时钟
  CLKPR=0x05; //系统时钟的分频比例为32,系统时钟为4kHz
  TCCR2A=0; //定时器/计数器2工作于定时器方式
  TIMSK2=(1<<TOIE2); //允许定时器2溢出中断
  TCCR2B=0x07; //定时器2时钟分频比例为1024
  TCNT2=32; //定时器2产生1分钟定时的初始值
  }
  SIGNAL(SIG_OVERFLOW2){ //定时器2溢出的中断服务程序
  TCNT2=32; //重置定时器2产生1分钟定时的初始值
  min++; //分钟计数
  }

  当唤醒5次,即休眠5分钟后,单片机重新进入唤醒工作状态。在唤醒工作状态下,使用定时器2控制脉冲的宽度和频率,需要定时器2重新初始化,并将系统时钟恢复到128kHz(程序略)。

  设置定时器0工作于PWM输出方式,用于控制刺激强度。

  void t0_init(void){ //定时器0初始化为PWM输出
  TCCR0B=(1<<CS01); //定时器0时钟分频比例为8
  TCCR0A=(1<<WGM00)|(1<<WGM01); //快速PWM方式
  TCCR0A|=(1<<COM0B1); //符合时为低电平,峰值变高
  OCR0B=outv; //输出电平用OCR0B控制
  }

  系统总程序流程如图4所示。

基于ATmega48的微功耗电刺激器的设计

  电刺激实验器的开发是为了植入大鼠体内,研究电刺激对癫痫抑制的机理。本研究开发的电刺激实验器整体结构尺寸为Φ17mm(直径) x 7mm(厚)。脉冲发生放大电路用开关方式实现,大大降低了系统的功耗。采用ATmega48单片机控制输出脉冲,精度高、功耗小、工作可靠、可以连续工作一个月以上,满足了实验的要求。

上一页  [1] [2] [3] 


Tag:电源电路电源电路,电路设计家电维修 - 单元电路介绍 - 电源电路