Arduino Cranial Stimulator (Bio-BrainTuner)

  Cranial electro stimulation uses harmonic frequencies to help balance the brain's chemistry. By connecting with the body's control center, the brain harmonic frequencies provide wide-ranging and extensive benefits in a painless and non-invasive manner, with little or no side effects:
  - Relieves stress
  - Regain mental acuity and clarity
  - Helps with addictions & cravings
  - Relief from insomnia 
  - Enhance meditation experiences 
  - Pain management   etc...

  A project for making such a device was recently presented in a local magazine, but the device was relatively complex and contained 6 Integrated Circuits. In a very simple way can be made similar device with the help of Arduino microcontroller and a few discrete elements. The basic idea and code is from the nvtronics.org forum. I extended the code with a simple 20 min timer, which is the recommended time for this type of simulation. You can easily change this time in the code in line:
  timerCount = 20 * 60 * 10; ////(20 mins *  60 sec * 10 * 1 deciseconds)
  I also added a switch with which we can choose between Brain Tuner and Bio Tuner mode. Arduino generates two frequencies(111 Hz and 1110 Hz) modulated by a third one and all of them multiplexed by an audio transformer and applied to ear lobes.

projectImage

   Device is relatively simple to build and contains a few component:

HARDWARE LIST
1 Arduino Nano
2 2N3904 transistor
2 2N3906 transistor
4 1N4007 – High Voltage, High Current Rated Diode
2 Rotary potentiometer 10K
2 Led diode
1 Switch 2x3 contacts
1 Output Audio trafo from old MW radio
1 resistors and capacitors

   And now let's see how the device works in reality. For that purpose, we will connect an oscilloscope to the output so that we can follow the shape of the output signal. For this purpose, a resistor with a value of 1.5 kiloohm is connected in parallel to the output. First potentiometer will control current in electrodes & you can set it  while using device according to sensation in your ears. Too much current will cause discomfort, and you should only set it to the point where you can feel slight tingling or a bit more. Other potentiometer control the interrups of signal selectable between 0.5 and 5Hz. The signal we see on the oscilloscope screen corresponds to the signal of the commercial Bob Beck Brain Tuner which sells for $ 150 and up. Тhe device also has a Bio Tuner mode that turns on with the switch, and we can the shape of this signal on oscilloscope. 

projectImage

   Yellow button turns on the timer. The LED lights up until 20 minutes have elapsed and then turns off. Due to the needs of this presentation, I reduced the time to 1 minute. In addition to the LED, a relay can be connected to the timer that will physically control the duration of the therapy. At the link with a detailed description you can see that there are two schematic diagrams, of which the simple one represents only Brain Tuner, and the other one has Bio tuner mode and timer, but it is more complicated to make. It is important to emphasize that for safety reasons the device should be powered by a battery that due to low consumption will last a long time

projectImage

  This unit is not a medical device. I can’t claim or prove any therapeutic effectiveness for this device, but if you are interested in trying it, the circuit is so cheap and relatively simple to build that an attempt can be made with quite no harm.
 Finally, the device is built into a suitable box made of PVC material and coated with a self-adhesive color label.

projectImage
projectImage
CODE
// @TESLATRONICA 2019.

// pin 9 arduino nano >>> out signal 111 Hz
// pin 3 arduino nano >>> out signal 1110 Hz

//pin A0 arduino nano >>> to cental pin pontentiometer 10k (for gate regulation)
// right pin potentiometer 10k to +5V
// left pin potentiometer 10k to negative
// potentiometer all left >>> no gate (constant output signal)
// potentiometer move to right >>> activate gate 5 Hz to 0.5 Hz (200 ms to 2s aprox)

long time_;

int gate_ = 0;
long gate_contador = 0;
int gate5 = 0;
int gate_2 = 0;

int array_time_gate[] = {0, 200, 500, 1000, 1500, 2000}; // gate values 5 Hz to 0.5 Hz (200 ms to 2s aprox)
int startButton = 13; //pin recieving info from start button
int startLED = 4;   
unsigned long timerCount = 0; // variable to hold our timer info
#include <PWM.h> // library frequency "PWM"

void setup() {
  pinMode(startButton, INPUT_PULLUP); //set pin as recieving info
  pinMode(startLED, OUTPUT); 
  digitalWrite(startLED, LOW); 
  
   InitTimersSafe();

  SetPinFrequencySafe(9, 111); // 111 Hz to pin PWM 9
  pwmWrite(9, 50 * 2.55); // 50% duty Cicle

  SetPinFrequencySafe(3, 1110); // 1110 Hz to pin PWM 3
  pwmWrite(3, 50 * 2.55); // 50% duty Cicle
}

void loop() {
if (digitalRead(startButton) == HIGH) 
    { //if the start button has be pushed
     timerCount = 20 * 60 * 10; //set timer to approximately 5 mins 
     //(20 mins *  60 sec * 10 * 1 deciseconds)
     //this is set up to restart the timer whenever the start 
     //button is pushed
     //not extremely exact since that is not what I needed for this project
     //if you are looking for something more exact, look into 
     //SimpleTimer() Arduino funtions and libraries:
     //http://playground.arduino.cc/Code/SimpleTimer#F_restartTimer
    }
  if (timerCount != 0)
   { //if the count down timer is still running
     digitalWrite(startLED, HIGH); 
     //tell the control pin to provide power to the project
     timerCount = timerCount - 1; 
     //count down of a decisecond (0.1 sec)
     delay(100); 
     //delay for timercCount refrence of a decisecond
   } 
   else { //if the timer has run out
     digitalWrite(startLED, LOW);
   }
  
  time_ = millis(); // read time since arduino power on

  gate_ = analogRead (0); // read pin A0 values of the "arduino nano" seleccionated with potentiometer 10K
  gate_ = map(gate_, 0, 1023, 0, 6); // 0 to 6 >>> 5 Hz to 0.5 Hz (200 ms to 2s aprox)
  if (gate_ > 5) {
    gate_ = 5;
  }
  gate_ = array_time_gate[gate_]; // read array fron potentiometer

  if (gate_ != 0) { //active gate
    gate(); // call to gate subroutine
  }

  if (gate_ == 0 && gate_2 == 1) { //reactivate frequencies
    SetPinFrequencySafe(9, 111); // 111 Hz to pin PWM 9
    pwmWrite(9, 50 * 2.55); // 50% duty Cicle

    SetPinFrequencySafe(3, 1110); // 1110 Hz to pin PWM 3
    pwmWrite(3, 50 * 2.55); // 50% duty Cicle
    gate_2 = 0;
  }
}


void gate() { // gate subroutine
  if (gate_ > gate5 + 2 || gate_ < gate5 - 2) {
    gate_contador = millis();
    gate5 = gate_;
    gate_2 = 1;
  }

  if (gate_2 == 0 && time_ >= gate_contador) { // desactivate pin9 and pin3
    pwmWrite(9, 0);
    pwmWrite(3, 0);
    gate_contador = gate_ + millis(); // selected gate valued + current time
    gate_2 = 1;
  }

  if (gate_2 == 1 && time_ >= gate_contador) { // active pin9 and pin3
    pwmWrite(9, 50 * 2.55);
    pwmWrite(3, 50 * 2.55);
    gate_contador = gate_ + millis(); // selected gate value + current time
    gate_2 = 0;
  }
}

License
All Rights
Reserved
licensBg
0