- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 14

Thema: Laser Ortungssystem 1cm Genauigkeit auf 15 m

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260

    Laser Ortungssystem 1cm Genauigkeit auf 15 m

    Liebe Robo-Gemeinde,

    seit etwa 1/2 Jahr gehe ich mit einem Laser-Ortungssystem schwanger. Ich habe es soweit, dass ich auf etwa 15 m den Winkel zu einer Bake auf 0,1 Grad genau bestimmen kann. Letztlich wäre es nur noch ein kleiner Schritt mit dem Aufbau einer 2. Bake die xy-Koordinaten in einem Areal von etwa 10x10 m und einer Wiederholungsrate von etwa 50 Hz auf einen cm genau zu bestimmen. Allerdings kann ich mich nicht aufraffen das Projekt zu Ende zu basteln.

    Sicherlich kommt jetzt der Tip mit DGPS: Einfach die Positionsangaben von 2 GPS subtrahieren. DGPS ist aber bei weitem nicht so einfach. Ich habe noch von keinem funktionierenden DGPS im Forum gelesen. Wegen Interferenzen und Mehrfachausbreitung ist DGPS wohl auch nur auf freiem Feld praktikabel. Kamera und Bildverarbeitung wären eine Alternative, erfordern aber mehr Rechenpower.


    Prinzip:
    Die Bake arbeitet mit einem rotierenden, vertikal aufgefächerten Laserstrahl.
    1. Idee: Ein feststehender Spiegel erzeugt zusätzlich ein Spiegelbild von dem rotierende Laserstrahl. Aus dem Rhythmus der im Detektor eintreffenden Laserstrahlen (direkt und reflektiert) ergibt sich exakt der Winkel zum Spiegel.

    Bild hier  
    Bild hier  

    2. Idee: Im Detektor bilden 2 Photodioden einen Spannungsteiler. Lichtschwankungen, Fremdlicht wird hierdurch weitgehend eliminiert. Die rotierenden Laserstrahlen treffen aber die beiden unmittelbar nebeneinander angeordneten Photodioden nacheinander. D.h. es werden scharfe Impulse von wenigen us Dauer generiert. Über Transistorverstärker, Hochpass geht das Signal in einen Mikrokontroller.

    Bild hier  
    Bild hier  
    Bild hier  
    Bild hier  

    Zum Aufbau:
    Als Bake läst sich wunderbar eine ausrangierte Festplatte verwenden. Je mehr Platten desto besser. Durch die Masse ergibt sich eine konstante Drehgeschwindigkeit, welche natürlich für die Genauigkeit des Systems essentiell ist. Zum Auffächern des Laserstrahls läßt sich gut eine Feinsicherung verwenden.

    Die Ansteuerung des Festplattenmotors erfolgt wie mit einem brushless-Regler. Die Position des Plattenstapels bestimme ich über Markierungen und einen CNY70 (die EMK auszuwerten ist mir viel zu kompliziert). Im Mikrokontroller werden je nach Plattenposition nacheinander die 3 Eingänge des Festplattenmotors über FETs (z.B. von der Festplattenplatine abgebrochen) angesteuert. Damit läßt sich eine konstante Rotationsgeschwindigkeit vorgeben.

    BASIC - Peogramm in einem Atiny zum Ansteuern des Festplattenmotors:

    Code:
    $regfile = "ATTINY2313.dat"
    $crystal = 8000000
    
    Config Pind.6 = Output
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    'Config Pinb.2 = Input
    
    Dim T0 As Word , T1 As Long , T2 As Long , T3 As Long , T4 As Long , T5 As Long , J As Byte , Jj As Long
    
    
    Enable Interrupts
    
    Config Int0 = Rising
    Enable Int0                                                 'enable the interrupt
    
    On Int0 Label0
    
    Config Timer0 = Timer , Prescale = 8
    On Timer0 Timererh
    Enable Timer0
    Start Timer0
    
    
    For J = 1 To 5
      Portb.1 = 0 : Portb.0 = 0 : Portd.6 = 1
      Waitms 20
      Portb.1 = 0 : Portb.0 = 1 : Portd.6 = 0
      Waitms 20
      Portb.1 = 1 : Portb.0 = 0 : Portd.6 = 0
      Waitms 20
    Next
    Xx1:
    
    
    T1 = 100000
    Do
    If T1 > 10000 Then
    
     Stop Timer0
     T4 = T0
     Shift T4 , Left , 8
     T4 = T4 + Tcnt0
     Start Timer0
    
     T4 = T4 + T5
    
     If T4 > T1 Or T4 <= T2 Then
       Portb.1 = 0 : Portb.0 = 0 : Portd.6 = 1
     End If
    
     If T4 > T2 And T4 <= T3 Then
       Portb.1 = 0 : Portb.0 = 1 : Portd.6 = 0
     End If
    
     If T4 > T3 And T4 <= T1 Then
       Portb.1 = 1 : Portb.0 = 0 : Portd.6 = 0
     End If
    
    Else
    
        Portb.1 = 0 : Portb.0 = 0 : Portd.6 = 0
    
    End If
    Loop
    
    
    
    
    Label0:
      Stop Timer0
      T1 = T0 : Shift T1 , Left , 8
      T1 = T1 + Tcnt0 : T0 = 0 : Tcnt0 = 0
      Start Timer0
      T2 = T1 / 3 : T3 = T2 : T3 = 2 * T3
      'T5 = T1 : Shift T5 , Right , 3,                             '/ 100 : T5 = T5 * 15
      T5 = T1 / 100 : T5 = T5 * 15
    Return
    
    
    Timererh:
      Incr T0
    Return


    Als Detektor sind ein Spannungsteiler aus 2 Reihen von Photodioden (4 jeweils parallel) ein 2 stufiger Transistorverstärker und ein Hochpass in einem HF-Gehäuse untergebracht. Am Ausgang geht´s nach einem Hochpass in einen weiteren Transistorverstärker und direkt in den Mikrocontroller. Das Programm misst laufend die Zeitabstände zwischen den Impulsen. Verwertet werden die Impulse dann, wenn die Summe zweiter aufeinanderfolgender Impulsintervalle genau der Rotationsdauer der Bake entspricht. Hierdurch können 1. falsche Impulse eliminiert werden. 2. können Impulse auch richtig 2 Baken zugeordnet werden, wenn diese mit unterschiedlicher Rotationsgeschwindigkeit arbeiten. Rotfilter vor den Photodioden.

    Basic - Programm im Detektor:

    Code:
    $regfile = "m32def.dat"
    $crystal = 4000000
    
    '$regfile = "ATTINY2313.dat"
    '$crystal = 8000000
    
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
    
    Cls
    Config Pind.2 = Input
    
    Dim T1 As Long , T2 As Long , T0 As Word , T3 As Long , T4 As Long , T3a As Long , F1 As Single , F2 As Single
    Dim V(5) As Single , Vv As Single
    
    Enable Interrupts
    
    Config Timer0 = Timer , Prescale = 8
    On Timer0 Timererh
    Enable Timer0
    Start Timer0
    
    
    
    Do
    
    
     Do : Loop Until Pind.2 = 0                       'warten auf 1. Impuls
     Stop Timer0
     T3 = T0:
     Shift T3 , Left , 8
     T3 = T3 + Tcnt0 : T0 = 0 : Tcnt0 = 0       'T3 unwichtig
     Start Timer0                                          'Uhr auf 0 und starten
     Waitms 1
    
     Do : Loop Until Pind.2 = 0                       'warten auf 2. Impuls
     Stop Timer0
     T2 = T0:
     Shift T2 , Left , 8
     T2 = T2 + Tcnt0 : T0 = 0 : Tcnt0 = 0       'T2 erstes Impulsintervall
     Start Timer0                                          'Uhr auf 0 und starten
     Waitms 1
    
     Do : Loop Until Pind.2 = 0                       'warten auf 3. Impuls
     Stop Timer0
     T1 = T0:
     Shift T1 , Left , 8
     T1 = T1 + Tcnt0 : T0 = 0 : Tcnt0 = 0       'T1 zweites Impulsintervall
     Start Timer0
    
      T3 = T1 : T3 = T3 + T2                         'T3=T2+T1 Zeit für 1 Umdrehung
      If T1 > T2 Then                                    'kürzestes Zeitintervall von T1
         T1 = T2                                            'und T2 auswählen. >> T1 ist
      End If                                                  'immer direkt-reflektiert
    
     Locate 1 , 1 : Lcd T3 :
     If T3 > 29200 And T3 < 29500 Then        'Selektion von passenden Werten
                                                                'Mittelwert aus 3 Messungen:
         V(3) = V(2) : V(2) = V(1) : V(1) = T1 / T3 : V(1) = V(1) * 120
         Vv = V(1) : Vv = Vv + V(2) : Vv = Vv + V(3)        
          Locate 2 , 1 : Lcd Vv:
      End If
    Xx1:
    Loop
    
    
    Timererh:
    Incr T0
    Return
    Video: Der Detektor befindet sich in etwa 15 m Abstand von der Bake. Die Anzeige in der unteren Zeile gibt Grad zum Spiegel der Bake an. Sie schwankt um etwa 0,1 Grad. Verschiebt man den Detektor ändert sich die Positionsangabe.
    [stream:fe8a376a4f]http://www.rasenrobo.de/bake/IMGP2168.avi[/stream:fe8a376a4f]
    [stream:fe8a376a4f]http://www.rasenrobo.de/bake/IMGP2169.avi[/stream:fe8a376a4f]

    oder youTube
    http://www.youtube.com/watch?v=1T4V-J581R4
    http://www.youtube.com/watch?v=K84CkFU-zxY


    Verbesserungsmöglichkeiten:
    Bake: Der Laser wird nicht seitlich, sondern genau über der Nabe der Festplatte angebracht. Ein mm-großer Spiegel sollte dann ausreichend sein. Der feststehende Spiegel kann dann näher am rotierenden angebracht werden. Der tote Winkel durch Verdeckung des Speigelbildes könnte dadurch verringert werden.
    Mit welcher Anordnung des feststehenden Spiegels könnte man diesen toten Winkel ganz vermeiden?

    Wer kann den Verstärker im Detektor verbessern ? Ich bin Elektroniklaie. Wichtig ist ein Ansprechen im us-Bereich.

    Zahlenbeispiel: Breite der Photodioden 5mm. 10 m Abstand >>> Kreisumfang 63 m >>> 1:10000. Bei 50 Hz ergibt das eine Impulsbreite von 1:500000 sec = 2 Mikrosekunden. Daraus ergibt sich auch, dass mit üblichen frequenzkodierten IR sender und Detektoren eine ähnliche Genauigkeit und Auflösung nicht erreicht werden kann.

    Nu, was haltet Ihr von der Sache ?

    Christian H
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken imgp2163.jpg   imgp2162.jpg   detektor.jpg   imgp2134.jpg   bake_berechnung.jpg  


Berechtigungen

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

Labornetzteil AliExpress