- HEMS Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 26

Thema: Laser-Positionsscanner

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Und nun die gesamte Slave-Software:
    (Scanner_106.BAS)

    Scanner (Slave) -Register :
    (ScannerRegister.zip)


    Im Anhang sind die Slave-Register aufgelistet. Die Register 1..9 sind zum Schreiben, die Register 10…19 zum Lesen vorgesehen.
    Wichtig ist das schreiben der Parameter AB und BC (Baken-Abstand) nach einem Reset. Ohne diese Werte kommt nur X=0 und Y=0 zurück.


    Der Master (Roboter) steuert den Scanner (z.B. für Initialisieren) so an:
    - Register 5 (AB) = 480 schreiben 'AB=480cm
    - Register 6 (BC) = 560 schreiben 'BC=560cm
    - Register 1 schreiben 'Initialisieren (Motor ein / Laser ein / Orientieren)

    Code:
    Scanner_Initialisierung:
    call Scanner_readregister(10 , 0)
    
    if Scanner_Status.3 = 0 then
       T_lob = low(ab)                                                              'T_ab>SLAVE
       T_hib = high(ab)
       call Scanner_writeregister(5 , T_lob , T_hib)
       T_lob = low(bc)                                                              'T_bc>SLAVE
       T_hib = high(bc)
       call Scanner_writeregister(6 , T_lob , T_hib)
    end if
     
    if Turm_Status.0 = 0 then
       call Scanner_writeregister(2 , 70 , 0)                                         'Turm Geschw.
       waitms 500                                                                                     ' !!! Sicherheit !!!
       call Scanner_writeregister(3 , 1 , 0)                                           'Laser ein
       call Scanner_writeregister(1 , 0 , 0)                                           'Initialisieren
    end if
    Return
    Nun läuft der Scanner und liefert (hoffentlich) die gewünschten Daten.
    Der Master (Roboter) bekommt die Werte nach dem Handshake (z.B. ATMega256 >PCint an PINK.7):
    Code:
    Isr_pcint2:
    If pink.7 = 1 Then                                                                      
       call Scanner_readregister(10 , 0)                                               'Status
       call Scanner_readregister(11 , 0)                                               'Pos. X
       call Scanner_readregister(12 , 0)                                               'Pos. Y
       call Scanner_readregister(14 , 0)                                               'Winkel2
       call Scanner_readregister(16 , 0)                                               'Baken
       call Scanner_readregister(17 , 0)                                               'Impulse
     
       Winkel_gemessen_ Scanner = Winkel2 / 100
       Pcifr.pcif2 = 1                                                              
    End If
    Return
    Der Master (Roboter) steuert den Scanner (z.B. für AUS) so an:
    Code:
    Scanner _ausschalten:
    Timeout = 0
    do
       call Scanner _writeregister(3 , 0 , 0)                                           ' Scanner -Laser AUS
       call Scanner _writeregister(2 , 0 , 0)                                           ' Scanner -Motor AUS
       call Scanner _readregister(10 , 0)                                                ' Status
       if Timeout > 60 then
          Print  "TIMEOUT Scanner ausschalten !!!"
          Print  " Scanner _status=" ; Scanner _status
          exit do
       end if
    loop until Scanner _status.5 = 0 and Scanner _status.4 = 0
    Return
    ….und wieder EIN:

    Code:
    Scanner _einschalten:
    Timeout = 0
    do
       call Scanner_writeregister(2 , 70 , 0)                                    ' Scanner -Motor EIN
       waitms 500                                                                                                   ' !!! Sicherheit !!!
       call Turm_writeregister(3 , 1 , 0)                                          ' Scanner -Laser EIN
       call Turm_readregister(10 , 0)
       if Timeout > 60 then
          Print  "TIMEOUT Scanner  einschalten !!!"
          Print  " Scanner_status=" ; Scanner_status
          exit do
       end if
    loop until Scanner_status.5 = 1 and Scanner_status.4 = 1
    Return
    Der TWI-Code:

    Code:
    Sub Scanner_writeregister(byval Befehl as Byte , byval Wert_L as Byte , byval Wert_H as Byte )           
       I2cstart
       I2cwbyte Scanner_slaveid                                       'D0
       I2cwbyte Befehl                                                     '1….9
       I2cwbyte Wert_L
       I2cwbyte Wert_H
       I2cstop
    End Sub
    Code:
    Sub Scanner_readregister(byval ScannerRegister as Byte , byval ScannerWert as Byte)
       I2cstart
       I2cwbyte Scanner_slavewrite                                'D0
       I2cwbyte ScannerRegister                                     '10……19
       I2cwbyte ScannerWert                                         'für künftige Erweiterungen
       I2cstop
       I2cstart
       I2cwbyte Scanner_slaveread                                  'D1
       I2crbyte Hib , Ack
       I2crbyte Lob , Nack
       I2cstop
       Select case ScannerRegister
          case 10
             Scanner_Status = Makeint(lob , Hib)
          case 11
             X_gemessen = Makeint(lob , Hib)
          case 12
             Y_gemessen = Makeint(lob , Hib)
          case 13
             Winkel1 = Makeint(lob , Hib)
          case 14
             Winkel2 = Makeint(lob , Hib)
          case 15
             Winkel3 = Makeint(lob , Hib)
          case 16
             Baken = Makeint(lob , Hib)
          case 17
             Baken_Impulse = Makeint(lob , Hib)
       end select
    End Sub
    Ich hoffe, ich habe nichts vergessen...............
    Damit ist das Projekt (vorerst) abgeschlossen und ich wünsche Euch viel Erfolg damit.
    Angehängte Dateien Angehängte Dateien
    mfG
    Willi

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Coole Sache

    Hast/Machst du ein Video?

    mfG
    Philip ;->

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270

    Hast/Machst du ein Video?
    Ich werde es mal versuchen...........
    mfG
    Willi

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Noch ein Tipp zur Plausibilitätskontrolle der Baken als Reflektoren: Wenn es zuviele Reflektoren gibt, dann würde ich sukzessive einfach von der minimal möglichen Sendeleistung ansteigend solange drehen, bis er drei Baken sieht. Sobald man drei hat, wird diese Leistung beibehalten. Wenn man wieder eine verliert, wird wieder gesteigert; wenn er eine Quelle zuviel sieht, wieder bei null anfangen.
    Dieser Algorithmus lässt viel Spielraum für Optimierungen und ist nur austricksbar, indem man Fremdreflektoren in der Nähe oder innerhalb des Spielfeldes platziert.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Das wäre durchaus möglich. Allerdings gibt es ein Problem:
    Es gibt keine Verbindung vom µC (nur Royerconverter) zum Sender. Nur Ein/Aus !
    Es müsste eine neue Konstruktion her............
    mfG
    Willi

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Tja, das wars dann
    Wie wärs mit einem dimmbaren Dunkelfilter vor dem Laser?

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Dimmbarer Dunkelfilter ???
    Was das alles gibt !?
    Aber auch dafür gibt es (momentan) keinen Rückkanal.
    Außerdem reduziert das wohl auch die Empfangssignale der Baken.

    Besser wird es sein den Ort (ermittelten Winkel) der Fremdreflexion auszufiltern. Muss ich mal drüber nachdenken............
    Optimal wird das ganze aber mit aktiven Baken.

    Über den Winter will ich jetzt allerdings mit der "Indoor"-Navigation weitermachen (Wi-Remote IR-Sensor).
    mfG
    Willi

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270

    Idee

    Zitat Zitat von AsuroPhilip Beitrag anzeigen
    Coole Sache

    Hast/Machst du ein Video?

    mfG
    Philip ;->
    Dein Wunsch war mir Befehl !
    Hat allerdings ein wenig länger gedauert weil ich damit nicht so vertraut war (bin).

    In dieser Version habe ich die Erfassung über 3 Umdrehungen gemittelt.
    Das Teminal-Fenster zeigt die Roh-Daten im Scanner und ist leider nicht ganz synchron.

    Dieses Fahrwerk soll dann mal den Rasen mähen.
    Wie man vielleicht erkennen kann > NICHT in ungeordneten Bahnen (Zufallsprinzip).

    Und nun viel Spaß beim "Fernsehen" !



    mfG
    Willi

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    Respekt,

    das sieht echt gut aus

    Bernhard

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Zitat Zitat von Bernhard667 Beitrag anzeigen
    Respekt,

    das sieht echt gut aus

    Bernhard
    Danke.
    Habe das Projekt dieses Jahr noch nicht weiter verfolgt (so viel anderes).
    Es steht noch der Umbau auf aktive Baken aus.

    Hat von Euch jemand davon etwas verwenden können ?
    mfG
    Willi

Ähnliche Themen

  1. 25W Laser
    Von Schottky im Forum Elektronik
    Antworten: 25
    Letzter Beitrag: 05.11.2009, 16:45
  2. Laser Abstandsmessung
    Von filth im Forum Sensoren / Sensorik
    Antworten: 22
    Letzter Beitrag: 02.06.2009, 19:05
  3. Laser?
    Von oratus sum im Forum Sensoren / Sensorik
    Antworten: 28
    Letzter Beitrag: 11.01.2007, 14:26
  4. Laser Sensoren? Abtasten und erkennen mit Laser? Möglich ?
    Von PsychoElvis64 im Forum Sensoren / Sensorik
    Antworten: 16
    Letzter Beitrag: 11.10.2006, 19:29
  5. Laser-Datenübertragung
    Von Murus im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 19
    Letzter Beitrag: 28.01.2006, 21:31

Berechtigungen

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

LiFePO4 Speicher Test