...

Self Hypnosis


Self Hypnosis is an interactive kinetic art project, where the superimposition of the designs on 2 coaxial rotating discs causes patterns to emerge. The speed and direction of the discs can be controlled by moving and positioning hands above the sensing plates.

How does it sense the position of the hands?

The sensing plates use an ultrasonic sensor (HC-SR04) to measure distance to an object. A sound wave is sent by the sensor, and if the sound wave hits an oject (like your palm, in this case) it gets reflected back as an echo to the sensor. The sensor can then measure the time it took for the echo to come back, and using the speed of sound, we can estimate the distance to the object. The sound wave is called ultrasonic because it is at a frequency that is too high for the human ear to hear. Humans can typically hear sounds only upto about 20 KHz, and this sensor emits sound waves at a frequency of 40 KHz.
The same priciple of ultrasonic sensing is also used by bats and dolphins to help them "see" using sound in the dark and low visibility conditions.

How does the speed and direction of the discs change?

The discs are driven by electric motors that are controlled using motor drivers (DRV-8801). A motor driver is an electronic component that controls the direction in which the motor turns, using a circuit called a H-bridge. The motor driver can also control the speed of the motor by varying the power that the motor gets, using the princicple of Pulse Width Modulation (PWM) to change the effective voltage provided to the motor.

What controls how it all works?

Self Hypnosis uses a microcontroller (Arduino Nano, ATMega328) as it's "brain". A microcontroller is a small computer that can communicate with other electronic components through input and output connections called "ports". A microcontroller can also store a computer program in its memory that it can run. The program in this case checks to see if there is an object present above the sensing plate, measures the distance to the object, determines what speed and direction it wants the discs to turn depending on the distance to the object, and then sends instructions to the motor driver to change the speed and direction as required.

Showings

This is from the 2014 Family Science Expo at the Des Plaines Public Library.

Pattern development

Using Inkscape on this svg file.

Code Listing

Arduino code listing can be found here (also at codebender).

Schematic

Connection diagram