Notifications
Clear all
Search result for: id10=WA 0859 3970 0884 Total Biaya Pemasangan Kitchen Set Abu Abu Glossy Custom Kemusu Boyolali
MagStation, the new MFAM magnetometer base station is available. It's Geometrics’ latest and most advanced magnetometer base station, designed for high-sensitivity, stationary monitoring of the Earth’s Total magnetic field. Please see the product page for details.
MagStation Magnetometer Base Station
Hello Dears,
I'm new to Geometrics products and interested in MagArrow. I have some questions please. As a geophysicist, I examined the attached data and applied heading compensation to the measured data. My questions are after applying the 4th difference filter (the last panel in the attached figure) which is very important for measuring data noise especially comTing from the drone. I found the range to be very high and exceeding +/- 0.1, even after applying low pass filter to reduces the sampling rate of data from 20 Hz to 10 Hz. I think one of the biggest advantages of the MagArrow is that the sensor is suspended 3 meters below the drone to cancel out the effect of the noise coming from the drone, so I need to explain that.
Attachment : 4th difference.jpg
Secondly, in the attached file of the survey, the range of the Total magnetic field data is about 43,000 nanoTesla, while when calculating the IGRF for that region based on longitude and latitude, I found that the range is about 49,000 nT, which is very far from the measured data? Could you please explain to me the answers to these questions because our goal is to explore minerals and not UXO.
Kind Regards,
Ahmed
There is no one right answer to this question. The higher the channel count, the higher the fold (for any given shot interval), and the higher the signal/noise ratio. For land seismic, we generally recommend 24 or higher-fold data. If the shot spacing is equal to the geophone spacing (typical), this means that you must record on at least 48 channels with each shot. In addition, you must have extra channels for electronic rolling. Taken together, this means that for land CDP reflection, you should have a minimum of 72 channels, which will allow you to roll 48 live channels through a Total of 72.
Dead-Zones
The MagArrow is a dual sensor magnetometer powered by MFAM sensors, but it is configured for use so it only has a single data output. The reason Geometrics has done this is so we could ensure the MagArrow encounters no "dead-zones". A dead-zone occurs when the orientation of a magnetometer results in the magnetometer producing poor or no measurements. The dead-zone angle depends on the location of survey.
Since we have the two MagArrow MFAM sensors in orthogonal orientations, the MagArrow Magnetometer has operability worldwide without affecting survey orientation, making it much easier to use for the Customer.
Heading Errors
Heading errors are a type of noise magnetometers can experience. They come from three sources:
Sensor
Console
Operator
Magnetic materials in the sensor itself are the primary cause of heading errors. The physics of Cesium and Potassium magnetometers can contribute small amounts to the Total heading error. Magnetic contamination near the sensors, operating electronics, or operator can all contribute to heading error.
Heading errors look like herringbone patterns in survey images. Alternate lines can also be corrugated.
Dead-Zones vs Heading Errors
while these two sources of error in magnetic data are different, there is overlap between them when operating a magnetometer like the MagArrow.
Heading errors can be fixed relatively easily in software, where dead zones can be much harder to manage. If a line is completely ruined because of a dead zone then they will need to re-fly the line/mission which is time consuming. Even with advanced users, these sorts of mishaps can happen.
Additionally, the closer a mag sensor operates to a dead-zone, the larger a heading error will be measured. With compensation software and a pre-survey heading error flight, heading error can be reduced dramatically to around 1 nT for the MagArrow.
Click to view the difference between Raw and Processed MagArrow Data
The MagArrow is only outputting a single value as a means to create a “no-dead-zone” system. Obviously each sensor has a dead zone themselves, but with the sensors orientated orthogonally at least one sensor at all times will have a magnetic measurement. By combining the measurements from both sensors it is possible to generate a constant magnetic field measurement independent of orientation and location in the world. If the data from each MFAM sensor in the MagArrow was individually reported there would be gaps in the mag fields observed by either sensor as you fly, rotate, and swing.
Our cesium-vapor magnetometers do not require periodic calibration in order to maintain the accuracy as described in our published specification when the instrument is operated within specified environmental ranges. Geometrics cesium-vapor magnetometers are manufactured and tested based on the discoveries and the basic designs of Carian Associates (U.S. Patent 3,071,721). This method of Total magnetic field measurement relies upon the measurement of the optical absorption of a particular cesium spectral frequency by the cesium vapor enclosed in a small glass cell. This method is similar to those used in the measurement of atomic emission and absorption frequencies using spectroscopic reference cells. The technique thus relies on well-known fundamental quantum mechanical constants for accurate and precise measurement of the magnetic field. As a result, no adjustments to the sensor are needed in order to correct or maintain its accuracy and Geometrics sensor and sensor driver electronics are designed to either work correctly or to not work at all and to report both the strength of the magnetic field as well as the strength of the electrical signal produced by the working sensor. In this way, the signal strength measurement provides a direct indication of the operational state of the magnetometer while it is running and serves to alert the operator if the magnetometer encounters environmental conditions that are outside of its operating range.
Occasional maintenance of the instrument at Geometrics facility should be performed when the instrument's internal diagnostics indicate substandard performance as described in the operator's manual.
Please contact Geometrics Support for technical advice and additional information pertaining to your specific model.
Overview
The MagEx instrument and the MagNav app both display information about the state of the instrument's battery. Battery state and reporting exist in bands according to percentage of remaining battery capacity:
30% or higher:The instrument has good remaining capacity.The LED on the instrument's power switch glows a solid green.MagNav displays the battery percentage or voltage in black text on a white background.
Between 20% and 30%:The instrument has capacity to survey for additional time, but if you will be surveying a significant amount more, start thinking about changing the battery.The LED on the power switch is blue.MagNav displays the battery percentage with a blue background.
Between 5% and 20%:You can continue to survey, but the battery is running low and you should consider changing the battery soon.The LED on the power switch is red.MagNav displays the battery percentage with a red background, and periodically notifies you that the battery is running low.
Below 5%:The battery is running low, and the instrument may turn off at any time in order to preserve battery health. You should change the battery as soon as possible.
Temperature-related effects:Battery performance also changes as the temperature of the battery changes; as the temperature of a battery falls, the voltage it supplies also decreases, and the Total energysupplied by the battery decreases. This means that in cold weather a battery will not last as long as in hot weather.
The battery percentages reported in the instrument are adjusted for the effect of temperature; at a given battery voltage a cold battery will display a higher percentage than a warm battery will report.
The effects of colder temperatures are not normally permanent; as a battery warms up, its output voltage and energy return to higher levels.
Notes about the calculation:The MagEx instrument includes 2 batteries, and each battery includes 3 separate cells. Battery percentages are calculated from only one battery in the instrument - either the single battery if only one is connected, or from the better battery if two batteries are connected.
Reported battery percentage is an estimate, based on measurements of the behavior of healthy batteries in instruments in the field and in the lab. Battery performance may change as a battery ages and as the temperature changes.
The best practice for batteries is to use 2 healthy, fully charged batteries, and replace them both when the percentage falls below 20%.
Clarification regarding Geometrics standard magnetometers
SX versions and the US Govt. export regulations
In this brief review magnetometer specifications are given in terms of both nT/sq-rt-Hz RMS and in Peak-to-Peak (P-P) noise values as both forms are often used to describe instrument performance.
The US Government specifies that an export license is required for magnetometers that have a sensitivity of better than (noise level less than) 0.02nT/sq-rt-Hz RMS. Obtaining an export license is not difficult but it does require approximately 6-8 weeks. Not all geophysical applications require export license sensitivity and so we offer SX models that have a noise floor of 0.02nT/sq-rt-Hz RMS. Compare this with our G-858 Magnetometer at 0.008nT/sq-rt-Hz RMS and our G-882 Marine Magnetometer at 0.004nT/sq-rt-Hz RMS.
What does SX performance mean in the survey results? When the sensor is deployed at some distance from the “source” such as in above the shoulder mounting for geological surveys (G-859SX) or at some distance (several meters) from the seafloor for G-882SX surveys, the distance from the source provides some natural filtering of the near surface response. This means that surveys not focused on small target detection (20mm ordnance rounds) where the sensor is deployed very close to the ground (<1m), SX performance is more than adequate.
Let us consider the G-858 man-portable model. Under low noise laboratory conditions at a sample rate of 10 samples per second, the G-858SX will show approximately 0.125 nT of noise (peak-to-peak) compared to a standard G-858 of about 0.05nT P-P. To understand the significance of this, the natural earth background noise due to geomagnetic micro-pulsations is about 0.02nT/sq-rt-Hz (about 0.125 nT peak-to-peak) at the quietest of times. Micro-pulsation amplitudes of 1 or 2 nT are common and, during active periods, they may be larger than 10 nT.
Any magnetometer will produce a record of the combination of the background noise (micro-pulsations, diurnal drifts, etc) and its own internal noise. If the various noise components are not correlated with each other they will add as the square root of the sum of their squared amplitudes. In the case of the G-858SX, the combination of instrument noise and background micro-pulsations will be:
√(0.125nT^2 + 0.125^2) = 0.18nT.
For the standard G-858, this combination will be:
√(0.05nT^2 + 0.125^2) = 0.13nT.
That is, the SX model will exhibit about 30% more noise amplitude compared to the standard model if the atmospheric noise is typical. Unless the survey measurements are referenced to a high performance base station magnetometer equipped with a very accurate clock, the user will not be able to detect any difference between SX and standard performance. If such base station data were available, the greatest difference that would be seen should be no greater than about 0.05nT P-P in the average peak-to-peak amplitude. Such small differences cannot be seen or even detected in the Total field contour maps made for exploration surveys which are typically contoured at 1nT or more.
It should be remembered that the amplitude of the geomagnetic micro-pulsations in the frequency range from 5hz to 10hz is not constant; i.e., at most times they will be greater than 0.125nT and occasionally less than this value. Their intensity is governed by the average intensity of the instantaneous global thunderstorm activity and sunspot activity.
The only difference between the standard and SX version is the sensitivity is 4pT/rt-Hz and 20 pT/rt-Hz respectively.
Here is an expected response with the magnetometer moving past a generic magnetic projectile:
In this case the amplitude is about 1nT in Total from peak to peak. The feature itself is quite distinguishable. This is assuming there is no noise in the system.
Here is what the data looks like with 4pT/rt-Hz noise:
You can see the general structure is still there but there is a little more wiggle on the trace that is associated with the noise of the system.
Here is the data with 20 pT/rt-Hz noise:
Again, here the structure is clearly visible but the data looks a bit noisier. With some signal processing technique, such as low pass filtering, noises can be further reduced. Please note that in real surveys, detecting 1nT peak-peak anomalies is always a big challenge even with the most sensitive magnetometers due to other noise sources, such as motion noises and environmental noises. Therefore, SX version is in general NOT the limiting factor for conducting surveys.
To understand this concept better, you can use the magnetic gradient tool developed by our partner in the UK, Geomatrix Earth Science.
This is most likely due to the fact that land surveys are typically much closer to the ground (therefore closer to targets). Two spatially separated magnetic anomalies can be resolved on the ground but not several meters above the ground, as shown in the simulation plot below. The simulation is for two targets, separated by 4m, located at z= -2m, y=3m, x= 0m and z=-2m, y=7m, x=0m. The Total magnetic signal on the x=0 plane from the two targets are plotted in 2D as a function of y and z (with z=0 being on the ground).
For land magnetometer surveys, z = 0.5m or less. If we draw a line at z = 0.5m (survey line), it is clear that there will be 2 peaks in the sensor reading along y direction as long as the magnetometer has a high enough sample rate. Therefore, the two targets can be resolved.
For MagArrow surveys, if the above ground level (AGL) is >3m, the two targets cannot be resolved no matter how high the sample rate is.
This simulation also indicates a rule of thumb about the linespacing in MagArrow surveys. The linespacing should be about 1-2 times the AGL. Less than the AGL will not produce any higher resolution map.
The simulation plot provides Customers with a general idea of how fast the magnetic signal decays as a function of distance from the target. The signal falls as 1/R^3.
The only difference between the standard and SX version is the sensitivity is 4pT/rt-Hz and 20 pT/rt-Hz respectively.
Here is an expected response with the magnetometer moving past a generic magnetic projectile:
In this case the amplitude is about 2nT in Total from peak to peak. The feature itself is quite distinguishable. This is assuming there is no noise in the system. Here is what the data looks like with 4pT/rt-Hz noise:
You can see the general structure is still there but there is a little more wiggle on the trace that is associated with the noise of the system. Here is the data with 20 pT/rt-Hz noise:
Again, here the structure is generally there but the data looks quite a bit noisier. So for smaller targets or more subtle anomalies they can be obscured or missed entirely.
To understand this concept better, you can use the magnetic gradient tool developed by our partner in the UK, Geomatrix Earth Science.
Total field magnetometers like the optically pumped cesium magnetometer are passive devices, they do not send out waves or pulses. They measure distortions in the earth’s normally homogenous magnetic field and can sense distortions due to ferrous objects at great distances.
The basic rule of thumb is that one ton (1000 Kg) of steel or iron will give us a 1nT anomaly at 100 ft. or 30m. Since the amount of distortion falls off as the cube with distance (compare a metal detector which falls off as the inverse 6th power!) and is linear with mass, every time we cut the distance in half, we can see 1/8th the mass. Therefore, we can sense 250 lbs. (100kg) at 50 feet (15m), or 30lbs (15kg) at 25 feet (8m), or 4lbs (2kg) at 12 feet (4m).
However this is not the whole story. The factors given above are for induced magnetic fields only. Many targets also have remnant or permanent magnetic effects (meaning they have become magnetized either in production or by the earth’s field) and can therefore have larger anomalies by a factor of 3 or 5 or more. Also many hollow objects like barrels or other tubular structures appear as though they are solid due to self-shielding from the earth’s field, and thus have much larger anomalies than their mass would predict alone. Pipes fall off as the inverse square and are thus detectable at even greater distances. Please see our Applications Manual for Portable Magnetometers for more information.
Hi All,
We are using the Teensy 4.1 as a logger (Adafruit GPS is linked with the Teensy) for the MFAM SX. Below is the code for the Arduino IDE (Teensy), for people who might find it useful,
Roi
#include <NativeEthernet.h>
#include <SD.h>
// ---- NETWORK CONFIGURATION ----
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 2, 10);
IPAddress mfamIP(192, 168, 2, 2);
uint16_t mfamPort = 1000;
EthernetClient client;
// ---- PACKET STRUCTURE ----
const int PACKET_SIZE = 1380;
const int SAMPLE_SIZE = 32;
const int HEADER_SIZE = 16;
const int NUM_SAMPLES = 40;
const int SD_CHIP_SELECT = BUILTIN_SDCARD;
uint8_t buffer[PACKET_SIZE];
int bufferPos = 0;
// ---- SD CARD ----
File logFile;
bool sdReady = false;
unsigned long sampleCount = 0;
unsigned long fileStartTime = 0;
char filename[32];
// ---- AUXILIARY CHANNEL STORAGE ----
double gyroX = 0, gyroY = 0, gyroZ = 0, gyroT = 0;
double accelX = 0, accelY = 0, accelZ = 0, accelT = 0;
double compassX = 0, compassY = 0, compassZ = 0, compassT = 0;
// ---- GPS FROM ADAFRUIT MODULE ON SERIAL1 (Pin 0 = RX) ----
char gpsBuffer[256];
int gpsBufferPos = 0;
char gpsString[128] = "";
char gpsDate[12] = "00/00/00";
char gpsTime[16] = "00:00:00.000";
bool gpsFix = false;
uint8_t tsStatus = 0;
// ---- OUTPUT CONTROL ----
// Set to 1 to log every sample, 10 for 100Hz, 20 for 50Hz, etc.
const int DOWNSAMPLE_FACTOR = 1; // 50 Hz output
int downsampleCounter = 0;
// How many minutes per file. Set to 10, 20, 60, etc.
const int FILE_MINUTES = 10;
// ---- LED INDICATOR ----
// Off = starting up
// Very slow blink (every 3 sec) = connected and logging
// Fast blink (4/sec) = connected but no data arriving
// Solid on = no SD card
// 3 quick flashes then pause = cannot connect to MFAM
const int LED_PIN = 13;
unsigned long lastBlinkTime = 0;
bool ledState = false;
unsigned long lastDataTime = 0;
// ---- FUNCTION PROTOTYPES ----
void createNewFile();
void parsePacket(uint8_t* pkt);
void parseAuxChannels(uint8_t* sample, uint16_t frameID);
void readGPS();
void parseGPRMC(char* sentence);
void writeSample(unsigned long timestamp, uint16_t fiducial, double mag1, uint16_t mag1s,
double mag2, uint16_t mag2s, uint16_t sysStatus);
int16_t toSigned16(uint16_t val);
void createNewFile() {
static int fileNumber = 0;
// On first call, find the next available file number
if (fileNumber == 0) {
char testName[32];
for (int i = 1; i <= 99999; i++) {
snprintf(testName, sizeof(testName), "MFAM_%05d.txt", i);
if (!SD.exists(testName)) {
fileNumber = i - 1; // Will be incremented below
break;
}
}
}
fileNumber++;
snprintf(filename, sizeof(filename), "MFAM_%05d.txt", fileNumber);
logFile = SD.open(filename, FILE_WRITE);
if (logFile) {
logFile.println("Mag 1,Mag 2,Fid,SysS,Mg1S,Mg2S,Gyro X,Gyro Y,Gyro Z,Gyro T,Accel X,Accel Y,Accel Z,Accel T,CompassX,CompassY,CompassZ,Comp T,Date,Time,TS Status,GPS");
logFile.flush();
fileStartTime = millis();
Serial.print("Logging to: ");
Serial.println(filename);
} else {
Serial.print("ERROR: Could not create ");
Serial.println(filename);
}
}
void Setup() {
Serial.begin(115200);
delay(2000);
// Start GPS serial port (Adafruit Ultimate GPS defaults to 9600 baud)
Serial1.begin(9600);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
memset(gpsString, 0, sizeof(gpsString));
// Initialize SD card
if (SD.begin(SD_CHIP_SELECT)) {
sdReady = true;
Serial.println("SD card ready.");
} else {
Serial.println("WARNING: No SD card found. Serial output only.");
digitalWrite(LED_PIN, HIGH);
}
// Initialize Ethernet
Ethernet.begin(mac, ip);
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("ERROR: No Ethernet hardware found!");
while (true) {}
}
Serial.print("Teensy IP: ");
Serial.println(Ethernet.localIP());
Serial.print("Connecting to MFAM at ");
Serial.print(mfamIP);
Serial.print(":");
Serial.println(mfamPort);
if (client.connect(mfamIP, mfamPort)) {
Serial.println("Connected to MFAM!");
} else {
Serial.println("Connection failed!");
}
Serial.println("Waiting for GPS fix...");
if (sdReady) {
createNewFile();
}
Serial.println("Mag 1,Mag 2,Fid,SysS,Mg1S,Mg2S,Gyro X,Gyro Y,Gyro Z,Gyro T,Accel X,Accel Y,Accel Z,Accel T,CompassX,CompassY,CompassZ,Comp T,Date,Time,TS Status,GPS");
}
void loop() {
// Always read GPS data from Serial1
readGPS();
if (!client.connected()) {
Serial.println("Disconnected. Reconnecting...");
if (sdReady && logFile) {
logFile.flush();
}
for (int i = 0; i < 3; i++) {
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(100);
}
delay(1400);
client.connect(mfamIP, mfamPort);
if (client.connected()) {
lastDataTime = millis();
}
return;
}
while (client.available()) {
buffer[bufferPos] = client.read();
bufferPos++;
if (bufferPos >= PACKET_SIZE) {
parsePacket(buffer);
bufferPos = 0;
lastDataTime = millis();
}
}
// LED patterns
if (sdReady) {
if (millis() - lastDataTime > 3000) {
if (millis() - lastBlinkTime > 125) {
ledState = !ledState;
digitalWrite(LED_PIN, ledState ? HIGH : LOW);
lastBlinkTime = millis();
}
} else {
if (millis() - lastBlinkTime > 1500) {
ledState = !ledState;
digitalWrite(LED_PIN, ledState ? HIGH : LOW);
lastBlinkTime = millis();
}
}
}
// New file every FILE_MINUTES minutes
if (sdReady && logFile && (millis() - fileStartTime > (unsigned long)FILE_MINUTES * 60UL * 1000UL)) {
logFile.close();
createNewFile();
}
}
// ---- GPS READING FROM ADAFRUIT MODULE ON SERIAL1 ----
void readGPS() {
while (Serial1.available()) {
char c = Serial1.read();
if (c == '$') {
gpsBufferPos = 0;
}
if (gpsBufferPos < (int)sizeof(gpsBuffer) - 1) {
gpsBuffer[gpsBufferPos] = c;
gpsBufferPos++;
}
if (c == '\n' || c == '\r') {
gpsBuffer[gpsBufferPos] = '\0';
if (strncmp(gpsBuffer, "$GPRMC", 6) == 0 || strncmp(gpsBuffer, "$GNRMC", 6) == 0) {
// Save full sentence for logging
strncpy(gpsString, gpsBuffer, sizeof(gpsString) - 1);
gpsString[sizeof(gpsString) - 1] = '\0';
// Remove trailing newline/carriage return
int slen = strlen(gpsString);
while (slen > 0 && (gpsString[slen - 1] == '\n' || gpsString[slen - 1] == '\r')) {
gpsString[slen - 1] = '\0';
slen--;
}
parseGPRMC(gpsBuffer);
}
gpsBufferPos = 0;
}
}
}
void parseGPRMC(char* sentence) {
// $GPRMC,HHMMSS.sss,A,lat,N,lon,W,speed,course,DDMMYY,...
char copy[256];
strncpy(copy, sentence, sizeof(copy) - 1);
copy[sizeof(copy) - 1] = '\0';
char* token = strtok(copy, ",");
int field = 0;
while (token != NULL && field < 10) {
switch (field) {
case 1: // Time
if (strlen(token) >= 6) {
snprintf(gpsTime, sizeof(gpsTime), "%c%c:%c%c:%s",
token[0], token[1], token[2], token[3], token + 4);
}
break;
case 2: // Fix status
gpsFix = (token[0] == 'A');
break;
case 9: // Date
if (strlen(token) >= 6) {
snprintf(gpsDate, sizeof(gpsDate), "%c%c/%c%c/%c%c",
token[0], token[1], token[2], token[3], token[4], token[5]);
}
break;
}
token = strtok(NULL, ",");
field++;
}
// Update GPS bits of tsStatus
tsStatus = (tsStatus & 0x0C); // Keep MFAM PPS bits (3,2)
tsStatus |= 0x01; // Bit 0: RMC sentence received
if (gpsFix) {
tsStatus |= 0x02; // Bit 1: GPS fix valid
}
}
// ---- MFAM DATA PARSING ----
int16_t toSigned16(uint16_t val) {
if (val > 32767) return (int16_t)(val - 65536);
return (int16_t)val;
}
void parseAuxChannels(uint8_t* sample, uint16_t frameID) {
uint8_t auxID = (frameID >> 11) & 0x07;
uint16_t aux0 = sample[16] | (sample[17] << 8);
uint16_t aux1 = sample[18] | (sample[19] << 8);
uint16_t aux2 = sample[20] | (sample[21] << 8);
uint16_t aux3 = sample[22] | (sample[23] << 8);
switch (auxID) {
case 1:
compassX = toSigned16(aux0) / 0.01333333;
compassY = toSigned16(aux1) / 0.01333333;
compassZ = toSigned16(aux2) / 0.01333333;
compassT = toSigned16(aux3) / 128.0 + 25.0;
break;
case 2:
gyroX = toSigned16(aux0) / 16.384;
gyroY = toSigned16(aux1) / 16.384;
gyroZ = toSigned16(aux2) / 16.384;
gyroT = toSigned16(aux3) / 512.0 + 23.0;
break;
case 4:
accelX = toSigned16(aux0) / 16384.0;
accelY = toSigned16(aux1) / 16384.0;
accelZ = toSigned16(aux2) / 16384.0;
accelT = toSigned16(aux3) / 512.0 + 23.0;
break;
default:
break;
}
}
void writeSample(unsigned long timestamp, uint16_t fiducial, double mag1, uint16_t mag1s,
double mag2, uint16_t mag2s, uint16_t sysStatus) {
char tsStr[12];
snprintf(tsStr, sizeof(tsStr), "%d%d%d%d%d%d%d%d",
(tsStatus >> 7) & 1, (tsStatus >> 6) & 1, (tsStatus >> 5) & 1, (tsStatus >> 4) & 1,
(tsStatus >> 3) & 1, (tsStatus >> 2) & 1, (tsStatus >> 1) & 1, tsStatus & 1);
char sysHex[8], m1sHex[8], m2sHex[8];
snprintf(sysHex, sizeof(sysHex), "%04X", sysStatus);
snprintf(m1sHex, sizeof(m1sHex), "%04X", mag1s);
snprintf(m2sHex, sizeof(m2sHex), "%04X", mag2s);
char line[512];
snprintf(line, sizeof(line),
"%10.4f,%10.4f,%4d,%s,%s,%s,%10.2f,%10.2f,%10.2f,%5.1f,%8.5f,%8.5f,%8.5f,%5.1f,%8.1f,%8.1f,%8.1f,%5.1f,%s,%s,%s,%s",
mag1, mag2, fiducial, sysHex, m1sHex, m2sHex,
gyroX, gyroY, gyroZ, gyroT,
accelX, accelY, accelZ, accelT,
compassX, compassY, compassZ, compassT,
gpsDate, gpsTime, tsStr, gpsString);
if (sdReady && logFile) {
logFile.println(line);
if (sampleCount % 1000 == 0) {
logFile.flush();
}
}
if (sampleCount % 500 == 0) {
Serial.println(line);
}
}
void parsePacket(uint8_t* pkt) {
// Get PPS bits from MFAM system status
uint16_t firstSysStatus = pkt[HEADER_SIZE + 2] | (pkt[HEADER_SIZE + 3] << 8);
uint8_t mfamPPSbits = (firstSysStatus >> 12) & 0x0C;
tsStatus = (tsStatus & 0x03) | mfamPPSbits;
for (int i = 0; i < NUM_SAMPLES; i++) {
int offset = HEADER_SIZE + (i * SAMPLE_SIZE);
uint16_t frameID = pkt[offset] | (pkt[offset + 1] << 8);
uint16_t fiducial = frameID & 0x07FF;
uint16_t sysStatus = pkt[offset + 2] | (pkt[offset + 3] << 8);
uint32_t mag1raw = pkt[offset + 4] | (pkt[offset + 5] << 8) |
((uint32_t)pkt[offset + 6] << 16) | ((uint32_t)pkt[offset + 7] << 24);
double mag1 = mag1raw * 0.05 / 1000.0;
uint16_t mag1status = pkt[offset + 8] | (pkt[offset + 9] << 8);
uint32_t mag2raw = pkt[offset + 10] | (pkt[offset + 11] << 8) |
((uint32_t)pkt[offset + 12] << 16) | ((uint32_t)pkt[offset + 13] << 24);
double mag2 = mag2raw * 0.05 / 1000.0;
uint16_t mag2status = pkt[offset + 14] | (pkt[offset + 15] << 8);
parseAuxChannels(pkt + offset, frameID);
sampleCount++;
downsampleCounter++;
if (downsampleCounter >= DOWNSAMPLE_FACTOR) {
downsampleCounter = 0;
writeSample(millis(), fiducial, mag1, mag1status, mag2, mag2status, sysStatus);
}
}
}
Verify BAUD Rate selected on dip switches 6,7,8
Note: according to a Customer this is how the switches are Set as they are attempting a file transfer at 115200 BAUD.
Connect the G-857 to the computer using the download cable and a properly installed USB/RS-232 adaptor. (Must have FTDI):
Open the MagMap Software.
Select Import>G-857/ASCII
1. Enter known Serial Port (My computer is COM4)
2. BAUD 115200 (Switches 6, 7 and 8 off)
3. Set a good location for the file to written to.
4. Leave Download only, open later unchecked.
5. Leave download time out 2.
Select OK.
On the G-857 press OUTPUT, ENTER when this window opens.
BYTES DOWNLOADED will begin to increment.
Select OK in the window below:
The downloaded Mag file should be displayed:
If the download sequence does not happen this way, it is usually a problem with:
1. USB/RS-232 Adaptor not FTDI, or driver not installed.
2. COM PORT assignment incorrect, and/or file destination not valid.
3. BAUD RATE mismatch.
4. Faulty I/O Cable PN 16492-01.
5. Faulty Computer.
6. Faulty G-857 console.
Check to make sure that the G-857 is not in Legacy Mode:
To check if Legacy Mode is enabled press:
AUTO-OUTPUT
To turn it off press:
AUTO-OUTPUT-CLEAR
To Turn on:
AUTO-OUTPUT-ENTER
If Legacy Mode was on then the recorded data recorded needs to be downloaded as a G-856:
What Affects Geode Trigger Cycle Times?
If you're trying to optimize your Geode system for faster trigger cycles—especially in high-repeat environments—there are a few key factors to consider. The goal is to ensure that the system completes its entire cycle (trigger → recording → data transfer → re-arming) before the next expected trigger. Here’s what influences that cycle:
🧠 Core Factors That Affect Cycle Times
1. File Size (Sampling Parameters)
Your sample interval and record length directly affect the size of each data file.You can view the resulting file size in the Acquisition Parameters menu.Larger files take longer to transfer, which delays the re-arm process.
2. Data Transfer Rate
The Geode typically transfers data at around 450–465 kb/sec.Reducing file size is the best way to reduce transfer time and speed up the cycle.
3. Calibration Frequency
By default, the system may attempt to calibrate every N shots, which takes additional time.Go to Options > Calibration and Set "calibrate every N shots" to a large number (e.g., 100000) to prevent unnecessary delays.
4. Recording Delay and Record Length
If you're operating in a region with a consistently deep seafloor, you can add a recording delay and reduce record length accordingly.Example: If the water column is always >0.3s, you can apply a delay of 0.2s and reduce record length by the same amount.This trims your file size and speeds up the transfer/re-arm process.
⚙️ Best Practices
Use the Auto-Trigger function or Set trigger sensitivity to the maximum value for testing.Monitor the cycle timing and adjust acquisition parameters to stay within your trigger window.It's often an iterative process to find the ideal configuration for your environment.
I have Set up a G-882 system here at Geometrics and am receiving data and sending commands using TeraTerm (any terminal emulation program should work). When in normal use mode the Digital add on board sits in front of the G-882 and parses and acts on all commands coming in. There are two versions of the Digital Add On board, which are the GP120 and the GP140. The GP140 is a newer version of the Digital Add ON board. It is the GP140 Digital board that outputs all S/N (and other) information.
I first Set up with the GP140 board (the newer version). I find that the ""RESET" command does work - i.e. it goes into BYPASS mode for a couple seconds, then output the S/N and configuration information, and reverts to normal operation with the digital depth and altimeter information. But it only works every other time I send it. The first time nothing happens. Then I send it again and it works. This appears to be a bug in the GP140. For some commands the first command after power up or reset are ignored. The second time (and subsequent commands) are executed. The work around seems to be sending the RESET command twice.
I also tried an older G-882 with the GP120 Digital board. The Reset (and other commands worked first time and every time.
BTW, the Digital Board version is in the second line with the S/N information that is sent on power up or Reset.
Some questions:
1) My configuration is one G-882 connected to a PC through the white junction box. Is this your configuration, or do you have concatenated G-882's?
2) Can you get the G-882 to accept any commands (like going into Bypass Mode)? I'm wondering if there is a open link in the command line from the PC to the Digital board.