如何使用Cooja计算总能耗

Ayo*_*che 2 energy contiki cooja

我正在使用无线传感器网络电缆来评估其在我的工作中的性能。我想测量等待时间和总能耗以找到每个节点中的剩余能量。所以我的问题是我有的一些值,但tx rx cpu cpu_idle 我不知道如何使用它们来计算所需的值。我找到了一些进行计算的规则,但我不完全了解如何在我的情况下应用它。

通信消耗的能量:

CPU消耗的能量:

32768是什么意思,为什么我们使用这个数字?是标准值吗?

kfx*_*kfx 5

powertrace输出以计时器刻度显示。

  • tx-收音机已处于发射模式的滴答声(ENERGEST_TYPE_TRANSMIT
  • rx-收音机一直处于接收模式的滴答声(ENERGEST_TYPE_LISTEN
  • cpu-CPU处于活动模式的滴答声(ENERGEST_TYPE_CPU
  • cpu_idle-CPU处于空闲模式的滴答声(ENERGEST_TYPE_LPM

tx和的元素rx是唯一的,cpu并且idle- 和-系统永远不能同时处于两种模式。然而,其它的组合是可能的:它可以在cputx在相同的时间,例如。的总和cpu,并idle为系统的总运行时间。

滴答计时器的持续时间与平台有关,并定义为RTIMER_ARCH_SECOND常数。每秒32768次滴答声是该常数的典型值-这是等式中数字的来源。例如:

ticks_in_tx_mode = energest_type_time(ENERGEST_TYPE_TRANSMIT);
seconds_in_tx_mode = ticks_in_tx_mode / RTIMER_ARCH_SECOND;
Run Code Online (Sandbox Code Playgroud)

为了计算平均消耗电流(在毫安毫安),乘的每个txrxcpucpu_idle在该模式中的各电流消耗毫安(获得来自节点的数据表中的值),总结起来,并除以RTIMER_ARCH_SECOND

current = (tx * current_tx_mode + rx * current_rx_mode + \
          cpu * current_cpu + cpu_idle * current_idle) / RTIMER_ARCH_SECOND
Run Code Online (Sandbox Code Playgroud)

要计算电荷(以毫微克为单位mC),请将平均电流消耗乘以测量持续时间(节点的正常运行时间)以秒为单位:

charge = current * (cpu + cpu_idle) / RTIMER_ARCH_SECOND
Run Code Online (Sandbox Code Playgroud)

要计算功率(以毫瓦为单位mW),将平均电流消耗与系统电压相乘,例如,如果使用两节AA电池供电,则为3伏特:

power = current * voltage
Run Code Online (Sandbox Code Playgroud)

最后,要计算能耗(以毫焦耳为单位mJ),请将功率乘以持续时间(以秒为单位),或者将电荷乘以系统的电压:

energy = charge * voltage
Run Code Online (Sandbox Code Playgroud)

上面的第一个公式计算通信的能耗;第二个:用于计算。

站点可能有助于分解数字。