Datenauswertung Inkrementalgeber

Gast #2618794
Hallo,
folgendes Problem:

Ich habe einen Inkrementalgeber, der über ein Arduino Board mit einem 
ATMEL ATMEGA328 Impulse für eine Bewegung hoch bzw. runter zählt. Dabei 
sollen Hin- und Her- Bewegungen über die Zeit als Messdaten 
aufgezeichnet werden.
Als Zeitstempel wird der interne Wert des zur Zeit laufenden Prozessors 
verwendet.

Die Echtzeitausgabe der Werte über die serielle Schnittstelle ist 
anscheinend zu langsam, sodass die Abtastung nicht mehr schnell genug 
läuft und Signale verloren gehen.

Nun wäre es hilfreich, zum Beispiel 1000 Schritte in ein Array 
aufzunehmen, also in einer Art Aufzeichnungsphase, der Geber wird dabei 
bewegt, anschließend wäre die Aufzeichnungsphase vorbei und das Array 
wird dann über die seriellle Schnittstelle ausgegeben. Diese Lösung 
funktioniert bereits, allerdings begrenzt der Speicher des Mega328 das 
ganze erheblich, sodass nur 400 Werte gespeichert werden können 
innerhalb eines Arrays.
Hat jemand eine Idee, das ganze irgendwie anders zu machen, also die 
Werte irgendwie zu speichern oder ausgeben zu können, ohne die 
eigentliche Abtastung des SIgnals dabei zu stören?

Bin für jeden Tipp dankbar!
Gast #2618812
So richtig schlau werde ich aus Deinen Angaben nicht.

Möchtest Du jeden Impuls mit einem Zeitstempel versehen oder möchtest Du 
die jeweilige Position z.B. einmal pro Millisekunde ermitteln?
Gast #2618823
Habe mich präzise genug formuliert. Also an einem Rad wird per Hand 
gedreht, und zu jedem daraufhin erzeugten Impuls soll eine Zeit mit 
gepsiechert werden.
Beispiel:
Ich drehe 5 Schritte nach vorne, Zähler zählt 5 Schritte nach vorne, und 
speichert zu jedem Wert die jeweilge aktuelle Zeit. Diese entnehme ich 
einfach aus der Laufzeit des Mikrocontrollers seit Programmstart (dafür 
ausreichend). Es geht darum, die Daten anschließend als Kurve Schritte 
über der Zeit aufzutragen.
Gast #2618837
Wenn Du mit der Standard-Baudrate 115,200 kBaud sendest, dann kannst Du 
ca. alle 0,1 Millisekunden ein Ereignis übertragen. Das sollte bei einer 
Handverstellung ausreichen.
#2618883
@  testuser (Gast)

>Die Echtzeitausgabe der Werte über die serielle Schnittstelle ist
>anscheinend zu langsam, sodass die Abtastung nicht mehr schnell genug
>läuft und Signale verloren gehen.

Kann passieren.

>Hat jemand eine Idee, das ganze irgendwie anders zu machen, also die
>Werte irgendwie zu speichern oder ausgeben zu können, ohne die
>eigentliche Abtastung des SIgnals dabei zu stören?

Mit einem FIFO, der muss nur kurze Burst von Daten puffern. 
Sinnvollerweise puffert man nur die kurzen Zeitstempel + 
Richtungsinformation, den String für den UART baut man hinter dem FIFO 
zusammen, das spart massiv Speicher.

MfG
Falk
Gast #2618994
Vielen Dank für eure Antworten.

Ich habe jetzt für die genaue Abtastung einen Timer - Interrupt 
verwendet und außerdem die Übertragung bei der Ausgabe auf 115,200 kBaud 
gestellt (habe es die ganze Zeit auf 9600 kBaud betrieben, einfach nicht 
daran gedacht) Danke hier an Frank F.

So scheint das ganze nun gut zu laufen, sodass ich mir den FIFO sparen 
kann. Aber danke für die Info darüber Falk.

Super wie schnell man hier Antworten erhält. Danke nochmal.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.