diff --git a/PCB_file_measurement card/card_measure_raspberry_v3.04.fzz b/PCB_file_measurement card/card_measure_raspberry_v3.04.fzz index cfaddd67411d263f34224cc823e214071ca3e6c9..fb059529b23637fd5c0d5637c3ff533aedf7ad6f 100644 Binary files a/PCB_file_measurement card/card_measure_raspberry_v3.04.fzz and b/PCB_file_measurement card/card_measure_raspberry_v3.04.fzz differ diff --git "a/PCB_file_measurement card/card_measure_raspberry_v3.04_sch\303\251ma.png" "b/PCB_file_measurement card/card_measure_raspberry_v3.04_sch\303\251ma.png" deleted file mode 100644 index 7c2f66fea26beed9dcb2331e4caa84c6b812dc1a..0000000000000000000000000000000000000000 Binary files "a/PCB_file_measurement card/card_measure_raspberry_v3.04_sch\303\251ma.png" and /dev/null differ diff --git a/public/_images/current_board.jpg b/public/_images/current_board.jpg index b4ed8cb1e55cbf688528378b840a5613175300d9..02ae47cf8b521a846fa3a7cb19aee6235abc5e37 100644 Binary files a/public/_images/current_board.jpg and b/public/_images/current_board.jpg differ diff --git a/public/_images/electrode_cable.jpg b/public/_images/electrode_cable.jpg index 4ec579dac056f193d384c380dc18c0feae537565..dd8086de23855142fc94566c1fce8d402b23631b 100644 Binary files a/public/_images/electrode_cable.jpg and b/public/_images/electrode_cable.jpg differ diff --git a/public/_images/measurement_board-2.jpg b/public/_images/measurement_board-2.jpg index 68c3362d55ea21e320d208e809ca6dcd694e30f9..e9d5b5a797ebea34a02ca17f3913f89f0e8f549d 100644 Binary files a/public/_images/measurement_board-2.jpg and b/public/_images/measurement_board-2.jpg differ diff --git a/public/_images/measurement_board1-02.jpg b/public/_images/measurement_board1-02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..559aead766a8549f1ab9c35991a912cb3dfc7be0 Binary files /dev/null and b/public/_images/measurement_board1-02.jpg differ diff --git a/public/_images/multiplexer_implementation.jpg b/public/_images/multiplexer_implementation.jpg index 3400d64488235cba88aea7046c3470728b1d2052..377cb81376e357aebc238fa10bf38a3b3aa90b49 100644 Binary files a/public/_images/multiplexer_implementation.jpg and b/public/_images/multiplexer_implementation.jpg differ diff --git a/public/_images/schema_measurement_board.jpg b/public/_images/schema_measurement_board.jpg index b2ab53918592b51ba0589245117d1ae09d67142e..067f79537545338f96b3db86198f8ecbabb3e6e4 100644 Binary files a/public/_images/schema_measurement_board.jpg and b/public/_images/schema_measurement_board.jpg differ diff --git a/public/_images/schema_measurement_board.png b/public/_images/schema_measurement_board.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ec4ca8a058dbac280b4fda3a88c7ddae922d83 Binary files /dev/null and b/public/_images/schema_measurement_board.png differ diff --git a/public/_images/schema_measurement_board1_02.png b/public/_images/schema_measurement_board1_02.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ec4ca8a058dbac280b4fda3a88c7ddae922d83 Binary files /dev/null and b/public/_images/schema_measurement_board1_02.png differ diff --git a/public/_sources/index.rst.txt b/public/_sources/index.rst.txt index 79e69fb511aba6bbde9c103adb97224ef5cbe2bc..ea3ec89aa3efcc3c7aa0119db8854da482c2211a 100644 --- a/public/_sources/index.rst.txt +++ b/public/_sources/index.rst.txt @@ -32,6 +32,7 @@ Contents: page0 page1 + diff --git a/public/_sources/page1.rst.txt b/public/_sources/page1.rst.txt index 67ac8b9349eaae10287d8b6dee48493743fe1e67..c29678b5eaf56de7bd106050627c1274733416b0 100644 --- a/public/_sources/page1.rst.txt +++ b/public/_sources/page1.rst.txt @@ -1,6 +1,13 @@ ***************************************** OhmPi V 1.01 (limited to 32 electrodes) ***************************************** +.. warning:: + This version corresponds to the version published in the Hardware X journal. + However, we have corrected the bugs that existed on this version and explained the missing mounting points in detail below + We invite you to refer to this document to assemble Ohmpi. + + + The philosophy of Ohmpi ************************** @@ -44,9 +51,9 @@ OS installation The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). For this step, the installation instructions are well described on the Raspberry website -1- Watch the vidéo "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk) +1. Watch the vidéo "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk) -2- The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). +2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). .. note:: All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian: @@ -61,7 +68,37 @@ For this step, the installation instructions are well described on the Raspberry .. warning:: - Once the OS has been installed, the 1-wire option and GPIO remote option must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements. + Once the OS has been installed, **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements. + + + + +3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. +To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file. + + Run the terminal, and write + + .. code-block:: python + + cd /boot/ + +4. Open config.txt with GNU nano editor + + .. code-block:: python + + sudo nano config.txt + +5. At the end of the file write : + + .. code-block:: python + + gpio=8=op,dl + gpio=7=op,dl + +6. Press Ctrl +O to save the modifications and press enter +7. Press Ctrl +x to escap and return to the terminal +8. Close the terminal + Virtual Environnement and packages @@ -284,7 +321,7 @@ Current injection board ======================= To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. -In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts @@ -419,11 +456,11 @@ the required packages and running the code. Startup procedure ================== -As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply (for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†-function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be plugged into the hardware; the "ohmpi.py" source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance are displayed on the screen. A measurement file is automatically created and named "measure.csv"; it will be placed in the same folder. @@ -444,6 +481,4 @@ Electrical resistivity measurement parameters description sequence_delay= 30 # Delay in seconds between 2 sequences stack= 1 # repetition of the current injection for each quadripole -The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. - - +The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. \ No newline at end of file diff --git a/public/_sources/page2.rst.txt b/public/_sources/page2.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..62fc930d1f724a0e1e3a5d34f60a9c6f0be2e1a9 --- /dev/null +++ b/public/_sources/page2.rst.txt @@ -0,0 +1,495 @@ +***************************************** +OhmPi V 1.02 (limited to 32 electrodes) +***************************************** + +The philosophy of Ohmpi +************************** +The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available +electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection, +but suitable for small laboratory experiments and small field time monitoring + + +Technical data +*************** ++-------------------------------+--------------------+-----------+ +| **Parameter** | **Specifications** | Units | ++-------------------------------+--------------------+-----------+ +|Electrodes |32 | | ++-------------------------------+--------------------+-----------+ +|Operating temperature |0 to 50 |°c | ++-------------------------------+--------------------+-----------+ +|Power consumption of CPU and |18.5 |W | +|control system | | | ++-------------------------------+--------------------+-----------+ +|Voltage injection |12 |V | ++-------------------------------+--------------------+-----------+ +|Battery |12 |V | ++-------------------------------+--------------------+-----------+ +|Current |0 to 50 |mA | ++-------------------------------+--------------------+-----------+ +|Min pulse duration |150 |mS | ++-------------------------------+--------------------+-----------+ +|Input impedance |36 |Mohm | ++-------------------------------+--------------------+-----------+ +|Data storage |micro SD card | | ++-------------------------------+--------------------+-----------+ +|Resolution |O.O1 |ohm | ++-------------------------------+--------------------+-----------+ + +Raspberry Pi configuration +****************************************** +OS installation +================ + +The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). +For this step, the installation instructions are well described on the Raspberry website + +1. Watch the vidéo "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk) + +2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). + +.. note:: + All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian: + + .. figure:: raspbian_version.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + + +.. warning:: + Once the OS has been installed, **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements. + + + + +3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. +To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file. + + Run the terminal, and write + + .. code-block:: python + + cd /boot/ + +4. Open config.txt with GNU nano editor + + .. code-block:: python + + sudo nano config.txt + +5. At the end of the file write : + + .. code-block:: python + + gpio=8=op,dl + gpio=7=op,dl + +6. Press Ctrl +O to save the modifications and press enter +7. Press Ctrl +x to escap and return to the terminal +8. Close the terminal + + + +Virtual Environnement and packages +================================== + +All dependencies are specified in requirements.txt + +.. note:: + all instructions below should be typed in the terminal + +It is first necessary to ensure that the libatlas-base-dev library is installed: + +.. code-block:: python + + sudo apt-get install libatlas-base-dev + +We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory. + +Create the virtual environment: + +.. code-block:: python + + python3 -m venv ohmpy + +Activate it using the following command: + +.. code-block:: python + + source ohmpy/bin/activate + +Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies: + +.. code-block:: python + + pip install RPi.GPIO adafruit-blinka numpy adafruit-circuitpython-ads1x15 pandas + +Check that requirements are met using + +.. code-block:: python + + pip list + +You should run you code within the virtual environment +to leave the virtual environment simply type: + +.. code-block:: python + + deactivate + + +Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi) +======================================================================== + +If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it. + +1- Run the Thonny Python IDE software, Click on raspebrry acces **menu > programming> Thonny pythonIDE** + +2- Thonny's interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3)) + +.. figure:: thonny_first_interface.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +3-Click on **Run>select interpreter**, a new window opens click on interpret + +.. figure:: thonny_option.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +4-On the new open windows select **alternative Pyhton3 or virtual environnement** + +.. figure:: thonny_interpreter.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +5- New buttons appeared, selected **"locate another python executable "** + +6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**. + +7- In the **known interpreter** tab the path of the virtual environnementshould appear + +.. figure:: thonny_interpreter_folder.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +8- Close the window by clicking on **ok**. + +9- Close thonny to save modifications + + +Assembly of the measuring/current injection cards, and connection with the Raspberry Pi +***************************************************************************************** + +Electrical resistivity measurements board +========================================== + +a) Description +----------------------------- + +To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115 +is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The +input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. +Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test +circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. +In this test circuit, resistance R11 represents the soil resistance. +Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute +the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which +allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, +resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been +set at 50 ohms in order to ensure: +• a precise resistance, +• a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms. +To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) +is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ? +To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. +In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the +reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included +and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge +ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, +the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking +amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115. +Let's note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction +value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is +still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials +of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve +to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the +electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms. +A shortcut between Electrodes A and B will generate excessive currents, whose intensities depend on the type of battery used. +A lithium ion battery or automobile-type lead-acid battery can deliver a strong enough current to damage the board and, as such, +constitutes a potential hazard. We therefore recommend adding a 1.5-A fuse between the battery and resistor R9. + +.. note:: + Last update: + + 1- The board has been slightly modified, we have added a decoupling capacitor at the input of the Operational Amplifiers (AOP) channels, to ensure a good performance of the AOPs (100nF/ 50VDC). + + 2- On each input of the AOP signals, we have also added a 10 MOhms resistor, so that the inputs take the value of the ground when the system does not measure and thus limit the overheating of the AOP. + + 3- To make sure that the signal is not skimmed, we have added a power supply of 24V on the AOPs, these are the TRN3-1211 components. + + +.. figure:: schema_measurement_board1_02.png + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Measurement board updated from the version 1.01 presented in clement et al 2020 + +b) Implementation +-------------------------------- +The measurement board must be printed using the PCB file (Source file repository), with components soldered onto +it by following the steps described below and illustrated in the following figure : + +* Step no. 1: test divider bridge + For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code.. + + .. math:: + coeff po = (R1 + R2) / R1 + + .. math:: + coeff p1 = (R3 + R4) / R3 + + .. math:: + coeff p2 = (R7 + R6) / R7 + + .. math:: + coeff p3 = (R9 + R8) / R9 + + .. code-block:: python + :linenos: + :lineno-start: 31 + + """ + hardware parameters + """ + R_ref = 50 # reference resistance value in ohm + coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V + coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V + coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V + coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V + + The coefficient parameters can be adjusted in lines 31 to 35 of the ohmpi.py code. + + +* Step no. 2: installation of the 1-Kohm resistors with an accuracy of ± 0.1% (following figure-b). +* Step no. 3: installation of the 1.5-Kohm resistors with an accuracy of ± 0.1% (following figure-c). +* Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (following figure-d) +* Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value with ohmmeter and correct in the jason file (ohmpi_param.json),(following figure-e). +* Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction) (following figure-f). +* Step no. 7: installation of the 10-Mohm resistors +* Step no. 8: addition of the DC/DC converter (TRN3-1211) +* Step no. 9: adding 10nF capacitor and fuse (1.5A-littlefuse ref: 0253001.V) + +1-Kohm and 1.5-Kohm resistors apply to the divider bridge. If, for example, you prefer using a weaker +or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. +Once all the components have been soldered together, the measurement board can be connected to the Raspberry Pi and the +battery terminal, according to Figure 9. Between the battery and the TX+ terminal of the measurement board, remember to +place a fuse holder with a 1.5-A fuse for safety purposes. + +.. figure:: measurement_board1-02.jpg + :width: 800px + :align: center + :height: 600px + :alt: alternate text + :figclass: align-center + + Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers + +.. figure:: measurement_board-2.jpg + :width: 800px + :align: center + :height: 700px + :alt: alternate text + :figclass: align-center + + Measurement board installation with Raspberry Pi + +Current injection board +======================= + +To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. +In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This +injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay +module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts +of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open +contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected +to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse +the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by the GPIO 8 in the open position, +the positive battery pole is connected to electrode A and the negative pole to electrode B. When not energized, +they remain in the normally closed position. This set-up offers a simple and robust solution to inject current. + +.. figure:: current_board.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Wiring of the 4-channel relay module board for current injection management + + +Frist four electrodes resistivity mesurement +============================================ + + +Under construction describe the way vlide the first part of the instruction. +Electrical resistivity measurement on test circuit + + +Multiplexer implentation +************************* +The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement +by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands +of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of +the 32 electrodes stuck into the ground, all of which are connected to the data logger. + + +We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay +modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested +configuration enables making smaller multiplexers (8 or 16 electrodes only). On the other hand, if you prefer upping to 64 electrodes, +which is entirely possible, a GPIO channel multiplier will have to be used. +To prepare the multiplexer, the channels of the two relay boards must be connected according to the wiring diagram shown below. + +.. figure:: multiplexer_implementation.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Schematic diagram of the wiring of two 16-channel relay shields + + +For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly. +The length was adjusted so that the distance between the two points to be connected could be directly measured on the board once they had +been assembled one above the other, in adding an extra 3 cm. The wires at the ends need to be stripped and the end caps added. +As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below. + +Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels +for activating each relay (Fig. 12). However, we will be activating several relays with a single GPIO (to limit the number of GPIOs used on Raspberry Pi, +see Section 2.4). To execute this step, it will be necessary to follow the protocol presented in Figure. + + .. figure:: connection.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Connection to the 16-channel relay shield + +For the 16-channel relay shield no. 1, these steps must be followed: +* Position a test circuit with 10 horizontal and 10 vertical holes on the pins of the 16-channel relay shield board. +* Follow the diagram and solder the pins as shown in Fig. +* Lastly, solder 0.5-mm² wires 1 m in length to the test circuit. + +For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f). +This same operation must be repeated for the other three multiplexers as well. +The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers. + + ++-------------------------------+-------------------------------------------+---------------------+ +| |Relay shield n°1 |Relay Shield n°2 | +| +----------+----------+----------+----------+---------------------+ +| |Pin 1 |Pin 2-3 |Pin 4-7 |Pin 8-16 |Pin 1- 16 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer A |12 |16 |20 |21 |26 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer B |18 |23 |24 |25 |19 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer M |06 |13 |04 |17 |27 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer N |22 |10 |09 |11 |05 | ++-------------------------------+----------+----------+----------+----------+---------------------+ + + Connection of the GPIOs to each multiplexer + + +Electrode connection +************************* +At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used. +According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming +connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure. + +.. figure:: cable.jpg + :width: 800px + :align: center + :height: 300px + :alt: alternate text + :figclass: align-center + +the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B +must be connected to electrode no. 1 of MUX N, which in turn must be connected to electrode no. 1 of MUX M. Lastly, electrode no. 1 of MUX M is connected to the terminal block. +This operation must be repeated for all 32 electrodes. + +.. figure:: electrode_cable.jpg + :width: 800px + :align: center + :height: 800px + :alt: alternate text + :figclass: align-center + +Operating instruction +************************* + +Preliminary procedure (Only for the initial operation) +====================================================== +The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (https://osf.io/dzwb4/) +or at the following Gitlab repository address: https://gitlab.irstea.fr/reversaal/OhmPi. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme†file +is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing +the required packages and running the code. + + +Startup procedure +================== +As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply +(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, +the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +plugged into the hardware; the "ohmpi.py" source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now +hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance +are displayed on the screen. A measurement file is automatically created and named "measure.csv"; it will be placed in the same folder. + +Electrical resistivity measurement parameters description +========================================================== + +.. code-block:: python + :linenos: + :lineno-start: 27 + + """ + measurement parameters + """ + nb_electrodes = 32 # maximum number of electrodes on the resistivity meter + injection_duration = 0.5 # Current injection duration in second + nbr_meas= 1 # Number of times the quadripole sequence is repeated + sequence_delay= 30 # Delay in seconds between 2 sequences + stack= 1 # repetition of the current injection for each quadripole + +The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. + +complete list of componements +========================================================== + + diff --git a/public/index.html b/public/index.html index c86e95779b08b3603323cec9c043b198129dd947..61da6cbd1dd547312affb2a83507264745833dc6 100644 --- a/public/index.html +++ b/public/index.html @@ -159,7 +159,7 @@ <dd class="field-odd"><p>open hardware resistivity-meter</p> </dd> <dt class="field-even">Date</dt> -<dd class="field-even"><p>Nov 27, 2020</p> +<dd class="field-even"><p>Dec 13, 2020</p> </dd> <dt class="field-odd">Authors</dt> <dd class="field-odd"><p><strong>Rémi CLEMENT, Nicolas FORQUET, Julien GANCE, Yannick FARGIER, Vivien DUBOIS, Hélène GUYARD</strong></p> diff --git a/public/objects.inv b/public/objects.inv index d668c6dd2f627af34451e599b4d5983963bc1a45..25f888c0d10c801af7cf56dd67c8d7fcd04a49e2 100644 Binary files a/public/objects.inv and b/public/objects.inv differ diff --git a/public/page1.html b/public/page1.html index 9f9909903b24f6c208b45e4f63e69ee0b0b73b92..a1be2d787c1a8c1f4b9d5a400965e164e9d53e53 100644 --- a/public/page1.html +++ b/public/page1.html @@ -180,6 +180,12 @@ <div class="section" id="ohmpi-v-1-01-limited-to-32-electrodes"> <h1>OhmPi V 1.01 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-01-limited-to-32-electrodes" title="Permalink to this headline">¶</a></h1> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>This version corresponds to the version published in the Hardware X journal. +However, we have corrected the bugs that existed on this version and explained the missing mounting points in detail below +We invite you to refer to this document to assemble Ohmpi.</p> +</div> <div class="section" id="the-philosophy-of-ohmpi"> <h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this headline">¶</a></h2> <p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available @@ -249,8 +255,10 @@ control system</p></td> <h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this headline">¶</a></h3> <p>The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). For this step, the installation instructions are well described on the Raspberry website</p> -<p>1- Watch the vidéo “how to set up your raspberry Pi†(<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p> -<p>2- The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p> +<ol class="arabic simple"> +<li><p>Watch the vidéo “how to set up your raspberry Pi†(<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p></li> +<li><p>The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p></li> +</ol> <div class="admonition note"> <p class="admonition-title">Note</p> <p>All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:</p> @@ -260,8 +268,38 @@ For this step, the installation instructions are well described on the Raspberry </div> <div class="admonition warning"> <p class="admonition-title">Warning</p> -<p>Once the OS has been installed, the 1-wire option and GPIO remote option must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p> +<p>Once the OS has been installed, <strong>1-wire, spi and GPIO remote option</strong> must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p> +</div> +<p>3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. +To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.</p> +<blockquote> +<div><p>Run the terminal, and write</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span> +</pre></div> </div> +</div></blockquote> +<ol class="arabic simple" start="4"> +<li><p>Open config.txt with GNU nano editor</p></li> +</ol> +<blockquote> +<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">nano</span> <span class="n">config</span><span class="o">.</span><span class="n">txt</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="5"> +<li><p>At the end of the file write :</p></li> +</ol> +<blockquote> +<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gpio</span><span class="o">=</span><span class="mi">8</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span> +<span class="n">gpio</span><span class="o">=</span><span class="mi">7</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="6"> +<li><p>Press Ctrl +O to save the modifications and press enter</p></li> +<li><p>Press Ctrl +x to escap and return to the terminal</p></li> +<li><p>Close the terminal</p></li> +</ol> </div> <div class="section" id="virtual-environnement-and-packages"> <h3>Virtual Environnement and packages<a class="headerlink" href="#virtual-environnement-and-packages" title="Permalink to this headline">¶</a></h3> @@ -427,7 +465,7 @@ place a fuse holder with a 1.5-A fuse for safety purposes.</p> <div class="section" id="current-injection-board"> <h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this headline">¶</a></h3> <p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. -In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts @@ -563,11 +601,11 @@ the required packages and running the code.</p> </div> <div class="section" id="startup-procedure"> <h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this headline">¶</a></h3> -<p>As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +<p>As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply (for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†-function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be plugged into the hardware; the “ohmpi.py†source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance are displayed on the screen. A measurement file is automatically created and named “measure.csvâ€; it will be placed in the same folder.</p> diff --git a/public/page2.html b/public/page2.html new file mode 100644 index 0000000000000000000000000000000000000000..77e054f38278d09331fc852c9333280771ddd192 --- /dev/null +++ b/public/page2.html @@ -0,0 +1,700 @@ + + +<!DOCTYPE html> +<html class="writer-html5" lang="en" > +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>OhmPi V 1.02 (limited to 32 electrodes) — Ohmpi: open hardware resistivity-meter documentation</title> + + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + + + + + + + <!--[if lt IE 9]> + <script src="_static/js/html5shiv.min.js"></script> + <![endif]--> + + + <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> + <script src="_static/jquery.js"></script> + <script src="_static/underscore.js"></script> + <script src="_static/doctools.js"></script> + <script src="_static/language_data.js"></script> + <script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script> + + <script type="text/javascript" src="_static/js/theme.js"></script> + + + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + <link rel="prev" title="OhmPi V 1.01 (limited to 32 electrodes)" href="page1.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="index.html" class="icon icon-home" alt="Documentation Home"> Ohmpi: + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="page0.html"><strong>OhmPi project</strong></a></li> +<li class="toctree-l1"><a class="reference internal" href="page1.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">OhmPi V 1.02 (limited to 32 electrodes)</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li> +<li class="toctree-l2"><a class="reference internal" href="#technical-data">Technical data</a></li> +<li class="toctree-l2"><a class="reference internal" href="#raspberry-pi-configuration">Raspberry Pi configuration</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#os-installation">OS installation</a></li> +<li class="toctree-l3"><a class="reference internal" href="#virtual-environnement-and-packages">Virtual Environnement and packages</a></li> +<li class="toctree-l3"><a class="reference internal" href="#activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi)</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurements-board">Electrical resistivity measurements board</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#a-description">a) Description</a></li> +<li class="toctree-l4"><a class="reference internal" href="#b-implementation">b) Implementation</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#current-injection-board">Current injection board</a></li> +<li class="toctree-l3"><a class="reference internal" href="#frist-four-electrodes-resistivity-mesurement">Frist four electrodes resistivity mesurement</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#multiplexer-implentation">Multiplexer implentation</a></li> +<li class="toctree-l2"><a class="reference internal" href="#electrode-connection">Electrode connection</a></li> +<li class="toctree-l2"><a class="reference internal" href="#operating-instruction">Operating instruction</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#preliminary-procedure-only-for-the-initial-operation">Preliminary procedure (Only for the initial operation)</a></li> +<li class="toctree-l3"><a class="reference internal" href="#startup-procedure">Startup procedure</a></li> +<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurement-parameters-description">Electrical resistivity measurement parameters description</a></li> +<li class="toctree-l3"><a class="reference internal" href="#complete-list-of-componements">complete list of componements</a></li> +</ul> +</li> +</ul> +</li> +</ul> + + + + </div> + + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="index.html">Ohmpi:</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="index.html" class="icon icon-home"></a> »</li> + + <li>OhmPi V 1.02 (limited to 32 electrodes)</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="_sources/page2.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="ohmpi-v-1-02-limited-to-32-electrodes"> +<h1>OhmPi V 1.02 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-02-limited-to-32-electrodes" title="Permalink to this headline">¶</a></h1> +<div class="section" id="the-philosophy-of-ohmpi"> +<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this headline">¶</a></h2> +<p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available +electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection, +but suitable for small laboratory experiments and small field time monitoring</p> +</div> +<div class="section" id="technical-data"> +<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this headline">¶</a></h2> +<table class="docutils align-default"> +<colgroup> +<col style="width: 50%" /> +<col style="width: 32%" /> +<col style="width: 18%" /> +</colgroup> +<tbody> +<tr class="row-odd"><td><p><strong>Parameter</strong></p></td> +<td><p><strong>Specifications</strong></p></td> +<td><p>Units</p></td> +</tr> +<tr class="row-even"><td><p>Electrodes</p></td> +<td><p>32</p></td> +<td></td> +</tr> +<tr class="row-odd"><td><p>Operating temperature</p></td> +<td><p>0 to 50</p></td> +<td><p>°c</p></td> +</tr> +<tr class="row-even"><td><p>Power consumption of CPU and +control system</p></td> +<td><p>18.5</p></td> +<td><p>W</p></td> +</tr> +<tr class="row-odd"><td><p>Voltage injection</p></td> +<td><p>12</p></td> +<td><p>V</p></td> +</tr> +<tr class="row-even"><td><p>Battery</p></td> +<td><p>12</p></td> +<td><p>V</p></td> +</tr> +<tr class="row-odd"><td><p>Current</p></td> +<td><p>0 to 50</p></td> +<td><p>mA</p></td> +</tr> +<tr class="row-even"><td><p>Min pulse duration</p></td> +<td><p>150</p></td> +<td><p>mS</p></td> +</tr> +<tr class="row-odd"><td><p>Input impedance</p></td> +<td><p>36</p></td> +<td><p>Mohm</p></td> +</tr> +<tr class="row-even"><td><p>Data storage</p></td> +<td><p>micro SD card</p></td> +<td></td> +</tr> +<tr class="row-odd"><td><p>Resolution</p></td> +<td><p>O.O1</p></td> +<td><p>ohm</p></td> +</tr> +</tbody> +</table> +</div> +<div class="section" id="raspberry-pi-configuration"> +<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this headline">¶</a></h2> +<div class="section" id="os-installation"> +<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this headline">¶</a></h3> +<p>The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). +For this step, the installation instructions are well described on the Raspberry website</p> +<ol class="arabic simple"> +<li><p>Watch the vidéo “how to set up your raspberry Pi†(<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p></li> +<li><p>The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p></li> +</ol> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/raspbian_version.jpg"><img alt="alternate text" src="_images/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a> +</div> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Once the OS has been installed, <strong>1-wire, spi and GPIO remote option</strong> must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p> +</div> +<p>3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. +To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.</p> +<blockquote> +<div><p>Run the terminal, and write</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="4"> +<li><p>Open config.txt with GNU nano editor</p></li> +</ol> +<blockquote> +<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">nano</span> <span class="n">config</span><span class="o">.</span><span class="n">txt</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="5"> +<li><p>At the end of the file write :</p></li> +</ol> +<blockquote> +<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gpio</span><span class="o">=</span><span class="mi">8</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span> +<span class="n">gpio</span><span class="o">=</span><span class="mi">7</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="6"> +<li><p>Press Ctrl +O to save the modifications and press enter</p></li> +<li><p>Press Ctrl +x to escap and return to the terminal</p></li> +<li><p>Close the terminal</p></li> +</ol> +</div> +<div class="section" id="virtual-environnement-and-packages"> +<h3>Virtual Environnement and packages<a class="headerlink" href="#virtual-environnement-and-packages" title="Permalink to this headline">¶</a></h3> +<p>All dependencies are specified in requirements.txt</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>all instructions below should be typed in the terminal</p> +</div> +<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span> +</pre></div> +</div> +<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p> +<p>Create the virtual environment:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span> +</pre></div> +</div> +<p>Activate it using the following command:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span> +</pre></div> +</div> +<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">pandas</span> +</pre></div> +</div> +<p>Check that requirements are met using</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span> +</pre></div> +</div> +<p>You should run you code within the virtual environment +to leave the virtual environment simply type:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">deactivate</span> +</pre></div> +</div> +</div> +<div class="section" id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi"> +<h3>Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi)<a class="headerlink" href="#activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi" title="Permalink to this headline">¶</a></h3> +<p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p> +<p>1- Run the Thonny Python IDE software, Click on raspebrry acces <strong>menu > programming> Thonny pythonIDE</strong></p> +<p>2- Thonny’s interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3))</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_first_interface.jpg"><img alt="alternate text" src="_images/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>3-Click on <strong>Run>select interpreter</strong>, a new window opens click on interpret</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_option.jpg"><img alt="alternate text" src="_images/thonny_option.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>4-On the new open windows select <strong>alternative Pyhton3 or virtual environnement</strong></p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_interpreter.jpg"><img alt="alternate text" src="_images/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>5- New buttons appeared, selected <strong>“locate another python executable “</strong></p> +<p>6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created <strong>/home/pi/ohmpi/bin/python3</strong>.</p> +<p>7- In the <strong>known interpreter</strong> tab the path of the virtual environnementshould appear</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_interpreter_folder.jpg"><img alt="alternate text" src="_images/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>8- Close the window by clicking on <strong>ok</strong>.</p> +<p>9- Close thonny to save modifications</p> +</div> +</div> +<div class="section" id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi"> +<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Permalink to this headline">¶</a></h2> +<div class="section" id="electrical-resistivity-measurements-board"> +<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this headline">¶</a></h3> +<div class="section" id="a-description"> +<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this headline">¶</a></h4> +<p>To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115 +is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The +input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. +Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test +circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. +In this test circuit, resistance R11 represents the soil resistance. +Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute +the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which +allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, +resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been +set at 50 ohms in order to ensure: +• a precise resistance, +• a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms. +To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) +is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ? +To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. +In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the +reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included +and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge +ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, +the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking +amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115. +Let’s note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction +value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is +still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials +of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve +to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the +electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms. +A shortcut between Electrodes A and B will generate excessive currents, whose intensities depend on the type of battery used. +A lithium ion battery or automobile-type lead-acid battery can deliver a strong enough current to damage the board and, as such, +constitutes a potential hazard. We therefore recommend adding a 1.5-A fuse between the battery and resistor R9.</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Last update:</p> +<p>1- The board has been slightly modified, we have added a decoupling capacitor at the input of the Operational Amplifiers (AOP) channels, to ensure a good performance of the AOPs (100nF/ 50VDC).</p> +<p>2- On each input of the AOP signals, we have also added a 10 MOhms resistor, so that the inputs take the value of the ground when the system does not measure and thus limit the overheating of the AOP.</p> +<p>3- To make sure that the signal is not skimmed, we have added a power supply of 24V on the AOPs, these are the TRN3-1211 components.</p> +</div> +<div class="align-center figure" id="id1"> +<a class="reference internal image-reference" href="_images/schema_measurement_board1_02.png"><img alt="alternate text" src="_images/schema_measurement_board1_02.png" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Measurement board updated from the version 1.01 presented in clement et al 2020</span><a class="headerlink" href="#id1" title="Permalink to this image">¶</a></p> +</div> +</div> +<div class="section" id="b-implementation"> +<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this headline">¶</a></h4> +<p>The measurement board must be printed using the PCB file (Source file repository), with components soldered onto +it by following the steps described below and illustrated in the following figure :</p> +<ul> +<li><dl> +<dt>Step no. 1: test divider bridge</dt><dd><p>For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..</p> +<blockquote> +<div><div class="math notranslate nohighlight"> +\[coeff po = (R1 + R2) / R1\]</div> +<div class="math notranslate nohighlight"> +\[coeff p1 = (R3 + R4) / R3\]</div> +<div class="math notranslate nohighlight"> +\[coeff p2 = (R7 + R6) / R7\]</div> +<div class="math notranslate nohighlight"> +\[coeff p3 = (R9 + R8) / R9\]</div> +<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>31 +32 +33 +34 +35 +36 +37 +38</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="sd">"""</span> +<span class="sd"> hardware parameters</span> +<span class="sd"> """</span> + <span class="n">R_ref</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># reference resistance value in ohm</span> + <span class="n">coef_p0</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P0, measurement in V/V</span> + <span class="n">coef_p1</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P1, measurement in V/V</span> + <span class="n">coef_p2</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P2, measurement in V/V</span> + <span class="n">coef_p3</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P3, measurement in V/V</span> +</pre></div> +</td></tr></table></div> +<p>The coefficient parameters can be adjusted in lines 31 to 35 of the ohmpi.py code.</p> +</div></blockquote> +</dd> +</dl> +</li> +<li><p>Step no. 2: installation of the 1-Kohm resistors with an accuracy of ± 0.1% (following figure-b).</p></li> +<li><p>Step no. 3: installation of the 1.5-Kohm resistors with an accuracy of ± 0.1% (following figure-c).</p></li> +<li><p>Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (following figure-d)</p></li> +<li><p>Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value with ohmmeter and correct in the jason file (ohmpi_param.json),(following figure-e).</p></li> +<li><p>Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction) (following figure-f).</p></li> +<li><p>Step no. 7: installation of the 10-Mohm resistors</p></li> +<li><p>Step no. 8: addition of the DC/DC converter (TRN3-1211)</p></li> +<li><p>Step no. 9: adding 10nF capacitor and fuse (1.5A-littlefuse ref: 0253001.V)</p></li> +</ul> +<p>1-Kohm and 1.5-Kohm resistors apply to the divider bridge. If, for example, you prefer using a weaker +or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. +Once all the components have been soldered together, the measurement board can be connected to the Raspberry Pi and the +battery terminal, according to Figure 9. Between the battery and the TX+ terminal of the measurement board, remember to +place a fuse holder with a 1.5-A fuse for safety purposes.</p> +<div class="align-center figure" id="id2"> +<a class="reference internal image-reference" href="_images/measurement_board1-02.jpg"><img alt="alternate text" src="_images/measurement_board1-02.jpg" style="width: 800px; height: 600px;" /></a> +<p class="caption"><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image">¶</a></p> +</div> +<div class="align-center figure" id="id3"> +<a class="reference internal image-reference" href="_images/measurement_board-2.jpg"><img alt="alternate text" src="_images/measurement_board-2.jpg" style="width: 800px; height: 700px;" /></a> +<p class="caption"><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image">¶</a></p> +</div> +</div> +</div> +<div class="section" id="current-injection-board"> +<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this headline">¶</a></h3> +<p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. +In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This +injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay +module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts +of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open +contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected +to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse +the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by the GPIO 8 in the open position, +the positive battery pole is connected to electrode A and the negative pole to electrode B. When not energized, +they remain in the normally closed position. This set-up offers a simple and robust solution to inject current.</p> +<div class="align-center figure" id="id4"> +<a class="reference internal image-reference" href="_images/current_board.jpg"><img alt="alternate text" src="_images/current_board.jpg" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image">¶</a></p> +</div> +</div> +<div class="section" id="frist-four-electrodes-resistivity-mesurement"> +<h3>Frist four electrodes resistivity mesurement<a class="headerlink" href="#frist-four-electrodes-resistivity-mesurement" title="Permalink to this headline">¶</a></h3> +<p>Under construction describe the way vlide the first part of the instruction. +Electrical resistivity measurement on test circuit</p> +</div> +</div> +<div class="section" id="multiplexer-implentation"> +<h2>Multiplexer implentation<a class="headerlink" href="#multiplexer-implentation" title="Permalink to this headline">¶</a></h2> +<p>The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement +by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands +of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of +the 32 electrodes stuck into the ground, all of which are connected to the data logger.</p> +<p>We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay +modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested +configuration enables making smaller multiplexers (8 or 16 electrodes only). On the other hand, if you prefer upping to 64 electrodes, +which is entirely possible, a GPIO channel multiplier will have to be used. +To prepare the multiplexer, the channels of the two relay boards must be connected according to the wiring diagram shown below.</p> +<div class="align-center figure" id="id5"> +<a class="reference internal image-reference" href="_images/multiplexer_implementation.jpg"><img alt="alternate text" src="_images/multiplexer_implementation.jpg" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id5" title="Permalink to this image">¶</a></p> +</div> +<p>For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly. +The length was adjusted so that the distance between the two points to be connected could be directly measured on the board once they had +been assembled one above the other, in adding an extra 3 cm. The wires at the ends need to be stripped and the end caps added. +As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.</p> +<p>Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels +for activating each relay (Fig. 12). However, we will be activating several relays with a single GPIO (to limit the number of GPIOs used on Raspberry Pi, +see Section 2.4). To execute this step, it will be necessary to follow the protocol presented in Figure.</p> +<blockquote> +<div><div class="align-center figure" id="id6"> +<a class="reference internal image-reference" href="_images/connection.jpg"><img alt="alternate text" src="_images/connection.jpg" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id6" title="Permalink to this image">¶</a></p> +</div> +</div></blockquote> +<p>For the 16-channel relay shield no. 1, these steps must be followed: +* Position a test circuit with 10 horizontal and 10 vertical holes on the pins of the 16-channel relay shield board. +* Follow the diagram and solder the pins as shown in Fig. +* Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.</p> +<p>For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f). +This same operation must be repeated for the other three multiplexers as well. +The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.</p> +<table class="docutils align-default"> +<colgroup> +<col style="width: 34%" /> +<col style="width: 11%" /> +<col style="width: 11%" /> +<col style="width: 11%" /> +<col style="width: 11%" /> +<col style="width: 23%" /> +</colgroup> +<tbody> +<tr class="row-odd"><td rowspan="2"></td> +<td colspan="4"><p>Relay shield n°1</p></td> +<td><p>Relay Shield n°2</p></td> +</tr> +<tr class="row-even"><td><p>Pin 1</p></td> +<td><p>Pin 2-3</p></td> +<td><p>Pin 4-7</p></td> +<td><p>Pin 8-16</p></td> +<td><p>Pin 1- 16</p></td> +</tr> +<tr class="row-odd"><td><p>Multiplexer A</p></td> +<td><p>12</p></td> +<td><p>16</p></td> +<td><p>20</p></td> +<td><p>21</p></td> +<td><p>26</p></td> +</tr> +<tr class="row-even"><td><p>Multiplexer B</p></td> +<td><p>18</p></td> +<td><p>23</p></td> +<td><p>24</p></td> +<td><p>25</p></td> +<td><p>19</p></td> +</tr> +<tr class="row-odd"><td><p>Multiplexer M</p></td> +<td><p>06</p></td> +<td><p>13</p></td> +<td><p>04</p></td> +<td><p>17</p></td> +<td><p>27</p></td> +</tr> +<tr class="row-even"><td><p>Multiplexer N</p></td> +<td><p>22</p></td> +<td><p>10</p></td> +<td><p>09</p></td> +<td><p>11</p></td> +<td><p>05</p></td> +</tr> +</tbody> +</table> +<blockquote> +<div><p>Connection of the GPIOs to each multiplexer</p> +</div></blockquote> +</div> +<div class="section" id="electrode-connection"> +<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this headline">¶</a></h2> +<p>At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used. +According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming +connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure.</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/cable.jpg"><img alt="alternate text" src="_images/cable.jpg" style="width: 800px; height: 300px;" /></a> +</div> +<p>the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B +must be connected to electrode no. 1 of MUX N, which in turn must be connected to electrode no. 1 of MUX M. Lastly, electrode no. 1 of MUX M is connected to the terminal block. +This operation must be repeated for all 32 electrodes.</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/electrode_cable.jpg"><img alt="alternate text" src="_images/electrode_cable.jpg" style="width: 800px; height: 800px;" /></a> +</div> +</div> +<div class="section" id="operating-instruction"> +<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this headline">¶</a></h2> +<div class="section" id="preliminary-procedure-only-for-the-initial-operation"> +<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Permalink to this headline">¶</a></h3> +<p>The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (<a class="reference external" href="https://osf.io/dzwb4/">https://osf.io/dzwb4/</a>) +or at the following Gitlab repository address: <a class="reference external" href="https://gitlab.irstea.fr/reversaal/OhmPi">https://gitlab.irstea.fr/reversaal/OhmPi</a>. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme†file +is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing +the required packages and running the code.</p> +</div> +<div class="section" id="startup-procedure"> +<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this headline">¶</a></h3> +<p>As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply +(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, +the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +plugged into the hardware; the “ohmpi.py†source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now +hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance +are displayed on the screen. A measurement file is automatically created and named “measure.csvâ€; it will be placed in the same folder.</p> +</div> +<div class="section" id="electrical-resistivity-measurement-parameters-description"> +<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>27 +28 +29 +30 +31 +32 +33 +34</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="sd">"""</span> +<span class="sd"> measurement parameters</span> +<span class="sd"> """</span> + <span class="n">nb_electrodes</span> <span class="o">=</span> <span class="mi">32</span> <span class="c1"># maximum number of electrodes on the resistivity meter</span> + <span class="n">injection_duration</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1"># Current injection duration in second</span> + <span class="n">nbr_meas</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># Number of times the quadripole sequence is repeated</span> + <span class="n">sequence_delay</span><span class="o">=</span> <span class="mi">30</span> <span class="c1"># Delay in seconds between 2 sequences</span> + <span class="n">stack</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># repetition of the current injection for each quadripole</span> +</pre></div> +</td></tr></table></div> +<p>The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code.</p> +</div> +<div class="section" id="complete-list-of-componements"> +<h3>complete list of componements<a class="headerlink" href="#complete-list-of-componements" title="Permalink to this headline">¶</a></h3> +</div> +</div> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + + <a href="page1.html" class="btn btn-neutral float-left" title="OhmPi V 1.01 (limited to 32 electrodes)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + + © Copyright 2020, INRAE, Rémi CLEMENT + + </p> + </div> + + + + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a + + <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> + + provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/public/searchindex.js b/public/searchindex.js index 5f96cf93f62283685b27748ffb293d85310b87b8..c670cfed350cc4649f96ae9a64c46d6c23c441c8 100644 --- a/public/searchindex.js +++ b/public/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","page0","page1"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","page0.rst","page1.rst"],objects:{},objnames:{},objtypes:{},terms:{"400px":[],"800px":[],"ao\u00fbt":1,"case":2,"cr\u00e9er":[],"d\u00e9mo":[],"esp\u00e8r":[],"final":2,"function":[1,2],"h\u00e9l\u00e8ne":[0,1],"install\u00e9":[],"justifi\u00e9":[],"mm\u00b2":2,"nec\u00e9ssair":[],"new":2,"orl\u00e9an":1,"pr\u00e9sent":[],"pr\u00e9sentat":[],"premi\u00e8r":[],"r\u00e9mi":[0,1],"r\u00e9sistanc":[],"switch":2,"universit\u00e9":1,"vid\u00e9o":2,ADS:2,For:2,IDE:[],IGE:1,Its:2,The:0,These:2,With:2,abmn:2,abov:2,acc:2,access:2,accord:2,accur:2,accuraci:2,acid:2,activ:[],actual:2,adafruit:2,adapt:2,adc:2,added:2,adding:2,addit:2,address:2,adjust:2,administr:[],ads1115:2,ads115:2,ads1x15:2,after:2,align:[],all:2,allow:[1,2],alp:1,also:2,alt:[],altern:2,amplifi:2,analog:2,ani:2,anoth:2,appear:2,appli:2,apt:2,arrai:2,articl:[],assembl:0,assist:2,associ:1,attent:2,attribut:2,aug:[],author:[0,1,2],automat:[1,2],automobil:2,avail:2,avon:[],bank:2,barbeau:[],base:2,basic:1,batteri:2,been:2,befor:2,behavior:2,being:2,below:2,between:2,bin:2,bit:2,black:2,blinka:2,block:2,blue:2,bluetext:[],board:[],bodytext:[],both:2,bridg:2,button:2,c_1:[],c_2:[],cabl:2,calcul:2,calibr:2,call:1,can:2,cap:2,capac:2,caption:[],card:0,carri:2,caus:2,ceci:[],cedex:1,cela:[],center:[],chacun:[],channel:2,characterist:2,charg:2,check:2,chosen:2,christoph:[],circuit:2,circuitpython:2,circul:2,clean:2,clement:[0,1],click:2,close:2,code:2,coef_p0:2,coef_p1:2,coef_p2:2,coef_p3:2,coeff:2,coeff_:[],coeff_p0:[],coeff_p1:[],coeff_p3:[],coeff_p_:[],coeffici:2,cokela:[],com:2,command:2,commerci:2,common:2,commun:1,complet:2,compon:2,comput:2,conduct:2,configur:0,connect:0,connector:2,consequ:2,consist:2,constitut:2,construct:2,consult:[],consumpt:2,contact:2,contain:2,content:0,control:2,convers:2,convert:2,correct:2,corrig:[],cos:[],cost:1,could:2,cpu:2,creat:2,creation:1,csv:2,current:[0,1],damag:2,dan:[],daniel:[],data:0,date:[0,1],deactiv:2,decid:2,delai:2,deliv:2,demo:[],depend:2,des:[],describ:2,design:2,despit:2,dev:2,develop:[0,1,2],developp:[],diagram:2,differ:2,digit:2,din:2,direct:2,directli:2,directori:2,disconnect:2,displai:2,distanc:2,disturb:2,divid:2,diviseur:[],dkfjshkdfh:[],doc:[],document:1,done:2,download:2,dual:2,duboi:[0,1],durat:2,dure:2,dzwb4:2,each:2,eiffel:1,either:2,electr:[],electrod:[0,1],electron:2,enabl:2,end:2,energ:2,enough:2,ensur:2,entir:2,environ:2,environn:[],environnementshould:2,equal:2,equival:2,eric:[],ert:2,est:[],estim:2,everyon:1,exampl:2,excess:2,execut:2,experi:[1,2],extra:2,failur:2,fair:[],fargier:[0,1],featur:[],femal:2,fewer:2,field:2,fig:2,figclass:[],figur:2,file:2,find:2,first:2,flexibl:1,florsch:2,flow:2,folder:2,follow:2,fonctionn:[],formul:[],forquet:[0,1],four:[],framework:2,franc:1,from:2,full:2,fulli:1,fuse:2,gain:2,ganc:[0,1],gather:2,gener:[0,2],ger:1,get:[1,2],gitlab:2,gpio:2,grenobl:1,ground:2,gui:2,guidelin:0,gustav:1,guyard:[0,1],had:2,hand:2,handl:2,hardwar:[1,2],hardwareresist:[],has:2,have:2,hazard:2,header:2,hear:2,height:[],help:[],high:2,holder:2,hole:2,home:2,horizont:2,hous:2,how:2,howev:2,http:2,ifsttar:1,illustr:2,imag:[],imped:2,implement:[],implent:0,inastal:[],includ:2,incom:2,increas:2,inde:2,index:[],inform:[],inject:[0,1],injection_dur:2,input:2,inra:1,insert:2,insid:2,instal:[],instead:2,instruct:0,instrument:1,intens:2,interfac:2,interpret:2,introduc:2,introduct:0,introduir:[],invit:[],involv:1,ion:2,iri:1,irstea:2,jpg:[],juillet:1,julien:[0,1],justifi:[],keyboard:2,kjsdfhksdgfjksdf:[],known:2,kohm:2,laboratori:2,lastli:2,latest:2,lead:2,leav:2,length:2,les:[],less:2,let:2,libatla:2,librari:2,lie:2,lien:[],like:[],limit:0,line:2,lineno:[],list:2,lithium:2,lm358n:2,locat:2,logger:2,logo:[],logo_inra:[],logo_univ_gustav:[],low:[1,2],lying:2,lyon:1,made:2,mai:2,main:2,make:2,manag:2,manual:2,manuscript:2,massembl:[],master:2,mathrm:[],matur:0,maxdepth:[],maximum:2,measur:[0,1],mechan:2,meet:2,mega:2,menu:2,met:2,meter:[1,2],meterfeatur:1,micro:2,mimic:2,min:2,model:2,modif:2,modifi:2,modul:2,mohm:2,monitor:2,moreov:2,moscardi:[],mount:2,mous:2,multi:2,multiplex:[0,1],multipli:2,must:2,mux:2,n_k:[],name:2,nb_electrod:2,nbr_mea:2,necessari:2,need:2,neg:2,next:2,nicola:[0,1],noob:2,normal:2,note:2,notr:[],nou:[],nov:0,now:2,number:2,numer:2,numpi:2,obtain:2,offcial:0,offer:2,officiel:[],offset:[],ohm:2,ohmmet:2,ohmpi:[],onc:2,one:2,onli:[],onto:2,open:[1,2],oper:0,optim:2,option:2,order:2,org:[],osf:2,other:2,our:2,out:2,output:2,ouvr:[],packag:[],page0:[],page1:[],page:[],pai:2,panda:2,paramet:[],parent:[],parl:[],part:2,parten:1,path:2,pcb:2,per:2,perform:[1,2],permut:2,peu:[],philosophi:[0,1],pin1:[],pin:2,pip:2,pitch:2,place:2,pleas:2,plu:[],plug:2,png:[],point:2,polar:2,pole:2,pond:[],posit:2,possibl:2,potenti:2,pour:[],power:2,practic:2,pradal:[],precis:2,prefer:2,prepar:2,present:[1,2],previous:2,print:2,procedur:[],produc:2,program:2,progress:[0,1],project:0,propos:2,protocol:2,provid:[1,2],puls:2,purpos:2,pyhton3:2,python3:2,python:[],pythonid:2,quadripol:2,quadrupol:2,que:[],r10:2,r11:2,r12:2,r_ref:2,rail:2,rang:2,rapberri:[],raspberri:0,raspberrypi:[],raspbian:2,raspbian_vers:[],raspebrri:2,readm:2,recommend:2,red:[],reduct:2,refer:2,relai:2,relat:[],releas:0,remain:2,rememb:2,remot:2,repeat:2,repetit:2,repositori:2,repres:2,requir:2,research:0,resist:[0,1],resistor:2,resolut:2,respect:2,result:2,revers:2,reversa:[1,2],robust:[1,2],role:2,root:2,rpi:2,rro:1,run:2,s_k:[],safeti:2,same:2,save:2,scale:1,schemat:2,scienc:2,scientif:1,screen:2,screw:2,search:[],second:2,section:2,see:2,select:2,sequenc:2,sequence_delai:2,seri:2,serv:2,set:2,setup:2,sever:2,shield:2,shortcut:2,should:2,show:2,shown:2,signal:2,simpl:2,simpli:2,simultan:2,singl:2,site:[],slope:2,small:[1,2],smaller:2,softwar:2,soil:2,solder:2,solut:2,some:[0,2],sound:2,sourc:[1,2],specif:2,specifi:2,sphinx:[],stabl:2,stack:2,stainless:2,start:2,statu:[0,1],steel:2,step:2,still:2,storag:2,strip:2,strong:2,stronger:2,strongli:2,stuck:2,studi:2,style:[],subject:2,sudo:2,suffici:2,suggest:2,suitabl:2,sum:2,sum_:[],suppli:2,sur:[],surfac:1,system:2,tab:2,tabl:2,target:0,task:2,technic:0,temperatur:2,ten:2,termin:2,test:2,tester:[],text:[],textcolor:[],than:2,thei:2,therefor:2,thi:[1,2],thoma:[],thonni:[],thousand:2,three:2,through:2,thu:2,time:2,toctre:[],togeth:2,tool:1,total:2,tourn:[],track:2,turn:2,tutori:0,two:2,txt:2,type:2,typic:2,under:2,underconstruct:[],unit:2,univ:1,unzip:2,updat:1,upping:2,use:2,used:2,user:[0,2],using:2,usr:2,valeur:[],valu:2,variou:2,venv:2,version:2,vertic:2,via:2,villeurbann:1,virtual:[],vise:[],vivien:[0,1],vlide:2,voi:[],voici:[],voltag:2,voltmet:2,vou:[],wai:2,watch:2,weaker:2,websit:2,welcom:1,well:2,were:2,when:2,where:2,which:2,whose:2,width:[],willing:1,window:2,wire:2,within:2,without:2,wjwzhv1v3pk:2,would:2,www:2,x_n:[],yannick:[0,1],you:2,your:2,youtub:2},titles:["OHMPI: Open source and open hardware resitivity-meter","<strong>OhmPi project</strong>","OhmPi V 1.01 (limited to 32 electrodes)"],titleterms:{IDE:2,The:2,activ:2,assembl:2,bienvenu:[],board:2,card:2,center:0,cett:[],configur:2,connect:2,construct:[],current:2,data:2,descript:2,developp:[],document:0,electr:2,electrod:2,environn:2,formul:[],four:2,frist:2,hardwar:0,imag:[],implement:2,implent:2,inastal:[],indic:[],initi:2,inject:2,instal:2,instruct:2,introduct:1,lien:[],limit:2,massembl:[],measur:2,mesur:2,meter:0,modif:[],multiplex:2,ohmpi:[0,1,2],onli:2,open:0,openalea:[],oper:2,packag:2,page:[],paramet:2,philosophi:2,preliminari:2,procedur:2,project:1,python:2,rapberri:2,raspberri:2,resist:2,resit:0,run:[],second:[],sourc:0,startup:2,step:[],summari:0,sur:[],tabl:[],technic:2,text:[],thonni:2,virtual:2,welcom:[]}}) \ No newline at end of file +Search.setIndex({docnames:["index","page0","page1","page2"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","page0.rst","page1.rst","page2.rst"],objects:{},objnames:{},objtypes:{},terms:{"100nf":3,"10nf":3,"24v":3,"400px":[],"50vdc":3,"800px":[],"ao\u00fbt":1,"case":[2,3],"cr\u00e9er":[],"d\u00e9mo":[],"esp\u00e8r":[],"final":[2,3],"function":[1,2,3],"h\u00e9l\u00e8ne":[0,1],"install\u00e9":[],"justifi\u00e9":[],"mm\u00b2":[2,3],"nec\u00e9ssair":[],"new":[2,3],"orl\u00e9an":1,"pr\u00e9sent":[],"pr\u00e9sentat":[],"premi\u00e8r":[],"r\u00e9mi":[0,1],"r\u00e9sistanc":[],"return":[2,3],"switch":[2,3],"universit\u00e9":1,"vid\u00e9o":[2,3],ADS:[2,3],For:[2,3],IDE:[],IGE:1,Its:[2,3],The:0,These:[2,3],With:[2,3],abmn:[2,3],abov:[2,3],acc:[2,3],access:[2,3],accord:[2,3],accur:[2,3],accuraci:[2,3],acid:[2,3],activ:[],actual:[2,3],adafruit:[2,3],adapt:[2,3],adc:[2,3],added:[2,3],adding:[2,3],addit:[2,3],address:[2,3],adjust:[2,3],administr:[],ads1115:[2,3],ads115:[2,3],ads1x15:[2,3],after:[2,3],align:[],all:[2,3],allow:[1,2,3],alp:1,also:[2,3],alt:[],altern:[2,3],amplifi:[2,3],analog:[2,3],ani:[2,3],anoth:[2,3],aop:3,appear:[2,3],appli:[2,3],apt:[2,3],arrai:[2,3],articl:[],assembl:0,assist:[2,3],associ:1,attent:[2,3],attribut:[2,3],aug:[],author:[0,1,2,3],automat:[1,2,3],automobil:[2,3],avail:[2,3],avon:[],bank:[2,3],barbeau:[],base:[2,3],basic:1,batteri:[2,3],been:[2,3],befor:[2,3],behavior:[2,3],being:[2,3],below:[2,3],between:[2,3],bin:[2,3],bit:[2,3],black:[2,3],blinka:[2,3],block:[2,3],blue:[2,3],bluetext:[],board:[],bodytext:[],boot:[2,3],both:[2,3],bridg:[2,3],bug:2,button:[2,3],c_1:[],c_2:[],cabl:[2,3],calcul:[2,3],calibr:[2,3],call:1,can:[2,3],cap:[2,3],capac:[2,3],capacitor:3,caption:[],card:0,carri:[2,3],caus:[2,3],ceci:[],cedex:1,cela:[],center:[],chacun:[],channel:[2,3],characterist:[2,3],charg:[2,3],check:[2,3],chosen:[2,3],christoph:[],circuit:[2,3],circuitpython:[2,3],circul:[2,3],clean:[2,3],clement:[0,1,3],click:[2,3],close:[2,3],code:[2,3],coef_p0:[2,3],coef_p1:[2,3],coef_p2:[2,3],coef_p3:[2,3],coeff:[2,3],coeff_:[],coeff_p0:[],coeff_p1:[],coeff_p3:[],coeff_p_:[],coeffici:[2,3],cokela:[],com:[2,3],command:[2,3],commerci:[2,3],common:[2,3],commun:1,complet:2,compon:2,comput:[2,3],conduct:[2,3],config:[2,3],configur:0,connect:0,connector:[2,3],consequ:[2,3],consist:[2,3],constitut:[2,3],construct:[2,3],consult:[],consumpt:[2,3],contact:[2,3],contain:[2,3],content:0,control:[2,3],convers:[2,3],convert:[2,3],correct:[2,3],correspond:2,corrig:[],cos:[],cost:1,could:[2,3],cpu:[2,3],creat:[2,3],creation:1,csv:[2,3],ctrl:[2,3],current:[0,1],damag:[2,3],dan:[],daniel:[],data:0,date:[0,1],deactiv:[2,3],dec:0,decid:[2,3],decoupl:3,delai:[2,3],deliv:[2,3],demo:[],depend:[2,3],des:[],describ:[2,3],design:[2,3],despit:[2,3],detail:2,dev:[2,3],develop:[0,1,2,3],developp:[],diagram:[2,3],differ:[2,3],digit:[2,3],din:[2,3],direct:[2,3],directli:[2,3],directori:[2,3],disconnect:[2,3],displai:[2,3],distanc:[2,3],disturb:[2,3],divid:[2,3],diviseur:[],dkfjshkdfh:[],doc:[],document:[1,2],doe:3,done:[2,3],download:[2,3],dual:[2,3],duboi:[0,1],durat:[2,3],dure:[2,3],dzwb4:[2,3],each:[2,3],editor:[2,3],eiffel:1,either:[2,3],electr:[],electrod:[0,1],electron:[2,3],enabl:[2,3],end:[2,3],energ:[2,3],enough:[2,3],ensur:[2,3],enter:[2,3],entir:[2,3],environ:[2,3],environn:[],environnementshould:[2,3],equal:[2,3],equival:[2,3],eric:[],ert:[2,3],escap:[2,3],est:[],estim:[2,3],everyon:1,exampl:[2,3],excess:[2,3],execut:[2,3],exist:2,experi:[1,2,3],explain:2,extra:[2,3],failur:[2,3],fair:[],fargier:[0,1],featur:[],femal:[2,3],fewer:[2,3],field:[2,3],fig:[2,3],figclass:[],figur:[2,3],file:[2,3],find:[2,3],first:[2,3],flexibl:1,florsch:[2,3],flow:[2,3],folder:[2,3],follow:[2,3],fonctionn:[],formul:[],forquet:[0,1],four:[],framework:[2,3],franc:1,from:[2,3],full:[2,3],fulli:1,fuse:[2,3],gain:[2,3],ganc:[0,1],gather:[2,3],gener:[0,2,3],ger:1,get:[1,2,3],gitlab:[2,3],gnu:[2,3],good:3,gpio:[2,3],grenobl:1,ground:[2,3],gui:[2,3],guidelin:0,gustav:1,guyard:[0,1],had:[2,3],hand:[2,3],handl:[2,3],hardwar:[1,2,3],hardwareresist:[],has:[2,3],have:[2,3],hazard:[2,3],header:[2,3],hear:[2,3],height:[],help:[],high:[2,3],holder:[2,3],hole:[2,3],home:[2,3],horizont:[2,3],hous:[2,3],how:[2,3],howev:[2,3],http:[2,3],ifsttar:1,illustr:[2,3],imag:[],imped:[2,3],implement:[],implent:0,inastal:[],includ:[2,3],incom:[2,3],increas:[2,3],inde:[2,3],index:[],inform:[],inject:[0,1],injection_dur:[2,3],input:[2,3],inra:1,insert:[2,3],insid:[2,3],instal:[],instead:[2,3],instruct:0,instrument:1,intens:[2,3],interfac:[2,3],interpret:[2,3],introduc:[2,3],introduct:0,introduir:[],invit:2,involv:1,ion:[2,3],iri:1,irstea:[2,3],jason:3,journal:2,jpg:[],json:3,juillet:1,julien:[0,1],justifi:[],keyboard:[2,3],kjsdfhksdgfjksdf:[],known:[2,3],kohm:[2,3],laboratori:[2,3],last:3,lastli:[2,3],latest:[2,3],lead:[2,3],leav:[2,3],length:[2,3],les:[],less:[2,3],let:[2,3],libatla:[2,3],librari:[2,3],lie:[2,3],lien:[],like:[],limit:0,line:[2,3],lineno:[],list:2,lithium:[2,3],littlefus:3,lm358n:[2,3],locat:[2,3],logger:[2,3],logo:[],logo_inra:[],logo_univ_gustav:[],low:[1,2,3],lying:[2,3],lyon:1,made:[2,3],mai:[2,3],main:[2,3],make:[2,3],manag:[2,3],manual:[2,3],manuscript:[2,3],massembl:[],master:[2,3],mathrm:[],matur:0,maxdepth:[],maximum:[2,3],measur:[0,1],mechan:[2,3],meet:[2,3],mega:[2,3],menu:[2,3],met:[2,3],meter:[1,2,3],meterfeatur:1,micro:[2,3],mimic:[2,3],min:[2,3],miss:2,model:[2,3],modif:[2,3],modifi:[2,3],modul:[2,3],mohm:[2,3],monitor:[2,3],moreov:[2,3],moscardi:[],mount:[2,3],mous:[2,3],multi:[2,3],multiplex:[0,1],multipli:[2,3],must:[2,3],mux:[2,3],n_k:[],name:[2,3],nano:[2,3],nb_electrod:[2,3],nbr_mea:[2,3],necessari:[2,3],need:[2,3],neg:[2,3],next:[2,3],nicola:[0,1],noob:[2,3],normal:[2,3],note:[2,3],notr:[],nou:[],nov:[],now:[2,3],number:[2,3],numer:[2,3],numpi:[2,3],obtain:[2,3],offcial:0,offer:[2,3],officiel:[],offset:[],ohm:[2,3],ohmmet:[2,3],ohmpi:[],ohmpi_param:3,onc:[2,3],one:[2,3],onli:[],onto:[2,3],open:[1,2,3],oper:0,optim:[2,3],option:[2,3],order:[2,3],org:[],osf:[2,3],other:[2,3],our:[2,3],out:[2,3],output:[2,3],ouvr:[],overh:3,packag:[],page0:[],page1:[],page:[],pai:[2,3],panda:[2,3],paramet:[],parent:[],parl:[],part:[2,3],parten:1,path:[2,3],pcb:[2,3],per:[2,3],perform:[1,2,3],permut:[2,3],peu:[],philosophi:[0,1],pin1:[],pin:[2,3],pip:[2,3],pitch:[2,3],place:[2,3],pleas:[2,3],plu:[],plug:[2,3],png:[],point:[2,3],polar:[2,3],pole:[2,3],pond:[],posit:[2,3],possibl:[2,3],potenti:[2,3],pour:[],power:[2,3],practic:[2,3],pradal:[],precis:[2,3],prefer:[2,3],prepar:[2,3],present:[1,2,3],press:[2,3],previous:[2,3],print:[2,3],procedur:[],produc:[2,3],program:[2,3],progress:[0,1],project:0,propos:[2,3],protocol:[2,3],provid:[1,2,3],publish:2,puls:[2,3],purpos:[2,3],pyhton3:[2,3],python3:[2,3],python:[],pythonid:[2,3],quadripol:[2,3],quadrupol:[2,3],que:[],r10:[2,3],r11:[2,3],r12:[2,3],r_ref:[2,3],rail:[2,3],rang:[2,3],rapberri:[],raspberri:0,raspberrypi:[],raspbian:[2,3],raspbian_vers:[],raspebrri:[2,3],readm:[2,3],recommend:[2,3],red:[],reduct:[2,3],ref:3,refer:[2,3],relai:[2,3],relat:[],releas:0,remain:[2,3],rememb:[2,3],remot:[2,3],repeat:[2,3],repetit:[2,3],repositori:[2,3],repres:[2,3],requir:[2,3],research:0,resist:[0,1],resistor:[2,3],resolut:[2,3],respect:[2,3],result:[2,3],revers:[2,3],reversa:[1,2,3],robust:[1,2,3],role:[2,3],root:[2,3],rpi:[2,3],rro:1,run:[2,3],s_k:[],safeti:[2,3],same:[2,3],save:[2,3],scale:1,schemat:[2,3],scienc:[2,3],scientif:1,screen:[2,3],screw:[2,3],search:[],second:[2,3],section:[2,3],see:[2,3],select:[2,3],sequenc:[2,3],sequence_delai:[2,3],seri:[2,3],serv:[2,3],set:[2,3],setup:[2,3],sever:[2,3],shield:[2,3],shortcut:[2,3],should:[2,3],show:[2,3],shown:[2,3],signal:[2,3],simpl:[2,3],simpli:[2,3],simultan:[2,3],singl:[2,3],site:[],skim:3,slightli:3,slope:[2,3],small:[1,2,3],smaller:[2,3],softwar:[2,3],soil:[2,3],solder:[2,3],solut:[2,3],some:[0,2,3],sound:[2,3],sourc:[1,2,3],specif:[2,3],specifi:[2,3],sphinx:[],spi:[2,3],stabl:[2,3],stack:[2,3],stainless:[2,3],start:[2,3],statu:[0,1],steel:[2,3],step:[2,3],still:[2,3],storag:[2,3],strip:[2,3],strong:[2,3],stronger:[2,3],strongli:[2,3],stuck:[2,3],studi:[2,3],style:[],subject:[2,3],sudo:[2,3],suffici:[2,3],suggest:[2,3],suitabl:[2,3],sum:[2,3],sum_:[],suppli:[2,3],sur:[],sure:[2,3],surfac:1,system:[2,3],tab:[2,3],tabl:[2,3],take:3,tape:[],target:0,task:[2,3],technic:0,temperatur:[2,3],ten:[2,3],termin:[2,3],test:[2,3],tester:[],text:[],textcolor:[],than:[2,3],the9:2,thei:[2,3],therefor:[2,3],thi:[1,2,3],thoma:[],thonni:[],thousand:[2,3],three:[2,3],through:[2,3],thu:[2,3],time:[2,3],toctre:[],togeth:[2,3],tool:1,total:[2,3],tourn:[],track:[2,3],trn3:3,turn:[2,3],tutori:0,two:[2,3],txt:[2,3],type:[2,3],typic:[2,3],under:[2,3],underconstruct:[],unexpectedli:[2,3],unit:[2,3],univ:1,unzip:[2,3],updat:[1,3],upping:[2,3],use:[2,3],used:[2,3],user:[0,2,3],using:[2,3],usr:[2,3],valeur:[],valu:[2,3],variou:[2,3],venv:[2,3],version:[2,3],vertic:[2,3],via:[2,3],villeurbann:1,virtual:[],vise:[],vivien:[0,1],vlide:[2,3],voi:[],voici:[],voltag:[2,3],voltmet:[2,3],vou:[],wai:[2,3],watch:[2,3],weaker:[2,3],websit:[2,3],welcom:1,well:[2,3],were:[2,3],when:[2,3],where:[2,3],which:[2,3],whose:[2,3],width:[],willing:1,window:[2,3],wire:[2,3],within:[2,3],without:[2,3],wjwzhv1v3pk:[2,3],would:[2,3],write:[2,3],www:[2,3],x_n:[],yannick:[0,1],you:[2,3],your:[2,3],youtub:[2,3]},titles:["OHMPI: Open source and open hardware resitivity-meter","<strong>OhmPi project</strong>","OhmPi V 1.01 (limited to 32 electrodes)","OhmPi V 1.02 (limited to 32 electrodes)"],titleterms:{IDE:[2,3],The:[2,3],activ:[2,3],assembl:[2,3],bienvenu:[],board:[2,3],card:[2,3],center:0,cett:[],complet:3,compon:3,configur:[2,3],connect:[2,3],construct:[],current:[2,3],data:[2,3],descript:[2,3],developp:[],document:0,electr:[2,3],electrod:[2,3],environn:[2,3],formul:[],four:[2,3],frist:[2,3],hardwar:0,imag:[],implement:[2,3],implent:[2,3],inastal:[],indic:[],initi:[2,3],inject:[2,3],instal:[2,3],instruct:[2,3],introduct:1,lien:[],limit:[2,3],list:3,massembl:[],measur:[2,3],mesur:[2,3],meter:0,modif:[],multiplex:[2,3],ohmpi:[0,1,2,3],onli:[2,3],open:0,openalea:[],oper:[2,3],packag:[2,3],page:[],paramet:[2,3],philosophi:[2,3],preliminari:[2,3],procedur:[2,3],project:1,python:[2,3],rapberri:[2,3],raspberri:[2,3],resist:[2,3],resit:0,run:[],second:[],sourc:0,startup:[2,3],step:[],summari:0,sur:[],tabl:[],technic:[2,3],text:[],thonni:[2,3],virtual:[2,3],welcom:[]}}) \ No newline at end of file diff --git a/sphinx/build/doctrees/environment.pickle b/sphinx/build/doctrees/environment.pickle index 9578d17eafe1477acbb762004558b210180e9139..506f68b6560fdbacc903ca2f3c67cae02d681bf8 100644 Binary files a/sphinx/build/doctrees/environment.pickle and b/sphinx/build/doctrees/environment.pickle differ diff --git a/sphinx/build/doctrees/index.doctree b/sphinx/build/doctrees/index.doctree index 1c9e805c398a8e2a70955f5bffdbbbae1543088e..d0c769c5625bc1ec3ead18c44cbce7626b68604b 100644 Binary files a/sphinx/build/doctrees/index.doctree and b/sphinx/build/doctrees/index.doctree differ diff --git a/sphinx/build/doctrees/page1.doctree b/sphinx/build/doctrees/page1.doctree index cc52945d1f00a2bb81964df0242576520fe9ae8c..febc85ef87b90543c0a06f7507d064d50bd13adc 100644 Binary files a/sphinx/build/doctrees/page1.doctree and b/sphinx/build/doctrees/page1.doctree differ diff --git a/sphinx/build/doctrees/page2.doctree b/sphinx/build/doctrees/page2.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e16abc992c3999b5b3b9ee16e575b2266e1281f7 Binary files /dev/null and b/sphinx/build/doctrees/page2.doctree differ diff --git a/sphinx/build/html/_images/current_board.jpg b/sphinx/build/html/_images/current_board.jpg index b4ed8cb1e55cbf688528378b840a5613175300d9..02ae47cf8b521a846fa3a7cb19aee6235abc5e37 100644 Binary files a/sphinx/build/html/_images/current_board.jpg and b/sphinx/build/html/_images/current_board.jpg differ diff --git a/sphinx/build/html/_images/electrode_cable.jpg b/sphinx/build/html/_images/electrode_cable.jpg index 4ec579dac056f193d384c380dc18c0feae537565..dd8086de23855142fc94566c1fce8d402b23631b 100644 Binary files a/sphinx/build/html/_images/electrode_cable.jpg and b/sphinx/build/html/_images/electrode_cable.jpg differ diff --git a/sphinx/build/html/_images/measurement_board-2.jpg b/sphinx/build/html/_images/measurement_board-2.jpg index 68c3362d55ea21e320d208e809ca6dcd694e30f9..e9d5b5a797ebea34a02ca17f3913f89f0e8f549d 100644 Binary files a/sphinx/build/html/_images/measurement_board-2.jpg and b/sphinx/build/html/_images/measurement_board-2.jpg differ diff --git a/sphinx/build/html/_images/measurement_board1-02.jpg b/sphinx/build/html/_images/measurement_board1-02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..559aead766a8549f1ab9c35991a912cb3dfc7be0 Binary files /dev/null and b/sphinx/build/html/_images/measurement_board1-02.jpg differ diff --git a/sphinx/build/html/_images/multiplexer_implementation.jpg b/sphinx/build/html/_images/multiplexer_implementation.jpg index 3400d64488235cba88aea7046c3470728b1d2052..377cb81376e357aebc238fa10bf38a3b3aa90b49 100644 Binary files a/sphinx/build/html/_images/multiplexer_implementation.jpg and b/sphinx/build/html/_images/multiplexer_implementation.jpg differ diff --git a/sphinx/build/html/_images/schema_measurement_board.jpg b/sphinx/build/html/_images/schema_measurement_board.jpg index b2ab53918592b51ba0589245117d1ae09d67142e..067f79537545338f96b3db86198f8ecbabb3e6e4 100644 Binary files a/sphinx/build/html/_images/schema_measurement_board.jpg and b/sphinx/build/html/_images/schema_measurement_board.jpg differ diff --git a/sphinx/build/html/_images/schema_measurement_board.png b/sphinx/build/html/_images/schema_measurement_board.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ec4ca8a058dbac280b4fda3a88c7ddae922d83 Binary files /dev/null and b/sphinx/build/html/_images/schema_measurement_board.png differ diff --git a/sphinx/build/html/_images/schema_measurement_board1_02.png b/sphinx/build/html/_images/schema_measurement_board1_02.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ec4ca8a058dbac280b4fda3a88c7ddae922d83 Binary files /dev/null and b/sphinx/build/html/_images/schema_measurement_board1_02.png differ diff --git a/sphinx/build/html/_sources/index.rst.txt b/sphinx/build/html/_sources/index.rst.txt index 79e69fb511aba6bbde9c103adb97224ef5cbe2bc..ea3ec89aa3efcc3c7aa0119db8854da482c2211a 100644 --- a/sphinx/build/html/_sources/index.rst.txt +++ b/sphinx/build/html/_sources/index.rst.txt @@ -32,6 +32,7 @@ Contents: page0 page1 + diff --git a/sphinx/build/html/_sources/page1.rst.txt b/sphinx/build/html/_sources/page1.rst.txt index e8cf01ac6ba50bb9f96e3cc7246d07398e7b4cbd..c29678b5eaf56de7bd106050627c1274733416b0 100644 --- a/sphinx/build/html/_sources/page1.rst.txt +++ b/sphinx/build/html/_sources/page1.rst.txt @@ -1,6 +1,13 @@ ***************************************** OhmPi V 1.01 (limited to 32 electrodes) ***************************************** +.. warning:: + This version corresponds to the version published in the Hardware X journal. + However, we have corrected the bugs that existed on this version and explained the missing mounting points in detail below + We invite you to refer to this document to assemble Ohmpi. + + + The philosophy of Ohmpi ************************** @@ -314,7 +321,7 @@ Current injection board ======================= To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. -In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts @@ -449,11 +456,11 @@ the required packages and running the code. Startup procedure ================== -As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply (for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†-function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be plugged into the hardware; the "ohmpi.py" source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance are displayed on the screen. A measurement file is automatically created and named "measure.csv"; it will be placed in the same folder. @@ -474,6 +481,4 @@ Electrical resistivity measurement parameters description sequence_delay= 30 # Delay in seconds between 2 sequences stack= 1 # repetition of the current injection for each quadripole -The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. - - +The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. \ No newline at end of file diff --git a/sphinx/build/html/_sources/page2.rst.txt b/sphinx/build/html/_sources/page2.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..62fc930d1f724a0e1e3a5d34f60a9c6f0be2e1a9 --- /dev/null +++ b/sphinx/build/html/_sources/page2.rst.txt @@ -0,0 +1,495 @@ +***************************************** +OhmPi V 1.02 (limited to 32 electrodes) +***************************************** + +The philosophy of Ohmpi +************************** +The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available +electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection, +but suitable for small laboratory experiments and small field time monitoring + + +Technical data +*************** ++-------------------------------+--------------------+-----------+ +| **Parameter** | **Specifications** | Units | ++-------------------------------+--------------------+-----------+ +|Electrodes |32 | | ++-------------------------------+--------------------+-----------+ +|Operating temperature |0 to 50 |°c | ++-------------------------------+--------------------+-----------+ +|Power consumption of CPU and |18.5 |W | +|control system | | | ++-------------------------------+--------------------+-----------+ +|Voltage injection |12 |V | ++-------------------------------+--------------------+-----------+ +|Battery |12 |V | ++-------------------------------+--------------------+-----------+ +|Current |0 to 50 |mA | ++-------------------------------+--------------------+-----------+ +|Min pulse duration |150 |mS | ++-------------------------------+--------------------+-----------+ +|Input impedance |36 |Mohm | ++-------------------------------+--------------------+-----------+ +|Data storage |micro SD card | | ++-------------------------------+--------------------+-----------+ +|Resolution |O.O1 |ohm | ++-------------------------------+--------------------+-----------+ + +Raspberry Pi configuration +****************************************** +OS installation +================ + +The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). +For this step, the installation instructions are well described on the Raspberry website + +1. Watch the vidéo "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk) + +2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). + +.. note:: + All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian: + + .. figure:: raspbian_version.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + + +.. warning:: + Once the OS has been installed, **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements. + + + + +3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. +To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file. + + Run the terminal, and write + + .. code-block:: python + + cd /boot/ + +4. Open config.txt with GNU nano editor + + .. code-block:: python + + sudo nano config.txt + +5. At the end of the file write : + + .. code-block:: python + + gpio=8=op,dl + gpio=7=op,dl + +6. Press Ctrl +O to save the modifications and press enter +7. Press Ctrl +x to escap and return to the terminal +8. Close the terminal + + + +Virtual Environnement and packages +================================== + +All dependencies are specified in requirements.txt + +.. note:: + all instructions below should be typed in the terminal + +It is first necessary to ensure that the libatlas-base-dev library is installed: + +.. code-block:: python + + sudo apt-get install libatlas-base-dev + +We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory. + +Create the virtual environment: + +.. code-block:: python + + python3 -m venv ohmpy + +Activate it using the following command: + +.. code-block:: python + + source ohmpy/bin/activate + +Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies: + +.. code-block:: python + + pip install RPi.GPIO adafruit-blinka numpy adafruit-circuitpython-ads1x15 pandas + +Check that requirements are met using + +.. code-block:: python + + pip list + +You should run you code within the virtual environment +to leave the virtual environment simply type: + +.. code-block:: python + + deactivate + + +Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi) +======================================================================== + +If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it. + +1- Run the Thonny Python IDE software, Click on raspebrry acces **menu > programming> Thonny pythonIDE** + +2- Thonny's interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3)) + +.. figure:: thonny_first_interface.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +3-Click on **Run>select interpreter**, a new window opens click on interpret + +.. figure:: thonny_option.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +4-On the new open windows select **alternative Pyhton3 or virtual environnement** + +.. figure:: thonny_interpreter.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +5- New buttons appeared, selected **"locate another python executable "** + +6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**. + +7- In the **known interpreter** tab the path of the virtual environnementshould appear + +.. figure:: thonny_interpreter_folder.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +8- Close the window by clicking on **ok**. + +9- Close thonny to save modifications + + +Assembly of the measuring/current injection cards, and connection with the Raspberry Pi +***************************************************************************************** + +Electrical resistivity measurements board +========================================== + +a) Description +----------------------------- + +To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115 +is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The +input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. +Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test +circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. +In this test circuit, resistance R11 represents the soil resistance. +Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute +the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which +allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, +resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been +set at 50 ohms in order to ensure: +• a precise resistance, +• a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms. +To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) +is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ? +To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. +In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the +reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included +and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge +ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, +the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking +amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115. +Let's note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction +value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is +still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials +of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve +to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the +electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms. +A shortcut between Electrodes A and B will generate excessive currents, whose intensities depend on the type of battery used. +A lithium ion battery or automobile-type lead-acid battery can deliver a strong enough current to damage the board and, as such, +constitutes a potential hazard. We therefore recommend adding a 1.5-A fuse between the battery and resistor R9. + +.. note:: + Last update: + + 1- The board has been slightly modified, we have added a decoupling capacitor at the input of the Operational Amplifiers (AOP) channels, to ensure a good performance of the AOPs (100nF/ 50VDC). + + 2- On each input of the AOP signals, we have also added a 10 MOhms resistor, so that the inputs take the value of the ground when the system does not measure and thus limit the overheating of the AOP. + + 3- To make sure that the signal is not skimmed, we have added a power supply of 24V on the AOPs, these are the TRN3-1211 components. + + +.. figure:: schema_measurement_board1_02.png + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Measurement board updated from the version 1.01 presented in clement et al 2020 + +b) Implementation +-------------------------------- +The measurement board must be printed using the PCB file (Source file repository), with components soldered onto +it by following the steps described below and illustrated in the following figure : + +* Step no. 1: test divider bridge + For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code.. + + .. math:: + coeff po = (R1 + R2) / R1 + + .. math:: + coeff p1 = (R3 + R4) / R3 + + .. math:: + coeff p2 = (R7 + R6) / R7 + + .. math:: + coeff p3 = (R9 + R8) / R9 + + .. code-block:: python + :linenos: + :lineno-start: 31 + + """ + hardware parameters + """ + R_ref = 50 # reference resistance value in ohm + coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V + coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V + coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V + coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V + + The coefficient parameters can be adjusted in lines 31 to 35 of the ohmpi.py code. + + +* Step no. 2: installation of the 1-Kohm resistors with an accuracy of ± 0.1% (following figure-b). +* Step no. 3: installation of the 1.5-Kohm resistors with an accuracy of ± 0.1% (following figure-c). +* Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (following figure-d) +* Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value with ohmmeter and correct in the jason file (ohmpi_param.json),(following figure-e). +* Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction) (following figure-f). +* Step no. 7: installation of the 10-Mohm resistors +* Step no. 8: addition of the DC/DC converter (TRN3-1211) +* Step no. 9: adding 10nF capacitor and fuse (1.5A-littlefuse ref: 0253001.V) + +1-Kohm and 1.5-Kohm resistors apply to the divider bridge. If, for example, you prefer using a weaker +or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. +Once all the components have been soldered together, the measurement board can be connected to the Raspberry Pi and the +battery terminal, according to Figure 9. Between the battery and the TX+ terminal of the measurement board, remember to +place a fuse holder with a 1.5-A fuse for safety purposes. + +.. figure:: measurement_board1-02.jpg + :width: 800px + :align: center + :height: 600px + :alt: alternate text + :figclass: align-center + + Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers + +.. figure:: measurement_board-2.jpg + :width: 800px + :align: center + :height: 700px + :alt: alternate text + :figclass: align-center + + Measurement board installation with Raspberry Pi + +Current injection board +======================= + +To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. +In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This +injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay +module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts +of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open +contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected +to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse +the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by the GPIO 8 in the open position, +the positive battery pole is connected to electrode A and the negative pole to electrode B. When not energized, +they remain in the normally closed position. This set-up offers a simple and robust solution to inject current. + +.. figure:: current_board.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Wiring of the 4-channel relay module board for current injection management + + +Frist four electrodes resistivity mesurement +============================================ + + +Under construction describe the way vlide the first part of the instruction. +Electrical resistivity measurement on test circuit + + +Multiplexer implentation +************************* +The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement +by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands +of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of +the 32 electrodes stuck into the ground, all of which are connected to the data logger. + + +We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay +modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested +configuration enables making smaller multiplexers (8 or 16 electrodes only). On the other hand, if you prefer upping to 64 electrodes, +which is entirely possible, a GPIO channel multiplier will have to be used. +To prepare the multiplexer, the channels of the two relay boards must be connected according to the wiring diagram shown below. + +.. figure:: multiplexer_implementation.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Schematic diagram of the wiring of two 16-channel relay shields + + +For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly. +The length was adjusted so that the distance between the two points to be connected could be directly measured on the board once they had +been assembled one above the other, in adding an extra 3 cm. The wires at the ends need to be stripped and the end caps added. +As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below. + +Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels +for activating each relay (Fig. 12). However, we will be activating several relays with a single GPIO (to limit the number of GPIOs used on Raspberry Pi, +see Section 2.4). To execute this step, it will be necessary to follow the protocol presented in Figure. + + .. figure:: connection.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Connection to the 16-channel relay shield + +For the 16-channel relay shield no. 1, these steps must be followed: +* Position a test circuit with 10 horizontal and 10 vertical holes on the pins of the 16-channel relay shield board. +* Follow the diagram and solder the pins as shown in Fig. +* Lastly, solder 0.5-mm² wires 1 m in length to the test circuit. + +For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f). +This same operation must be repeated for the other three multiplexers as well. +The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers. + + ++-------------------------------+-------------------------------------------+---------------------+ +| |Relay shield n°1 |Relay Shield n°2 | +| +----------+----------+----------+----------+---------------------+ +| |Pin 1 |Pin 2-3 |Pin 4-7 |Pin 8-16 |Pin 1- 16 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer A |12 |16 |20 |21 |26 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer B |18 |23 |24 |25 |19 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer M |06 |13 |04 |17 |27 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer N |22 |10 |09 |11 |05 | ++-------------------------------+----------+----------+----------+----------+---------------------+ + + Connection of the GPIOs to each multiplexer + + +Electrode connection +************************* +At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used. +According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming +connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure. + +.. figure:: cable.jpg + :width: 800px + :align: center + :height: 300px + :alt: alternate text + :figclass: align-center + +the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B +must be connected to electrode no. 1 of MUX N, which in turn must be connected to electrode no. 1 of MUX M. Lastly, electrode no. 1 of MUX M is connected to the terminal block. +This operation must be repeated for all 32 electrodes. + +.. figure:: electrode_cable.jpg + :width: 800px + :align: center + :height: 800px + :alt: alternate text + :figclass: align-center + +Operating instruction +************************* + +Preliminary procedure (Only for the initial operation) +====================================================== +The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (https://osf.io/dzwb4/) +or at the following Gitlab repository address: https://gitlab.irstea.fr/reversaal/OhmPi. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme†file +is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing +the required packages and running the code. + + +Startup procedure +================== +As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply +(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, +the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +plugged into the hardware; the "ohmpi.py" source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now +hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance +are displayed on the screen. A measurement file is automatically created and named "measure.csv"; it will be placed in the same folder. + +Electrical resistivity measurement parameters description +========================================================== + +.. code-block:: python + :linenos: + :lineno-start: 27 + + """ + measurement parameters + """ + nb_electrodes = 32 # maximum number of electrodes on the resistivity meter + injection_duration = 0.5 # Current injection duration in second + nbr_meas= 1 # Number of times the quadripole sequence is repeated + sequence_delay= 30 # Delay in seconds between 2 sequences + stack= 1 # repetition of the current injection for each quadripole + +The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. + +complete list of componements +========================================================== + + diff --git a/sphinx/build/html/index.html b/sphinx/build/html/index.html index 79c8d4c37e9428b40ac486b98e710beef8e54df5..61da6cbd1dd547312affb2a83507264745833dc6 100644 --- a/sphinx/build/html/index.html +++ b/sphinx/build/html/index.html @@ -159,7 +159,7 @@ <dd class="field-odd"><p>open hardware resistivity-meter</p> </dd> <dt class="field-even">Date</dt> -<dd class="field-even"><p>Dec 11, 2020</p> +<dd class="field-even"><p>Dec 13, 2020</p> </dd> <dt class="field-odd">Authors</dt> <dd class="field-odd"><p><strong>Rémi CLEMENT, Nicolas FORQUET, Julien GANCE, Yannick FARGIER, Vivien DUBOIS, Hélène GUYARD</strong></p> diff --git a/sphinx/build/html/objects.inv b/sphinx/build/html/objects.inv index d668c6dd2f627af34451e599b4d5983963bc1a45..25f888c0d10c801af7cf56dd67c8d7fcd04a49e2 100644 Binary files a/sphinx/build/html/objects.inv and b/sphinx/build/html/objects.inv differ diff --git a/sphinx/build/html/page1.html b/sphinx/build/html/page1.html index c99c05c81611b842b56da126bf630137a0846f38..a1be2d787c1a8c1f4b9d5a400965e164e9d53e53 100644 --- a/sphinx/build/html/page1.html +++ b/sphinx/build/html/page1.html @@ -180,6 +180,12 @@ <div class="section" id="ohmpi-v-1-01-limited-to-32-electrodes"> <h1>OhmPi V 1.01 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-01-limited-to-32-electrodes" title="Permalink to this headline">¶</a></h1> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>This version corresponds to the version published in the Hardware X journal. +However, we have corrected the bugs that existed on this version and explained the missing mounting points in detail below +We invite you to refer to this document to assemble Ohmpi.</p> +</div> <div class="section" id="the-philosophy-of-ohmpi"> <h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this headline">¶</a></h2> <p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available @@ -459,7 +465,7 @@ place a fuse holder with a 1.5-A fuse for safety purposes.</p> <div class="section" id="current-injection-board"> <h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this headline">¶</a></h3> <p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. -In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts @@ -595,11 +601,11 @@ the required packages and running the code.</p> </div> <div class="section" id="startup-procedure"> <h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this headline">¶</a></h3> -<p>As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +<p>As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply (for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†-function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be plugged into the hardware; the “ohmpi.py†source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance are displayed on the screen. A measurement file is automatically created and named “measure.csvâ€; it will be placed in the same folder.</p> diff --git a/sphinx/build/html/page2.html b/sphinx/build/html/page2.html new file mode 100644 index 0000000000000000000000000000000000000000..77e054f38278d09331fc852c9333280771ddd192 --- /dev/null +++ b/sphinx/build/html/page2.html @@ -0,0 +1,700 @@ + + +<!DOCTYPE html> +<html class="writer-html5" lang="en" > +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>OhmPi V 1.02 (limited to 32 electrodes) — Ohmpi: open hardware resistivity-meter documentation</title> + + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + + + + + + + <!--[if lt IE 9]> + <script src="_static/js/html5shiv.min.js"></script> + <![endif]--> + + + <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> + <script src="_static/jquery.js"></script> + <script src="_static/underscore.js"></script> + <script src="_static/doctools.js"></script> + <script src="_static/language_data.js"></script> + <script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script> + + <script type="text/javascript" src="_static/js/theme.js"></script> + + + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + <link rel="prev" title="OhmPi V 1.01 (limited to 32 electrodes)" href="page1.html" /> +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="index.html" class="icon icon-home" alt="Documentation Home"> Ohmpi: + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="page0.html"><strong>OhmPi project</strong></a></li> +<li class="toctree-l1"><a class="reference internal" href="page1.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">OhmPi V 1.02 (limited to 32 electrodes)</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li> +<li class="toctree-l2"><a class="reference internal" href="#technical-data">Technical data</a></li> +<li class="toctree-l2"><a class="reference internal" href="#raspberry-pi-configuration">Raspberry Pi configuration</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#os-installation">OS installation</a></li> +<li class="toctree-l3"><a class="reference internal" href="#virtual-environnement-and-packages">Virtual Environnement and packages</a></li> +<li class="toctree-l3"><a class="reference internal" href="#activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi)</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurements-board">Electrical resistivity measurements board</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#a-description">a) Description</a></li> +<li class="toctree-l4"><a class="reference internal" href="#b-implementation">b) Implementation</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#current-injection-board">Current injection board</a></li> +<li class="toctree-l3"><a class="reference internal" href="#frist-four-electrodes-resistivity-mesurement">Frist four electrodes resistivity mesurement</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#multiplexer-implentation">Multiplexer implentation</a></li> +<li class="toctree-l2"><a class="reference internal" href="#electrode-connection">Electrode connection</a></li> +<li class="toctree-l2"><a class="reference internal" href="#operating-instruction">Operating instruction</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#preliminary-procedure-only-for-the-initial-operation">Preliminary procedure (Only for the initial operation)</a></li> +<li class="toctree-l3"><a class="reference internal" href="#startup-procedure">Startup procedure</a></li> +<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurement-parameters-description">Electrical resistivity measurement parameters description</a></li> +<li class="toctree-l3"><a class="reference internal" href="#complete-list-of-componements">complete list of componements</a></li> +</ul> +</li> +</ul> +</li> +</ul> + + + + </div> + + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="index.html">Ohmpi:</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="index.html" class="icon icon-home"></a> »</li> + + <li>OhmPi V 1.02 (limited to 32 electrodes)</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="_sources/page2.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="ohmpi-v-1-02-limited-to-32-electrodes"> +<h1>OhmPi V 1.02 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-02-limited-to-32-electrodes" title="Permalink to this headline">¶</a></h1> +<div class="section" id="the-philosophy-of-ohmpi"> +<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this headline">¶</a></h2> +<p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available +electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection, +but suitable for small laboratory experiments and small field time monitoring</p> +</div> +<div class="section" id="technical-data"> +<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this headline">¶</a></h2> +<table class="docutils align-default"> +<colgroup> +<col style="width: 50%" /> +<col style="width: 32%" /> +<col style="width: 18%" /> +</colgroup> +<tbody> +<tr class="row-odd"><td><p><strong>Parameter</strong></p></td> +<td><p><strong>Specifications</strong></p></td> +<td><p>Units</p></td> +</tr> +<tr class="row-even"><td><p>Electrodes</p></td> +<td><p>32</p></td> +<td></td> +</tr> +<tr class="row-odd"><td><p>Operating temperature</p></td> +<td><p>0 to 50</p></td> +<td><p>°c</p></td> +</tr> +<tr class="row-even"><td><p>Power consumption of CPU and +control system</p></td> +<td><p>18.5</p></td> +<td><p>W</p></td> +</tr> +<tr class="row-odd"><td><p>Voltage injection</p></td> +<td><p>12</p></td> +<td><p>V</p></td> +</tr> +<tr class="row-even"><td><p>Battery</p></td> +<td><p>12</p></td> +<td><p>V</p></td> +</tr> +<tr class="row-odd"><td><p>Current</p></td> +<td><p>0 to 50</p></td> +<td><p>mA</p></td> +</tr> +<tr class="row-even"><td><p>Min pulse duration</p></td> +<td><p>150</p></td> +<td><p>mS</p></td> +</tr> +<tr class="row-odd"><td><p>Input impedance</p></td> +<td><p>36</p></td> +<td><p>Mohm</p></td> +</tr> +<tr class="row-even"><td><p>Data storage</p></td> +<td><p>micro SD card</p></td> +<td></td> +</tr> +<tr class="row-odd"><td><p>Resolution</p></td> +<td><p>O.O1</p></td> +<td><p>ohm</p></td> +</tr> +</tbody> +</table> +</div> +<div class="section" id="raspberry-pi-configuration"> +<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this headline">¶</a></h2> +<div class="section" id="os-installation"> +<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this headline">¶</a></h3> +<p>The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). +For this step, the installation instructions are well described on the Raspberry website</p> +<ol class="arabic simple"> +<li><p>Watch the vidéo “how to set up your raspberry Pi†(<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p></li> +<li><p>The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p></li> +</ol> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/raspbian_version.jpg"><img alt="alternate text" src="_images/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a> +</div> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Once the OS has been installed, <strong>1-wire, spi and GPIO remote option</strong> must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p> +</div> +<p>3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. +To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.</p> +<blockquote> +<div><p>Run the terminal, and write</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="4"> +<li><p>Open config.txt with GNU nano editor</p></li> +</ol> +<blockquote> +<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">nano</span> <span class="n">config</span><span class="o">.</span><span class="n">txt</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="5"> +<li><p>At the end of the file write :</p></li> +</ol> +<blockquote> +<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gpio</span><span class="o">=</span><span class="mi">8</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span> +<span class="n">gpio</span><span class="o">=</span><span class="mi">7</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span> +</pre></div> +</div> +</div></blockquote> +<ol class="arabic simple" start="6"> +<li><p>Press Ctrl +O to save the modifications and press enter</p></li> +<li><p>Press Ctrl +x to escap and return to the terminal</p></li> +<li><p>Close the terminal</p></li> +</ol> +</div> +<div class="section" id="virtual-environnement-and-packages"> +<h3>Virtual Environnement and packages<a class="headerlink" href="#virtual-environnement-and-packages" title="Permalink to this headline">¶</a></h3> +<p>All dependencies are specified in requirements.txt</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>all instructions below should be typed in the terminal</p> +</div> +<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span> +</pre></div> +</div> +<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p> +<p>Create the virtual environment:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span> +</pre></div> +</div> +<p>Activate it using the following command:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span> +</pre></div> +</div> +<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">pandas</span> +</pre></div> +</div> +<p>Check that requirements are met using</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span> +</pre></div> +</div> +<p>You should run you code within the virtual environment +to leave the virtual environment simply type:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">deactivate</span> +</pre></div> +</div> +</div> +<div class="section" id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi"> +<h3>Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi)<a class="headerlink" href="#activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi" title="Permalink to this headline">¶</a></h3> +<p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p> +<p>1- Run the Thonny Python IDE software, Click on raspebrry acces <strong>menu > programming> Thonny pythonIDE</strong></p> +<p>2- Thonny’s interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3))</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_first_interface.jpg"><img alt="alternate text" src="_images/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>3-Click on <strong>Run>select interpreter</strong>, a new window opens click on interpret</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_option.jpg"><img alt="alternate text" src="_images/thonny_option.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>4-On the new open windows select <strong>alternative Pyhton3 or virtual environnement</strong></p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_interpreter.jpg"><img alt="alternate text" src="_images/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>5- New buttons appeared, selected <strong>“locate another python executable “</strong></p> +<p>6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created <strong>/home/pi/ohmpi/bin/python3</strong>.</p> +<p>7- In the <strong>known interpreter</strong> tab the path of the virtual environnementshould appear</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/thonny_interpreter_folder.jpg"><img alt="alternate text" src="_images/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a> +</div> +<p>8- Close the window by clicking on <strong>ok</strong>.</p> +<p>9- Close thonny to save modifications</p> +</div> +</div> +<div class="section" id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi"> +<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Permalink to this headline">¶</a></h2> +<div class="section" id="electrical-resistivity-measurements-board"> +<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this headline">¶</a></h3> +<div class="section" id="a-description"> +<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this headline">¶</a></h4> +<p>To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115 +is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The +input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. +Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test +circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. +In this test circuit, resistance R11 represents the soil resistance. +Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute +the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which +allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, +resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been +set at 50 ohms in order to ensure: +• a precise resistance, +• a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms. +To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) +is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ? +To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. +In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the +reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included +and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge +ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, +the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking +amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115. +Let’s note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction +value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is +still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials +of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve +to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the +electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms. +A shortcut between Electrodes A and B will generate excessive currents, whose intensities depend on the type of battery used. +A lithium ion battery or automobile-type lead-acid battery can deliver a strong enough current to damage the board and, as such, +constitutes a potential hazard. We therefore recommend adding a 1.5-A fuse between the battery and resistor R9.</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Last update:</p> +<p>1- The board has been slightly modified, we have added a decoupling capacitor at the input of the Operational Amplifiers (AOP) channels, to ensure a good performance of the AOPs (100nF/ 50VDC).</p> +<p>2- On each input of the AOP signals, we have also added a 10 MOhms resistor, so that the inputs take the value of the ground when the system does not measure and thus limit the overheating of the AOP.</p> +<p>3- To make sure that the signal is not skimmed, we have added a power supply of 24V on the AOPs, these are the TRN3-1211 components.</p> +</div> +<div class="align-center figure" id="id1"> +<a class="reference internal image-reference" href="_images/schema_measurement_board1_02.png"><img alt="alternate text" src="_images/schema_measurement_board1_02.png" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Measurement board updated from the version 1.01 presented in clement et al 2020</span><a class="headerlink" href="#id1" title="Permalink to this image">¶</a></p> +</div> +</div> +<div class="section" id="b-implementation"> +<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this headline">¶</a></h4> +<p>The measurement board must be printed using the PCB file (Source file repository), with components soldered onto +it by following the steps described below and illustrated in the following figure :</p> +<ul> +<li><dl> +<dt>Step no. 1: test divider bridge</dt><dd><p>For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..</p> +<blockquote> +<div><div class="math notranslate nohighlight"> +\[coeff po = (R1 + R2) / R1\]</div> +<div class="math notranslate nohighlight"> +\[coeff p1 = (R3 + R4) / R3\]</div> +<div class="math notranslate nohighlight"> +\[coeff p2 = (R7 + R6) / R7\]</div> +<div class="math notranslate nohighlight"> +\[coeff p3 = (R9 + R8) / R9\]</div> +<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>31 +32 +33 +34 +35 +36 +37 +38</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="sd">"""</span> +<span class="sd"> hardware parameters</span> +<span class="sd"> """</span> + <span class="n">R_ref</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># reference resistance value in ohm</span> + <span class="n">coef_p0</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P0, measurement in V/V</span> + <span class="n">coef_p1</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P1, measurement in V/V</span> + <span class="n">coef_p2</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P2, measurement in V/V</span> + <span class="n">coef_p3</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P3, measurement in V/V</span> +</pre></div> +</td></tr></table></div> +<p>The coefficient parameters can be adjusted in lines 31 to 35 of the ohmpi.py code.</p> +</div></blockquote> +</dd> +</dl> +</li> +<li><p>Step no. 2: installation of the 1-Kohm resistors with an accuracy of ± 0.1% (following figure-b).</p></li> +<li><p>Step no. 3: installation of the 1.5-Kohm resistors with an accuracy of ± 0.1% (following figure-c).</p></li> +<li><p>Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (following figure-d)</p></li> +<li><p>Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value with ohmmeter and correct in the jason file (ohmpi_param.json),(following figure-e).</p></li> +<li><p>Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction) (following figure-f).</p></li> +<li><p>Step no. 7: installation of the 10-Mohm resistors</p></li> +<li><p>Step no. 8: addition of the DC/DC converter (TRN3-1211)</p></li> +<li><p>Step no. 9: adding 10nF capacitor and fuse (1.5A-littlefuse ref: 0253001.V)</p></li> +</ul> +<p>1-Kohm and 1.5-Kohm resistors apply to the divider bridge. If, for example, you prefer using a weaker +or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. +Once all the components have been soldered together, the measurement board can be connected to the Raspberry Pi and the +battery terminal, according to Figure 9. Between the battery and the TX+ terminal of the measurement board, remember to +place a fuse holder with a 1.5-A fuse for safety purposes.</p> +<div class="align-center figure" id="id2"> +<a class="reference internal image-reference" href="_images/measurement_board1-02.jpg"><img alt="alternate text" src="_images/measurement_board1-02.jpg" style="width: 800px; height: 600px;" /></a> +<p class="caption"><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image">¶</a></p> +</div> +<div class="align-center figure" id="id3"> +<a class="reference internal image-reference" href="_images/measurement_board-2.jpg"><img alt="alternate text" src="_images/measurement_board-2.jpg" style="width: 800px; height: 700px;" /></a> +<p class="caption"><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image">¶</a></p> +</div> +</div> +</div> +<div class="section" id="current-injection-board"> +<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this headline">¶</a></h3> +<p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. +In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This +injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay +module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts +of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open +contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected +to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse +the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by the GPIO 8 in the open position, +the positive battery pole is connected to electrode A and the negative pole to electrode B. When not energized, +they remain in the normally closed position. This set-up offers a simple and robust solution to inject current.</p> +<div class="align-center figure" id="id4"> +<a class="reference internal image-reference" href="_images/current_board.jpg"><img alt="alternate text" src="_images/current_board.jpg" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image">¶</a></p> +</div> +</div> +<div class="section" id="frist-four-electrodes-resistivity-mesurement"> +<h3>Frist four electrodes resistivity mesurement<a class="headerlink" href="#frist-four-electrodes-resistivity-mesurement" title="Permalink to this headline">¶</a></h3> +<p>Under construction describe the way vlide the first part of the instruction. +Electrical resistivity measurement on test circuit</p> +</div> +</div> +<div class="section" id="multiplexer-implentation"> +<h2>Multiplexer implentation<a class="headerlink" href="#multiplexer-implentation" title="Permalink to this headline">¶</a></h2> +<p>The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement +by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands +of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of +the 32 electrodes stuck into the ground, all of which are connected to the data logger.</p> +<p>We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay +modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested +configuration enables making smaller multiplexers (8 or 16 electrodes only). On the other hand, if you prefer upping to 64 electrodes, +which is entirely possible, a GPIO channel multiplier will have to be used. +To prepare the multiplexer, the channels of the two relay boards must be connected according to the wiring diagram shown below.</p> +<div class="align-center figure" id="id5"> +<a class="reference internal image-reference" href="_images/multiplexer_implementation.jpg"><img alt="alternate text" src="_images/multiplexer_implementation.jpg" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id5" title="Permalink to this image">¶</a></p> +</div> +<p>For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly. +The length was adjusted so that the distance between the two points to be connected could be directly measured on the board once they had +been assembled one above the other, in adding an extra 3 cm. The wires at the ends need to be stripped and the end caps added. +As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.</p> +<p>Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels +for activating each relay (Fig. 12). However, we will be activating several relays with a single GPIO (to limit the number of GPIOs used on Raspberry Pi, +see Section 2.4). To execute this step, it will be necessary to follow the protocol presented in Figure.</p> +<blockquote> +<div><div class="align-center figure" id="id6"> +<a class="reference internal image-reference" href="_images/connection.jpg"><img alt="alternate text" src="_images/connection.jpg" style="width: 800px; height: 400px;" /></a> +<p class="caption"><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id6" title="Permalink to this image">¶</a></p> +</div> +</div></blockquote> +<p>For the 16-channel relay shield no. 1, these steps must be followed: +* Position a test circuit with 10 horizontal and 10 vertical holes on the pins of the 16-channel relay shield board. +* Follow the diagram and solder the pins as shown in Fig. +* Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.</p> +<p>For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f). +This same operation must be repeated for the other three multiplexers as well. +The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.</p> +<table class="docutils align-default"> +<colgroup> +<col style="width: 34%" /> +<col style="width: 11%" /> +<col style="width: 11%" /> +<col style="width: 11%" /> +<col style="width: 11%" /> +<col style="width: 23%" /> +</colgroup> +<tbody> +<tr class="row-odd"><td rowspan="2"></td> +<td colspan="4"><p>Relay shield n°1</p></td> +<td><p>Relay Shield n°2</p></td> +</tr> +<tr class="row-even"><td><p>Pin 1</p></td> +<td><p>Pin 2-3</p></td> +<td><p>Pin 4-7</p></td> +<td><p>Pin 8-16</p></td> +<td><p>Pin 1- 16</p></td> +</tr> +<tr class="row-odd"><td><p>Multiplexer A</p></td> +<td><p>12</p></td> +<td><p>16</p></td> +<td><p>20</p></td> +<td><p>21</p></td> +<td><p>26</p></td> +</tr> +<tr class="row-even"><td><p>Multiplexer B</p></td> +<td><p>18</p></td> +<td><p>23</p></td> +<td><p>24</p></td> +<td><p>25</p></td> +<td><p>19</p></td> +</tr> +<tr class="row-odd"><td><p>Multiplexer M</p></td> +<td><p>06</p></td> +<td><p>13</p></td> +<td><p>04</p></td> +<td><p>17</p></td> +<td><p>27</p></td> +</tr> +<tr class="row-even"><td><p>Multiplexer N</p></td> +<td><p>22</p></td> +<td><p>10</p></td> +<td><p>09</p></td> +<td><p>11</p></td> +<td><p>05</p></td> +</tr> +</tbody> +</table> +<blockquote> +<div><p>Connection of the GPIOs to each multiplexer</p> +</div></blockquote> +</div> +<div class="section" id="electrode-connection"> +<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this headline">¶</a></h2> +<p>At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used. +According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming +connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure.</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/cable.jpg"><img alt="alternate text" src="_images/cable.jpg" style="width: 800px; height: 300px;" /></a> +</div> +<p>the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B +must be connected to electrode no. 1 of MUX N, which in turn must be connected to electrode no. 1 of MUX M. Lastly, electrode no. 1 of MUX M is connected to the terminal block. +This operation must be repeated for all 32 electrodes.</p> +<div class="align-center figure"> +<a class="reference internal image-reference" href="_images/electrode_cable.jpg"><img alt="alternate text" src="_images/electrode_cable.jpg" style="width: 800px; height: 800px;" /></a> +</div> +</div> +<div class="section" id="operating-instruction"> +<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this headline">¶</a></h2> +<div class="section" id="preliminary-procedure-only-for-the-initial-operation"> +<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Permalink to this headline">¶</a></h3> +<p>The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (<a class="reference external" href="https://osf.io/dzwb4/">https://osf.io/dzwb4/</a>) +or at the following Gitlab repository address: <a class="reference external" href="https://gitlab.irstea.fr/reversaal/OhmPi">https://gitlab.irstea.fr/reversaal/OhmPi</a>. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme†file +is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing +the required packages and running the code.</p> +</div> +<div class="section" id="startup-procedure"> +<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this headline">¶</a></h3> +<p>As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply +(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, +the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +plugged into the hardware; the “ohmpi.py†source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now +hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance +are displayed on the screen. A measurement file is automatically created and named “measure.csvâ€; it will be placed in the same folder.</p> +</div> +<div class="section" id="electrical-resistivity-measurement-parameters-description"> +<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>27 +28 +29 +30 +31 +32 +33 +34</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="sd">"""</span> +<span class="sd"> measurement parameters</span> +<span class="sd"> """</span> + <span class="n">nb_electrodes</span> <span class="o">=</span> <span class="mi">32</span> <span class="c1"># maximum number of electrodes on the resistivity meter</span> + <span class="n">injection_duration</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1"># Current injection duration in second</span> + <span class="n">nbr_meas</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># Number of times the quadripole sequence is repeated</span> + <span class="n">sequence_delay</span><span class="o">=</span> <span class="mi">30</span> <span class="c1"># Delay in seconds between 2 sequences</span> + <span class="n">stack</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># repetition of the current injection for each quadripole</span> +</pre></div> +</td></tr></table></div> +<p>The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code.</p> +</div> +<div class="section" id="complete-list-of-componements"> +<h3>complete list of componements<a class="headerlink" href="#complete-list-of-componements" title="Permalink to this headline">¶</a></h3> +</div> +</div> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + + <a href="page1.html" class="btn btn-neutral float-left" title="OhmPi V 1.01 (limited to 32 electrodes)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + + © Copyright 2020, INRAE, Rémi CLEMENT + + </p> + </div> + + + + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a + + <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> + + provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + + + + + + +</body> +</html> \ No newline at end of file diff --git a/sphinx/build/html/searchindex.js b/sphinx/build/html/searchindex.js index 5adf59f14428ec09015e6564f3776b5fb4d70535..c670cfed350cc4649f96ae9a64c46d6c23c441c8 100644 --- a/sphinx/build/html/searchindex.js +++ b/sphinx/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","page0","page1"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","page0.rst","page1.rst"],objects:{},objnames:{},objtypes:{},terms:{"400px":[],"800px":[],"ao\u00fbt":1,"case":2,"cr\u00e9er":[],"d\u00e9mo":[],"esp\u00e8r":[],"final":2,"function":[1,2],"h\u00e9l\u00e8ne":[0,1],"install\u00e9":[],"justifi\u00e9":[],"mm\u00b2":2,"nec\u00e9ssair":[],"new":2,"orl\u00e9an":1,"pr\u00e9sent":[],"pr\u00e9sentat":[],"premi\u00e8r":[],"r\u00e9mi":[0,1],"r\u00e9sistanc":[],"return":2,"switch":2,"universit\u00e9":1,"vid\u00e9o":2,ADS:2,For:2,IDE:[],IGE:1,Its:2,The:0,These:2,With:2,abmn:2,abov:2,acc:2,access:2,accord:2,accur:2,accuraci:2,acid:2,activ:[],actual:2,adafruit:2,adapt:2,adc:2,added:2,adding:2,addit:2,address:2,adjust:2,administr:[],ads1115:2,ads115:2,ads1x15:2,after:2,align:[],all:2,allow:[1,2],alp:1,also:2,alt:[],altern:2,amplifi:2,analog:2,ani:2,anoth:2,appear:2,appli:2,apt:2,arrai:2,articl:[],assembl:0,assist:2,associ:1,attent:2,attribut:2,aug:[],author:[0,1,2],automat:[1,2],automobil:2,avail:2,avon:[],bank:2,barbeau:[],base:2,basic:1,batteri:2,been:2,befor:2,behavior:2,being:2,below:2,between:2,bin:2,bit:2,black:2,blinka:2,block:2,blue:2,bluetext:[],board:[],bodytext:[],boot:2,both:2,bridg:2,button:2,c_1:[],c_2:[],cabl:2,calcul:2,calibr:2,call:1,can:2,cap:2,capac:2,caption:[],card:0,carri:2,caus:2,ceci:[],cedex:1,cela:[],center:[],chacun:[],channel:2,characterist:2,charg:2,check:2,chosen:2,christoph:[],circuit:2,circuitpython:2,circul:2,clean:2,clement:[0,1],click:2,close:2,code:2,coef_p0:2,coef_p1:2,coef_p2:2,coef_p3:2,coeff:2,coeff_:[],coeff_p0:[],coeff_p1:[],coeff_p3:[],coeff_p_:[],coeffici:2,cokela:[],com:2,command:2,commerci:2,common:2,commun:1,complet:2,compon:2,comput:2,conduct:2,config:2,configur:0,connect:0,connector:2,consequ:2,consist:2,constitut:2,construct:2,consult:[],consumpt:2,contact:2,contain:2,content:0,control:2,convers:2,convert:2,correct:2,corrig:[],cos:[],cost:1,could:2,cpu:2,creat:2,creation:1,csv:2,ctrl:2,current:[0,1],damag:2,dan:[],daniel:[],data:0,date:[0,1],deactiv:2,dec:0,decid:2,delai:2,deliv:2,demo:[],depend:2,des:[],describ:2,design:2,despit:2,dev:2,develop:[0,1,2],developp:[],diagram:2,differ:2,digit:2,din:2,direct:2,directli:2,directori:2,disconnect:2,displai:2,distanc:2,disturb:2,divid:2,diviseur:[],dkfjshkdfh:[],doc:[],document:1,done:2,download:2,dual:2,duboi:[0,1],durat:2,dure:2,dzwb4:2,each:2,editor:2,eiffel:1,either:2,electr:[],electrod:[0,1],electron:2,enabl:2,end:2,energ:2,enough:2,ensur:2,enter:2,entir:2,environ:2,environn:[],environnementshould:2,equal:2,equival:2,eric:[],ert:2,escap:2,est:[],estim:2,everyon:1,exampl:2,excess:2,execut:2,experi:[1,2],extra:2,failur:2,fair:[],fargier:[0,1],featur:[],femal:2,fewer:2,field:2,fig:2,figclass:[],figur:2,file:2,find:2,first:2,flexibl:1,florsch:2,flow:2,folder:2,follow:2,fonctionn:[],formul:[],forquet:[0,1],four:[],framework:2,franc:1,from:2,full:2,fulli:1,fuse:2,gain:2,ganc:[0,1],gather:2,gener:[0,2],ger:1,get:[1,2],gitlab:2,gnu:2,gpio:2,grenobl:1,ground:2,gui:2,guidelin:0,gustav:1,guyard:[0,1],had:2,hand:2,handl:2,hardwar:[1,2],hardwareresist:[],has:2,have:2,hazard:2,header:2,hear:2,height:[],help:[],high:2,holder:2,hole:2,home:2,horizont:2,hous:2,how:2,howev:2,http:2,ifsttar:1,illustr:2,imag:[],imped:2,implement:[],implent:0,inastal:[],includ:2,incom:2,increas:2,inde:2,index:[],inform:[],inject:[0,1],injection_dur:2,input:2,inra:1,insert:2,insid:2,instal:[],instead:2,instruct:0,instrument:1,intens:2,interfac:2,interpret:2,introduc:2,introduct:0,introduir:[],invit:[],involv:1,ion:2,iri:1,irstea:2,jpg:[],juillet:1,julien:[0,1],justifi:[],keyboard:2,kjsdfhksdgfjksdf:[],known:2,kohm:2,laboratori:2,lastli:2,latest:2,lead:2,leav:2,length:2,les:[],less:2,let:2,libatla:2,librari:2,lie:2,lien:[],like:[],limit:0,line:2,lineno:[],list:2,lithium:2,lm358n:2,locat:2,logger:2,logo:[],logo_inra:[],logo_univ_gustav:[],low:[1,2],lying:2,lyon:1,made:2,mai:2,main:2,make:2,manag:2,manual:2,manuscript:2,massembl:[],master:2,mathrm:[],matur:0,maxdepth:[],maximum:2,measur:[0,1],mechan:2,meet:2,mega:2,menu:2,met:2,meter:[1,2],meterfeatur:1,micro:2,mimic:2,min:2,model:2,modif:2,modifi:2,modul:2,mohm:2,monitor:2,moreov:2,moscardi:[],mount:2,mous:2,multi:2,multiplex:[0,1],multipli:2,must:2,mux:2,n_k:[],name:2,nano:2,nb_electrod:2,nbr_mea:2,necessari:2,need:2,neg:2,next:2,nicola:[0,1],noob:2,normal:2,note:2,notr:[],nou:[],nov:[],now:2,number:2,numer:2,numpi:2,obtain:2,offcial:0,offer:2,officiel:[],offset:[],ohm:2,ohmmet:2,ohmpi:[],onc:2,one:2,onli:[],onto:2,open:[1,2],oper:0,optim:2,option:2,order:2,org:[],osf:2,other:2,our:2,out:2,output:2,ouvr:[],packag:[],page0:[],page1:[],page:[],pai:2,panda:2,paramet:[],parent:[],parl:[],part:2,parten:1,path:2,pcb:2,per:2,perform:[1,2],permut:2,peu:[],philosophi:[0,1],pin1:[],pin:2,pip:2,pitch:2,place:2,pleas:2,plu:[],plug:2,png:[],point:2,polar:2,pole:2,pond:[],posit:2,possibl:2,potenti:2,pour:[],power:2,practic:2,pradal:[],precis:2,prefer:2,prepar:2,present:[1,2],press:2,previous:2,print:2,procedur:[],produc:2,program:2,progress:[0,1],project:0,propos:2,protocol:2,provid:[1,2],puls:2,purpos:2,pyhton3:2,python3:2,python:[],pythonid:2,quadripol:2,quadrupol:2,que:[],r10:2,r11:2,r12:2,r_ref:2,rail:2,rang:2,rapberri:[],raspberri:0,raspberrypi:[],raspbian:2,raspbian_vers:[],raspebrri:2,readm:2,recommend:2,red:[],reduct:2,refer:2,relai:2,relat:[],releas:0,remain:2,rememb:2,remot:2,repeat:2,repetit:2,repositori:2,repres:2,requir:2,research:0,resist:[0,1],resistor:2,resolut:2,respect:2,result:2,revers:2,reversa:[1,2],robust:[1,2],role:2,root:2,rpi:2,rro:1,run:2,s_k:[],safeti:2,same:2,save:2,scale:1,schemat:2,scienc:2,scientif:1,screen:2,screw:2,search:[],second:2,section:2,see:2,select:2,sequenc:2,sequence_delai:2,seri:2,serv:2,set:2,setup:2,sever:2,shield:2,shortcut:2,should:2,show:2,shown:2,signal:2,simpl:2,simpli:2,simultan:2,singl:2,site:[],slope:2,small:[1,2],smaller:2,softwar:2,soil:2,solder:2,solut:2,some:[0,2],sound:2,sourc:[1,2],specif:2,specifi:2,sphinx:[],spi:2,stabl:2,stack:2,stainless:2,start:2,statu:[0,1],steel:2,step:2,still:2,storag:2,strip:2,strong:2,stronger:2,strongli:2,stuck:2,studi:2,style:[],subject:2,sudo:2,suffici:2,suggest:2,suitabl:2,sum:2,sum_:[],suppli:2,sur:[],sure:2,surfac:1,system:2,tab:2,tabl:2,tape:[],target:0,task:2,technic:0,temperatur:2,ten:2,termin:2,test:2,tester:[],text:[],textcolor:[],than:2,thei:2,therefor:2,thi:[1,2],thoma:[],thonni:[],thousand:2,three:2,through:2,thu:2,time:2,toctre:[],togeth:2,tool:1,total:2,tourn:[],track:2,turn:2,tutori:0,two:2,txt:2,type:2,typic:2,under:2,underconstruct:[],unexpectedli:2,unit:2,univ:1,unzip:2,updat:1,upping:2,use:2,used:2,user:[0,2],using:2,usr:2,valeur:[],valu:2,variou:2,venv:2,version:2,vertic:2,via:2,villeurbann:1,virtual:[],vise:[],vivien:[0,1],vlide:2,voi:[],voici:[],voltag:2,voltmet:2,vou:[],wai:2,watch:2,weaker:2,websit:2,welcom:1,well:2,were:2,when:2,where:2,which:2,whose:2,width:[],willing:1,window:2,wire:2,within:2,without:2,wjwzhv1v3pk:2,would:2,write:2,www:2,x_n:[],yannick:[0,1],you:2,your:2,youtub:2},titles:["OHMPI: Open source and open hardware resitivity-meter","<strong>OhmPi project</strong>","OhmPi V 1.01 (limited to 32 electrodes)"],titleterms:{IDE:2,The:2,activ:2,assembl:2,bienvenu:[],board:2,card:2,center:0,cett:[],configur:2,connect:2,construct:[],current:2,data:2,descript:2,developp:[],document:0,electr:2,electrod:2,environn:2,formul:[],four:2,frist:2,hardwar:0,imag:[],implement:2,implent:2,inastal:[],indic:[],initi:2,inject:2,instal:2,instruct:2,introduct:1,lien:[],limit:2,massembl:[],measur:2,mesur:2,meter:0,modif:[],multiplex:2,ohmpi:[0,1,2],onli:2,open:0,openalea:[],oper:2,packag:2,page:[],paramet:2,philosophi:2,preliminari:2,procedur:2,project:1,python:2,rapberri:2,raspberri:2,resist:2,resit:0,run:[],second:[],sourc:0,startup:2,step:[],summari:0,sur:[],tabl:[],technic:2,text:[],thonni:2,virtual:2,welcom:[]}}) \ No newline at end of file +Search.setIndex({docnames:["index","page0","page1","page2"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","page0.rst","page1.rst","page2.rst"],objects:{},objnames:{},objtypes:{},terms:{"100nf":3,"10nf":3,"24v":3,"400px":[],"50vdc":3,"800px":[],"ao\u00fbt":1,"case":[2,3],"cr\u00e9er":[],"d\u00e9mo":[],"esp\u00e8r":[],"final":[2,3],"function":[1,2,3],"h\u00e9l\u00e8ne":[0,1],"install\u00e9":[],"justifi\u00e9":[],"mm\u00b2":[2,3],"nec\u00e9ssair":[],"new":[2,3],"orl\u00e9an":1,"pr\u00e9sent":[],"pr\u00e9sentat":[],"premi\u00e8r":[],"r\u00e9mi":[0,1],"r\u00e9sistanc":[],"return":[2,3],"switch":[2,3],"universit\u00e9":1,"vid\u00e9o":[2,3],ADS:[2,3],For:[2,3],IDE:[],IGE:1,Its:[2,3],The:0,These:[2,3],With:[2,3],abmn:[2,3],abov:[2,3],acc:[2,3],access:[2,3],accord:[2,3],accur:[2,3],accuraci:[2,3],acid:[2,3],activ:[],actual:[2,3],adafruit:[2,3],adapt:[2,3],adc:[2,3],added:[2,3],adding:[2,3],addit:[2,3],address:[2,3],adjust:[2,3],administr:[],ads1115:[2,3],ads115:[2,3],ads1x15:[2,3],after:[2,3],align:[],all:[2,3],allow:[1,2,3],alp:1,also:[2,3],alt:[],altern:[2,3],amplifi:[2,3],analog:[2,3],ani:[2,3],anoth:[2,3],aop:3,appear:[2,3],appli:[2,3],apt:[2,3],arrai:[2,3],articl:[],assembl:0,assist:[2,3],associ:1,attent:[2,3],attribut:[2,3],aug:[],author:[0,1,2,3],automat:[1,2,3],automobil:[2,3],avail:[2,3],avon:[],bank:[2,3],barbeau:[],base:[2,3],basic:1,batteri:[2,3],been:[2,3],befor:[2,3],behavior:[2,3],being:[2,3],below:[2,3],between:[2,3],bin:[2,3],bit:[2,3],black:[2,3],blinka:[2,3],block:[2,3],blue:[2,3],bluetext:[],board:[],bodytext:[],boot:[2,3],both:[2,3],bridg:[2,3],bug:2,button:[2,3],c_1:[],c_2:[],cabl:[2,3],calcul:[2,3],calibr:[2,3],call:1,can:[2,3],cap:[2,3],capac:[2,3],capacitor:3,caption:[],card:0,carri:[2,3],caus:[2,3],ceci:[],cedex:1,cela:[],center:[],chacun:[],channel:[2,3],characterist:[2,3],charg:[2,3],check:[2,3],chosen:[2,3],christoph:[],circuit:[2,3],circuitpython:[2,3],circul:[2,3],clean:[2,3],clement:[0,1,3],click:[2,3],close:[2,3],code:[2,3],coef_p0:[2,3],coef_p1:[2,3],coef_p2:[2,3],coef_p3:[2,3],coeff:[2,3],coeff_:[],coeff_p0:[],coeff_p1:[],coeff_p3:[],coeff_p_:[],coeffici:[2,3],cokela:[],com:[2,3],command:[2,3],commerci:[2,3],common:[2,3],commun:1,complet:2,compon:2,comput:[2,3],conduct:[2,3],config:[2,3],configur:0,connect:0,connector:[2,3],consequ:[2,3],consist:[2,3],constitut:[2,3],construct:[2,3],consult:[],consumpt:[2,3],contact:[2,3],contain:[2,3],content:0,control:[2,3],convers:[2,3],convert:[2,3],correct:[2,3],correspond:2,corrig:[],cos:[],cost:1,could:[2,3],cpu:[2,3],creat:[2,3],creation:1,csv:[2,3],ctrl:[2,3],current:[0,1],damag:[2,3],dan:[],daniel:[],data:0,date:[0,1],deactiv:[2,3],dec:0,decid:[2,3],decoupl:3,delai:[2,3],deliv:[2,3],demo:[],depend:[2,3],des:[],describ:[2,3],design:[2,3],despit:[2,3],detail:2,dev:[2,3],develop:[0,1,2,3],developp:[],diagram:[2,3],differ:[2,3],digit:[2,3],din:[2,3],direct:[2,3],directli:[2,3],directori:[2,3],disconnect:[2,3],displai:[2,3],distanc:[2,3],disturb:[2,3],divid:[2,3],diviseur:[],dkfjshkdfh:[],doc:[],document:[1,2],doe:3,done:[2,3],download:[2,3],dual:[2,3],duboi:[0,1],durat:[2,3],dure:[2,3],dzwb4:[2,3],each:[2,3],editor:[2,3],eiffel:1,either:[2,3],electr:[],electrod:[0,1],electron:[2,3],enabl:[2,3],end:[2,3],energ:[2,3],enough:[2,3],ensur:[2,3],enter:[2,3],entir:[2,3],environ:[2,3],environn:[],environnementshould:[2,3],equal:[2,3],equival:[2,3],eric:[],ert:[2,3],escap:[2,3],est:[],estim:[2,3],everyon:1,exampl:[2,3],excess:[2,3],execut:[2,3],exist:2,experi:[1,2,3],explain:2,extra:[2,3],failur:[2,3],fair:[],fargier:[0,1],featur:[],femal:[2,3],fewer:[2,3],field:[2,3],fig:[2,3],figclass:[],figur:[2,3],file:[2,3],find:[2,3],first:[2,3],flexibl:1,florsch:[2,3],flow:[2,3],folder:[2,3],follow:[2,3],fonctionn:[],formul:[],forquet:[0,1],four:[],framework:[2,3],franc:1,from:[2,3],full:[2,3],fulli:1,fuse:[2,3],gain:[2,3],ganc:[0,1],gather:[2,3],gener:[0,2,3],ger:1,get:[1,2,3],gitlab:[2,3],gnu:[2,3],good:3,gpio:[2,3],grenobl:1,ground:[2,3],gui:[2,3],guidelin:0,gustav:1,guyard:[0,1],had:[2,3],hand:[2,3],handl:[2,3],hardwar:[1,2,3],hardwareresist:[],has:[2,3],have:[2,3],hazard:[2,3],header:[2,3],hear:[2,3],height:[],help:[],high:[2,3],holder:[2,3],hole:[2,3],home:[2,3],horizont:[2,3],hous:[2,3],how:[2,3],howev:[2,3],http:[2,3],ifsttar:1,illustr:[2,3],imag:[],imped:[2,3],implement:[],implent:0,inastal:[],includ:[2,3],incom:[2,3],increas:[2,3],inde:[2,3],index:[],inform:[],inject:[0,1],injection_dur:[2,3],input:[2,3],inra:1,insert:[2,3],insid:[2,3],instal:[],instead:[2,3],instruct:0,instrument:1,intens:[2,3],interfac:[2,3],interpret:[2,3],introduc:[2,3],introduct:0,introduir:[],invit:2,involv:1,ion:[2,3],iri:1,irstea:[2,3],jason:3,journal:2,jpg:[],json:3,juillet:1,julien:[0,1],justifi:[],keyboard:[2,3],kjsdfhksdgfjksdf:[],known:[2,3],kohm:[2,3],laboratori:[2,3],last:3,lastli:[2,3],latest:[2,3],lead:[2,3],leav:[2,3],length:[2,3],les:[],less:[2,3],let:[2,3],libatla:[2,3],librari:[2,3],lie:[2,3],lien:[],like:[],limit:0,line:[2,3],lineno:[],list:2,lithium:[2,3],littlefus:3,lm358n:[2,3],locat:[2,3],logger:[2,3],logo:[],logo_inra:[],logo_univ_gustav:[],low:[1,2,3],lying:[2,3],lyon:1,made:[2,3],mai:[2,3],main:[2,3],make:[2,3],manag:[2,3],manual:[2,3],manuscript:[2,3],massembl:[],master:[2,3],mathrm:[],matur:0,maxdepth:[],maximum:[2,3],measur:[0,1],mechan:[2,3],meet:[2,3],mega:[2,3],menu:[2,3],met:[2,3],meter:[1,2,3],meterfeatur:1,micro:[2,3],mimic:[2,3],min:[2,3],miss:2,model:[2,3],modif:[2,3],modifi:[2,3],modul:[2,3],mohm:[2,3],monitor:[2,3],moreov:[2,3],moscardi:[],mount:[2,3],mous:[2,3],multi:[2,3],multiplex:[0,1],multipli:[2,3],must:[2,3],mux:[2,3],n_k:[],name:[2,3],nano:[2,3],nb_electrod:[2,3],nbr_mea:[2,3],necessari:[2,3],need:[2,3],neg:[2,3],next:[2,3],nicola:[0,1],noob:[2,3],normal:[2,3],note:[2,3],notr:[],nou:[],nov:[],now:[2,3],number:[2,3],numer:[2,3],numpi:[2,3],obtain:[2,3],offcial:0,offer:[2,3],officiel:[],offset:[],ohm:[2,3],ohmmet:[2,3],ohmpi:[],ohmpi_param:3,onc:[2,3],one:[2,3],onli:[],onto:[2,3],open:[1,2,3],oper:0,optim:[2,3],option:[2,3],order:[2,3],org:[],osf:[2,3],other:[2,3],our:[2,3],out:[2,3],output:[2,3],ouvr:[],overh:3,packag:[],page0:[],page1:[],page:[],pai:[2,3],panda:[2,3],paramet:[],parent:[],parl:[],part:[2,3],parten:1,path:[2,3],pcb:[2,3],per:[2,3],perform:[1,2,3],permut:[2,3],peu:[],philosophi:[0,1],pin1:[],pin:[2,3],pip:[2,3],pitch:[2,3],place:[2,3],pleas:[2,3],plu:[],plug:[2,3],png:[],point:[2,3],polar:[2,3],pole:[2,3],pond:[],posit:[2,3],possibl:[2,3],potenti:[2,3],pour:[],power:[2,3],practic:[2,3],pradal:[],precis:[2,3],prefer:[2,3],prepar:[2,3],present:[1,2,3],press:[2,3],previous:[2,3],print:[2,3],procedur:[],produc:[2,3],program:[2,3],progress:[0,1],project:0,propos:[2,3],protocol:[2,3],provid:[1,2,3],publish:2,puls:[2,3],purpos:[2,3],pyhton3:[2,3],python3:[2,3],python:[],pythonid:[2,3],quadripol:[2,3],quadrupol:[2,3],que:[],r10:[2,3],r11:[2,3],r12:[2,3],r_ref:[2,3],rail:[2,3],rang:[2,3],rapberri:[],raspberri:0,raspberrypi:[],raspbian:[2,3],raspbian_vers:[],raspebrri:[2,3],readm:[2,3],recommend:[2,3],red:[],reduct:[2,3],ref:3,refer:[2,3],relai:[2,3],relat:[],releas:0,remain:[2,3],rememb:[2,3],remot:[2,3],repeat:[2,3],repetit:[2,3],repositori:[2,3],repres:[2,3],requir:[2,3],research:0,resist:[0,1],resistor:[2,3],resolut:[2,3],respect:[2,3],result:[2,3],revers:[2,3],reversa:[1,2,3],robust:[1,2,3],role:[2,3],root:[2,3],rpi:[2,3],rro:1,run:[2,3],s_k:[],safeti:[2,3],same:[2,3],save:[2,3],scale:1,schemat:[2,3],scienc:[2,3],scientif:1,screen:[2,3],screw:[2,3],search:[],second:[2,3],section:[2,3],see:[2,3],select:[2,3],sequenc:[2,3],sequence_delai:[2,3],seri:[2,3],serv:[2,3],set:[2,3],setup:[2,3],sever:[2,3],shield:[2,3],shortcut:[2,3],should:[2,3],show:[2,3],shown:[2,3],signal:[2,3],simpl:[2,3],simpli:[2,3],simultan:[2,3],singl:[2,3],site:[],skim:3,slightli:3,slope:[2,3],small:[1,2,3],smaller:[2,3],softwar:[2,3],soil:[2,3],solder:[2,3],solut:[2,3],some:[0,2,3],sound:[2,3],sourc:[1,2,3],specif:[2,3],specifi:[2,3],sphinx:[],spi:[2,3],stabl:[2,3],stack:[2,3],stainless:[2,3],start:[2,3],statu:[0,1],steel:[2,3],step:[2,3],still:[2,3],storag:[2,3],strip:[2,3],strong:[2,3],stronger:[2,3],strongli:[2,3],stuck:[2,3],studi:[2,3],style:[],subject:[2,3],sudo:[2,3],suffici:[2,3],suggest:[2,3],suitabl:[2,3],sum:[2,3],sum_:[],suppli:[2,3],sur:[],sure:[2,3],surfac:1,system:[2,3],tab:[2,3],tabl:[2,3],take:3,tape:[],target:0,task:[2,3],technic:0,temperatur:[2,3],ten:[2,3],termin:[2,3],test:[2,3],tester:[],text:[],textcolor:[],than:[2,3],the9:2,thei:[2,3],therefor:[2,3],thi:[1,2,3],thoma:[],thonni:[],thousand:[2,3],three:[2,3],through:[2,3],thu:[2,3],time:[2,3],toctre:[],togeth:[2,3],tool:1,total:[2,3],tourn:[],track:[2,3],trn3:3,turn:[2,3],tutori:0,two:[2,3],txt:[2,3],type:[2,3],typic:[2,3],under:[2,3],underconstruct:[],unexpectedli:[2,3],unit:[2,3],univ:1,unzip:[2,3],updat:[1,3],upping:[2,3],use:[2,3],used:[2,3],user:[0,2,3],using:[2,3],usr:[2,3],valeur:[],valu:[2,3],variou:[2,3],venv:[2,3],version:[2,3],vertic:[2,3],via:[2,3],villeurbann:1,virtual:[],vise:[],vivien:[0,1],vlide:[2,3],voi:[],voici:[],voltag:[2,3],voltmet:[2,3],vou:[],wai:[2,3],watch:[2,3],weaker:[2,3],websit:[2,3],welcom:1,well:[2,3],were:[2,3],when:[2,3],where:[2,3],which:[2,3],whose:[2,3],width:[],willing:1,window:[2,3],wire:[2,3],within:[2,3],without:[2,3],wjwzhv1v3pk:[2,3],would:[2,3],write:[2,3],www:[2,3],x_n:[],yannick:[0,1],you:[2,3],your:[2,3],youtub:[2,3]},titles:["OHMPI: Open source and open hardware resitivity-meter","<strong>OhmPi project</strong>","OhmPi V 1.01 (limited to 32 electrodes)","OhmPi V 1.02 (limited to 32 electrodes)"],titleterms:{IDE:[2,3],The:[2,3],activ:[2,3],assembl:[2,3],bienvenu:[],board:[2,3],card:[2,3],center:0,cett:[],complet:3,compon:3,configur:[2,3],connect:[2,3],construct:[],current:[2,3],data:[2,3],descript:[2,3],developp:[],document:0,electr:[2,3],electrod:[2,3],environn:[2,3],formul:[],four:[2,3],frist:[2,3],hardwar:0,imag:[],implement:[2,3],implent:[2,3],inastal:[],indic:[],initi:[2,3],inject:[2,3],instal:[2,3],instruct:[2,3],introduct:1,lien:[],limit:[2,3],list:3,massembl:[],measur:[2,3],mesur:[2,3],meter:0,modif:[],multiplex:[2,3],ohmpi:[0,1,2,3],onli:[2,3],open:0,openalea:[],oper:[2,3],packag:[2,3],page:[],paramet:[2,3],philosophi:[2,3],preliminari:[2,3],procedur:[2,3],project:1,python:[2,3],rapberri:[2,3],raspberri:[2,3],resist:[2,3],resit:0,run:[],second:[],sourc:0,startup:[2,3],step:[],summari:0,sur:[],tabl:[],technic:[2,3],text:[],thonni:[2,3],virtual:[2,3],welcom:[]}}) \ No newline at end of file diff --git a/sphinx/source/current_board.jpg b/sphinx/source/current_board.jpg index b4ed8cb1e55cbf688528378b840a5613175300d9..02ae47cf8b521a846fa3a7cb19aee6235abc5e37 100644 Binary files a/sphinx/source/current_board.jpg and b/sphinx/source/current_board.jpg differ diff --git a/sphinx/source/electrode_cable.jpg b/sphinx/source/electrode_cable.jpg index 4ec579dac056f193d384c380dc18c0feae537565..dd8086de23855142fc94566c1fce8d402b23631b 100644 Binary files a/sphinx/source/electrode_cable.jpg and b/sphinx/source/electrode_cable.jpg differ diff --git a/sphinx/source/index.rst b/sphinx/source/index.rst index 79e69fb511aba6bbde9c103adb97224ef5cbe2bc..ea3ec89aa3efcc3c7aa0119db8854da482c2211a 100644 --- a/sphinx/source/index.rst +++ b/sphinx/source/index.rst @@ -32,6 +32,7 @@ Contents: page0 page1 + diff --git a/sphinx/source/measurement_board-2.jpg b/sphinx/source/measurement_board-2.jpg index 68c3362d55ea21e320d208e809ca6dcd694e30f9..e9d5b5a797ebea34a02ca17f3913f89f0e8f549d 100644 Binary files a/sphinx/source/measurement_board-2.jpg and b/sphinx/source/measurement_board-2.jpg differ diff --git a/sphinx/source/measurement_board1-02.jpg b/sphinx/source/measurement_board1-02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..559aead766a8549f1ab9c35991a912cb3dfc7be0 Binary files /dev/null and b/sphinx/source/measurement_board1-02.jpg differ diff --git a/sphinx/source/multiplexer_implementation.jpg b/sphinx/source/multiplexer_implementation.jpg index 3400d64488235cba88aea7046c3470728b1d2052..377cb81376e357aebc238fa10bf38a3b3aa90b49 100644 Binary files a/sphinx/source/multiplexer_implementation.jpg and b/sphinx/source/multiplexer_implementation.jpg differ diff --git a/sphinx/source/page1.rst b/sphinx/source/page1.rst index e8cf01ac6ba50bb9f96e3cc7246d07398e7b4cbd..c29678b5eaf56de7bd106050627c1274733416b0 100644 --- a/sphinx/source/page1.rst +++ b/sphinx/source/page1.rst @@ -1,6 +1,13 @@ ***************************************** OhmPi V 1.01 (limited to 32 electrodes) ***************************************** +.. warning:: + This version corresponds to the version published in the Hardware X journal. + However, we have corrected the bugs that existed on this version and explained the missing mounting points in detail below + We invite you to refer to this document to assemble Ohmpi. + + + The philosophy of Ohmpi ************************** @@ -314,7 +321,7 @@ Current injection board ======================= To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. -In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts @@ -449,11 +456,11 @@ the required packages and running the code. Startup procedure ================== -As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply (for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†-function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be plugged into the hardware; the "ohmpi.py" source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance are displayed on the screen. A measurement file is automatically created and named "measure.csv"; it will be placed in the same folder. @@ -474,6 +481,4 @@ Electrical resistivity measurement parameters description sequence_delay= 30 # Delay in seconds between 2 sequences stack= 1 # repetition of the current injection for each quadripole -The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. - - +The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. \ No newline at end of file diff --git a/sphinx/source/page2.rst b/sphinx/source/page2.rst new file mode 100644 index 0000000000000000000000000000000000000000..62fc930d1f724a0e1e3a5d34f60a9c6f0be2e1a9 --- /dev/null +++ b/sphinx/source/page2.rst @@ -0,0 +1,495 @@ +***************************************** +OhmPi V 1.02 (limited to 32 electrodes) +***************************************** + +The philosophy of Ohmpi +************************** +The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available +electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection, +but suitable for small laboratory experiments and small field time monitoring + + +Technical data +*************** ++-------------------------------+--------------------+-----------+ +| **Parameter** | **Specifications** | Units | ++-------------------------------+--------------------+-----------+ +|Electrodes |32 | | ++-------------------------------+--------------------+-----------+ +|Operating temperature |0 to 50 |°c | ++-------------------------------+--------------------+-----------+ +|Power consumption of CPU and |18.5 |W | +|control system | | | ++-------------------------------+--------------------+-----------+ +|Voltage injection |12 |V | ++-------------------------------+--------------------+-----------+ +|Battery |12 |V | ++-------------------------------+--------------------+-----------+ +|Current |0 to 50 |mA | ++-------------------------------+--------------------+-----------+ +|Min pulse duration |150 |mS | ++-------------------------------+--------------------+-----------+ +|Input impedance |36 |Mohm | ++-------------------------------+--------------------+-----------+ +|Data storage |micro SD card | | ++-------------------------------+--------------------+-----------+ +|Resolution |O.O1 |ohm | ++-------------------------------+--------------------+-----------+ + +Raspberry Pi configuration +****************************************** +OS installation +================ + +The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). +For this step, the installation instructions are well described on the Raspberry website + +1. Watch the vidéo "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk) + +2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). + +.. note:: + All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian: + + .. figure:: raspbian_version.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + + +.. warning:: + Once the OS has been installed, **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements. + + + + +3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. +To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file. + + Run the terminal, and write + + .. code-block:: python + + cd /boot/ + +4. Open config.txt with GNU nano editor + + .. code-block:: python + + sudo nano config.txt + +5. At the end of the file write : + + .. code-block:: python + + gpio=8=op,dl + gpio=7=op,dl + +6. Press Ctrl +O to save the modifications and press enter +7. Press Ctrl +x to escap and return to the terminal +8. Close the terminal + + + +Virtual Environnement and packages +================================== + +All dependencies are specified in requirements.txt + +.. note:: + all instructions below should be typed in the terminal + +It is first necessary to ensure that the libatlas-base-dev library is installed: + +.. code-block:: python + + sudo apt-get install libatlas-base-dev + +We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory. + +Create the virtual environment: + +.. code-block:: python + + python3 -m venv ohmpy + +Activate it using the following command: + +.. code-block:: python + + source ohmpy/bin/activate + +Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies: + +.. code-block:: python + + pip install RPi.GPIO adafruit-blinka numpy adafruit-circuitpython-ads1x15 pandas + +Check that requirements are met using + +.. code-block:: python + + pip list + +You should run you code within the virtual environment +to leave the virtual environment simply type: + +.. code-block:: python + + deactivate + + +Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi) +======================================================================== + +If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it. + +1- Run the Thonny Python IDE software, Click on raspebrry acces **menu > programming> Thonny pythonIDE** + +2- Thonny's interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3)) + +.. figure:: thonny_first_interface.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +3-Click on **Run>select interpreter**, a new window opens click on interpret + +.. figure:: thonny_option.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +4-On the new open windows select **alternative Pyhton3 or virtual environnement** + +.. figure:: thonny_interpreter.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +5- New buttons appeared, selected **"locate another python executable "** + +6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**. + +7- In the **known interpreter** tab the path of the virtual environnementshould appear + +.. figure:: thonny_interpreter_folder.jpg + :width: 600px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + +8- Close the window by clicking on **ok**. + +9- Close thonny to save modifications + + +Assembly of the measuring/current injection cards, and connection with the Raspberry Pi +***************************************************************************************** + +Electrical resistivity measurements board +========================================== + +a) Description +----------------------------- + +To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115 +is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The +input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. +Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test +circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. +In this test circuit, resistance R11 represents the soil resistance. +Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute +the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which +allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, +resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been +set at 50 ohms in order to ensure: +• a precise resistance, +• a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms. +To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) +is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ? +To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. +In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the +reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included +and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge +ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, +the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking +amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115. +Let's note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction +value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is +still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials +of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve +to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the +electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms. +A shortcut between Electrodes A and B will generate excessive currents, whose intensities depend on the type of battery used. +A lithium ion battery or automobile-type lead-acid battery can deliver a strong enough current to damage the board and, as such, +constitutes a potential hazard. We therefore recommend adding a 1.5-A fuse between the battery and resistor R9. + +.. note:: + Last update: + + 1- The board has been slightly modified, we have added a decoupling capacitor at the input of the Operational Amplifiers (AOP) channels, to ensure a good performance of the AOPs (100nF/ 50VDC). + + 2- On each input of the AOP signals, we have also added a 10 MOhms resistor, so that the inputs take the value of the ground when the system does not measure and thus limit the overheating of the AOP. + + 3- To make sure that the signal is not skimmed, we have added a power supply of 24V on the AOPs, these are the TRN3-1211 components. + + +.. figure:: schema_measurement_board1_02.png + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Measurement board updated from the version 1.01 presented in clement et al 2020 + +b) Implementation +-------------------------------- +The measurement board must be printed using the PCB file (Source file repository), with components soldered onto +it by following the steps described below and illustrated in the following figure : + +* Step no. 1: test divider bridge + For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code.. + + .. math:: + coeff po = (R1 + R2) / R1 + + .. math:: + coeff p1 = (R3 + R4) / R3 + + .. math:: + coeff p2 = (R7 + R6) / R7 + + .. math:: + coeff p3 = (R9 + R8) / R9 + + .. code-block:: python + :linenos: + :lineno-start: 31 + + """ + hardware parameters + """ + R_ref = 50 # reference resistance value in ohm + coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V + coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V + coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V + coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V + + The coefficient parameters can be adjusted in lines 31 to 35 of the ohmpi.py code. + + +* Step no. 2: installation of the 1-Kohm resistors with an accuracy of ± 0.1% (following figure-b). +* Step no. 3: installation of the 1.5-Kohm resistors with an accuracy of ± 0.1% (following figure-c). +* Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (following figure-d) +* Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value with ohmmeter and correct in the jason file (ohmpi_param.json),(following figure-e). +* Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction) (following figure-f). +* Step no. 7: installation of the 10-Mohm resistors +* Step no. 8: addition of the DC/DC converter (TRN3-1211) +* Step no. 9: adding 10nF capacitor and fuse (1.5A-littlefuse ref: 0253001.V) + +1-Kohm and 1.5-Kohm resistors apply to the divider bridge. If, for example, you prefer using a weaker +or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. +Once all the components have been soldered together, the measurement board can be connected to the Raspberry Pi and the +battery terminal, according to Figure 9. Between the battery and the TX+ terminal of the measurement board, remember to +place a fuse holder with a 1.5-A fuse for safety purposes. + +.. figure:: measurement_board1-02.jpg + :width: 800px + :align: center + :height: 600px + :alt: alternate text + :figclass: align-center + + Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers + +.. figure:: measurement_board-2.jpg + :width: 800px + :align: center + :height: 700px + :alt: alternate text + :figclass: align-center + + Measurement board installation with Raspberry Pi + +Current injection board +======================= + +To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. +In our case, a simple 12-V lead-acid battery is used to create an electrical potential difference that results +in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This +injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay +module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts +of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open +contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected +to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse +the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by the GPIO 8 in the open position, +the positive battery pole is connected to electrode A and the negative pole to electrode B. When not energized, +they remain in the normally closed position. This set-up offers a simple and robust solution to inject current. + +.. figure:: current_board.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Wiring of the 4-channel relay module board for current injection management + + +Frist four electrodes resistivity mesurement +============================================ + + +Under construction describe the way vlide the first part of the instruction. +Electrical resistivity measurement on test circuit + + +Multiplexer implentation +************************* +The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement +by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands +of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of +the 32 electrodes stuck into the ground, all of which are connected to the data logger. + + +We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay +modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested +configuration enables making smaller multiplexers (8 or 16 electrodes only). On the other hand, if you prefer upping to 64 electrodes, +which is entirely possible, a GPIO channel multiplier will have to be used. +To prepare the multiplexer, the channels of the two relay boards must be connected according to the wiring diagram shown below. + +.. figure:: multiplexer_implementation.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Schematic diagram of the wiring of two 16-channel relay shields + + +For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly. +The length was adjusted so that the distance between the two points to be connected could be directly measured on the board once they had +been assembled one above the other, in adding an extra 3 cm. The wires at the ends need to be stripped and the end caps added. +As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below. + +Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels +for activating each relay (Fig. 12). However, we will be activating several relays with a single GPIO (to limit the number of GPIOs used on Raspberry Pi, +see Section 2.4). To execute this step, it will be necessary to follow the protocol presented in Figure. + + .. figure:: connection.jpg + :width: 800px + :align: center + :height: 400px + :alt: alternate text + :figclass: align-center + + Connection to the 16-channel relay shield + +For the 16-channel relay shield no. 1, these steps must be followed: +* Position a test circuit with 10 horizontal and 10 vertical holes on the pins of the 16-channel relay shield board. +* Follow the diagram and solder the pins as shown in Fig. +* Lastly, solder 0.5-mm² wires 1 m in length to the test circuit. + +For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f). +This same operation must be repeated for the other three multiplexers as well. +The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers. + + ++-------------------------------+-------------------------------------------+---------------------+ +| |Relay shield n°1 |Relay Shield n°2 | +| +----------+----------+----------+----------+---------------------+ +| |Pin 1 |Pin 2-3 |Pin 4-7 |Pin 8-16 |Pin 1- 16 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer A |12 |16 |20 |21 |26 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer B |18 |23 |24 |25 |19 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer M |06 |13 |04 |17 |27 | ++-------------------------------+----------+----------+----------+----------+---------------------+ +| Multiplexer N |22 |10 |09 |11 |05 | ++-------------------------------+----------+----------+----------+----------+---------------------+ + + Connection of the GPIOs to each multiplexer + + +Electrode connection +************************* +At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used. +According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming +connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure. + +.. figure:: cable.jpg + :width: 800px + :align: center + :height: 300px + :alt: alternate text + :figclass: align-center + +the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B +must be connected to electrode no. 1 of MUX N, which in turn must be connected to electrode no. 1 of MUX M. Lastly, electrode no. 1 of MUX M is connected to the terminal block. +This operation must be repeated for all 32 electrodes. + +.. figure:: electrode_cable.jpg + :width: 800px + :align: center + :height: 800px + :alt: alternate text + :figclass: align-center + +Operating instruction +************************* + +Preliminary procedure (Only for the initial operation) +====================================================== +The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (https://osf.io/dzwb4/) +or at the following Gitlab repository address: https://gitlab.irstea.fr/reversaal/OhmPi. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme†file +is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing +the required packages and running the code. + + +Startup procedure +================== +As an initial operating instruction, the 12-V battery must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) +into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply +(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, +the protocol file “ABMN.txt†must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py†+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the 12-V battery can be +plugged into the hardware; the "ohmpi.py" source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now +hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance +are displayed on the screen. A measurement file is automatically created and named "measure.csv"; it will be placed in the same folder. + +Electrical resistivity measurement parameters description +========================================================== + +.. code-block:: python + :linenos: + :lineno-start: 27 + + """ + measurement parameters + """ + nb_electrodes = 32 # maximum number of electrodes on the resistivity meter + injection_duration = 0.5 # Current injection duration in second + nbr_meas= 1 # Number of times the quadripole sequence is repeated + sequence_delay= 30 # Delay in seconds between 2 sequences + stack= 1 # repetition of the current injection for each quadripole + +The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code. + +complete list of componements +========================================================== + + diff --git a/sphinx/source/schema_measurement_board.jpg b/sphinx/source/schema_measurement_board.jpg index b2ab53918592b51ba0589245117d1ae09d67142e..067f79537545338f96b3db86198f8ecbabb3e6e4 100644 Binary files a/sphinx/source/schema_measurement_board.jpg and b/sphinx/source/schema_measurement_board.jpg differ diff --git a/sphinx/source/schema_measurement_board1_02.png b/sphinx/source/schema_measurement_board1_02.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ec4ca8a058dbac280b4fda3a88c7ddae922d83 Binary files /dev/null and b/sphinx/source/schema_measurement_board1_02.png differ