Тригонометрия на Ардуино

Vlad1976
Offline
Зарегистрирован: 17.05.2016

На форуме информации на эту тему не нашел, поэтому выкладываю.

Столкнулся с тем, что при программировании пришлось использовать тригонометрию. На сайте, в разделе программирование дано описание всего 3-х функций, sin(), cos(), tan(). Уже было приготовился писать библиотеку..

Залил фрагмент кода с с++, и с удивлением увидел, что работают все обратные тригонометрические функции, в том числе вида atan2( dY, dX). В общем, в данном конкретном случаем меня это сильно выручило.

Если кто-то еще знает о каких-либо незадокументированных функциях --- прошу поделитесь.

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Vlad1976 пишет:

Если кто-то еще знает о каких-либо незадокументированных функциях --- прошу поделитесь.

Всё, что Вы упоминали вполне себе документированно. Просто Вы смотрите не полную документацию, а сильно сокращённую. На сайте ATMEL есть жокументация по библиотеке и там всё есть.

MagicianT
Offline
Зарегистрирован: 03.10.2015

Здесь вся математика и быстродействие:

http://www.gnu.org/savannah-checkouts/non-gnu/avr-libc/user-manual/benchmarks.html

Vlad1976
Offline
Зарегистрирован: 17.05.2016

To ЕвгенийП,  полчаса ходил по ссылке, не нашел, толи сайт у них нелогичный, толи я не следопыт..

To MagicianT,   большое человеческое спасибо!!

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Vlad1976 пишет:

To ЕвгенийП,  полчаса ходил по ссылке, не нашел, толи сайт у них нелогичный, толи я не следопыт..

Ну, дык вот все математические функции - http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__avr__math.html

А все остальные там же рядом (меню слева).

Vlad1976
Offline
Зарегистрирован: 17.05.2016

Ну вот, теперь и Вам спасибо ЕвгенийП!    :)

Еще вот что хочу спросить у знающих людей. Есть периодическая задача для ардуики, (расчет раз в 10-15 минут)

Из-за того что, тип данных double занимает 4 байта, а не 8 байт как должно быть, имеет место небольшая погрешность в расчетах. Сам расчет занимает доли секунды, а потом МК просто ждет или спит. Т.е. по идее есть запас многократный по мощности расчетов. Можно ли прикрутить какую-нить старую библиотеку от 8-битных процессоров для поддержки расчетов в 64-битной разрядности?

Когда-то давно, когда был молодой даже что-то писал на ассеблере, но теперь мне кажется проще найти или спросить у людей в теме.

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Влад, Вам не хватает 10-битовой мантиссы? Вы уверены, что проблема неразрешима на уровне алгоритма (а именно, на уровне последовательности операций и не накапливания погрешностей?).

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я согласен с Евгением. Чем писать или искать написанную библиотеку вычислений высокой точности - стоит переписать вычисления, с учетом имеющихся возможностей.

Если Вам затруднительно сделать это самому, то можете опубликовать часть вычислений тут. Я,  по мере возможности, перепишу для float какую-либо часть. Далее, на примере, Вы сможете сами модифицировать код.

 

Есть разные приемы увеличения точности: изменение последовательности вычислений, масштаб, интерполяция. Этими тремя приемами можно добиться всего, что нужно. Специфично для компьютера есть еще переход в целые числа - разрядность long больше разрядность мантиссы во float.

Vlad1976
Offline
Зарегистрирован: 17.05.2016

Во-первых, всем спасибо за участие в обсуждении. 

Во-вторых, возможно мне не хватает квалификации в оценке возможностей по улучшению алгоритма, но боюсь что алгоритм уже сильно оптимизирован (не мной  :)  ).

Вводная: есть желание ориентировать солнечную панель строго на солнце, имея в качестве входных данных точное время и географические координаты. Отсюда ( http://pvcdrom.pveducation.org/RU/SUNLIGHT/sunPSA.HTM ) был взят алгоритм расчетов. Моделирование этого алгоритма в среде Матлаб дает заявленную погрешность определения азимута и склонения Солнца в полградуса максимум. Перевод вычислений на ардуино дал увеличение погрешности в 2 с небольшим раза. (конечные данные сравнивал с данными из программы стеллариум)

В общем случае, для простой панели этой точности хватает за глаза. Точность нужна, скажем так на будущее. Есть идея брать дорогие (с высоким КПД ) солнечные панели и фокусировать на них свет. В этом случае у нас и возникают жесткие требования на определение угла, грубо говоря, во сколько раз мы фокусируем, во столько же раз должны точнее выдерживать угол. В алгоритме многократно используются различные тригонометрические функции и лично мне  для того, чтобы просто понимать, что он считает пришлось прочитать книжку П.Даффета-Смита "Практическая астрономия с калькулятором". Но не скажу что жалею о этом  :)

В целом, я уже доволен полученным результатом и вычисления в формате двойной точности --- это скажем так "хотелки".

Предполагается, что если, кто-то знает "простой" путь получения этих "хотелок" и может поделиться этим знанием --- с меня как минимум благодарность, а если этот гуру живет в Новосибирске --- могу и торт привезти. 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Точность указанного алгоритма действительно невелика, и это связано как с упрощением самого алгоритма и недостаточной точностью в 7-8 знаков после запятой, так и "системными" проблемами: эфемериды считаны для периода 2000-2015гг, надо бы обновить данные; кроме этого надо иметь данные из службы времени (ntp в помощь), и не менее хорешее определение собственных географических координат места установки.

В противном случае, "точность" - это та вода, которая вытекает через самую нижнюю дырку.

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

Солнечный трекер на ардуино.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Архат! Я понимаю. что нет никакой возвожности взять с Вас обещание не смотреть в Вики. Но расскажите нам, что такое "эфемериды" и какое отношение они имеют к расчетам направления на солнце?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Для ТС: общее решение вполне можно разработать на Ардуинке, но в конкретике это не нужно. Расчитайте таблицу положения от времени (на компе) и загрузите ее в ардуино. От ардуинки требуется знать только точное время.

Vlad1976
Offline
Зарегистрирован: 17.05.2016

To Arhat109-2 

Время --- из модуля часов DS3221, координаты из показаний GPS на смартфоне. Установка с панелями считается стационарной. В будущем ввод координат и правка времени через кнопки и дисплей.

to yul-i-an

Делал примерно также, ориентируясь на значения тока с панели. Недостаток схемы --- набегает облачко на солнце и панель начинает непрерывно "сканировать" небо. Про пасмурный день не говорю. Имея этот опыт, считаю что правильнее всего вычислять координаты и туда "смотреть".

to wdracula

Да, я знаю про этот путь, прикрутить карту памяти побольше, загрузить в неё заранее рассчитанные значения углов в зависимости от времени и вперед. Но.. это как-то не правильно чтоли.. не могу объяснить.

И для всех --- мне нравится наше обсуждение темы, и я благодарен всем за участие и конструктив.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Блин, я астрономией увлекался с 6 по 10 класс (11-го тогда не существовало) .. если не подглядывать в Вики, то это кажется какие-то расчетные положения Солнца, Луны и планет на небесной сфере .. считали с другом все это вручную для поиска невидимых глазом объектов для наблюдений в собственно-ручно построенный телескоп ибо жили в небольшом городке, где ничего не было... потом, к 9-у классу таки заставили директора школы приобрести для школы "Школьный рефрактор" и "150-мм Максутов" и организовали астрономический кружок, который как потом узнал просуществовал в школе аж до конца прошлого веку.. с тех пор я этими расчетами не занимался, так что могу и напутать.

Там для расчетов требуются предварительно считанные табличные данные, они берутся из справочников с заданной точностью, вот в справочниках всегда указывается "эпоха" для которой данные соответствуют заявленной точности. Это для популярных разъяснений все небесные тела движутся по "замкнутым траекториям", типа эллипс .. на самом деле это не так, и помнится формула движения Луны в частности занимала пару страниц текста и .. траектория НЕ замкнута (Луна постепенно отдаляется от Земли).

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

Мне кажется что для адекватного поведения панели с фотосенсорами необходимо совершенствовать алгоритм. Поварачивать панель если разность показаний между датчиками более Х% или напряжение с батареи снизилось ниже установденного порога, а если тучка (освещенность всех датчиков снизилась относительно прошлого измерения на Х%) то выжидать какоето время или ждать пока освещенность не востановится на Х% от той которая была до затемнения и т.д.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Когда речь идет о средствах наблюдения за небесными объектами, то важность точности программного наведения неоспорима. Сейчас даже любительские телескопы чаще встречаются с блоком расчета и приводами, чем без. Когда речь идет о панелях солнечных батарей, там ситуация несколько другая. Если батарея носимая (походы, участки без дачи), то на время работы (днёвки) её ориентируют на Солнце вручную. Для стационарных батарей резко вырастают размеры и вес. Делать систему слежения за светилом становится сложно и дорого, особенно в части обеспечения надежности и противостояния ветровой нагрузке. Поэтому для конкретного места и кокретного сезона рассчитывают энергетически выгодное положение батареи(й) и жестко её фикструют в этом положении. Очень редко предполагается смена положения "зима/лето", которое производят простейшими средствами вручную. Я видел солнечные панели для: парковочных терминалов, светофоров, уличного освещения (с отдельно стоящим полем генерации), дачных хозяйств, просто солнечные электростанции. Везде панели солнечных батарей были установлены жестко. Я нисколько не отговариваю автора от затеи, но если вопрос практический, то рекомендую обратить внимание на уже имеющиеся реализации. Как мне помнится из "прошлой жизни", на орбитальных средствах батареи ориентировали на Солнце с точностью порядка 4 угл. град., где их вообще ориентировали, поскольку там полно своих заморочек.

Logik
Offline
Зарегистрирован: 05.08.2014

Нинадо тут про космические карабли бороздящие... с их дороговизной, пилят там по черному. Линейный привод на усилие порядка сотни кг от 50уе. По сравнению с ценой панели такого веса - цена привода приемлемая. Устройство по разумному делается одноосевое, для суточного слежения. Наклонение ручками, и раза в неделю хватит подкрутить. Никаких таблиц и точного времени и близко не надо. Банальный поиск максимального напряжения ( ну мощностим генерации, уточню для зануд) при повороте вокруг одной оси не составляет проблем, после длительного минимума, ночи выводим на горизонт востока, после прохождения максимума делаем малую вариацию и находим новый максимум, если алгоритм запутался - сканируем. Можно приблизительно время от восхода считать на случай потери ориентации.

Аналогия с телескопом неуместна, у СБ есть явная целевая функция которую оптимизируем, а у телескопа нет.  

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Logik пишет:

Нинадо тут про космические карабли бороздящие...

Ориентацию на солнце делают только на тяжелых платформах, там это оправдано и реализуется несколько легче. И то следят "без фанатизама". 4 угл. градуса угладываются в один байт разрешения. На малых аппаратах могут просто "оклеивать" батареями корпус. Безо всякого отслеживания, так проще и надежней.

Logik пишет:

Линейный привод на усилие порядка сотни кг от 50уе. По сравнению с ценой панели такого веса - цена привода приемлемая. Устройство по разумному делается одноосевое, для суточного слежения. ...

Повторюсь еще раз. Я видел солнечные панели для: парковочных терминалов, светофоров, уличного освещения (и с отдельно стоящим полем генерации, и с "зонтиками" над каждым фонарем), дачных хозяйств, просто солнечные электростанции. Везде панели солнечных батарей были установлены жестко.

Насколько я понимаю, обеспечение надежной работы приводов в годичном цикле (-40 ... +50, дождь, ветер, снег, ...) экономически нейтрализует эффект энергетической прибавки от точного слежения за Солнцем.

Logik пишет:

Аналогия с телескопом неуместна, у СБ есть явная целевая функция которую оптимизируем, а у телескопа нет.  

Аналогии с телескопом у меня нет.

 

Logik
Offline
Зарегистрирован: 05.08.2014

Duino A.R. пишет:

Повторюсь еще раз. Я видел солнечные панели для: парковочных терминалов, светофоров, уличного освещения (и с отдельно стоящим полем генерации, и с "зонтиками" над каждым фонарем), дачных хозяйств, просто солнечные электростанции. Везде панели солнечных батарей были установлены жестко.

А слепые солнца не видели, так его тоже нету?

Я видел.  Интересующие тоже могут увидеть. Например здесь. https://geektimes.ru/post/255528/ Там кстати и про алгоритм слежения есть, для ТС полезное.

Если Вы не видели - зачем пишете в тему о том, чего не видели?

 

Утверждают что дает +50% к суточной выработке. И это очень похоже на правыду из той же тригонометрии.

Duino A.R. пишет:

Насколько я понимаю, обеспечение надежной работы приводов в годичном цикле (-40 ... +50, дождь, ветер, снег, ...) экономически нейтрализует эффект энергетической прибавки от точного слежения за Солнцем.

Ворота, к примеру, автоматически открывать не проблема, а панель вертеть проблема..

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Logik пишет:

А слепые солнца не видели, так его тоже нету?

Я видел.  Интересующие тоже могут увидеть. Например здесь. https://geektimes.ru/post/255528/ Там кстати и про алгоритм слежения есть, для ТС полезное.

Если Вы не видели - зачем пишете в тему о том, чего не видели?

Третий раз повторю. Я ВИДЕЛ (мимо терминалов и светофоров я прохожу по два раза каждый день) солнечные панели для: парковочных терминалов, светофоров, уличного освещения (и с отдельно стоящим полем генерации, и с "зонтиками" над каждым фонарем), дачных хозяйств, просто солнечные электростанции. Везде панели солнечных батарей были установлены жестко.

Особо обращу Ваше внимание, что все указанные выше изделия - СЕРИЙНЫЕ. И все - БЕЗ солнечных трекеров. Каковы конкретные причины такого решения - надо спросить у их создателей и производителей. Предполагаю, что о существовании солнечных трекеров им было известно, но они предпочли в своих изделиях закрепить солнечные панели жестко.

Logik пишет:

Утверждают что дает +50% к суточной выработке. И это очень похоже на правыду из той же тригонометрии.

С точки зрения тригонометрии - скорее всего. И тем не менее, на самой крупной в России солнечной электростанции мощностью 5 МВт все панели установлены жестко: "За сбор солнечной энергии на объекте отвечают смонтированные в ряды 21 тысяча панелей-модулей, мощность каждой из которых около 250 ватт. Все пластины направлены к небесному светилу строго под углом 45 градусов — наиболее оптимально для сбора солнечной радиации от первых до последних лучей." http://21russia.ru/news/industry/2015-01-27/otkryta-krupneishaya-rossii-... (Фотка там есть.) Т.е. люди сознательно отказались от прироста мощности в 50%? От "дармовых" 2,5 М(ега!)Вт? Отказались. Панели установлены под фиксированным углом.

Logik пишет:

Ворота, к примеру, автоматически открывать не проблема, а панель вертеть проблема..

Выходит, что так.

Собственно ТС волен сделать совершенно как угодно. Это его полное право. И здесь никакие причины кроме его собственного желания особого веса не имеют. Просто я привожу альтернативный подход, реализованный в серийных изделиях. Чтобы ТС мог учесть и его при выборе окончательного решения.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Весь вопрос, во-первых, в том, что даст бОльший эффект: добавка энергии за счет оптимальной ориентации панели или ее расход на работу исполнительных механизмов позиционирования (электромоторы жрут прилично).

А во-вторых, в-третьих и дальше - цена вопроса, надежность и т.д.

Logik
Offline
Зарегистрирован: 05.08.2014

Duino A.R. пишет:

С точки зрения тригонометрии - скорее всего. И тем не менее, на самой крупной в России солнечной электростанции мощностью 5 МВт все панели установлены жестко.... Т.е. люди сознательно отказались от прироста мощности в 50%? От "дармовых" 2,5 М(ега!)Вт? Отказались. Панели установлены под фиксированным углом.

 

Тупить долго собираетесь? Очевидно что при плотной установке нескольких солнечных панелей они при повороте затеняют друг друга. Потому при плотной установке поворачивать не имеет смысла и СЭС используют фиксированое оложение. В отличии от частника с  единичной или нескольких удаленных друг от друга.

ТС пришел по поводу алгоритма поворота. Необходимость он сам определил уже.

ПС. если и так не понятно - просите, нарисую как для ветерана "прошлой жизни" - медленно нарисую ))

Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:

Весь вопрос, во-первых, в том, что даст бОльший эффект: добавка энергии за счет оптимальной ориентации панели или ее расход на работу исполнительных механизмов позиционирования (электромоторы жрут прилично).

А во-вторых, в-третьих и дальше - цена вопроса, надежность и т.д.

Нихрена они не жрут. Доворот на несколько градусов со скоростью доли градуса в секунду. Раз в 5 -10 минут. Да панель сбалансирована, центр массы на оси. Потребление десятки ват мощности на сотню секунд за час. В остальное время привод застопорен. В киловатчасы сами оцените. По сравнению с +50% мощности при хотябы пару киловатчас с панели - все очевидно. 

Про надежность - есть задачи и сложней, располагать панели где -40 бывает смысла нет. Солнечная энергия - игрушка для южан.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Logik пишет:

Тупить долго собираетесь? Очевидно что при плотной установке нескольких солнечных панелей они при повороте затеняют друг друга. Потому при плотной установке поворачивать не имеет смысла и СЭС используют фиксированое оложение.

В отличии от частника с  единичной или нескольких удаленных друг от друга.

Вот ПРИМЕРЫ СЕРИЙНЫХ ОБРАЗЦОВ ИЗДЕЛИЙ С СОЛНЕЧНЫМИ ПАНЕЛЯМИ. Единичными и групповыми. Правда не частные. Муниципальные, т.е. городские. И не из прошлой жизни, а как ни на есть из самой сегодняшней. Солнечных трекеров нет. Хотя технически установить их ничто не мешает. И есть еще куча примеров городской инфраструктуры и фоток к ним, где возможность установить трекеры есть, а самих трекеров нет.

 

 

 

Logik пишет:

ТС пришел по поводу алгоритма поворота. Необходимость он сам определил уже.

Пришел с одним "железобетонным решением", а уйти может с другим, не менее "железобетонным". Шучу. :)) Я ни ТС, ни кого-либо другого никак не неволю и никуда не склоняю. Если ТС доставит массу удовольствия смотреть, как его детище следит за Солнцем - прекрасно. Если ему нужно электричество получить для практической жизни более-менее беспроблемно - это несколько другое. О чём я и толкую.

Vlad1976
Offline
Зарегистрирован: 17.05.2016

1. Спасибо всем, за проявленный интерес к данной теме. 

2. Занимаюсь этим проектом в свободное время, по просьбе  друга-бизнесмена. Уже получил массу удовольствия.

3. В настоящее время, смотрю разные энкодеры, и что можно из простых вещей под это приспособить.

   ( например переменный резистор как энкодер хочу попробовать., т.к. более менее вменяемые энкодеры что-то   дорого стоят ) 

4. Понимаю, что панель, на наших широтах, практически не работает зимой, но тем сильнее желание получить летом максимум отдачи.

5. Улучшение точности расчета пока отложил, точнее перепоручил подкорке. Она в пассивном режиме, иногда        находит выход из тупиковых ситуаций.

6. Если всё получится --- пришлю на сайт статью на тему этого проекта.

 

Logik
Offline
Зарегистрирован: 05.08.2014

Vlad1976 пишет:

4. Понимаю, что панель, на наших широтах, практически не работает зимой, но тем сильнее желание получить летом максимум отдачи.

Увы она и летом, как генерация в автономной системе электроснабжения, выглядит печально. Пока это только модный аксесуар. Счас конечно набегут зеленые романтики энергосбереженцы, но то не важно.. Я лично знаю людей, которые даже в проект дома спецом комнату под аккумуляторы заложили. И даже построили. Потом дизельгенератор пришлось покупать.  А закончилась история договором с энергосбытом.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Logik пишет:

Увы она и летом, как генерация в автономной системе электроснабжения, выглядит печально. Пока это только модный аксесуар. Счас конечно набегут зеленые романтики энергосбереженцы, но то не важно.. Я лично знаю людей, которые даже в проект дома спецом комнату под аккумуляторы заложили. И даже построили. Потом дизельгенератор пришлось покупать.  А закончилась история договором с энергосбытом.

крестьяне солнечной Тюмени с вами не согластны.

huge_fafa7897-523a-405d-ae04-fdd69d44092

Logik
Offline
Зарегистрирован: 05.08.2014

Та мне плевать на моду.

 

Как только в расчетах начинает крутится реальное потребление с холодильником, кондишином, стиралкой, электрочайником, микроволновкой и т.д. а не светодиодная лампочка с мобилкой. Да осознание того что аккумы не вечны и 1000 циклов - это только три года и дождливая неделя не так уж редка выразить в цифрах, то киловатчасы перестают быть нашару.

Logik
Offline
Зарегистрирован: 05.08.2014

Vlad1976 пишет:

3. В настоящее время, смотрю разные энкодеры, и что можно из простых вещей под это приспособить.

А зачем энкодеры? Достаточно концевиков и хитрого алгоритма ищущего максимум.