Hallo Forum, Ich habe einen ATMEGA8 und einen Treiber für Schrittmotoren. Das ganze läuft auch schon.. Nun habe ich das Problem wenn ich schneller fahren möchte muss ich eine Rampe in die Software einbauen. Zurzeit schalte ich den Step pin im Timer0, ich verändere den Reloadwert vom Timer und bekomme so eine Rampe - klar ist das sie nicht lin. ist. Aber wie bekomme ich ein lin. Rampe... Wie wird das sonst gemacht.. danke, lg mark
Hi >Wie wird das sonst gemacht.. So wie es ATMEL vormacht: http://www.atmel.com/Images/doc8017.pdf http://www.atmel.com/Images/AVR446.zip MfG Spess
Gibt es da nichts einfacheres , ich verwende als Treiber den A4982SLPTR-T danke!!
dann musst du dich fragen > ich verändere den Reloadwert vom Timer und bekomme so eine Rampe > - klar ist das sie nicht lin. ist wieso das klar ist. Wenn du den Reloadwert korrekt veränderst, kriegt man da auch eine lineare Rampe hin. Anfahren ist doch einfach - Abbremsen ist die Kunst!
hallo, ich muss eh auch bremsen... Das ganze wird ein Gerät für eine Tombola, auf einer Scheibe sind 38Felder wo man etwas gewinnen kann. Die Scheibe soll bei Tastenklick weg fahren und beim nächsten Tastenklick beginnen zu bremsen.. wo sie dann stehen bleibt ..... Ich habe jetzt versuche das ganze nich im timer zu machen sondern einfach den Takt in der Main zu generieren--> while(1) { PORTA.0=1; wait_us(start_speed); PORTA.0=0; wait_us(start_speed); } im timer verändere ich die start_speed.. --> start_speed++; aber das ist auch alles andere als linear... ich verstehe es nicht .. danke.
Mark schrieb: > aber das ist auch alles andere als linear... > ich verstehe es nicht .. Natürlich nicht. Denn f = 1/t und das ist nun mal eine Hyperbel. Aber: wozu braucht man bei so einem Ding eine lineare Rampe?
Karl Heinz Buchegger schrieb: > Mark schrieb: > >> aber das ist auch alles andere als linear... >> ich verstehe es nicht .. > > Natürlich nicht. > Denn > f = 1/t > und das ist nun mal eine Hyperbel. d.h. wenn du deine Zeiten linear variierst, bedeutet das nicht, dass sich dadurch die Frequenz linear verändert.
verstehe. wie kann ich es machen damit von min.drehzahl zur max.drehzahl anfahre/bremse eine gerade ist ? danke...
mark schrieb: > verstehe. > > wie kann ich es machen damit von min.drehzahl zur max.drehzahl > anfahre/bremse eine gerade ist ? Indem du die Drehzahl linear variierst und dann zurückrechnest, welche Stepperzeit du für die nächste zu erzielende Drehzahl brauchst? (Und dem Schrittmotor auch ein wenig Zeit geben, damit er auch auf diese Drehzahl beschleunigen kann. Du weißt schon ... träge Masse und so) Dein µC hat alle Zeit der Welt. Wenn der beim Glücksrad für eine derartige Berechnung 1 Millisekunde oder 1.5 Millisekunden dafür braucht, dann merkt das kein Mensch. Was anderes ist es, wenn eine 2 Tonnen CNC-Maschine den Fräskopf auf ein hunderstel Millimeter genau an einer bestimmten Position zum Stehen bringen muss. Aber den Fall hast du ja nicht.
Karl Heinz Buchegger schrieb: > Indem du die Drehzahl linear variierst und dann zurückrechnest, welche > Stepperzeit du für die nächste zu erzielende Drehzahl brauchst? > (Und dem Schrittmotor auch ein wenig Zeit geben, damit er auch auf diese > Drehzahl beschleunigen kann. Du weißt schon ... träge Masse und so) Und um ehrlich zu sein, würde ich mir die entsprechenden Werte in deinem Fall im voraus einfach ausrechnen und in Form einer Tabelle ablegen. Wenn da die Vorgabewerte für 3 oder 4 Sekunden beschleunigen/abbremsen mit einer Auflösung von 0.1 Sekunden drinnen enthalten sind, dann reicht das ja völlig aus. 2 Timer. Der eine erzeugt die Schrittmotorpulse laut Vorgabe mittels CTC und ISR (oder Fast-PWM) Der andere jubelt dem Schrittmotortimer alle 0.1 Sekunden den jeweils nächsten Wert aus der Tabelle unter, je nachdem ob zu beschleunigen oder zu bremsen ist. Edit: Wobei Den 2.ten Timer braucht es noch nicht mal. Die Hauptschleife hat eh nichts zu tun, und ob die bei einem Durchgang nach Prüfung der Taste noch den Schrittmotortimer beschickt und dann noch einen _delay_ms(100) macht um auf das Timing zu kommen, ist auch schon wurscht. jetzt muss man halt mal klären, welche CTC Werte sich durch die vorgesehenen Drehzahlen ergeben und ob man mit einer einfachen Variation des ICR-Wertes durchkommt, oder ob man dem Timer auch noch den Prescaler im laufenden Betrieb umschalten muss. Ist zwar auch kein Beinbruch aber drauf achten hat noch niemandem in der Vorbereitungsphase eines Programms geschadet.
Mark schrieb: > Das ganze wird ein Gerät für eine Tombola, auf einer Scheibe sind > 38Felder wo man etwas gewinnen kann. Die Scheibe soll bei Tastenklick > weg fahren und beim nächsten Tastenklick beginnen zu bremsen.. wo sie > dann stehen bleibt ..... Da hat man dann nach drei Versuchen raus an welcher Stelle man zum zweiten Mal drücken muss, damit die Scheibe beim Hauptgewinn stehenbleibt. Du wirst deine ganzen Preise innerhalb kürzester Zeit los sein!
Hi >wie kann ich es machen damit von min.drehzahl zur max.drehzahl >anfahre/bremse eine gerade ist ? Hat doch Atmel schon alles vorgekaut: Beitrag "Re: Schrittmotor lin. anfahren lassen" MfG Spess
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.