Extracting potassium (with its radioisotope) from cigarette ashes

Organisms are built mainly of carbon, hydrogen and oxygen, but they use many more chemical elements, one of them is potassium. After burning of organic matter, potassium stays in ashes as oxide that later is transformed to hydroxide. In the environment, potassium exists in a mixture of three isotopes: 93.3% of 39 K, 6,7% of 41 K, and 0,012% of radioisotope 40 K. The amount of mentioned 40 K radioisotope is really tinny, but it's enough to detect its existence using home methods.

In this post I will present a simple method to extract potassium compounds from ashes, the purity is quite low (from what I found online for wood ashes, it's around 20-30%), but it's enough to detect increased radioactivity in the sample.

What is needed? Cigarette ash (I used remains of 192 cigarettes for this experiment - I'm a smoker!), water (can be tap water), stove, pot, two beakers (or jars), funnel, cotton, stirrer (or spoon). The whole process takes a couple of hours.

I started from separating cigarette buts, matches, and other junks, the result is ~130ml of ashes.

Homemade breadboard

A breadboard can be also made at home, from one side, it will be more expensive than those on the markets, but for another side, it's possible to add commonly used elements, like LEDs, switches, or other things, for example I added a precision IC socket that makes putting in and out of ICs much easier. Choosing what to put there is a bit like a making homemade pizza, one can put anything he likes (and what he has currently in the fridge).

I didn't have ready to use female sockets, so I cut in half old DIP-18 sockets - works OK too.

The bottom layer was coated with Lichtenberg's alloy - that's a really nice and easy way to protected traces, I highly recommend it! It's inexpensive too!

The circuit looks like a monster, but there isn't a lot of logic in it, in fact, there're only sockets, and a couple of LEDs - I didn't want to add more components, at least with this version. The connections are the same to those of the market breadboards.

You can download Eagle files for this project from by GitHub.

How to make a USB Li-Ion charger

Li-ion cells become more and more popular due to their capacity and reasonable prices. In this entry I will present how to build a simple li-ion battery charger based on MCP73831 chip. It's a quite useful device for DYI projects,in addition its cost is only around 1,5 euro.

The device uses USB port as a power supply (mini-USB connector). I use the standard gold-pins as an output socket. There're three of them, but only two are used (looking on the image, counting from top: V+, V-). I will design my li-ion based devices in the same way (same socket, but female), then if I will connect it in the incorrect direction (rotated 180 degrees) they won't be damaged (V- connected to V-, but V+ connected to n/c pin) - simple way to avoid plugging in an incorrect way.

LED indicates if battery charging is in progress.

Pay attention to connection polarity, li-ion batteries can burn or explode if connected incorrectly. Never leave battery unattended while charging is in progress.

The PCB could be smaller, but it's made in this shape according to chip's documentation, additional copper space is used to dispatch heat produced during charging. The documentation mentioned 2-side layout, but I used only one side. The copper was coated by using Lichtenberg's alloy, so heat dispersion is improved - it seems that it's enough.

Eagle files can be downloaded from my GitHub.

That's all, I will use this tool while upgrading my Evaluation board for DYI robots and . I will also have to thing about some DC/DC converter for them (to obtain 5V from li-ion battery), but that's a different story.

How to protect pictures against copying?

It's not possible to protect the image against any person, but it can be protected enough for most of the users. There are a couple of ways to do this, most popular are CSS tricks, but today I will present another way.

Can you save below image? I bet you can't! ;-)

Dangling else problem

What is a dangling else problem? It's presented below, what will this program print?

#include <iostream>

int main()
{
    bool a = true;
    bool b = false;
    
    if(a)
        if (b)
            std::cout << "foo" << std::endl;
    else
        std::cout << "bar" << std::endl;

   return 0;
}

It may seem that it won't print anything, but it's not true, on the screen we will see "bar". That's because the "else" is bound to the last "if" statement that wasn't already bound to other "else". This may lead to bugs and confusion.

One easy way is to always embrace body of the "if" statement in brackets. If we want to bind the "else" to the first "if" then correct parenthesis should be added as below:

    if(a)
    {
        if (b)
        {
            std::cout << "foo" << std::endl;
        }
    }
    else
    {
        std::cout << "bar" << std::endl;
    }

If we want to bound it to the second "if", it should be:

    if(a)
    {
        if (b)
        {
            std::cout << "foo" << std::endl;
        }
        else
        {
            std::cout << "bar" << std::endl;
        }
    }

What is good is that the compilers will usually produce a warning in places where this error may exist:

 In function 'int main()':
8:7: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]