Wilhelm M. schrieb: > Ich rufe die MegaHF-Challenge aus und nominiere Jobst M. und c-hater. Da > der TO das sicher in C/C++ wollte, ist das auch eine Bedingung. Haha! Da sind wir wohl beide raus. Ich werde doch nicht ein Programm was ich schon habe nochmal in C neu schreiben. Ich bin mir sicher, mit meiner SW an 20MHz auf über 400kHz zu kommen. Dann wird die Kommunikation während dieser Zeit allerdings noch lahmer und die Geschwindigkeitsberechnung zieht sich dann über ~15 Ausgangstakte hinweg. Bringt aber nichts, denn der DRV8825 kann nur 200kHz Und dann ist da noch der Motor ... m.n. schrieb: > Auch bei Timer1 muß man mit Software nachhelfen Natürlich. Aber man hat mehr Zeit. m.n. schrieb: > Geschickter wäre es > allerdings, ab einer gewissen Drehzahl von Micro- auf Vollschritt zu > wechseln. Ich habe festgestellt, dass die Motoren mit Mikroschritten schneller laufen können. Vermutlich einfach, weil sie ruhiger laufen. Carsten-Peter C. schrieb: > Hast Du Dein Programm > selbst geschrieben? So schnell kann sich mein Motor nicht drehen, dafür > muss er einiges an Masse bewegen. Es ist ein Unterschied, ob man ein > paar Register setzt, um den Motor drehen zu lassen oder ihn auf eine > Position laufen lässt. Lass Dich nicht ärgern! Programm ist in ASM selbst geschrieben. Tatsächlich war ich auch überrascht, wie schell er drehen kann. Funktioniert bei mir aber auch nur mit diesem Motor. Masse wirkt bei hohen Drehzahlen allerdings unterstützend. Man kann dann eben einfach nur langsamer anfahren. Wie Du siehst, steht der Legobalken immer gerade, wenn der Motor steht. Nur einmal hat der 45°. Das sind alles vorgegebene Positionen. Ärgern? Hier? Haha! Nein! Gruß Jobst
:
Bearbeitet durch User
Ich wollte mal kurz meinen aktuellen stand mit dem ATxmegaA3 bekannt geben. Ich habe jetzt einen Testaufbau auf dem Steckbrett mit 7 Kanälen (nur 7 Timer, aber ausreichend. Eigentlich brauche ich ja nur 6). Frequenzerzeugung UND Impuls Zählung aller 7 Kanäle funktioniert. Die Signalqualität ist auch gut, wenig Jitter, nur eine Oberwelle, die wohl aber vom Netzteil kommt (auch bei "stillstand" vorhanden). Als CPU Takt habe ich 25 MHz von einem externen Quarzoszillator. Ich habe schon ein par Szenarien laufen lassen (unterschiedliche Frequenzen auf unterschiedlichen Ports, mit unterschiedlichen Impulsanzahlen), bisher sieht es sehr gut aus. Demnächst implementiere ich eine UART Schnittstelle und schreibe ein kurzes Script dass ein par zufällig Frequenzen und Schrittzahlen erzeugt und zeichne das Ergebnis mit dem Oszilloskop auf, so kann ich dann alles nochmal genau testen. Ich habe herausgefunden das das die Optimierungs-Option auf "Optimize most" zu stellen, das Ergebnis weiter verbessert, ich konnte kontrollierbare Takte bis 100kHz erreichen, aber da ich ja nur 50kHz benötige, nachdem ich die Treiber anders eingestellt habe, belasse ich es bei einer Obergrenze von 50kHz. Jeder Kanal wird mittels eines 16-Bit Timers betrieben. Die Impulse werden durch die Interrupts gezählt, allerdings durch eine Schleife die die entsprechenden Bits abfragt, und nicht durch ein ISR. Bei jedem Interrupt wird ein GPIOR hochgezählt, und in regelmäßigen abständen wird der Inhalt vom GPIOR in eine variable kopiert, und der GPIOR zurückgesetzt. Das hat nach meinen Tests das zuverlässigster Ergebnis geliefert.
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.