User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
lab:pigi:software [2013/07/03 09:49] – [Effect of Dead-Time on Counts] chronolab:pigi:software [2014/05/24 10:59] – [GeigerJSON Template] chrono
Line 1: Line 1:
 ====== Software ====== ====== Software ======
  
-As of now there is only the prove-of-concept code in the repository that allows basic CPM + uSv/h measurementThis will be extended to a more powerful system, allowing audio-output (for all those nostalgic geiger nerds who want the classic tak tak counting sound. Ideally there will also be a ready-to-download image, with kernel, OS and counting, logging & data sharing infrastructure, which just needs to be copied to the SD card and it should work out-of-the-box.+Check it out on github: https://github.com/apollo-ng/PiGI
  
-https://github.com/apollo-ng/PiGI/tree/master/software+===== Overview ===== 
 + 
 +==== pyGI Server ==== 
 + 
 +The pyGi server component is implemented in python and uses the RPi.GPIO python library to take care of  handling the interrupts, generated by the impulses coming from the PiGI.  
 + 
 +A LevelDB instance stores the collected data and websockets are used for the distribution of live and historical data to connected clients (webGI).  
 + 
 +Naturally, it also provides an HTTP module to deliver the actual webGI client, so that any user can access the geiger counter without having to install native software first. 
 + 
 +==== webGI Client ==== 
 + 
 +A kinda bleeding edge mobile-first HTML5/CSS3 Websocket based web client, than can be used in latest open source browsers like chromium & firefox. 
 + 
 +==== Preliminary Dev Screenshots ==== 
 + 
 +[{{:lab:webgi-mainpanel.jpg?185|Main Instrument View}}] 
 +[{{:lab:webgi-historypanel.jpg?183|History View}}] 
 +[{{:lab:webgi-tracevisualizer.jpg?185|Ion Trace Visualizer}}] 
 + 
 +~~CL~~ 
 + 
 +In the future, with more time and the help of other enthusiastic developers, there will also be a ready-to-download image, with kernel, OS and counting, logging & data sharing infrastructure, which just needs to be copied to the SD card so that it works out-of-the-box. 
 + 
 + 
 +===== Installation ===== 
 + 
 +==== Dependencies ==== 
 + 
 +We've tried to keep external dependencies to a minimum to make it easily 
 +deployable on any flavor of open-source operating system. If you deploy it 
 +successfully on any other OS, please update this: 
 + 
 +=== Currently tested versions === 
 + 
 +    * greenlet-0.4.2 
 +    * bottle-0.12.4 
 +    * gevent-1.0 
 +    * gevent-websocket-0.9.3 
 + 
 +=== Ubuntu/Raspbian === 
 + 
 +    $ sudo apt-get install python-pip python-dev libevent-dev 
 +    $ sudo pip install ez-setup 
 +    $ sudo pip install leveldb greenlet bottle gevent gevent-websocket 
 + 
 +=== Gentoo === 
 + 
 +    $ emerge -av dev-libs/libevent dev-python/pip 
 +    $ pip install ez-setup 
 +    $ pip install leveldb greenlet bottle gevent gevent-websocket 
 + 
 +=== Raspberry PI deployment === 
 + 
 +If you want to deploy the code on a PI for production in order to count 
 +values from a real GM tube connected to the PiGI-Module, you have to make 
 +sure to satisfy the RPi.GPIO dependency: 
 + 
 +    $ pip install RPi.GPIO 
 + 
 +This only applies to non-Raspbian installations, since Raspbian ships 
 +RPi.GPIO with the default installation. 
 + 
 +==== Cloning the repository ==== 
 + 
 +    $ git clone https://github.com/apollo-ng/PiGI.git 
 + 
 +===== Configuration ===== 
 + 
 +PyGI checks 3 configuration files, if existent in conf/, updating the 
 +values defined in the file before or using new ones, in the following order: 
 + 
 +    * default.cfg (automatically comes shipped per default with examples) 
 +    * local.cfg (create this file to override local server settings - gitignored) 
 +    * dynamic.cfg (this file will be created automatically, 
 +      if the webGI client wants to change server settings - also gitignored) 
 + 
 +When you are deploying on the Pi to count real values and/or want to 
 +change the Web Server/Socket port to 80 rather than 8080 __you have to 
 +run the software as root__. Otherwise the interrupt handling on the Pi 
 +won't work and port 80 will not be accessible due to security (<1024). 
 + 
 +===== Usage ===== 
 + 
 +==== Server Startup ==== 
 + 
 +    $ cd PiGI/software/ 
 +    $ python pyGIserver.py 
 + 
 +==== Client Access ==== 
 + 
 +Open a browser and go to http://127.0.0.1:8080 
 + 
 +===== License ===== 
 + 
 +This program is free software: you can redistribute it and/or modify 
 +it under the terms of the GNU General Public License as published by 
 +the Free Software Foundation, either version 3 of the License, or 
 +(at your option) any later version. 
 + 
 +This program is distributed in the hope that it will be useful, 
 +but WITHOUT ANY WARRANTY; without even the implied warranty of 
 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 +GNU General Public License for more details. 
 + 
 + 
 + 
 + 
 +===== Notes ===== 
 + 
 +==== GeigerJSON Template ==== 
 + 
 +<sxh javascript; toolbar:false> 
 +
 +    "type" : "geigerjson", 
 +    "timestamp": 1393878981, 
 +    "geostamp":
 +        "lat": 48 
 +        "lon": 11, 
 +        "alt": 560 
 +    } 
 +    "node_uuid":"9b70c59c-a313-11e3-a61f-001f161087c0", 
 +    "parameters":
 +        "tube_id" : "LND712", 
 +        "dead_time" : 0.000190, 
 +        "tube_factor" : 0.00233, 
 +        "opmode" : "[stationary|mobile]" 
 +        "window": "[abc|bc|c]" 
 +    }, 
 +    "data" : { 
 +        "source": "[sim|test|env]", 
 +        "cps" : 10, 
 +        "cps_dtc" : 11, 
 +        "cpm" : 600, 
 +        "cpm_dtc" : 610, 
 +        "totalcount" : 12345, 
 +        "totalcount_dtc" : 12456, 
 +        "edr" : 0.89, 
 +        "edr_avg_15m" : 0.90 
 +    }, 
 +    "annotation" : "my radioactive moment" 
 +
 +</sxh> 
 + 
 +==== INES Scale for reference ==== 
 +{{:lab:pigi:ines_scale.png?200|}}
  
 ==== Pulse size or collected charge ==== ==== Pulse size or collected charge ====
Line 28: Line 173:
  
 In terms of GM tubes the Dead-Time is the time after an event in which the tube will not register another count. Positive ions close to the anode reduce the intense electric field so that approaching electrons do not gain enough energy to start new avalanches. The GM tube is then inoperative (dead) for the time required for the ions to migrate outward far enough for the field gradient to recover above the avalanche threshold. The time required for recovery to a value high enough for a new pulse to be generated and counted is called the "Dead-Time" and is of the order of 100 μs (microseconds). In terms of GM tubes the Dead-Time is the time after an event in which the tube will not register another count. Positive ions close to the anode reduce the intense electric field so that approaching electrons do not gain enough energy to start new avalanches. The GM tube is then inoperative (dead) for the time required for the ions to migrate outward far enough for the field gradient to recover above the avalanche threshold. The time required for recovery to a value high enough for a new pulse to be generated and counted is called the "Dead-Time" and is of the order of 100 μs (microseconds).
- 
-To correct for this statistical error one has to calculate the actual or corrected rate R with the measured or observed rate and the tube specific Dead-Time. 
 [([[http://www.csupomona.edu/~pbsiegel/phy432/labman/geiger.pdf|Introduction to Geiger Counters]])] [([[http://www.csupomona.edu/~pbsiegel/phy432/labman/geiger.pdf|Introduction to Geiger Counters]])]
 [([[http://www2.astro.psu.edu/~niel/astro485/derivations/geiger1.pdf|THE GEIGER COUNTER and COUNTING STATISTICS]])] [([[http://www2.astro.psu.edu/~niel/astro485/derivations/geiger1.pdf|THE GEIGER COUNTER and COUNTING STATISTICS]])]
  
 +<WRAP round info>
 +To correct for this statistical error one has to calculate the actual (corrected) rate R with the measured (observed) rate and the tube specific Dead-Time.
 +
 +</WRAP>
  
 === Formula === === Formula ===
Line 48: Line 195:
 <x 14>t_{dead} = 190 µs = 0.000190s</x> <x 14>t_{dead} = 190 µs = 0.000190s</x>
  
-<x 14>R_{corrected} = {87.55 1/s} / {1 - ((87.55 1/s) * 0.000190s)} = 87.55 / 0.98337 1/s= 89.03 1/s</x>+<x 14>R_{corrected} = {87.55 1/s} / {1 - ((87.55 1/s) * 0.000190s)} = 87.55 / 0.98337 1/s = 89.03 1/s</x> 
 + 
 +\\ 
 +This means that the tube statistically missed 1,48 counts per second. The actual (corrected) rate is 89,03 CPS.
  
-This means that the tube missed 1,48 counts per second. The actual rate is 89,03 cps.+~~REFNOTES~~
  
-Measurements with the LND712 showed a longer dead time than the datasheet advertised (about 120-150us). Moving up higher in +<WRAP round important> 
-the plateau also seemed to increase the dead time. For perfect operating conditions, the tube voltage should be set to a value within +Measurements with the LND712 showed a longer dead time than the datasheet advertised (about 120-150us). Moving up higher in the plateau also seemed to increase the dead time. For perfect operating conditions, the tube voltage should be set to a value within the advertised operating range and then fine tuned to decrease the dead time to the lowest possible value, without affecting the tubes
-the advertised operating range and then fine tuned to decrease the dead time to the lowest possible value, without affecting the tubes+</WRAP>
  
 ~~DISCUSSION~~ ~~DISCUSSION~~