Skip to content

Commit

Permalink
Merge branch 'LABDOS01A' of github.com:UniversalScientificTechnologie…
Browse files Browse the repository at this point in the history
…s/LABDOS01 into LABDOS01A
  • Loading branch information
kakl committed Dec 17, 2023
2 parents 45653e5 + 9be240d commit 4439f39
Show file tree
Hide file tree
Showing 27 changed files with 10,628 additions and 10,685 deletions.
40 changes: 25 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ LABDOS01 is an open-source spectrometer-dosimeter based on a silicon PIN diode a

LABDOS01 aims to make an open-source, accessible, high-quality, reliable, and simple measuring device - a radiation energy spectrometer for the scientific community.

LABDOS01 can function on its own but requires an external power supply. A computer is only required to visualize the recorded data. The device is not intended for outdoor use (it is not waterproof).
LABDOS01 can function on its own but requires an external power supply. A computer is only needed to visualize the recorded data. The device is not intended for outdoor use (it is not waterproof).
Instead of that, it is intended to be used as an experimental device with the same internals as its application-specific variants like:

* [GEODOS01](https://github.com/UniversalScientificTechnologies/GEODOS01) - Outdoor and stand-alone ionizing radiation detector
Expand All @@ -25,19 +25,20 @@ Concerning the development of the detectors, Universal Scientific Technologies s
## Where to get it?

LABDOS01 is commercially available from [Universal Scientific Technologies s.r.o.](https://www.ust.cz/), write an email to [email protected] or shop at [Tindie store](https://www.tindie.com/products/ust/labdos01-open-source-laboratory-dosimeter/).
The device is designed as open-source hardware and software and is released under the GPLv3 license. The device was originally developed and maintained by [UST (Universal Scientific Technologies s.r.o.)](https://www.ust.cz) company, which sells it commercially and offers technical support.
The device is designed as open-source hardware and software and is released under the GPLv3 license. The device was initially developed and maintained by [UST (Universal Scientific Technologies s.r.o.)](https://www.ust.cz) company, which sells it commercially and offers technical support.

## Parameters

* Silicon PIN diode detector with 12.5 mm³ detection volume
* Number of energy channels 250, but configurable by firmware in range
* Deposited energy range from 200 keV to 12 MeV
* Energy measurement resolution up to 50 keV/channel but the exact value depends on firmware and analog front-end setup.
* Silicon PIN diode detector with 44 mm³ detection volume
* Effective number of energy channels 470 ±3
* Deposited energy ranges from 60 keV to 7 MeV
* Energy measurement resolution 15 ±2 keV (depending on calibration method and type of particles)
* Power supply 5V (by using the USB port or JST-GH connectors)
* Integration time depends on firmware setup
* Integration time depends on firmware setup 10 seconds is the default
* Deadtime 1 second in case of writing to SDcard, 100 ms in case of data output to USB
* Interface - USB 2.0, USB-C connector or 3.3V UART link on JST-GH connector ([Pixhawk telemetry port](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf)).
* Dimensions - 96 x 56 x 19 mm
* Weight - 74 grams
* Weight - 76 grams

## Applications

Expand All @@ -46,7 +47,7 @@ The device is designed as open-source hardware and software and is released unde
* Scientific High Altitude Balloons, e.g. [Pfotzer Maximum measurement](https://en.wikipedia.org/wiki/Georg_Pfotzer)
* Educational Toolkit, [cosmic ray monitoring](https://en.wikipedia.org/wiki/Cosmic_ray)
* Radiation Mapping in 3D together with GNSS and UAV
* Space Weather Monitoring e.g on high-altitude observatories
* Space Weather Monitoring e.g. on high-altitude observatories
* [Open science](https://en.wikipedia.org/wiki/Open_science)
* [Citizen science](https://en.wikipedia.org/wiki/Citizen_science)

Expand All @@ -64,7 +65,7 @@ The measured data could be compared with a CARI numerical model, as could be see

![LABDOS01 smartphone connection](/doc/img/LABDOS01_CARI.png)

The sum is photons+electrons+protons+positrons. The difference between the sum value and the total value is mostly caused by muons.
The sum is photons+electrons+protons+positrons. The difference between the sum value and the total value is mainly caused by muons.
If we consider some shielding (the LABDOS sensor is covered by 35 um of copper foil) the agreement is clear. It is also visible that the measured data contains more information on the fluctuations, which is missing in the numerical model.

## Connection
Expand All @@ -79,7 +80,7 @@ This usage case is especially suitable for interactive testing of silicon-based

### Output data format

The output message types are described in the following paragraphs. The exact format of each message depends on application-specific firmware. The firmware could be tuned to specific usage cases by modifying the [arduino code](https://github.com/UniversalScientificTechnologies/LABDOS01/tree/LABDOS01A/fw). The firmware itself could be updated using the bootloader.
The output message types are described in the following paragraphs. The exact format of each message depends on application-specific firmware. The firmware could be tuned to specific usage cases by modifying the [Arduino code](https://github.com/UniversalScientificTechnologies/LABDOS01/tree/LABDOS01A/fw). The firmware itself could be updated using the bootloader.
The baud rate used by the USB port by default is 115200.

#### Initial messages
Expand Down Expand Up @@ -114,7 +115,7 @@ $HIST,0,7.94,517,1,13297,48790,2914,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
```

* `$HIST` - Marking a message with spectrums (histograms)
* `count` - Meassuring number since restart or power-up; Restart can be handled by toggling of DTR signal on an asynchronous interface
* `count` - Measuring number since restart or power-up; Restart can be handled by toggling of DTR signal on an asynchronous interface
* `time` - Time in seconds from power-up
* `suppress` - Number of filtered (omitted) ionizing radiation events, prevention of double detections caused by asynchronous sampling
* `flux` - Number of detected particles per measuring interval (6.88 s)
Expand All @@ -137,12 +138,17 @@ For computers with Windows, you will need to install a driver for [FTDI USB](htt
The device contains an SD card, which could be used do data logging in stand-alone use. In that case, the LABDOS01 needs an external power supply.
That mode could be used for short-term demonstrating of SPACEDOS, AIRDOS, or GEODOS variants of that device.

*Note: Ony industrial SLC SD cards with properly implemented SPI interface are supported.*
*Note: Only industrial SLC or SLC mode SD cards with properly implemented SPI interface are supported.*

## FAQ

### Splitting Individual Records of Energy Spectra from LABDOS01 SDcard log file
### How to reset the LABDOS connected over the USB serial link?

The LABDOS01 device performs measurements of energy spectra and stores them in a single file on an SD card, typically named "0.TXT". To efficiently process and analyze this data, it is desirable to split the file into individual records. For this purpose, the `csplit` command can be used, allowing for automated splitting of the logging file into smaller parts based on a specified line containing a desired pattern.
The reset could be requested by toggling the DTR signal. The exact implementation of how the DTR UART signal could be accessed depends on the implementation of serial communication software. For example in [picocom](https://linux.die.net/man/8/picocom) is asserted by Ctrl+A and Ctrl+P.

### How to split Individual file Records of Energy Spectra from the LABDOS01 SDcard log file

The LABDOS01 device performs measurements of energy spectra and stores them in a single file on an SD card, typically named "0.TXT". It is desirable to split the file into individual records to efficiently process and analyze this data. For this purpose, the `csplit` command can be used, allowing for the automated splitting of the logging file into smaller parts based on a specified line containing a desired pattern.

Description:
The `csplit` command is used to split the logging file of the LABDOS01 device, which contains partial records of energy spectra, into individual measurements. This command enables automated and efficient division of the input file into smaller sections based on a specified line with the desired pattern.
Expand All @@ -162,3 +168,7 @@ Usage:
The `csplit` command utilizes the regular expression `/\$DOS,LABDOS01/` to identify the line that separates the individual energy spectra records. The output files will be stored in the "split" folder with the prefix "0_" and assigned sequential numbers.

Upon executing this command, output files containing the individual energy spectra records from the "0.TXT" logging file will be created. These files can be further processed or analyzed independently.




Binary file modified cad/slice/case.3mf
Binary file not shown.
96 changes: 96 additions & 0 deletions doc/tindie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
## Introducing LABDOS01: The Ionizing Radiation Dosimeter and Spectrometer

LABDOS01 is a versatile ionizing radiation dosimeter and spectrometer built on a [crystalline silicon (c-Si)](https://en.wikipedia.org/wiki/Crystalline_silicon) semiconductor detector. It's designed for laboratory and experimental settings, offering a wide range of applications.

### Key Features:

* Simultaneous spectrometry and accurate dosimetric measurements
* High sensitivity to ionizing radiation particles
* Data logging via smartphone or SD card
* Extremely low power consumption
* Customizable open-source firmware through Arduino IDE

LABDOS01A is an [open-source](https://certification.oshwa.org/cz000008.html) dosimeter and ionizing radiation spectrometer developed for scientific use. It's part of our successful open-source [UST dosimeters](https://www.ust.cz/UST-dosimeters/) series, including the [SPACEDOS](https://www.ust.cz/UST-dosimeters/SPACEDOS/), [AIRDOS](https://www.ust.cz/UST-dosimeters/AIRDOS/), and [GEODOS](https://www.ust.cz/UST-dosimeters/GEODOS/) dosimeters. LABDOS01A complements the UST dosimeters series with a portable device designed for preliminary or laboratory experiments.

![Cosmic Rays radiation measured by SPACEDOS02 onboard ISS](https://raw.githubusercontent.com/UniversalScientificTechnologies/SPACEDOS02/SPACEDOS02A/doc/src/img/ISS_radiation_map.png "Cosmic Rays radiation measured by SPACEDOS02 onboard ISS")

LABDOS01A operates as an ionizing radiation detector, dosimeter-spectrometer, using a semiconductor PIN diode to collect ions created by deposited energy. It's classified as a [Liulin-type](https://en.wikipedia.org/wiki/Liulin_type_instruments) detector. The semiconductor-based detection principle ensures sensitivity to almost all types of ionizing radiation, except high-energy gamma and neutrons.

### Versatile Applications:

* Aerospace or terrestrial radiation monitoring
* Aircraft onboard radiation monitoring
* Scientific high-altitude balloons (e.g., [Pfotzer Maximum measurement](https://en.wikipedia.org/wiki/Georg_Pfotzer))
* Educational toolkit for [cosmic ray monitoring](https://en.wikipedia.org/wiki/Cosmic_ray)
* 3D radiation mapping with GNSS and UAV
* Space weather monitoring at high-altitude observatories
* [Open science](https://en.wikipedia.org/wiki/Open_science)
* [Citizen science](https://en.wikipedia.org/wiki/Citizen_science)

LABDOS01A is built on the [USTSIPIN02](https://github.com/ust-modules/USTSIPIN02) core, which is also used in other UST dosimeters specialized for specific applications like [AIRDOS](https://www.ust.cz/UST-dosimeters/AIRDOS/), [SPACEDOS](https://www.ust.cz/UST-dosimeters/SPACEDOS/), and [GEODOS](https://www.ust.cz/UST-dosimeters/GEODOS/).

Please refer to the [LABDOS documentation](https://github.com/UniversalScientificTechnologies/LABDOS01) for additional examples and details.

#### Aircraft Fly-Crew Cosmic Ray Dosimeter

LABDOS01A is perfect for measuring mixed radiation fields caused by secondary cosmic rays at higher altitudes. Flight altitudes in the atmosphere are a typical example of a mixed radiation field. A silicon semiconductor detector is an almost ideal device for measuring the parameters of such ionizing radiation. In addition, LABDOS can be easily connected to a smartphone, allowing data recording and visualization during the entire flight.

![Doserate measured on-board of an aircraft](https://raw.githubusercontent.com/UniversalScientificTechnologies/AIRDOS02/AIRDOS02A/doc/src/img/airdos_flight_doserate.png "Doserate measured on-board of an aircraft")

#### Radiation spectra measurement

Because LABDOS is also a spectrometer, it enables different radioisotopes to be distinguished by measuring the deposited energy in silicon. Here is an example of spectra [Am-241](https://en.wikipedia.org/wiki/Americium-241) and [Pu-239](https://en.wikipedia.org/wiki/Plutonium-239).

![Am-241 and Pu-239 spetra measured by LABDOS](https://raw.githubusercontent.com/UniversalScientificTechnologies/LABDOS01/LABDOS01A/doc/img/radiation_spectra.png "Am-241 and Pu-239 spetra measured by LABDOS")

## Parameters

The LABDOS01A is standardly packed in a user-modifiable 3D-printed plastic box that provides mechanical durability and compactness for the device. At the same time, it can be mounted into the [MLAB](https://mlab.cz/) base plate (ALBASEx) after a screw replacement.

The detector is equipped with indication LEDs that show the status of the device. LABDOS contains 2 LEDs indicating USB communication, 1 indicating the presence of a power supply, and 3 user LEDs, which can have different meanings according to the used firmware.

| Parameter | Value |
|---|----|
| Detection element | Si PIN diode, 44 mm³ detection volume |
| Number of energy channels | Effective number of energy channels is 470 ±3; depends on firmware |
| Deposited energy range | 60 keV to 7 MeV, can be changed by modification in analog front-end. |
| Energy measurement resolution | 15 ±2 keV (depending on calibration method and type of particles)|
| Power supply | primarily +5V, optionally 3.3V; by using USB-C port or Pixhawk compatible JST-GH connectors |
| Power | A few mA RMS. The consumption current is dominated by LED blinking and SDcard writing. |
| Integration time | 10s, could be changed by firmware |
| Dead-time | depends on firmware setup, 10 ms with shipped firmware|
| Interface | USB-C, 3.3V PWR, Pixhawk serial (UART) |
| Dimensions | 96 x 56 x 19 mm; External dimensions of enclosure |
| Weight | 76 grams; including the enclosure and screws |

The default energy range is selected to best match the alpha particle radiation of [radon progenies](https://en.wikipedia.org/wiki/Radon).

## Connection
LABDOS01A can be connected to a logging or display device in several ways. Firstly, it is possible via the USB-C interface, which can fully power the device and download measured data. Firmware can also be updated via the USB-C interface.

### UART

Another data output in the form of a UART is in a separate connector. Data output is the same as in the case of the USB interface. Connecting via this interface is recommended for long-term measurements. The connector belongs to the JST-GH series. UART connector is compatible with the [Dronecode DS-009](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf) standard.

### 3v3

The 3v3 power supply is reserved for use in very specific situations, especially in consumption-sensitive applications. Under normal circumstances, it is not needed. Check the schematic for possible uses.

### Auxiliary input

The auxiliary input is used to connect support devices that can provide additional information for measurement, for example, GPS position, PPS timestamps, or other data.


## Firmware

LABDOS is based on Arduino and therefore can be equipped with many firmware versions that provide different types of data outputs. The firmware can be easily customized by using the Arduino IDE. If your experiment requires a specific type of data, please feel free to contact us.

### Generic firmware

The LABDOS01A is standardly shipped with generic firmware. On the output serial interface, a string is sent every 10s. This ASCII line contains a spectrum of the detected particles integrated over the last 10s. The output is simple, human-readable, and ready to be machine-processed.


## Shipment content:
* LABDOS01A - Laboratory semiconductor dosimeter
* Firmware variant: Generic firmware with CSV, UART/USB-C output
* High-quality USB-C cable, 0.5m
24 changes: 16 additions & 8 deletions fw/LABDOS/LABDOS.ino
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@

#define MAJOR 7 // Data format
#define MINOR 3 // Features
#define TYPE "LABDOS01B"
#define MAJOR 8 // Data format
#define MINOR 0 // Features
#include "githash.h"

//#define CALIBRATION

#define XSTR(s) STR(s)
#define STR(s) #s

Expand All @@ -25,7 +27,7 @@
#define MAXFILES 200 // maximal number of files on SD card

/*
LABDOS
LABDOSDatasheet
ISP
---
Expand Down Expand Up @@ -127,7 +129,7 @@ boolean SDinserted = true;
// 14 | A14 | A9 | 1x
// 15 | A15 | A9 | 1x
#define PIN 0
uint8_t analog_reference = INTERNAL2V56; // DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, or EXTERNAL
uint8_t analog_reference = EXTERNAL; // DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, or EXTERNAL


uint8_t bcdToDec(uint8_t b)
Expand Down Expand Up @@ -201,7 +203,7 @@ void setup()
DDRB = 0b10011110;
PORTB = 0b00000000; // SDcard Power OFF

DDRA = 0b11111100;
DDRA = 0b11111000;
PORTA = 0b00000000; // SDcard Power OFF
DDRC = 0b11101100;
PORTC = 0b00000000; // SDcard Power OFF
Expand Down Expand Up @@ -282,7 +284,7 @@ void setup()
Wire.endTransmission();

// make a string for device identification output
String dataString = "$DOS,LABDOS01A," + FWversion + "," + String(base_offset) + "," + githash + ","; // FW version and Git hash
String dataString = "$DOS,"TYPE"," + FWversion + "," + String(base_offset) + "," + githash + ","; // FW version and Git hash

Wire.beginTransmission(0x58); // request SN from EEPROM
Wire.write((int)0x08); // MSB
Expand Down Expand Up @@ -482,9 +484,15 @@ void loop()
dataString += ",";
dataString += String(flux);

for(int n=base_offset-1; n<(base_offset-1+RANGE); n++)
for(uint16_t n=base_offset-1; n<CHANNELS; n++)
{
#ifdef CALIBRATION
dataString += "\t,";
dataString += String(n);
dataString += "\t*";
#else
dataString += ",";
#endif
dataString += String(histogram[n]);
}

Expand Down
2 changes: 1 addition & 1 deletion fw/LABDOS/githash.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// This file is overwritten by github actions, do not update it manually
String githash = "71cdf196883fa3ab648ae47327ef2137eb69420f,User";
String githash = "1311793d48915b81accec155353eb83dda536fee,User";
#define GHRELEASE 0
#define GHBUILD 0
#define GHBUILDTYPE User
6 changes: 3 additions & 3 deletions fw/LABDOS/nextversion
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#this file is maintained by github actions
MAJOR 7
MINOR 3
MAJOR 8
MINOR 0
RELEASE 0
BUILD 118
BUILD 123
2 changes: 1 addition & 1 deletion fw/UAVDOS/githash.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// This file is overwritten by github actions, do not update it manually
String githash = "71cdf196883fa3ab648ae47327ef2137eb69420f,User";
String githash = "1311793d48915b81accec155353eb83dda536fee,User";
#define GHRELEASE 3
#define GHBUILD 0
#define GHBUILDTYPE User
2 changes: 1 addition & 1 deletion fw/UAVDOS/nextversion
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
MAJOR 0
MINOR 1
RELEASE 3
BUILD 22
BUILD 27
Loading

0 comments on commit 4439f39

Please sign in to comment.