Forum: Mikrocontroller und Digitale Elektronik Ultraschall entfernungsmesser BAUEN


von Jackenkoffer (Gast)


Lesenswert?

hallo !!
Ich habe mir so ein paar ultraschallsensoren gekauft und wollte euch 
fragen ob ihr ein paar seiten kennt , wo und wie erklärt wird , wie man 
sich nur aus den sensoren und paar mikrochips ein entfernungsmesser für 
meinen Roboter Bauen lässt  ?!?

Danke für eure  Tipps XD !!

von Jackenkoffer (Gast)


Lesenswert?

BITTTE HELFT MIR !!!!!!
Noch ein paar angaben : ich benutze atmega8-32 AVR controller ., habe 
außreichend grundwissen um einiges in elektronik zu kapieren

von Karl H. (kbuchegg)


Lesenswert?

Jackenkoffer schrieb:
> BITTTE HELFT MIR !!!!!!

Dazu müsste man wissen, was genau du eigentlich eingekauft hast


Ansonsten:
Google "ultraschall entfernungsmesser"
ist doch nicht so schwer.

von sneu (Gast)


Lesenswert?

Ich habe vor einiger Zeit sowas gebaut um den Füllstand in einem 
Regenwassertank zu messen.

Verwendet habe ich dieses Ultraschallmodul:

http://projet.de/produkte-bauteile.html

Soweit ich weiss gibt noch einige ähnliche Module, bei denen war es aber 
nicht möglich das eigentliche Ultraschallmodul wasserdicht 
abzuschliessen, Das war der Grund für das Projet-Modul.

Die Software ist relativ einfach. Das ganze hatte ich mit einem atmega8 
zusammengebaut. Die CPU-Frequenz lag bei 8Mhz. Das Ultraschallmodul ist 
mit dem Datenpin (mittlerer Anschluss) am PB2 angeschlossen.

Wenn die Messung fertig ist wird der Abstand in Millimetern 
zurückgeliefert (mehr oder weniger genau).

Hier ist der Code für die Routine die die Messung macht:
1
volatile uint16_t measure(void){
2
  uint16_t restime = 0;
3
  uint8_t tmp_sreg;
4
  tmp_sreg = SREG;    // Status Register sichern
5
  cli();        // Interrupts global deaktivieren
6
7
  DDRC   |=  (1<<DDC2);  // Port auf Ausgang setzen
8
  PORTC  &=  ~(1<<PC2);  // Port auf Low ziehen
9
  _delay_us(180);      // Pegel kurz auf Low halten
10
  DDRC   &=  ~(1<<DDC2);  // Port auf Eingang schalten
11
  _delay_us(850);      // Noch etwas warten
12
13
  restime = 0;
14
  while(1){      // diese Schleife läuft solange bis der Sensor das Signal wieder auf HIGH-Level zieht
15
16
    _delay_us(4);
17
    asm volatile("NOP");
18
    asm volatile("NOP");
19
    asm volatile("NOP");
20
    asm volatile("NOP");
21
    asm volatile("NOP");
22
    asm volatile("NOP");
23
    asm volatile("NOP");
24
    asm volatile("NOP");
25
    asm volatile("NOP");
26
    asm volatile("NOP");
27
    asm volatile("NOP");
28
    asm volatile("NOP");
29
    
30
    if(!(PINC & (1<<PINC2))){
31
      break;
32
    }
33
    if (restime < 65534){
34
      restime++;
35
    }
36
    else {
37
      break;
38
    }
39
  }
40
  SREG = tmp_sreg;
41
  return restime;
42
}

Das ganze blockiert natürlich während der Messung die CPU.
Das lässt sich sicher alles noch optimieren.

Der Code entstand während ich mich erstmalig mit dem Modul beschäftigt 
habe. Ich hoffe es hilft bei einem ersten Einstieg weiter.
Viel Spass damit.

von Matthias (Gast)


Lesenswert?

Die Kernkomponenten für die Signalaufbereitung von US-Entfernungsmessern 
gibt es fertig in Form des PW0268

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Es gibt auch komplette Module mit TTL-Ausgang (UART/I2C) in Form des 
SRF02. Erhältlich bei www.lipoly.de. Für den Preis ist selberbauen nicht 
nötig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.