- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: Ultraschallsensoren Messung zu langsam?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.06.2008
    Beiträge
    10

    Ultraschallsensoren Messung zu langsam?

    Hi

    Also erstmal zur hardware.
    Altes RC auto mit 2 motoren
    Orangutan SV-328 Bord
    Ultraschall SRF02

    Funst auch alles recht gut der code selbst macht was er soll bis darauf das der abstand wo das auto bremst immer unterschiedlich ist. schätze mal das es an meinem code ligt und daran wan er messen tut aber ich weis nicht wie ich es verbessern soll. ist mein erster roboter.

    Die derzeitige funktion ist halt Wen nix im weg ist langsam beschleunigen und wen ein gegenstand im weg ist bremsen. ist der gegenstand wieder weg wieder langsam anfahren.

    ps. ja die motoren werden unterschiedlich angesteuert da der eine woll ein knacks weg hat und nicht die selbe leistung bringt. so wie er jetzt ist fahrt er gerade aus ungefäht

    So hier noch der code ich hoffe ich könnt mir helfen was zu verbessern.

    Code:
    $prog &HFF , &HF6 , &HD9 , &HFC                             'Standard Fusebits für  Orangutan SV-328
    
    'Die üblichen Definitionen bei Standardprogrammen für Orangutan B-328
    $regfile = "m328pdef.dat"
    $crystal = 20000000                                         'Quarzfrequenz
    $hwstack = 32
    $framesize = 64
    $swstack = 32
    ' ------ Anwendungsspezifische Configurationen ---------
    
    
    
    
    Declare Function Srf02_firmware(byval Slaveid As Byte) As Byte
    Declare Function Srf02_entfernung(byval Slaveid As Byte) As Integer
    Declare Sub Anhalten()
    Declare Sub Ruckwarts()
    
    'Ports benennen
    Motor1a Alias Portd.6
    Motor1b Alias Portd.5
    Motor2a Alias Portd.3
    Motor2b Alias Portb.3
    
    Config Pind.1 = Output
    Config Pinb.3 = Output
    Config Pind.3 = Output
    Config Pind.5 = Output
    Config Pind.6 = Output
    
    Config Scl = Portd.2                                        'Gelb    Ports fuer IIC-Bus
    Config Sda = Portd.0                                        'Lila
    
    Config Pind.1 = Output
    Red_led Alias Portd.1
    
    Const Srf02_slaveid = &HE0                                  'Standard I2C Adresse von SRF02
    
    
    'Variablen
    Dim I As Integer
    Dim A As Integer
    
    
    Dim Entfernung As Integer
    Dim V As Byte
    Dim X As Byte
    
    ' PWM Register setzen
    ' see the ATmega48/168/328P datasheet for detailed register info
    ' configure for inverted PWM output on motor control pins
    Tccr0a = &HF3
    Tccr2a = &HF3
    ' use the system clock / 8 (2.5 MHz) as the timer clock
    Tccr0b = &H02
    Tccr2b = &H02
    
    Main:
    
       Wait 3                                                   'Warte 3 Sekunden
       I2cinit
       V = 1
       I = 0
       A = 0
       Do
    
       Do
    
       Entfernung = Srf02_entfernung(srf02_slaveid)
       If Entfernung >= 40 Then
    
             Ocr2a = 0                                          'Links
             Ocr2b = I                                          'Links
             Ocr0a = A                                          'Rechts
             Ocr0b = 0                                          'Rechts
          Else
             Anhalten
    
       End If
        Waitms 500
          If I < 50 Then
             I = I + 5
             A = A + 6
          End If
       Loop Until I > 50
       Loop
    
    
    
    End
    
    
    
    '------------- Hilfsfunktionen für SRF02 ----------
    
    
    Function Srf02_firmware(byval Slaveid As Byte) As Byte
    Local Firmware As Byte
    Local Slaveid_read As Byte
    
       Slaveid_read = Slaveid + 1
    
       I2cstart
       I2cwbyte Slaveid
       I2cwbyte 0                                               'Leseregister festlegen
       I2cstop
    
       I2cstart
       I2cwbyte Slaveid_read
       I2crbyte Firmware , Nack
       I2cstop
    
       Srf02_firmware = Firmware
    End Function
    
    
    
    Function Srf02_entfernung(byval Slaveid As Byte) As Integer
    Local Lob As Byte
    Local Hib As Byte
    Local Firmware As Byte
    Local Temp As Byte
    Local Slaveid_read As Byte
    
       Slaveid_read = Slaveid + 1
    
       'Messvorgang in starten
       I2cstart
       I2cwbyte Slaveid
       I2cwbyte 0
       I2cwbyte 81                                              'in Zentimetern messen
       I2cstop
    
    
    Warteaufmessung:
       Waitms 1
       Firmware = Srf02_firmware(slaveid)
       If Firmware = 255 Then Goto Warteaufmessung
    
       I2cstart
       I2cwbyte Slaveid
       I2cwbyte 2                                               'Leseregister festlegen
       I2cstop
    
    
       I2cstart
       I2cwbyte Slaveid_read
       I2crbyte Hib , Ack
       I2crbyte Lob , Nack
       I2cstop
    
    
       Srf02_entfernung = Makeint(lob , Hib)
    End Function
    
    
    Sub Anhalten()
        I = 0
        A = 0
    
        Ocr2a = 0                                               'Links
        Ocr2b = 0                                               'Links
        Ocr0a = 0                                               'Rechts
        Ocr0b = 0                                               'Rechts
    
    End Sub
    
    Sub Ruckwarts()
    
       I = 0
       A = 0
       Do
        Ocr2a = I                                               'Links
        Ocr2b = 0                                               'Links
        Ocr0a = 0                                               'Rechts
        Ocr0b = A                                               'Rechts
    
        Waitms 500
         I = I + 5
         A = A + 8
       Loop Until I > 70
    
    
    End Sub
    Geändert von Manf (21.05.2012 um 21:03 Uhr) Grund: Code Window

Ähnliche Themen

  1. Bereich von Ultraschallsensoren
    Von Corono im Forum Sensoren / Sensorik
    Antworten: 12
    Letzter Beitrag: 16.09.2010, 11:17
  2. unbekannte Ultraschallsensoren
    Von TrainMen im Forum Robby RP6
    Antworten: 16
    Letzter Beitrag: 24.07.2009, 23:11
  3. Auslesen von Ultraschallsensoren
    Von be-asuro-cc im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 29.01.2007, 11:19
  4. Ultraschallsensoren
    Von Predater im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 03.01.2007, 21:58
  5. Problem mit Ultraschallsensoren
    Von doolitle15 im Forum Sensoren / Sensorik
    Antworten: 14
    Letzter Beitrag: 08.05.2005, 11:38

Berechtigungen

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

Solar Speicher und Akkus Tests