Телескопы покупают здесь


A A A A Автор Тема: Помогите рассчитать азимут и высоту (угол) Солнца над горизонтом?  (Прочитано 1702 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nightcatАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от nightcat
Здравствуйте.
Прошу не ругать сильно, возможно это уже было, но я не нашел.
Я довольно далек от астрономии, школьную программу не помню, да и давно было.
Собственно проблема.
Я занимаюсь робототехникой в кружке с детьми. Один молодой человек захотел сделать проект - солнечная панель поворачивающаяся за Солнцем.
По освещенности и максимуму снимаемой энергии уже сделали, но тут я принес GPS датчик, и захотели сделать на основе данных с этого датчика.
Т.е. мы выставляем нашу установку по оси Север-Юг, а дальше получаем координаты GPS и время.
На основе этих данных нужно рассчитать на сколько повернуть плоскость панели что бы она была перепендикулярна солнечным лучам.
Нужны формулы.
Двух школьных учителей он уже замучил, безрезультатно, к сожалению, я тоже искал в инетернете, что то нашел, но начал уже путаться в терминах и формулах.
Не могло бы уважаемое сообщество помочь с этой, на первый взгляд пустяковой задачей? Очень нужно:)
данные которые мы получаем с датчика
Latitude (deg) - 47.228473 
Longtitude (deg) - 38.847259   
Date - 12/08/2022
Time (GMT) - 17:49:56

Кстати вопрос - как часовой пояс автоматически определить? Это для вывода на информационную панель хотелось бы.
Но главное - азимут и угол над горизонтом Солнца, учитывая что основание установки  ориентировано по сторонам света и горизонтально.
Спасибо! 

Оффлайн Toth

  • *****
  • Сообщений: 2 676
  • Благодарностей: 182
    • Сообщения от Toth
Уже был такой вопрос.
Вопрос продвинутым компьютерщикам.
+ к этому -
О. Монтенбрук, Т. Пфлегер "Астрономия на персональном компьютере" (с исходниками на Pascal и C++)
П. Даффет-Смит  "Практическая астрономия с калькулятором"
Астрономический календарь. Постоянная часть.

Canon PowerShot SX130 IS

Оффлайн Toth

  • *****
  • Сообщений: 2 676
  • Благодарностей: 182
    • Сообщения от Toth
Canon PowerShot SX130 IS

Оффлайн nightcatАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от nightcat
Спасибо.
Но проблема та же самая.
Что бы воспользоваться этими формулами нужно как минимум владеть терминологией и и понимать что с чем связано и как.
Сами формулы я в интернете нашел, я их применить не могу. Т.к. тут не одна формула, а связка формул и эту связку я не понимаю.
Софт отличный, пойдет в качестве проверки потом, когда создадим свою программу.
Так что пока проблема осталась.
попробую разобраться с книжкой конечно, но пока бегло посмотрел и ничего не понятно:(

Оффлайн Pluto

  • Администратор форума
  • *****
  • Сообщений: 27 201
  • Благодарностей: 1094
    • Сообщения от Pluto
Когда то решал аналогичную задачу, есть подробно расписанный алгоритм и даже пример  программы на С, вечером найду дома - скину

Оффлайн TM307

  • *****
  • Сообщений: 6 912
  • Благодарностей: 426
    • Сообщения от TM307
Я не спец, может и ошибка. Да поможет вам логика. Применить, если другие варианты не помогут.
https://translated.turbopages.org/proxy_u/en-ru.ru.ca3e7c9e-639323d3-d74c5d3c-74722d776562/https/en.wikipedia.org/wiki/Solar_declination
https://translated.turbopages.org/proxy_u/en-ru.ru.ca3e7c9e-639323d3-d74c5d3c-74722d776562/https/en.wikipedia.org/wiki/Solar_azimuth_angle
https://translated.turbopages.org/proxy_u/en-ru.ru.ca3e7c9e-639323d3-d74c5d3c-74722d776562/https/en.wikipedia.org/wiki/Equation_of_time
Склонение Солнца, δ☉, представляет собой угол между лучами Солнца и плоскостью земного экватора.

N - это количество дней с полуночи UT, когда начинается 1 января (т.е. Дни, входящие в порядковую дату -1), и может включать десятичные дроби для корректировки на местное время позже или раньше в тот же день.

где
    δ является склонением Солнца,
    ϕ s является широтой подсолнечной точки,
    λ s является долготой субсолнечной точки,
    T G M T среднее время по Гринвичу или UTC,
    E m i n является уравнением времени в минутах,
    ϕ o является широтой наблюдателя,
    λ o является долготой наблюдателя,
    S x , S y , S z являются компонентами x, y и z, соответственно, единичного вектора, указывающего на Солнце.
Подсолнечная точка - это точка на поверхности Земли, где Солнце находится над головой.


где
    Z является солнечным зенитным углом, то есть угол между солнечными лучами и вертикальным направлением.
    γ s является солнечным азимутальным углом, следующим за соглашением о направлении на юг по часовой стрелке.
https://translated.turbopages.org/proxy_u/en-ru.ru.ca3e7c9e-639323d3-d74c5d3c-74722d776562/https/en.wikipedia.org/wiki/Atan2

Про вычисление уравнения времени.
https://translated.turbopages.org/proxy_u/en-ru.ru.ca3e7c9e-639323d3-d74c5d3c-74722d776562/https/en.wikipedia.org/wiki/Equation_of_time#Alternative_calculation
минуты
Здесь C - это разница между углом, перемещенным со средней скоростью, и углом с скорректированной скоростью, спроецированным на экваториальную плоскость, и деленным на 180 °, чтобы получить разницу в "полуоборотах". Величина 23,44° представляет собой наклон земной оси ("наклон"). Вычитание дает условный знак уравнению времени. Для любого заданного значения x арктан x (иногда записываемый как tan−1 x) имеет несколько значений, отличающихся друг от друга на целое число полуоборотов. Значение, сгенерированное калькулятором или компьютером, может не подходить для этого вычисления. Это может привести к тому, что C будет неправильным на целое число полуоборотов. Лишние полуобороты удаляются на следующем шаге вычисления, чтобы получить уравнение времени:
Выражение nint(C) означает ближайшее целое число к C. На компьютере оно может быть запрограммировано, например, как INT(C + 0.5). Его значение равно 0, 1 или 2 в разное время года. При его вычитании остается небольшое положительное или отрицательное дробное число в пол-оборота, которое умножается на 720, количество минут (12 часов), за которые Земля поворачивается на пол-оборота относительно Солнца, чтобы получить уравнение времени.



n = 360°/365,24 дня,
где D - дата, исчисляемая в днях, начиная с 1 по 1 января (т.е. Дни, входящие в порядковую дату в году). 9 - приблизительное количество дней от декабрьского солнцестояния до 31 декабря. A - угол, на который Земля будет двигаться по своей орбите со средней скоростью от декабрьского солнцестояния до даты D.
где n - средняя угловая орбитальная скорость Земли в градусах в сутки, также известная как "среднесуточное движение".

Попробуйте получить данные S x , S y , S z и проверьте как они будут указывагь на Солнце.
« Последнее редактирование: 09 Дек 2022 [17:15:09] от TM307 »
Sky-Watcher SK767AZ1, BK1025AZ3; Dicom A900114-EQ3; МП 12х40/20х60; БПЦ Praktica DIANA 8x56

Оффлайн Toth

  • *****
  • Сообщений: 2 676
  • Благодарностей: 182
    • Сообщения от Toth
У меня прога - с точностью порядка 0.03 градуса по азимуту, а по высоте она не учитывает рефракцию - https://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%82%D1%80%D0%BE%D0%BD%D0%BE%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%80%D0%B5%D1%84%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F
Точно учесть рефракцию заранее невозможно, она от погоды зависит, но она существенна только при низком Солнце - у горизонта ~ полградуса ( см. табл в Википерии).
Есть сайты с учетом рефракции ( при " нормальных " погодных условиях) -
https://keisan.casio.com/exec/system/1224682277
https://www.omnicalculator.com/physics/sun-angle
Там чтобы не париться, просто 0 в time zone независимо от долготы и время в UTC (GMT)

Что бы воспользоваться этими формулами нужно как минимум владеть терминологией
Если собираетесь углубиться, то начните с видов координат - эклиптические (l,b), экваториальные ( прямое восхождение α, склонение δ) , горизонтальные ( азимут, высота над горизонтом).
Земные неинерциальные координаты (ECEF ), небесные инерциальные (ECI ) , звездное время = угол между ECI и ECEF.
PS Да, получается немало надо узнать. Плюс еще координаты " колышутся " - прецессия, эпоха ..
Сейчас например, без учета прецессии была бы ошибка ~ 0.3 градуса.
Canon PowerShot SX130 IS

Оффлайн Pluto

  • Администратор форума
  • *****
  • Сообщений: 27 201
  • Благодарностей: 1094
    • Сообщения от Pluto
Вот берите, подробно расписанный алгоритм.  :) С готовой программой.

https://disk.yandex.ru/i/v544yYoFDE2YqQ

Оффлайн Toth

  • *****
  • Сообщений: 2 676
  • Благодарностей: 182
    • Сообщения от Toth
С готовой программой
Проверил, работает.
Только создал пустышку stdafx.h и поменял -
//int _tmain(int argc, _TCHAR* argv[])  // вместо этого
int main(int argc, char **argv)  // <- вот это
В Geany GCC , может в других не надо менять
Canon PowerShot SX130 IS

Оффлайн nightcatАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от nightcat
Огромное всем спасибо.
Основная проблема - терминология. По мере чтения учебников приходит понимание.
ну так получилось, что слова знакомые, а смысл их не понимал:)
Еще раз всех от души благодарю за помощь!
Спасибо!
Еще не сделали, но думаю что справимся!

Оффлайн Виктор Майский

  • **
  • Сообщений: 99
  • Благодарностей: 3
  • Мне нравится этот форум!
    • Сообщения от Виктор Майский
Не усложняйте задачу.

Если дети сами делают роботов, то, прежде всего им нужна наглядность, понимание как что работает, чем обусловлено движение солнца по небосводу. Погрешность позиционирования даже в 5...10 градусов в вашем случае не играет роли. Тем более заложить сложную программу с тригонометрией в робота вряд ли получится.

Поэтому сделайте проще.

Объясните, что
1. Солнце движется по небосводу из-за суточного вращения Земли. 24 часа - полный оборот 360 градусов, т.е. 15 градусов в час.
2. Высота солнца над горизонтом в течение дня меняется из-за того, что ось вращения Земли находится не у нас над головой, а указывает на некоторую точку на небе. Вечером покажите им полярную звезду. Сейчас, зимой, это легко сделать, не нужно ждать ночи.
3. Максимальная высота солнца над горизонтом от даты к дате меняется из-за вращения Земли вокруг Солнца и наклона земной оси к плоскости вращения.

Предложите ребятам сделать простейший аналог экваториальной монтировки, что используют на больших телескопах. Для начала достаточно
1. Сделать полярную ось, которая поворачивает солнечную панель за солнцем. Она должна смотреть на полярную звезду. Наклон оси к горизонту равен широте места. В вашем случае 47 градусов. Направление - на север.
2. На полярной оси сбоку - второй поворотный узел, на который крепится панель, и который поднимает и опускает панель относительно горизонта. Он в суточном движении не участвует. Один раз устанавливает нужный угол на дату.

В этом варианте можно обойтись без программирования.

В любой момент можно повернуть полярную ось, и наклонить панель, чтобы показывала на солнце. Затем запустить мотор вращения полярной оси со скоростью 15 градусов в час. В течение дня слежение за солнцем гарантировано.

В итоге - быстрый и наглядный результат. Иначе получается магия - заложил цифры с одной стороны, нажал на кнопку - получил цифры с другой стороны.

Если этого детям будет недостаточно, то можно поставить второй мотор, на ось склонений, немного попрограммировать. Можно и без тригонометрии. Чтобы управлять экваториальной монтировкой не нужны сложные алгоритмы.
Но второй шаг, естественно, после первого.

P.S. Может быть, из ваших воспитанников вырастут строители телескопов ;)

Оффлайн nightcatАвтор темы

  • Новичок
  • *
  • Сообщений: 4
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от nightcat
Вау! Спасибо!
Про такое упрощение не подумал:(
Вообще это проектная работа у одного мальчика, так то у нас тоже программа по роботам.
А он захотел солнечную панель вращать за солнцем, потому что летом замучался в походе заряжать телефон и поворачивать за ним переносную панельку:)
Все сделали!
Погрешность конечно есть, но несколько градусов ловить нет смысла. по отдаче энергии разница в милливольты.
Мне самому было очень интересно.
Теперь у нас еще проект у девочки - она хочет снять звездное небо на фотик, потому что мама фотографи техники дома в избытке, а тут увидела фото млечного пути и хочет такое сама, надо придумать установку, которая будет смотреть на млечный путь в течении нескольких часов независимо от вращения земли.
так что придется разобраться как позиционируют телескопы:)
Так что буду заходить к вам на огонек:)