- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 343

Thema: .: Vinculum :. - Hexabot

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.12.2008
    Ort
    Essen
    Alter
    66
    Beiträge
    358
    Hallo Hanno!

    Was stellst Du mit dem Polaroid Sensor an, bzw. was willst und kannst Du damit auswerten?
    Soll der gesamte Kopf sich dauernd drehen oder wie ist da deine Planung?

    MfG
    Robotik & Arduino Homepage
    http://www.ardumega.de

  2. #2
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Mit dem Polaroid wollte ich eigentlich die weit entfernten Hindernisse erkennen, um daraus die Route die der Roboter nehmen soll zu ermitteln. Die anderen Sensoren sind mehr für den Nahbereich, also das Umfeld um den Roboter. Der Kopf wird sich nur drehen um die Umgebung zu vermessen, wärend der Schritte bleibt er in Position.

  3. #3
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Heute habe ich versucht den Stromsensor LTC2945 auszulesen und lange zeit habe ich keine Werte bekommen. Leider ist mein I2C adapter nicht in der Lage spezifische Register auszulesen, so dass ich immer nur von 0 bis 32 auslesen kann. Hat ein bisschen gedauert die Werte den Richtigen Messungen zuzuordnen. Jetzt muss ich nur noch die Umrechnung der realen werte zu den Hexwerten machen.

  4. #4
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Eine Frage an alle die sich mit Matlab auskennen.

    Ich möchte gerne die Sensorwerte grafisch darstellen. Am liebsten in einem Plot in dem die neuen Werte eingetragen werden und der dabei von links nach rechts wandert. So dass immer die letzten 10 Messwerte zu sehen sind. So sollte es später aussehen:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Test Sensor.jpg
Hits:	21
Größe:	30,8 KB
ID:	27837
    Im Moment kann ich über Matlab meinen USB Adapter ansteuern, die Register der Sensoren auslesen, zerlegen und die Messwerte in einer Variablen speichern.
    Auch die UI aufzubauen ist kein Problem, nur bisher klappt es mit der Darstellung im Plot nicht. Vermutlich muss ich die Werte irgendwo in einem Register zwischenspeichern. Hat jemand sowas schon mal programmiert oder eine gute Referenz dafür?

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hallo Hanno!

    Ich mach sowas auf die schnelle Tour in MATLAB meistens folgendermaßen:

    Code:
    function irgendeinName
        ser = serial('COM14', 'BaudRate', 9600, 'DataBits', 8, 'Parity', 'none', 'StopBits', 1, ...
        'ReadAsyncMode', 'continuous', 'InputBufferSize', 64, 'OutputBufferSize', 64, ...
        'Terminator' , 'CR/LF', 'BytesAvailableFcnMode', 'Terminator', 'BytesAvailableFcn', @bav);
    
        vals = zeros(500, 1);
        h1 = plot(vals);
        set(h1, 'YDataSource', 'vals')
        
        fopen(ser); 
        
        function bav(obj, ~)
            dat = str2num(fgetl(obj));       
            vals(2:500) = vals(1:499);
            vals(1) = dat;
            refreshdata(h1, 'caller')
        end
        
    end
    Vielleicht "inspiriert" es dich etwas ...

    Gruß
    Malte

  6. #6
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Inspirierend schon, aber ich muss gestehen ich versteh es nicht was du machst.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Moin!

    Wo genau klemmt's denn? Also das Grundprinzip ist folgendes: Mit
    Code:
     ser = serial('COM14', 'BaudRate', 9600, 'DataBits', 8, 'Parity', 'none', 'StopBits', 1, ...
        'ReadAsyncMode', 'continuous', 'InputBufferSize', 64, 'OutputBufferSize', 64, ...
        'Terminator' , 'CR/LF', 'BytesAvailableFcnMode', 'Terminator', 'BytesAvailableFcn', @bav);
    wird ein serial-Objekt erzeugt, also eine Möglichkeit zum Senden oder Empfangen über die serielle Schnittstelle geschaffen. Im Beispiel ist es eben die COM14, die verwendet wird. Wenn du konkret eine andere "Datenquelle" hast - vermutlich nichtmal einen COM Port - musst du das natürlich entsprechend anpassen/ändern. So wie das Objekt erzeugt wird, triggert es einen sogenannten Callback, wenn immer im Datenstrom ein 'CR/LF' auftaucht. Der Callback heißt in diesem Falle bav (bytes available), ich übergebe dem serial-Objekt das Funktionshandle @bav der Funktion bav. Klingt vielleicht erstmal kompliziert, ist es überhaupt nicht. Was passiert ist einfach, dass die folgende Funktion bav immer aufgerufen wird, sobald Daten seriell angekommen sind (terminiert durch 'CR/LF')

    Code:
        function bav(obj, ~)
            dat = str2num(fgetl(obj));       
            vals(2:500) = vals(1:499);
            vals(1) = dat;
            refreshdata(h1, 'caller')
        end
    die Zeile "dat = str2num(fgetl(obj));" holt nun die ASCII Daten und wandelt sie in einen numerischen Typ um (double), die Daten stehen dann in dat. Die von dir angefragte Animation ist jetzt ganz simpel gemacht. 500 Datenpunkte stehen im Vektor "vals" (der Vektor wird mit 500 Nullen initialisiert), die ersten 499 Werte werden im Vektor um eine Stelle nach hinten geschoben "vals(2:500) = vals(1:499);" und an die erste Stelle der neue Wert geschrieben "vals(1) = dat;". Der Clou beim Plotten ist jetzt, dass für den Plot "h1 = plot(vals);" mittels "set(h1, 'YDataSource', 'vals')" als Datenquelle für die y-Werte der Vektor "vals" angegeben wurde. Das hat zur Folge, dass wann immer "refreshdata(h1, 'caller')" anufgerufen wird, die Daten im Diagramm upgedatet werden. Das hat den Effekt, dass mit jedem Eintreffen eines neuen Datums über die Schnittstelle der Graph um eine Stelle verschoben wird. Bei einem kontinuierlichen Datenstrom führt das natürlich dazu, dass der Graph quasi durchs Diagramm scrollt, links immer der aktuellste Wert. Die Daten als ASCII zu empfangen ist natürlich nicht sehr elegant, bei niedrigen Datenraten funktioniert das aber eben sehr einfach. Vermutlich ist genau der Teil aber auch eh anders bei dir, ich wollte nur eine einfache Varinate zeigen, um das Scrollen zu bewerkstelligen.

    Gruß
    Malte

  8. #8
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Im Prinzip habe ich die Funktion ja schon, das einzige was ich nicht schaffe ist in der UI die x Achse zu verlänger. Soll heißen im Moment wird 5; 5.5; 6; 6,5; 7 angezeigt. Da ich nur zu allen vollen Zahlen einen neuen Wert abspeichere wird nur das x bei 6 angezeigt, denn 5 liegt genau auf der Achse und 7 ist noch nicht gemessen

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Ich weiß nicht genau ob ich dich verstehe. Grundsätzlich ist es eine gute Lösung alle Datenpunkte die du darstellen willst in einen Vektor zu nehmen und den dann zu plotten - und wenn sich das Dargestellte änderen soll eben den Vektor als Datenquelle zu ändern und ihn dann nach jeder Änderung neu zu plotten. Für das "neu plotten" bietet Matlab mit "DataSource" eine ganz elegante Lösung, das ist die Idee bei meinem Beispiel oben.

    Du kannst auch mit "hold on" dafür sorgen, dass die Datenpunkte des vormaligen Plottens erhalten bleiben. Dann müsstest du aber mit plot(x,y) plotten und x jeweils inkrementieren. Dann wird deine x-Achse aber einfach immer länger und es scrollt nicht.

Ähnliche Themen

  1. CFK Hexabot
    Von MichaF im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 19.08.2010, 22:03
  2. atmega und Vinculum
    Von elcomportal im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 27.05.2008, 22:47
  3. hexabot
    Von patrickgera im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 11
    Letzter Beitrag: 29.04.2008, 22:09
  4. LVProg - Linux Vinculum (USB Hostcontroller) Programmer
    Von Surveyor im Forum Open Source Software Projekte
    Antworten: 0
    Letzter Beitrag: 01.11.2007, 03:08
  5. Hexabot
    Von Derboss im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 36
    Letzter Beitrag: 22.09.2007, 11:32

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress