- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 12

Thema: Ultraschallsensor - Anfänger

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.09.2011
    Beiträge
    21
    Danke fürs Absegnen und den Tipp mit dem Wiederstand!

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    Aber mit dem code blockierst du während der Messung den ganzen avr, besser währe eine messung mittels timer (und icp)

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Aber mit dem code blockierst du während der Messung den ganzen avr, besser währe eine messung mittels timer (und icp)
    Dein Einwand ist durchaus berechtigt. Aber um einzusteigen und dem Sensor überhaupt einmal einen Abstandswert zu entlocken, finde ich das durchaus praktikabel mit Polling. Wenn die Anwendung nicht zeitkritisch ist, kann man das notfalls auch so lassen.
    Mit Timer ist es natürlich um einiges eleganter
    Grüße, Bernhard

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Beim Senden wird man in der Regel etwa mehr als 1 Puls senden müssen. Also das Abwechselnd high und low einige male wiederholen. So schlecht ist das mit dem Pollen nicht: bis der Puls zurück ist dauert es maximal etwa 30 ms ( 5 m Abstand), das ist nicht besonders lang.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Beim Senden wird man in der Regel etwa mehr als 1 Puls senden müssen. Also das Abwechselnd high und low einige male wiederholen. So schlecht ist das mit dem Pollen nicht: bis der Puls zurück ist dauert es maximal etwa 30 ms ( 5 m Abstand), das ist nicht besonders lang.
    Also bei mir hat es gereicht, einen Puls zu senden. Allerdings hab ich am Sensor noch einen Pull-up/down(weiß nicht mehr?) Widerstand gebraucht, weil der Anschluss ja kurzzeitig hochohmig ist wenn der Mikrocontroller auf Eingang schaltet und der Sensor den Anschluss noch nicht "übernommen" hat.
    Nach einer Messung sollte man auch noch eine kurze Zeit warten, damit das Echo verhallt. Vor allem wenn mehrere solcher Sensoren verwendet werden, muss man darauf achten, da es sonst zu Fehlmessungen kommen kann.
    Grüße,
    Bernhard

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    28.09.2011
    Beiträge
    21
    Also zeitkritisch ist es vorerst nicht.
    Könnte aber irgendwann mal so eingesetzt werden. Wie soll das also mit TIMER gehen? Wäre nett wenn jemand 3 Zeilen Code schreibt oder link zu nem Beispiel.
    Danke schon mal!!!

  7. #7
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    Zitat Zitat von Codingboy Beitrag anzeigen
    Also zeitkritisch ist es vorerst nicht.
    Könnte aber irgendwann mal so eingesetzt werden. Wie soll das also mit TIMER gehen? Wäre nett wenn jemand 3 Zeilen Code schreibt oder link zu nem Beispiel.
    Danke schon mal!!!
    Bitte

    Auf drei Zeilen gehts sich zwar nicht ganz aus aber ich hab noch code für einen hc-sr04 (nachbau des SRF-04) herumfliegen gehabt. Das ganze ist für einen atmega32 mit 16MHz ausgelegt, wenn du einen andere Taktfrequenz hast musst du evt den Prescaler und die Rechnung anpassen...

    Code:
    /******
    01082011
    atmega32@16MHZ
    ******/
    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    #include <stdlib.h>
    
    #include <lcd.h> 
    #include <lib_main.h> 
    #include <taster.h>
    
    
    volatile uint16_t timestamp_last = 0;
    volatile uint16_t zeit = 0;
    
    void trig(void)
    {
      PORTC |= (1<<PC5);//Trig high
      _delay_us(12);
      PORTC &= ~(1<<PC5);//TRIG auf low
    }
    
    
    
    ISR(TIMER1_CAPT_vect)
    {
      //Wenn steigende Flanke
      if(TCCR1B & (1<<ICES1))
      {
        //Flankenerkennung auf fallend
        TCCR1B ^= (1<<ICES1);
        //aktuelen timer-wert speichern
        timestamp_last = ICR1;
      }
      //fallende Flanke
      else
      {
        //Flankenerkennung auf steigend
        TCCR1B ^= (1<<ICES1);
        //Laufzeit = aktueller timerwert - vorheriger timerwert
        zeit = ICR1 - timestamp_last;
      }
      
    }
    
    
    int main(void)
    {
      DDRC |= (1 << PC5);//Trig als Ausgang
      PORTC &= ~(1<<PC5);//TRIG auf low
      
      DDRD &= ~(1<<PD6);//Echo als Eingang
      PORTD &= ~(1<<PD6);//ECHO pullup AUS
    
      lcd_init(LCD_DISP_ON);
      
      lcd_puts("US Test");
      lcd_gotoxy(0,1);
      
      //Timer konfigurieren
      TCCR1A = 0;                      // normal mode, keine PWM Ausgänge
      //Noise Canceler aktivieren, Flankenerkennung auf steigende, Prescaler auf 64
      TCCR1B |= (1<<ICNC1) |       (1<<ICES1) |                     (1<<CS11) |(1<<CS10);
      
      //ICP Interrupt aktivieren
      TIMSK |= (1<<TICIE1);
      
      //Globale Interrupts aktivieren
      sei();
      while(1)
      {
        //Entfernung aus Laufzeit berechnen
        zeit = (zeit*4)/58;
        
        lcd_puts("                 ");
        lcd_gotoxy(0,1);
        lcd_put_uint16(zeit);
        lcd_gotoxy(0,1);
        //Messung auslösen
        trig();
        _delay_ms(50);
      }
       
       return 0;
    }
    Geändert von Chypsylon (12.04.2015 um 22:13 Uhr)

Ähnliche Themen

  1. Ultraschallsensor
    Von RoboNull im Forum Robby RP6
    Antworten: 64
    Letzter Beitrag: 08.07.2011, 11:22
  2. i2c mit ultraschallsensor
    Von tranh85bo im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 08.10.2009, 10:37
  3. Ultraschallsensor
    Von Laren im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 18.01.2008, 17:26
  4. CRP5: meine Erweiterung (vom Anfänger für Anfänger)
    Von loewenzahn im Forum Robby CCRP5
    Antworten: 11
    Letzter Beitrag: 21.03.2007, 18:37
  5. Anfänger: welches modul sollte man als anfänger nehmen???
    Von patti16 im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 04.01.2005, 08:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress