2011-04-10 6 views
3

저는 건물에있는 Arduino 장치에서 일하고 있습니다. 나는 가속도계로 GPS 모듈과 틸트 센싱 컴파서를 구입했다.진정한 북쪽을 결정하십시오.

저는 사실 북쪽을 결정하여 항상 태양을 향한 물체를 가리킬 수 있습니다. 기본적으로 기기가 어디에 있든 항상 진정한 북쪽을 찾길 바랍니다. GPS가 위치를 알려주고, 나침반은 자북을 발견 할 것입니다. 진정한 북쪽은 장치가 움직이는 동안 얻을 수 있고 RAM에 기록 된 다음 장치가 정지 상태 일 때 사용할 수있는 것으로 추측됩니다.

하지만 어떻게?

+0

자기 북쪽과 북쪽은 충분히 가깝습니다. – fingerman

+0

시계와 GPS로 충분합니까? GPS와 arduino에는 이미 시계가 있기 때문에 좋습니다. GPS + 시계 만 있으면 어디서든 태양 위치를 결정할 필요가있는 계산이 있습니까? 실제로 정지 된 위치에서 당신의 방향을 어떻게 결정합니까? 어느 정도 정도까지? – user701052

+0

나침반이 없으면 장치가 앞으로 또는 뒤로 이동하지 않고 왼쪽 또는 오른쪽으로 돌아 가면 북쪽을 정확하게 확인할 수 없습니다. 컴파스가 내장되어 있지 않은 휴대 전화 나 자동차 네비게이터 기기의 GPS 매핑 소프트웨어를 살펴 본다면 그 효과를 볼 수 있습니다. 왼쪽이나 오른쪽으로 돌리면 소프트웨어가 방향 변경을 결정하기 위해 상당한 움직임이 필요하기 때문에 방향이 디스플레이에서 지연됩니다. – avra

답변

1

회전식 태양 전지 패널에 가장 많은 햇빛을 얻으려고합니까? 그렇다면 시계에 따라 동서양 간의 거친 위치 설정으로 벗어날 수 있습니다 (태양 상승 및 태양 설정 시간을 계산하기 위해 계좌로 긴/위도를 가져 와서이를 향상시킬 수 있습니다). 방위각과 고도를 정확하게 제어하려면 천문학 계산이 많이 필요합니다. Arduino는 두 배를 지원하지 않으며 단일 시스템으로는 매우 정확한 결과를 얻지 못합니다 (태양 광 패널 추적기에는 충분하지만 망원경으로 일부 하늘 대상을 추적하려면 충분하지 않습니다). 내 충고는 주제에 대해 많은 것을 조사하거나 오픈 소스 천문학 소프트웨어를 살펴보고 소스로부터 필요한 계산을 추출하는 것입니다 (라이센스 조건이 허용하는 경우).

procedure Sun_Position_Horizontal(date:TdateTime; longitude,latitude: extended; var elevation,azimuth: extended); 
var 
    pos1: T_Coord; 
begin 
    pos1 := sun_coordinate(date); 
    calc_horizontal(pos1,date,longitude,latitude); 
end; 

function sun_coordinate(date:TDateTime):t_coord; 
var 
    l,b,r: extended; 
    lambda,t: extended; 
begin 
    earth_coord(date,l,b,r); 
    (* convert earth coordinate to sun coordinate *) 
    l := l+180; 
    b := -b; 
    (* conversion to FK5 *) 
    t := (julian_date(date)-2451545.0)/365250.0*10; 
    lambda:=l+(-1.397-0.00031*t)*t; 
    l := l-0.09033/3600; 
    b := b+0.03916/3600*(cos_d(lambda)-sin_d(lambda)); 
    (* aberration *) 
    l := l-20.4898/3600/r; 
    (* correction of nutation - is done inside calc_geocentric *) 
{ calc_epsilon_phi(date,delta_phi,epsilon); } 
{ l := l+delta_phi; } 
    (* fill result and convert to geocentric *) 
    result.longitude := put_in_360(l); 
    result.latitude := b; 
    result.radius := r*AU; 
    calc_geocentric(result,date); 
end; 

procedure calc_horizontal(var coord:t_coord; date:TDateTime; longitude,latitude: extended); 
var 
    h: extended; 
begin 
    h := put_in_360(star_time(date)-coord.rektaszension-longitude); 
    coord.azimuth := arctan2_d(sin_d(h), cos_d(h)*sin_d(latitude)- 
          tan_d(coord.declination)*cos_d(latitude)); 
    coord.elevation := arcsin_d(sin_d(latitude)*sin_d(coord.declination)+ 
           cos_d(latitude)*cos_d(coord.declination)*cos_d(h)); 
end; 

는 경우가 있다면 장치 : 그냥 당신에게 힌트를주고,이 here을 발견하면 CodeTyphon/나사로/FPC 설치 패키지에 얻을 수 PilotLogic TMoon 구성 요소에서 작은 추출물이다 설치 후 이동하지 않습니다 (질문을 다시 읽은 후에 나머지 메시지는 무시할 수 없습니다), 경도와 위도는 고정되어 있으며 컴파일시이를 알고 있거나 장치가있을 때 수동으로 입력 할 수 있습니다 처음 설치됩니다. 그런 식으로 GPS는 필요하지 않습니다. 설치 시간에 North를 한 번 찾을 수도 있으므로 나침반이 필요하지 않습니다.

0

나침반은 자성 물질에 가까워지면 건초를 얻을 수 있으며 실용적이지 않습니다. 자신의 위치와 관련하여 태양의 방위각과 고도를 계산할 수 있습니다. 시스템에서 일부 디지털 인코더를 사용하고 점증적인 움직임을 계산하는 것이 더 실용적입니다. arduino의 보정 버튼을 사용하여 표준 도구를 사용하여 매개 변수를 표준화 할 수 있습니다. 미세 조정을 위해 수동 버튼을 위아래로 움직일 수 있습니다.