Tag Archives: ultrasonic

Chirp Microsystem Made The Smallest And Most Accurate Ultrasonic Time-of-Flight Sensors

Recently Californian startup Chirp Microsystems officially announced two discrete ultrasonic Time-of-Flight (ToF) sensors, the CH-101 and CH-201, with maximum sensing ranges of 1m and 5m, respectively. Both chips have a 3.5×3.5mm package and they are powered by same ASIC or application-specific integrated circuit for signal processing. To achieve different sensing ranges, the Piezoelectric Micro-machined Ultrasonic Transducers (PMUT), the MEMS parts of the sensors are tuned and built differently.

Chirp Microsystem designed smallest and most accurate ultrasonic Time-of-Flight sensors

Chirp Microsystems was founded in 2013 and the CH-101 is their 2nd generation design while the CH-201 is an upgraded third generation design. Their 4th generation design of chips is under development and prototypes are being tested recently. Chirp Microsystems declares that with each design so far, they’ve improved their transmitter and receiver performance by 4 times. David Horsley, Chirp Microsystems’ CTO, told,

In fact, we have been sampling the CH101 for two years now and we realized we had never made a product announcement for it.

According to Chirp Microsystems, the chips are the first commercially available MEMS-based ultrasonic ToF sensors and can beat all other ToF solutions on the small size and low power consumption. The “Sonars on a chip” draw 100 times less power and are a thousand times smaller than the conventional ultrasonic rangefinders used in today’s industrial automotive applications. Unlike infrared based ToF sensors, these new MEMS sensors do not rely on optical path clearance. So, it’s now easier for engineers to design bezel-free smartphones with precise gesture recognition.

The CH-101 and CH-201 include an interrupt pin and a GIO pin. That pin is used in hardware trigger mode to connect several transducers on the same I2C bus so they can operate in a synchronous fashion. For Virtual Reality applications, data from multiple chips are mixed to detect the position of user’s hand in 3D space.

Previously the California based startup also made monolithic linear arrays that had ten transducers in a row. Using that design, one can perform beamforming and identify both range and position of an object. Though they stayed away from commercializing it. “We didn’t want to bite too much at a time” – said the CTO of the startup. Rather they decided to focus on solving various manufacturing and packaging issues first. Horsley, the CTO of the Chirp Microsystems, also added,

We are pioneers in this area, and we are not close to the optimum yet, we still have a lot of design space to improve the specs.

Butterfly IQ – Ultrasound Anywhere, Anytime

Ultrasound, also known as sonography, is a medical procedure which uses sound waves to get images from inside the body. It is used to help guide biopsies, diagnose causes of pain, examine a baby in pregnant women, diagnose heart conditions etc. High- frequency sound waves are transmitted to the body using a small transducer (probe), then the probe collects the sounds that bounce back, and a computer uses that information to render an image. Ultrasound scanner consist of a transducer, a video display, a console (with computer and electronics) and sometimes multiple transducers are needed for different parts of the body. As a result, ultrasound machines are not portable, and are not easy to access during emergencies.

As a result, Butterfly has combined semiconductor engineering, artificial intelligence, and the cloud in order to create IQ, a portable and affordable ultrasound machine. Butterfly believes that “Medical imaging should be accessible to everyone on the planet”. With the use of a chip, a single probe, and an iPhone now every licensed healthcare practitioner can have an ultrasound anywhere, anytime.

The chips used for the device has transducers, signal processing and computational horsepower. Also, the device has its own battery (to avoid draining the phone’s battery), and works with 9,000 little drums that wobble to create sound and then receive it from the body. It does all the signal processing that would normally cost a hundred thousand dollars to render an image.

Nowadays, ultrasound machines use piezoelectric crystals which require on factory tuning for specific depths which generates the need for multiple probes. The IQ can be tuned on the go and can be buzz at 1 MHz for deep analysis or 5 MHz for shallow analysis. Additionally, the Butterfly IQ incorporates artificial intelligence for image acquisition and analysis which in the future could help guide nonprofessionals in proper operation of the device. Also, it includes cloud services for storage.

This device already has FDA clearance for 13 clinical applications which include abdominal, cardiac (adult and pediatric), fetal (obstetric), gynecological and procedural guidance. The same probe can be used to look anywhere inside the body, with different depths and to anyone.

Eventually, Butterfly expect their device to become as accessible and useful as a household thermometer, but currently it is not available for consumers and the price is high for household purposes. Its only supported by iPhone (soon by iPad), but there has been no talk about Android support. The price starts in 2K and shipping will begin on 2018.

[source]

RELATED POSTS

Arduino Parking Assistant

addictedToArduino @ instructables.com designed a Arduino based parking assistant.

To appease my frustration I decided to design a device that would allow me to park in the exact spot every time. I love working with arduinos, leds, sensors, and nearly anything else electronic, so I knew from the start that it would probably end up as a contraption with an Arduino inside and a bunch of leds on the front!

Arduino Parking Assistant – [Link]

RELATED POSTS

Alarm System Powered By Arduino

Dejan Nedelkovski had built an Arduino security and alarm system project that uses an ultrasonic sensor for detecting objects and a buzzer for notification.

Components needed to build this simple system are: Arduino board, LCD display, 4×4 keypad, ultrasonic sensor and buzzer. The circuit can be connected as shown in the schematics below.

In order to build the project, you have to connect the buzzer with a PWM pin and the keypad pins where 4 of the 8 pins are for rows and the rest are for columns.

“The 4×4 keypad has 8 pins, 4 of them are for the rows and 4 of them for the columns of the keypad. Each button is actually a push button switch which makes a short between one row and column when pressed. So, for example, if we set the row 1 line low, and all column lines high, when we will press, for example, the button 3, due to the short between the two lines, the column 3 line will drop to low so in such a case we can register that the button 3 has been pressed.”

For connecting the LCD display and ultrasonic sensor you can check this detailed video tutorial by Dejan Nedelkovski and to see the project in action:

We want to activate the alarm by setting the A button to activate it. B button is used to change the password, and you need to enter the preset password “1234” to be able to change it.
After activating the alarm by pressing A, a 200 milliseconds sound will be produced from the buzzer showing that the alarm is now active. A message on the LCD display will appear to saying “Alarm will be activated in” and a countdown will be running afterwards until the alarm is completely active. At the end of the countdown a ” Alarm Activated” is on the display and the sensor will start working. Comparing with the initial distance at the start, the sensor will measure the distance is smaller than the initial distance, corrected by a value of 10 cms. The buzzer will  produce a sound if an object is observed as per the condition.

Here’s the complete source code of the Arduino alarm system:

/*
* Arduino Security and Alarm System
*
* by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library 
#include <Keypad.h>
#define buzzer 8
#define trigPin 9
#define echoPin 10
long duration;
int distance, initialDistance, currentDistance, i;
int screenOffMsg =0;
String password="1234";
String tempPassword;
boolean activated = false; // State of the alarm
boolean isActivated;
boolean activateAlarm = false;
boolean alarmActivated = false;
boolean enteredPassword; // State of the entered password to stop the alarm
boolean passChangeMode = false;
boolean passChanged = false;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keypressed;
//define the cymbols on the buttons of the keypads
char keyMap[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {14, 15, 16, 17}; //Row pinouts of the keypad
byte colPins[COLS] = {18, 19, 20, 21}; //Column pinouts of the keypad
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, ROWS, COLS); 
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 
void setup() { 
  lcd.begin(16,2); 
  pinMode(buzzer, OUTPUT); // Set buzzer as an output
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}
void loop() {
  if (activateAlarm) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Alarm will be");
    lcd.setCursor(0,1);
    lcd.print("activated in");
   
    int countdown = 9; // 9 seconds count down before activating the alarm
    while (countdown != 0) {
      lcd.setCursor(13,1);
      lcd.print(countdown);
      countdown--;
      tone(buzzer, 700, 100);
      delay(1000);
    }
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Alarm Activated!");
    initialDistance = getDistance();
    activateAlarm = false;
    alarmActivated = true;
  }
  if (alarmActivated == true){
      currentDistance = getDistance() + 10;
      if ( currentDistance < initialDistance) {
        tone(buzzer, 1000); // Send 1KHz sound signal 
        lcd.clear();
        enterPassword();
      }
    }
  if (!alarmActivated) {
    if (screenOffMsg == 0 ){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("A - Activate");
      lcd.setCursor(0,1);
      lcd.print("B - Change Pass");
      screenOffMsg = 1;
    }
    keypressed = myKeypad.getKey();
     if (keypressed =='A'){        //If A is pressed, activate the alarm
      tone(buzzer, 1000, 200);
      activateAlarm = true;            
    }
    else if (keypressed =='B') {
      lcd.clear();
      int i=1;
      tone(buzzer, 2000, 100);
      tempPassword = "";
      lcd.setCursor(0,0);
      lcd.print("Current Password");
      lcd.setCursor(0,1);
      lcd.print(">");
      passChangeMode = true;
      passChanged = true;   
      while(passChanged) {      
      keypressed = myKeypad.getKey();
      if (keypressed != NO_KEY){
        if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
            keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
            keypressed == '8' || keypressed == '9' ) {
         tempPassword += keypressed;
         lcd.setCursor(i,1);
         lcd.print("*");
         i++;
         tone(buzzer, 2000, 100);
        }
      }
      if (i > 5 || keypressed == '#') {
        tempPassword = "";
        i=1;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Current Password");
        lcd.setCursor(0,1);
        lcd.print(">"); 
      }
      if ( keypressed == '*') {
        i=1;
        tone(buzzer, 2000, 100);
        if (password == tempPassword) {
          tempPassword="";
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Set New Password");
          lcd.setCursor(0,1);
          lcd.print(">");
          while(passChangeMode) {
            keypressed = myKeypad.getKey();
            if (keypressed != NO_KEY){
              if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
                  keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
                  keypressed == '8' || keypressed == '9' ) {
                tempPassword += keypressed;
                lcd.setCursor(i,1);
                lcd.print("*");
                i++;
                tone(buzzer, 2000, 100);
              }
            }
            if (i > 5 || keypressed == '#') {
              tempPassword = "";
              i=1;
              tone(buzzer, 2000, 100);
              lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("Set New Password");
              lcd.setCursor(0,1);
              lcd.print(">");
            }
            if ( keypressed == '*') {
              i=1;
              tone(buzzer, 2000, 100);
              password = tempPassword;
              passChangeMode = false;
              passChanged = false;
              screenOffMsg = 0;
            }            
          }
        }
      }
    }
   }
 }
}
void enterPassword() {
  int k=5;
  tempPassword = "";
  activated = true;
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(" *** ALARM *** ");
  lcd.setCursor(0,1);
  lcd.print("Pass>");
      while(activated) {
      keypressed = myKeypad.getKey();
      if (keypressed != NO_KEY){
        if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
            keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
            keypressed == '8' || keypressed == '9' ) {
          tempPassword += keypressed;
          lcd.setCursor(k,1);
          lcd.print("*");
          k++;
        }
      }
      if (k > 9 || keypressed == '#') {
        tempPassword = "";
        k=5;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print(" *** ALARM *** ");
        lcd.setCursor(0,1);
        lcd.print("Pass>");
      }
      if ( keypressed == '*') {
        if ( tempPassword == password ) {
          activated = false;
          alarmActivated = false;
          noTone(buzzer);
          screenOffMsg = 0; 
        }
        else if (tempPassword != password) {
          lcd.setCursor(0,1);
          lcd.print("Wrong! Try Again");
          delay(2000);
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print(" *** ALARM *** ");
          lcd.setCursor(0,1);
          lcd.print("Pass>");
        }
      }    
    }
}
// Custom function for the Ultrasonic sensor
long getDistance(){
  //int i=10;
  
  //while( i<=10 ) {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration*0.034/2;
  //sumDistance += distance;
  //}
  //int averageDistance= sumDistance/10;
  return distance;
}

Check the project post to know more information and to find detailed tutorial. You can also check other posts by Dejan using this link.

RELATED POSTS

How to Set Up an Ultrasonic Range Finder on an Arduino

circuitbasics.com has a new tutorial on how to measure distance using Arduino and an ultrasonic sensor.

Ultrasonic range finders are fun little modules that measure distance. You can use them to find the precise distance to an object, or also just to detect when something is within range of the sensor (like a motion detector). Ultrasonic range finders are ideal for projects involving robotic navigation, object avoidance, and home security. Because they use sound to measure distance, they work just as well in the dark as they do in the light. The ultrasonic range finder we will be using in this tutorial is the HC-SR04. The HC-SR04 can measure distances from 2 cm to 4oo cm with an accuracy of ±3 mm.

How to Set Up an Ultrasonic Range Finder on an Arduino – [Link]

RELATED POSTS

Ultrasonic parking sensor

An ultrasonic parking sensor project from Ch00ftech:

After electing to use the PING))) sensor exactly as directed, I needed to build the rest of my circuit.  I wanted to build something robust that would mount nicely on the wall of my dad’s garage.  Figuring that the sensor would likely need to be placed down low by the car’s bumper, I decided on a two-component design consisting of a small sensor and a large visible display that could be mounted at eye-level.

Ultrasonic parking sensor – [Link]

Ultrasonic Anemometer Project Progress

20160907_standaloneanemometer_029

In the mean time I managed to do some rudimentary testing and now feel confident to take orders. These tests concern the hardware only. What I said last time about the state of the software still applies. But let me tell you what I’ve been able to test so far.

Ultrasonic Anemometer Project Progress – [Link]

RELATED POSTS

Arduino Proximity Alarm

F8ZWUY5IR3U31B7.LARGE

Lucas Reed @ instructables.com has build a proximity alarm using Arduino and an ultrasonic sensor from Parallax. If a nearby object is approaching then the alarm will sound and an RGB LED will light up. He writes:

An ultrasonic rangefinder and Arduino microcontroller will check for nearby objects and if need be, alert you with a piezo-buzzer and RGB LED. Learn about these components using electronics lab simulations and eventually design, code, simulate, and build the proximity alarm itself! This is great if you are looking for a quick project to learn about digital electronics.

Arduino Proximity Alarm – [Link]

Portable Ultrasonic Range Meter

FJPZU06IJEKJIN4.LARGE

ManosM @ instructables.com has build a portable ultrasonic range meter based on ATMega328 mcu and LCD display.

This device is a small, portable ultrasonic range meter using an ATMega328 microcontroller, an ultrasonic module and a 4×20 LCD for ranging distances in meters and inches.

Portable Ultrasonic Range Meter – [Link]

Ultrasonic Atomizer

This reference design is a simple ultrasonic atomizer that helps fight against respiratory diseases. Atomizer is like nebulizer, it is just that nebulizer takes time to deliver liquid to mist. However, both undergo almost the same process. This medical ultrasonic atomizer circuit is composed of power supply circuit, ultrasonic oscillator and atomizer circuit. It specifically uses the TE connectivity’s fuse for overcurrent protection.

The device works when electrical energy is transmitted to piezoelectric transducer within the converter, where it is changed to mechanical vibrations. This ultrasonic vibrations are intensified and focused at the tip where the atomization takes place. The liquid travels through the probe and spreads out and the oscillating tip disintegrates the liquid into micro droplets that forms a low velocity spray.

This simple atomizer is widely used for medical applications. It uses high frequency vibrations to aerosolized the medication into a fine mist. It is commonly used for the treatment of cystic fibrosis, asthma and other respiratory diseases.

Ultrasonic Atomizer – [Link]