基于微控制器的日出/设置算法实现

时间:2017-01-27 07:12:33

标签: memory time microcontroller astronomy

两个问题:

我正在尝试实施一种算法来确定日出和日落时间,其中纬度,经度和日期作为微控制器的输入。我知道有算法可以做到这一点,但我无法找到有关如何将其放在微控制器上的任何细节。这可能吗?

其次,如果我要实现这个,我需要多少内存以及我必须使用哪种控制器?

请告诉我。

1 个答案:

答案 0 :(得分:0)

在MCU上没有太多内存,并且FPU并不总是存在,所以你需要自己做很多事情。有很多方法可以计算出来。

  1. 日历日历

    这是最简单但需要存储日历数据(可以在程序存储器中,因此不需要RAM)。此方法仅限于单个地理位置,因此如果位置随时间变化,则无法使用。有关详细信息,请参阅:

  2. 开普勒方程式

    当编码正确时,这将工作很长时间(例如1000年)。但是这种方法需要FPU计算。如果不存在,您需要自己编写代码(例如:double,sin,cos,+,-,*,/

    开普勒方程将给出地球和太阳在日心坐标系中的实际相对位置。如果添加地球的每日旋转和局部NEH(东北高度/高度)变换,您将获得任意地理位置和时间的方位坐标中的太阳位置。然后,只需检查高度与日出/日落几何限制。有关详细信息,请参阅:

    这种方法需要RAM来存储实际坐标(每个位置加倍3倍+一个温度),变换3x双4x4变换矩阵(地球,NEH,温度)和少量迭代变量。我估计512字节就足够了。

  3. 直接等式

    你需要谷歌这个。有一些近似方程可以直接为您提供任何地理位置的太阳方位角坐标。它比#2 稍微简单一些,但需要更高级的测角函数,如arctan,acos,不确定是否还有一些双曲线函数。如果您没有FPU支持,那么这种方法可能难以以所需的精度实现。

  4. <强> [注释]

    为了提高准确性,您需要将几何太阳的位置转换为视觉效果。有表格移动仰角多少......