www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik microstepping DAC werte berechnen


Autor: Philipp Putzer (putzer_philipp)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits!


Ich möchte gerne einen Schrittmotor im Microstepping Betrieb betreiben, 
dafür verwende ich den L6258 von ST.

Über je vier Leitungen pro Phase, also für jede Spule vier Leitungen, 
gebe ich dem DAC den Referenzstrom vor. Steuere ich den DAC geeignet an 
so erzeugt er mit im Stator ein Sinusförmiges Signal. Der zweite macht 
das gleiche, nur halt Phasenverschoben.

Im DB des Chips steh wie ich den Chip ansteuern muss, diese Signalwerte 
hab ich in ein array übertragen und mit einer Indexvariablen lauf ich im 
Timer interrupt da durch. Die Werte steigen und sinken linear (wie im 
Anhang)

Nun wollte ich fragen, da ich schon den ganzen abend kopfe, ob es nicht 
irgend eine Formel oder so was gibt damit ich die Werte nicht im Array 
speichern muss?

Oder ist das Durchlaufen des Arrays die einfachte und beste Lösung?


Gruß und Dank

Philipp

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind idealerweise einfach Sinus- und Cosinus-Werte, skaliert mit 
einem konstanten Faktor um Zahlen für die PWM zu bekommen.

Eine Tabelle ist die beste Lösung. Sinus und Cosinus in Echtzeit mit 
Reihenentwicklung zu rechnen wäre Verschwendung.

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der chip hat glaub ich schon einen nichlinearern DAC drein, also das was 
ich ihm gebe sind nur ganz normel zahlen von 0 bis 15, die setzte er 
dann entsprechend um. ich hab mir aus der signalform im DB die werte 
herausgesucht, hat lange gedauert, und habe dann gesehen dass da nur 
einfach rauf und runter gezält wird

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp Putzer schrieb:
> der chip hat glaub ich schon einen nichlinearern DAC drein, also das was
> ich ihm gebe sind nur ganz normel zahlen von 0 bis 15, die setzte er
> dann entsprechend um. ich hab mir aus der signalform im DB die werte
> herausgesucht, hat lange gedauert, und habe dann gesehen dass da nur
> einfach rauf und runter gezält wird

Hallo,

wenn der DAC schon Sinus macht, kannst du dir natürlich alles Weitere 
sparen. Ansonsten verwende ich auch "Hand Made" Tabellen, weil man das 
wohl oder übel selbst optimieren muss. Bei 4 Bit linearem DAC verwende 
ich die Folge 0 6 11 14 15 14 11 6 0... Daraus ist auch zu ersehen, dass 
man nur die Tabelle 0..90 Grad braucht, der Rest zu 360 Grad ergibt sich 
durch Spiegelung. Man sieht auch, dass es bei 4 Bit wenig Sinn macht, 
einen Schritt in mehr als 8 oder 16 Mikroschritte aufzuteilen.

Gruss Reinhard

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm, ja stimmt, einen Schritt in so kleinen schritten aufzuteilen haut 
mit den meisten Motoren (die billigeren eben) eh nicht so gut hin.

ich werds mal mit deien Werten versuchen, die hast du dann auch nur in 
einer Tabell vorliegen, oder? Also ohne eine Rechenvorschrift oder 
sonstwas?

Gruß
Philipp

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.