- 12V Akku mit 280 Ah bauen         
Ergebnis 41 bis 50 von 92

Thema: Abstandsmessung ähnlich wie IR-Schnittstelle des asuro

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo Kongressteilnehmer und natürlich auch alle anderen.

    @oberallgeier
    Du schriebst, dass du das Abstand wahren im Moment nicht als erste Prio siehst. Deshalb hatte ich mich mal daran gemacht dem IR-Licht zumindest Softwareseitig auf die Sprünge zu helfen.

    Im Anhang habe ich das Ergebnis beigelegt.
    Im übrigen habe ich das ganze CIR getauft. Soll Chirpende IR-messung heißen.

    - Gemessen wird kontinuierlich im Hintergrund über den Timerinterrupt.
    ---> Keine zeitkritischen Funktionen im Hauptprogramm.
    ---> Kontinuierliche Entfernungsinformation vorhanden.

    - Die Messung wird mit der oben angegebenen Iterationsmethode gemacht.
    ---> Über ein define einstellbare Bitanzahl für das Ergebnis.
    ---> Konstante Zeit zum Ermitteln der Entfernung.
    ---> Die Messzeit ist somit unabhängig von der Entfernung.

    - CIR kann über Funktionen gestartet und gestoppt werden.
    ---> Während CIR läuft, funktioniert die IR-Datenübertragung nicht.
    ---> Nach dem Stoppen vom CIR können Daten wieder übertragen werden.

    - CIR kann mit 4 Defines in cir.h konfiguriert werden.
    ---> Ausführliche Beschreibung in der Datei
    -----> Anzahl Pulse am IR-Sender (Pflicht bei der Harware)
    -----> Anzahl Iterationen pro Messung (Bitanzahl für das Nettoergebnis)
    -----> Anzahl Messungen bei ungeänderter Lichtleistung (Messgenauigkeit)
    -----> Anzahl Messwerte, die als 'Ausrutscher' betrachtet werden. (Messfehler)

    ---- Funktionen:
    ====> CirIsr()
    Muss vom Timerinterrupt SIGNAL (SIG_OVERFLOW2) in asuro.c aufgerufen werden.
    ====> CirStart()
    Start der Messungen. Datenübertragung ist tot
    ====> CirStop()
    Na was wohl.
    ====> unsigned char variable = CirRead()
    Hiermit holt das Hauptprogramm den Nettoentfernungswert.


    Wichtiger Hinweis zum test.c main()-Teil. (Beschreibung im Source)
    In der Asuro-LIB Version 2.80 kann eine Funktion in den Timerinterrupt 'eingehängt' werden. Dann ist es nicht mehr nötig die Lib zu editieren und neu zu übersetzten.
    Wenn noch eine alte Lib bzw. der Source von der CD benutzt wird, wird in test.c beschrieben was zu tun ist.


    Zu meinen mit dem Testprogramm erfolgten Messungen:
    - Ohne mehrfache Messung bei gleicher Lichtleistung ist kein vernünftiges Ergebnis zu erwarten. Unterhalb von 5 Wiederholungen ist die Wiederholgenauigkeit einer Messung eher zufällig.
    - Nur bis zu einer gewissen Anzahl an Wiederholungen mit gleicher Lichtleistung wird das Messergebnis besser. Ab ca. 30 Wiederholungen ist keine Verbesserung mehr zu finden.
    - Sowohl im Nahbereich bis 10 cm, als auch ab ca. 100 cm ist der Messfehler relativ hoch.

    Die Messgeschwindigkeit mit den aktuell in cir.h angegeben Werten beträgt 10 ms. ---> Das sind 100 Messungen pro Sekunde. Bei vollem Speed vom Asuro mit ca. 50 cm/Sekunde ist also ein Entfernungswert alle 5 mm vorhanden. Diese Genauigkeit liefert das CIR-System absolut nicht.

    So, genug erzählt. Probiert es aus oder lasst es sein
    Gruß Sternthaler
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken cir-daten.jpg  
    Angehängte Dateien Angehängte Dateien
    Lieber Asuro programieren als arbeiten gehen.

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress