Hallo uC-Community, ich benötige euren Rat ;-) weil ich nicht weiß wie ich den nächsten Schritt meines Projektes angehen soll, zu wenig Erfahrung allgemein und im Umgang mit uC -.- ... also ich muss fuer eine Drehzahlregelung eine Sprungantwort aufzeichen. Ich benutze einen AtMega644 und programmiere in C. Mein Problem besteht darin das ich über die Serielle-Schnittstelle (verwende HTerm) ein Befehl auf mein uC gebe. Mit diesem Befehl steuere ich mein PWM-Signal, das einen BL-Motor ansteuert. Ich gebe also einen Sprung auf mein PWM-Signal und somit auf die Drehzahl des Motors. Jetzt habe ich einen Magnetsensor der die RPS aufnimmt. Nur leider stellen sich jetzt folgende Fragen: 1. Langt die Zeit nach dem Sprung um alle Daten aufzunehmen ? 2. Wenn ja soll ich die Daten in einem Array-Speichern und dann über die Serielle Schnittstelle ausgeben oder kann/sollte ich gleich die Daten auf die Serielle Schnittstelle geben ? 3. Wenn die Zeit nicht langt, was gibt es für eine Lösung ? zweiten uC Parallel verwenden ? Oszi anschließen und die Signale des Sensors aufzeichenen/speichern ? Das sind jetzt nur einige Ideen, vllt habt ihr ja eine einfacherer,saubere Lösung parat würde mich sehr auf eine Antwort freuen. Habe auch meinen C-Code angehängt.. aus dem einfachen Grund: Ich benutze alle Timer0-2 und meine UART-Schnittstelle.. ab und zu kommt es mir vor als ob der Motor ein bisschen schwingt, vllt durch die vielen ISR bzw. wird vllt ein Signalfluss unterbrochen??? Vielen Dank schon mal im vorraus dennis
die interessante dauer deiner sprungantwort hängt von der zeitkonstante deines gesamten bewegten systems ab (motor + last). wie lange das ca. ist kannst du relativ einfach experimentell ermitteln. falls du schon einen digitalen regler per sw realisiert hast und genug RAM übrig, lege ein array an, das ab zeitpunkt der PWM-Ausgabe im sample intervall des reglers mit dem jeweiligen geschwindigkeitswert befüllt wird. z.B. immer die anzahl von inkrementalgeberpulsen die im letzten sample-intervall eingelaufen sind. einen breakpoint auf das erreichen einer sollgeschwindigkeit setzen und dann das array im debugger anschauen->verwerten=liniendiagramm in spreadsheet. alternativ diese werte per uart ausgeben, als zahl und mit einem komma getrennt z.B. baudrate möglichst hoch einstellen und je nachdem wie hoch die auflösung deines gebers und wie klein die sample-rate ist gibt es dann ein limit für die zeichen die du per sample-intervall pünktlich gesendet bekommst. ;o), fiel fergnügen.
dennis schrieb: > 1. Langt die Zeit nach dem Sprung um alle Daten aufzunehmen ? Das mußt du doch wissen, wie dein System reagiert und welche Zeitauflösung du brauchst, damit die Sprungantwort sich aus deinen Abtastwerten rekonstruieren läßt. Voraussetzung ist natürlich, dass die Grenzfrequenz deines RPS-Sensor hoch genug ist, um den Einschwingvorgang richtig zu messen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.