Za darmo

Геофизические методы в археологии. Методы прикладной геофизики в археологических исследованиях

Tekst
0
Recenzje
Oznacz jako przeczytane
Czcionka:Mniejsze АаWiększe Aa

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

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

Число пикетов, отсчетов на каждом пикете, а также время измерений задается в программном коде до начала измерений. На каждом пикете выбранного профиля можно произвести от 1 до 10 измерений.

4. Результаты измерений записываются в виде текстовых файлов и хранятся во Flash-памяти микроконтроллера RP2040. При необходимости, текстовые файлы с данными измерений могут быть скопированы или перемещены из памяти микроконтроллера в специальную папку, организованную в файловой системе консоли.

Формат файла с данными измерений:

Дата/Время | Пикет |Отсчет | Азимут (o) | T (uT) | |ΔT (uT)

Например, если в программном коде указаны следующие параметры:

– Число пикетов: 10;

– Число измерений на каждом пикете: 10;

то массив данных измерений (в текстовом формате) будет содержать 100 строк, каждая из которых будет содержать информацию о номере пикета и соответствующими данными измерений.

ГЛАВА 3. РЕЗУЛЬТАТЫ ИЗМЕРЕНИЙ

Съемка проводилась по предварительно подготовленной сети в дневное время, на ровном участке открытой местности размерами 1.5х1.5 м, с шагом профильной сетки 20x20 см.

– количество профилей: 7;

– количество пикетов на каждом профиле: 10;

– количество отсчетов на каждом пикете: 5.

Тип почвы – суглинок, поверхностный горизонт гумусного типа, равномерно покрытый травяным слоем. Влажность почвы по предварительным оценкам составляла 20—30%, при температуре воздуха 23 С.

В приповерхностном слое исследуемой площадки на глубине 100 мм были заранее размещены посторонние обьекты:

– 2 неодимовых магнитных диска (Ø12х 5 мм);

– стальная полоска (150x20x0.5 мм).

На карте изолиний магнитного поля исследуемого участка отчетливо выделяются три аномальные зоны, вносимые магнитными дисками и стальной полоской (Рис. 13):


Рис. 13 – Карта изолиний магнитного поля исследуемого участка.



Полученные результаты имеют статус демострационного теста для оценки неоднородности магнитных свойств исследуемого участка грунта. Для точных измерений и анализа необходимо использовать профессиональную аппаратуру и пакеты программ для микромагнитных съемок и обработки магнитометрических данных.

ПРИЛОЖЕНИЕ

МОДУЛИ И СХЕМА МАКЕТА


Рис. 14 – Общий вид модулей макета магнитометра.


Микропроцессор Pico/RP2040 размещен на плате Kitronik и соединяется с консолью с помощью Мicro-USB кабеля. Модуль HMC5883L соединяется с Pico/RP2040.



Рис. 15 – Принципиальная электрическая схема магнитометра.

ПРОГРАММНЫЙ КОД

#magnetometer.py


from machine import I2C, Pin, PWM

from utime import localtime

import time

import math


# HMC5883L address and register addresses

HMC5883L_ADDR = 0x1E

CONFIG_REG_A = 0x00

CONFIG_REG_B = 0x01

MODE_REG = 0x02

DATA_REG = 0x03


# Conversion factor from raw value to uT

# With default gain 1 Ga = 1090 LSb

# And 1 Ga = 100 uT, therefore 1 LSb = 100 uT / 1090 LSb

LSB_TO_UT = 100.0 / 1090.0


# Initialize I2C

i2c = I2C (0, scl=Pin (21), sda=Pin (20), freq=400000)


# Check if HMC5883L is connected

if HMC5883L_ADDR not in i2c.scan ():

raise ValueError («HMC5883L not found’)


# Write configuration to HMC5883L

i2c. writeto_mem (HMC5883L_ADDR, CONFIG_REG_A, bytes ([0x70]))

i2c. writeto_mem (HMC5883L_ADDR, CONFIG_REG_B, bytes ([0x20]))

i2c. writeto_mem (HMC5883L_ADDR, MODE_REG, bytes ([0x00]))


#Initialize button PIN19 GPIO

button = machine.Pin(19,machine.Pin.IN,machine. Pin. PULL_DOWN)

led_red = machine. Pin (17, machine. Pin. OUT)


#Initialize passive buzzer

BUZZER_PIN = 6 # (+) to GP6, (-) to GND

buzzer = PWM (Pin (BUZZER_PIN, Pin. OUT))


numpickets = 10

numcounts = 5


def playNote (frequency, duration, pause) :

global buzzer

#adjust loudness: smaller number is quieter.

buzzer. duty_u16 (8000)

buzzer.freq (frequency)

time.sleep (duration)

buzzer. duty_u16 (0) # loudness set to 0 = sound off

time.sleep (pause)


def write_count (out_file: file, picketnum: int, countnum: int, prev_mod):

data = i2c.readfrom_mem (HMC5883L_ADDR, DATA_REG, 6)

x = ((data [0] <<8) | data [1])

z = ((data [2] <<8) | data [3])

y = ((data [4] <<8) | data [5])


if x> 32767:

x -= 65536

if y> 32767:

y -= 65536

if z> 32767:

z -= 65536


# Convert to uT

x *= LSB_TO_UT

y *= LSB_TO_UT

z *= LSB_TO_UT


# Calculate heading in degrees

heading = math.atan2 (y, x)


# Convert radian to degree

heading = math.degrees (heading)


# If you know the declination in your area, put it instead 0.0

declination_angle = 0.0

heading += declination_angle


# Correct negative values

if heading <0:

heading += 360


fieldmod = math. sqrt (math. pow (x,2) + math. pow (y,2) + math. pow (z,2))

gradient = fieldmod – prev_mod

year, month, day, hour, mins, secs, weekday, yearday = time. localtime ()

print («Дата/Время | Пикет |Отсчет | X (uT): %.2f uT, Y (uT): %.2f uT, Z (uT): %.2f uT, Азимут: %.2f° Модуль: %.2f, Градиент: %.2f» % (x, y, z, heading, fieldmod, gradient))

out_file. write (»{} – {:02d} – {:02d} {}:{}:{}".format (year, month, day, hour, mins, secs) +», " + str (picketnum) +», " + str (countnum) +», " + str (heading) +», " + str (fieldmod) +», " + str (gradient) + "\r\n»)

time.sleep (1.8)

return fieldmod


def write_picket (cur_picket: int):

print («Writing picket " + str (cur_picket))

playNote (2093, 0.2, 0.2)

picket_output_file = open («picket» + str (cur_picket) +». csv», «w»)

picket_output_file. write («Дата/Время, Пикет, Отсчет, Азимут, Модуль, Градиент\r\n»)

res = 0

for count_num in range (0,numcounts):

res = write_count (picket_output_file, cur_picket, count_num, res)

picket_output_file.close ()

playNote (1047, 0.5, 0.5)


#MAIN PROGRAM BELOW:

cur_picket = 1

while cur_picket <= numpickets:

if button.value () == True:

led_red. high ()

write_picket (cur_picket)

led_red. low ()

cur_picket += 1

elif button.value () == False:

time.sleep (0.05)

notes = [1047, 1319, 1568, 2093, 1568, 1319, 1047, 1319, 1568, 2093]

for note in notes :

playNote (note, 0.05, 0.05)

УСТАНОВКА СРЕДЫ РАЗРАБОТКИ (IDE)

Для запуска MicroPython скриптов необходимо установить приложение Micro REPL, которое можно найти на сайте сервиса приложений Google Play Store по следующей ссылке: https://play.google.com/.

Приложение Micro REPL является средой разработки (IDE) в системе Android, и устанавливается на планшете или мобильном телефоне. Приложение имеет: терминал для доступа к интерактивному интерпретатору, менеджер файлов и редактор MicroPython-скриптов.


Порядок установки приложения следующий:

– Подключите Raspberry Pi Pico к планшету (Galaxy A7 Lite);

– Откройте страницу сервиса приложений Google Play Store;

– Найдите и установите приложение Micro REPL;

– Разместите нужные скрипты используя менеджер файлов.



Рис. 16 – Micro REPL (скриншот 1).



Рис. 17— Micro REPL (скриншот 2).