I've been working on this project for a while, check out this post about the user interface, this about the coincidence testing and this about the Geiger logger program. Finally, here's the previous anode type lead array detector I built.
The demo interface is not going to be accurate in the sense that you won't be able to see every hit when they are more frequent than 16 ms. If you need to count the individual us pulses, you'll need a different counter application to connect it to the detection circuit. I might actually have a go at it with some dedicated hardware at some point. That would be a natural way to improve on this project. Just for your demo / educational purposes I wrote a logger program for these applications in python which you can use on the Raspberry Pi to log these events. It's accurate enough to do the basic Rossi experiments with.
Not so long ago I tuned the pulse lengths and coincidence times for the anode detection coincidence detector circuit. You can find it here.
At that time it didn't even include an LED to give any visible information to the outside world. Today was the time to create a small LED-buzzer interface (if you can call that) for the muon detector for demo purposes. In the first coincidence detection prototype I built, I used a monostable 555 circuit to lengthen the (previously shortened) pulse form the GM tubes, since I had these 555s lying around. The GM pulse is shortened, because you can achieve more accurate coincidence detection that way, but for us those pulses are too short to see, they need lengthening. Since there will be a little beeper and 3 different LED signals (on 2 bi-coloured LEDs) plus a button in this project, I decided to use an ATtiny microcontroller instead of the 555s. The package is going to be smaller and it can source/sink the sort of current these LEDs or the buzzer need. Also, it's quicker to write some C code than going through the whole circuit design process just for some LED - buzzer - button business. I had an ATtiny44A lying around. It's a tremendous overkill for this project with its 4kb flash and 256B RAM. The code even with a little self test is less than 1 kb. Considering the size of the prototype case, this dip14 was the sort of size I wanted to solve this problem with.
The prototype is in the making, here's the a short video about the progress so far. This is the LED interface. The high voltage connectors are in the case, too.
After battering the case I had in stock already, I managed to fit in the display and the pots.
After the initial tests I decided to put the board in an enclosure. On the hardware side, this is mainly a wiring project with a low pass filter and decoupling caps plus the microcontroller. I put the chip on a universal board. Drilled 1.5 mm holes for the wires for mechanical protection and added the ISP header in the middle of the board since that would be the best fit inside the enclosure.
For the first prototype I bought a ready made motor driver circuit which will also provide the power supply for the AVR. It has an on board voltage regulator chip. The case needed a bit of an update to accommodate this. It looks ugly, but at least the heat sink is outside the box.
This is a quick "lego" project. I put together some ready made components with a microcontroller. We needed a driver to drive motors at relatively accurate revs with a display and user controls. I used an Atmel ATmega328P as the main microcontroller since I had one lying around, anyway. However, this is not an Arduino project, it's AVR C. It's essentially the same thing, but using the avr-gcc directly gives you (I'd say a lot) more freedom at a price of higher complexity. However, your code will be more portable. This will work on an ATmega8 or ATmega88 and above and with not too many modifications. You can reuse bits across many Atmel microcontrollers, too. The frequency is not very critical for this, it will probably work in the 4-20 MHz range. This prototype currently runs on 8 MHz. The initial specs were the following: it should operate from a cheap 6-12V lab supply and would be able to drive a range of motors with 1Hz accuracy up to 1kHz (if only one oscillation / revolution is made this is 60 000 rpm) with a user display and convenient controls.
I soldered the main controller, the ISP header, the low pass filer, the extra pull-up for the reset pin plus the decoupling caps. I flashed the program onto the AVR and tested the circuit. I didn't have any 4 mm connectors in stock, so just decided to put the wires in. I left some space on the board for maybe a crystal or extra bits for stabilizing of the motor speed if needed.
I remember having my first Nokia 5110 - I loved that phone and I'm glad to see that the displays are still in the market, so that had to be my next component. A Nokia 5110 display - I was looking forward to firing up that one. I added 2 pots for the control (my idea was to implement a coarse - fine type control), since I prefer pots over push buttons.
I could've included proper connectors for the headers, but since the LCD driver is working all right, I just soldered the wires onto the board.
Finally, I put the stuff together and connected an old DC motor. Listen to that cool tram starting noise from the PWM. :)
What's left to implement is a frequency measurement circuit - hence the 3 unconnected wires... Stay tuned.
CODE examples are on GitHub
About this blog
Welcome and thanks for visiting my site.