两个问题:
我正在尝试实施一种算法来确定日出和日落时间,其中纬度,经度和日期作为微控制器的输入。我知道有算法可以做到这一点,但我无法找到有关如何将其放在微控制器上的任何细节。这可能吗?
其次,如果我要实现这个,我需要多少内存以及我必须使用哪种控制器?
请告诉我。
答案 0 :(得分:0)
日历日历
这是最简单但需要存储日历数据(可以在程序存储器中,因此不需要RAM)。此方法仅限于单个地理位置,因此如果位置随时间变化,则无法使用。有关详细信息,请参阅:
开普勒方程式
当编码正确时,这将工作很长时间(例如1000年)。但是这种方法需要FPU计算。如果不存在,您需要自己编写代码(例如:double,sin,cos,+,-,*,/
)
开普勒方程将给出地球和太阳在日心坐标系中的实际相对位置。如果添加地球的每日旋转和局部NEH(东北高度/高度)变换,您将获得任意地理位置和时间的方位坐标中的太阳位置。然后,只需检查高度与日出/日落几何限制。有关详细信息,请参阅:
这种方法需要RAM来存储实际坐标(每个位置加倍3倍+一个温度),变换3x双4x4变换矩阵(地球,NEH,温度)和少量迭代变量。我估计512字节就足够了。
直接等式
你需要谷歌这个。有一些近似方程可以直接为您提供任何地理位置的太阳方位角坐标。它比#2 稍微简单一些,但需要更高级的测角函数,如arctan,acos
,不确定是否还有一些双曲线函数。如果您没有FPU支持,那么这种方法可能难以以所需的精度实现。
<强> [注释] 强>
为了提高准确性,您需要将几何太阳的位置转换为视觉效果。有表格移动仰角多少......