Instructables

Ultrasonic Range Finder with an ATtiny85 (With Shield)

Featured
I’m here to show you how to use a HC-SR04 Ultrasonic Range Finder with an ATtiny85 as well as programming the ATtiny85 using the wonderful shield that randofo created.

List of materials:
ATtiny85 Programming Library
Arduino Uno
HC-SR04 Ultrasonic Range Finder and Library
Jumper Wires
Breadboard
ATtiny85
 
Remove these adsRemove these ads by Signing Up

Step 1: Program the Arduino

Picture of Program the Arduino
ISP.png
Before you connect your shield to the Arduino Uno, you’ll want to make sure you’ve put your Arduino Uno into it’s ISP mode, to do this load up your Arduino IDE and once it’s loaded go to File > Examples > ArduinoISP, now connect your Arduino up to your PC and upload the ISP sketch.

Step 2: Connect The Shield

Picture of Connect The Shield
03.JPG
04.JPG
Take your Arduino Uno and clip the shield in place, then take your ATtiny85 IC and put it in the correct way into the DIP-8 Socket on the shield.

Step 3: Program the ATtiny85

Picture of Program the ATtiny85
05.JPG
Now that you’ve put the Arduino into its Programming state, and connected the shield, it’s time to program the ATtiny85 chip, now I’ll show you how to make the LED on the board blink.

Go to this link and follow those instructions to get the core library for ATtiny’s loaded into the Arduino IDE, Once you’ve done that then copy the code below into the IDE and upload it (Once you’ve selected the correct board.)

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(0, OUTPUT);     
}

void loop() {
  digitalWrite(0, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(0, LOW);    // set the LED off
  delay(1000);              // wait for a second
}
gazmono3 months ago

I am working on a project which requires that a very powerful bulb gets brighter as a person aproaches it.

How could I modify this to give an output voltage which increases in a linear fashion from 0 to 10 volts?

There are many projects on instructables and elsewhere that either use the distance information to output to a digital display or light up a few leds in steps as with car reverse sensors, but I have not found anything which will give a continous analogue output voltage neccessary to operate a lighting dimmer. Can anyone point me in the right direction?

That sounds like a cool project. One way to do that would be to store values for max distance and min distance. A digital to analog output could control the light. If the subject(Range) is at max distance(maxDist), the analog value would be set to 0(0 volts), and if he's at min distance(minDist) it would be set to 255 (5 volts). Assuming the analog resolution is 8 bits. Your formula could be:

AnalogOut = ((1 - (Range - minDist) / (maxDist - minDist)) * 255)

if (Range < minDist) AnalogOut = 255

You need an amplifier circuit with a gain of 2 so you can get the voltage from the 5 volts max from the analog pin to 10 volts. It would need to source enough current for the light.

In a nutshell you calculate where the subject is within min and max and get that percentage. Subtract from 1 because 0 range is 100%. Multiply by 255 to scale it to the DAC, send it out the DAC, then amplify the output.

If you don't have a DAC I bet you could use pulse width modulation and smooth it with a low pass filter. Heck you don't even need to smooth it or use an amplifier circuit if you use a mosfet or solid state relay triggered by the 5v with a 10v supply(or whatever your light requires) across the load rails of the mosfet or SSR. I'd use PWM and try to find a mosfet that works. And probably an IR light and sensor rather than the ultrasonic sensor for a wider radius but IDK.

I hope this isn't overwhelming but it's something you can work with. Have fun with it.
yllumi2 months ago

Great tutorial! But I missed the HC-SR0R Library, the link is broken. Would you like to update it? I can't find the suitable library for this project. Thanks.

billbillt2 years ago
This is cool...I like your DOOM avatar...
PyroMonger3 years ago
where can i purchase jumper wires like the ones shown??? Ive been looking for sooo long. Thanks in advance
Dealextreme has them as well. good quality and very cheap
http://www.dealextreme.com/p/breadboard-jumper-wires-for-electronic-diy-70-cable-pack-80208
Dominion-Network (author)  PyroMonger3 years ago
Sparkfun.com will have jumper wires, the ones I'm using are from Earthshine Electronics
fzbw9br3 years ago
what does this contraption do?
Dominion-Network (author)  fzbw9br3 years ago
Well the base of this project is for you to do something when an object or something else gets within a certain range, other than that it's only limited by your imagination and I/O pins
Could you suggest something that I can put behind my car to give warning when I am reserve driving
I wrote a short program that uses if_then_else statements to determine and energize one of three LEDs (green, yellow, red) depending on the distance and installed it on the back of my motorhome. Works great. I even ended up using an RGB (3n1)led to minimize the footprint. I used inches and the light stays green until 3ft then goes to blinking yellow until distance is less than 2ft. THEN red. One NOTE: the HC-SR04 is voltage sensitive and must not exceed the rated 5vcc. Unlike the arduino that can handle some variations. Its and expensive lesson.
Dominion-Network (author)  AlphaRomeo3 years ago
some autobody shops sell ultrasonic parking guides, I'd advise you go check those out, I'm not sure that this could do the job.
Anphib fzbw9br3 years ago
A useful application would be in the drone community or other RC flying platforms.
bcraun3 years ago
Adafruit.com also has them. They have both male: https://www.adafruit.com/products/153 and female: https://www.adafruit.com/products/266.