Большинство крыш выглядят на удивление хорошо, даже если они не направлены на юг или их наклон не идеален. Вот небольшая программа на Python, с помощью которой можно легко проанализировать любую крышу.

Существует много дезинформации и дезинформации о том, насколько хорошо крыши домовладельцев будут работать с солнечными батареями. Представленная здесь программа Python может помочь вам решить, действительно ли ваша крыша может сэкономить деньги за счет использования солнечной энергии.

Почему я создал этот инструмент Python

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

Отслеживание и фиксированные панели

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

Стремитесь к небу

Солнечные панели монтируются на крышах с использованием очень стандартных стеллажей и оборудования, которые оказывают минимальное воздействие на черепицу и целостность крыши, и их легко снять и заменить при ремонте крыши, например, во время града. (Если вам интересно, тесты и реальный опыт в Национальных лабораториях возобновляемой энергии здесь, в Колорадо, доказывают, что сегодняшние солнечные панели НАМНОГО жестче и менее подвержены повреждениям, чем черепица и другие стандартные кровельные материалы.) В результате, Панели монтируются параллельно крыше, ориентируясь на то же направление неба, что и сама крыша. Здесь есть воздушный зазор, поэтому панели на самом деле защищают черепицу от палящего солнца даже лучше, чем большое затененное дерево. (Да, наш счет за кондиционер уменьшился после того, как мы получили наши панели!)

Что делать, если моя крыша не выходит на юг?

Хорошие компании по производству солнечных панелей не будут пытаться продавать вам панели для установки на крышах, обращенных к северной половине неба, хотя с более дешевыми панелями это правило немного смягчается. Тщательный анализ вашей северной крыши может показать, что вы все еще можете сэкономить деньги сверх счета за коммунальные услуги, особенно с крышами с низким уклоном, но в целом лучше всего устанавливать панели на крыше, которая выходит в любом месте от восточного горизонта вокруг до ориентации на запад. , при этом юг близок к идеалу. Я говорю «близок к идеалу», потому что в стране есть места, где ориентация немного на запад работает лучше, если местная коммунальная компания выставляет счет за время суток. Проконсультируйтесь с вашим представителем солнечной энергетики, чтобы получить подробную информацию о вашей ситуации.

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

А как насчет ската моей крыши?

Уклон крыши обычно выражается в виде подъема до пробега. В США это количество дюймов, поднимаемых на каждую ногу в горизонтальном направлении. Нулевой уклон - это плоская крыша, а уклон 12:12 - под углом 45 градусов к Земле. Типичный шаг для большинства домов составляет от 3:12 до 5:12, в зависимости от местоположения и местных погодных условий.

Быстрое и безболезненное изложение математики

Следующая программа Python находит наилучший угол наклона для южной крыши на вашей широте. Затем, вычислив точное положение Солнца с 10-минутными интервалами в течение всего года, можно рассчитать общее сравнение между энергией, которую эта крыша будет получать, с энергией, полученной вашей крышей. Солнечная энергия в каждый 10-минутный момент времени корректируется с учетом воздушной массы и косинуса угла между нормалью к панелям и Солнцу. Проще говоря, солнечная энергия лучше всего использовать в середине дня, и она предсказуемо спадает раньше и позже в течение дня. Программа использует стандартные формулы для определения интенсивности солнечного излучения, поступающей на панели в течение всего года. Отношение полной энергии идеальной крыши к общей энергии вашей крыши выражается в процентах, при этом 100% является лучшим.

О программе Python

Эта программа импортирует Код положения Солнца, представленный в другой статье на Medium. Вам нужно будет скопировать этот код в файл с именем sunpos.py и поместить его в ту же папку, что и следующая программа. Вот основная программа, которая импортирует этот файл:

# roof_sun.py
import sunpos as sp
from datetime import datetime, timedelta
import math
def main():
# Location of the roof
    latitude = 40.602778
    longitude = -104.741667
    location = (latitude, longitude)
# Roof azimuth
    roof_az = 135
# roof pitch (inches rise per foot horizontal)
    roof_pitch = 5
# Convert roof pitch to elevation angle in degrees
    roof_el = round(90.0 - math.degrees(math.atan(roof_pitch / 12)), 1)
# Get the ideal roof elevation angle when facing south
    best_el = best_roof_elevation(latitude)
# Convert ideal elevation to approximate pitch
    best_pitch = round(12 / math.tan(math.radians(best_el)), 1)
# We can ignore Daylight Savings Time changes
    timezone = -7
# Start time is on a January 1
    the_year = 2022
    tm = datetime(the_year, 1, 1)
# Set the time interval
    delta = timedelta(minutes=10)
# Initialize the solar power factors
    pow_roof, pow_best = 0, 0
# Process relative solar energy for entire year
    while tm.year == the_year:
# Get sun position for this moment
        when = [tm.year, tm.month, tm.day, tm.hour, tm.minute, tm.second, timezone]
        sun_az, sun_el = sp.sunpos(when, location, True)
# Is the sun up?
        if sun_el > 0:
# Get angle between roof normal and the Sun
            roof_sun_angle = angle_between(roof_az, roof_el, sun_az, sun_el)
# Get angle between best roof angle and the Sun
            best_sun_angle = angle_between(180, best_el, sun_az, sun_el)
# Get solar energy factor for the roof and for ideal roof
            sol_roof = solar_factor(sun_el, roof_sun_angle)
            sol_best = solar_factor(sun_el, best_sun_angle)
# Tally relative solar power factors
            if roof_sun_angle < 90:
                pow_roof += sol_roof
            if best_sun_angle < 90:
                pow_best += sol_best
# Add the time interval to the date and time
        tm += delta
# Roof efficiency is percent of roof power to best power
    roof_efficiency = round(100 * pow_roof / pow_best)
print("\nLatitude: ", location[0])
    print("Roof azimuth: ", roof_az)
    print(f"Roof pitch, elevation:  {roof_pitch}:12  {roof_el}")
    print(f"Ideal pitch, elevation:  {best_pitch}:12  {best_el}")
    print("Percent ideal power: ", roof_efficiency)
def angle_between(az1, el1, az2, el2):
    """ Return angle between two azimuth, elevation directions """
# Convert first direction to spherical
    theta = math.radians(90 - az1)
    phi = math.radians(90.0 - el1)
# Convert first direction to cartesian
    x1 = math.cos(theta) * math.sin(phi)
    y1 = math.sin(theta) * math.sin(phi)
    z1 = math.cos(phi)
# Convert second direction to spherical
    theta = math.radians(90 - az2)
    phi = math.radians(90.0 - el2)
# Convert second direction to cartesian
    x2 = math.cos(theta) * math.sin(phi)
    y2 = math.sin(theta) * math.sin(phi)
    z2 = math.cos(phi)
# Find angle between in degrees
    num = x1 * x2 + y1 * y2 + z1 * z2
    mag1 = math.sqrt(x1 * x1 + y1 * y1 + z1 * z1)
    mag2 = math.sqrt(x2 * x2 + y2 * y2 + z2 * z2)
    angle = math.degrees(math.acos(num / (mag1 * mag2)))
    return angle
def air_mass(elevation):
    """ Return air mass AM for elevation angle """
# Linear function if near or below horizon
    if elevation < 1:
        return -10.076 * elevation + 36.387
# Published formulas use angle from the zenith_ang
    zenith_ang = 90.0 - elevation
# Get cos of zenith_ang angle
    zcos = math.cos(math.radians(zenith_ang))
# Calculate air mass
    return 1 / (zcos + 0.50572 * (96.07995 - zenith_ang) ** -1.6364)
def solar_intensity(AM):
    """ Return solar intensity as function of air mass """
    return 1.1 * 1.353 * 0.7 ** (AM ** 0.678)
def solar_factor(elevation_sun, angle_to_sun):
    """Return solar factor given elevation angle of the sun
    and the angle between panel normal and the sun."""
    AM = air_mass(elevation_sun)
    sol = solar_intensity(AM)
    rad = math.radians(angle_to_sun)
    return math.cos(rad) * sol
def best_roof_elevation(latitude):
    """ Return approximate best panel elevation angle for given latitude """
    tilt = -0.004261 * latitude ** 2 + 1.05952 * latitude - 1.66
    return round(90 - tilt, 1)
if __name__ == "__main__":
    main()

Внесение изменений

Для вашей крыши вам нужно будет изменить три вещи в программе; широта, азимут крыши и уклон крыши. Найдите эти три назначения переменных в начале списка. Как показано, и просто для удовольствия, я использовал местоположение на Земле, как указано в фильме «Близкие контакты третьего вида». Это в поле к северу от Олта, Колорадо, а не в Башне Дьявола в Вайоминге, но кто считает?

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

Азимут отсчитывается с севера на восток. Итак, 90 градусов на восток, 180 на юг и 270 на запад. Введите азимут как число от 0 до 360.

Вот таблица, которая поможет вам определить уклон вашей крыши. Подробное описание уклона крыши можно найти на сайте Calculator.net/roofing-calculator:

Или, если вы знаете угол наклона или угол подъема вашей крыши, вы можете найти его приблизительное значение подъема из этой таблицы:

Обратите внимание, что наклон - это угол вниз от зенита, а высота - это угол вверх от горизонта. Если у вас плоская крыша, наклон равен нулю, высота составляет 90, а подъем равен 0 или 0 дюймов на фут. Если вам интересно, как была создана эта диаграмма, вот моя небольшая небольшая программа на Python:

import math
import tabulate
results = [["Tilt","Elev","Rise"," ","Tilt","Elev","Rise"]]
    
for n in range(1,19):
    a1 = n * 5
    t1 = 90 - a1
    r1 = 12 / math.tan(math.radians(a1))
    r1 = round(r1,1)
    r2 = n
    a2 = math.degrees(math.atan(12/r2))
    a2 = round(a2,1)
    t2 = 90 - a2
    results.append([t1,a1,r1,"",t2,a2,r2])
print("")
print(tabulate.tabulate(results, headers="firstrow"))
print("")

Пример из реального мира

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

Latitude:  40.602778
Roof azimuth:  135
Roof pitch, elevation:  5:12  67.4
Ideal pitch, elevation:  8.2:12  55.7
Percent ideal power:  92

Это показывает, что даже с ориентацией на юго-восток, с наклоном крыши, который нацелен в небо на 12 градусов выше, чем идеальный угол, этот дом все равно будет получать около 92% годовой солнечной энергии по сравнению с идеально направленной крышей на этом месте. место на Земле.

Идти дальше

Как я уже упоминал ранее, моя жена - первоклассный эксперт по солнечной энергии, у нее много счастливых клиентов по всей стране. На самом деле она наставник других продавцов, поэтому действительно знает последние достижения в области солнечных технологий. В нашем наборе инструментов есть еще много инструментов, которые помогут вам решить, подходят ли солнечные панели для вашего дома. Чтобы получить бесплатную консультацию, разумеется, без каких-либо обязательств, нажмите здесь, чтобы оставить свою контактную информацию. Будьте уверены, что, перейдя по этой ссылке, она станет лицом в своей компании, которое получит уведомление. Мне нравится с ней болтать, и я думаю, ты тоже будешь!

Страсть и миссия Джона - делиться кодом Python, чтобы помочь развенчать загадки жизни и повеселиться. Джон является автором Python для Numworks, Python для OpenSCAD и многих других книг.