Hallo! Ich muss hier mal meinen Unmut kundtun in der Hoffnung dass jemand mir doch noch einen guten Tipp geben kann: Ich habe eine Schaltung die eine Frequenz messen und per Miniaturschrittmotor analog anzeigen soll (ein DZM - oh Wunder!). Zum Ansteuern des Steppers verwende ich Microstepping und variable Rampen - dafür brauche ich also einen schnellen Timer für die PWM und einen Timer um bei einem Compare Match den nächsten Schritt des Steppers auszugeben. Für die Freuqenzmessung verwende ich den ACO der den Input Capture triggert. Zudem benutze ich den UART zum Debugging. Ergibt in Summe 3 Timer: PWM (Clk/1), Step-Timing (Clk/64), Frequenzmessung (Clk/64). Wenn ich es in einem ATmega168 drauf anlege kann ich letztere Zusammenlegen, da Compare Match (für Step-Timing) und Input Capture (für Frequenzmessung) zusammen laufen können. Nun wollte ich gerne die PWM-Frequenz erhöhen. Dazu entweder die Auflösung reduzieren oder die Timer-Frequenz erhöhen. Beides geht nicht mit dem mega168, aber der tiny861 eignet sich super: 64 MHz PLL-Clk und einstellbare Auflösung. Die sonstigen Daten sind allerdings grottig: neben dem 10bit "PWM-Timer" bleibt mir nur ein verkrüppelter 16bit-Timer. Die absolute Krönung ist die Tatsache dass dieser nicht mal Input Capture und Compare Match parallel kann. Damit kann ich also nicht gleichzeitig Step-Timing und Frequenzmessung realisieren. Was ist das für ein Sparwahn? Der tolle USI als UART-Ersatz ist natürlich ohne eine Timer zu spendieren auch nicht brauchbar - super! Ein schneller Soft-Uart in der Hauptschleife ist aufgrund des kritischen Timings und der Interrupts kaum denkbar. Da hilft mir auch die sehr willkommene Hystherese des ACO nicht... Tiny861: 64 MHz PLL und Hystherese am ACO Es gibt scheinbar keinen ATmega der diese Features bietet - wie doof ist das denn? Grüße Robert
:
Verschoben durch Moderator
Wenn der Controller nicht kann, was man sich wünscht, muß man halt die Anwendung anpassen oder externe Bauteile verwenden. Was willst Du eigentlich? Die eierlegende Wollmilchsau? Kann Dir keiner bieten.
Die AVRs sind exakt so ausgestattet, wie es die Großkunden, die ja mit ihren Großaufträgen die Entwicklung bezahlen, angefordert bzw. bestellt haben. Also nimm sie wie sie sind, oder bestelle (und kaufe dann) so viele, dass sie Dir Deinen Wunsch erfüllen. ;-) ...
Robert B. schrieb: > Es gibt scheinbar keinen ATmega der diese Features bietet - wie doof > ist das denn? Die Idee ist offenbar, dass du mit einer schnellen PWM einen Controller (ATtinyX61) für sich allein betraust, der dann weiter nichts macht als diese PWM. Für die Steuerung durch den Master-Controller nimmst du dann die USI im SPI-Slave-Modus. Dafür brauchst du keinen Timer, weil der Master den Takt vorgibt.
>dafür brauche ich also einen schnellen Timer für die PWM und einen Timer >um bei einem Compare Match den nächsten Schritt des Steppers auszugeben. Falsches Konzept. Aus "schnellen" Timern kann man langsamere mit etwas Hirnschmalz ableiten.
gähn Wahnsinn, darauf wäre ich glatt nicht gekommen. Danke für eure Binsenweisheiten, Jungs! So wie der tiny861 gebaut wurde kann man dann gleich nen ASIC nehmen. Wie füllte man 8kb Code mit so wenig sinnvoller Hardware? Nicht mal den 16bit Timer (den einzigen neben dem PWM-Timer) vollständig auszustatten ist echt behämmert. Die paar Buffer wären wohl noch für 0,00567 Cent drin gewesen. Gleiches gilt für den besch... UART. Hab ja nicht nach Hardware-USB gefragt...
Eigentlich ein Grund, den Thread ins Offtopic zu verschieben (gibt es da schon ein Unterforum "Jammern, was das Zeug hält"?)
Robert B. schrieb:
> Wie füllte man 8kb Code mit so wenig sinnvoller Hardware?
Kannst ja Windows draufspielen. Ist viel Code, mit wenig sinnvoller
Hardware.
STK500-Besitzer schrieb: >>dafür brauche ich also einen schnellen Timer für die PWM und einen Timer >>um bei einem Compare Match den nächsten Schritt des Steppers auszugeben. > > Falsches Konzept. Aus "schnellen" Timern kann man langsamere mit etwas > Hirnschmalz ableiten. Nomen est omen.... Super Idee aus einem 64 MHz Timer der ohne Prescaler läuft und evtl. noch eine reduzierte Auflösung hat andere Zeitbasen abzuleiten. Da bin ich ja nur noch im Interrupt... Oder meinst du den 16bit - grandiose Idee, aber der kann wenn im korrekten Bereich mit Input Capture betrieben gar kein Output Compare mehr - und nur Overflow erlaubt keine dynamische Schrittweite (=Beschleunigung).
Ok, nach dem sich die Wogen hoffentlich bei allen gelegt haben versuchen ich es noch mal betont produktiv: Hat jemand eine Idee wie ich meine obigen Anforderungen irgendwie umgesetzt kriege? Momentan komme ich mit einem 24 MHz Quarz und Prescaler=1 bei einem mega168 auf max. 93,75 kHz PWM-Frequenz. Dies würde ich gerne ändern, da ich sowohl Probleme damit habe dass der OC0A bzw. OC0B nicht direkt sich ändert (siehe Beitrag "COM0A1, COM1A1, COM2A1 etc - wird per Pin sofort aktualisiert oder erst beim nächsten Zyklus?") und die PWM-Frequenz auch bei dieser Art des Miniatursteppers eh höher sein sollte. Zu allem Überfluß würde ich gerne noch den Phase Correcz Mode nutzen. Dies alles ginge mit dem tiny861 - aber halt mit obigen Problemen. Denke bei derlei "hohen" Frequenzen ist es unvorteilhaft mittels Overflow Interrupt weitere Zeitbasen von dem PWM-Timer abzuleiten. Alternativ habe ich das Problem mit dem Generieren der Schritte. Ich habe eine Beschleunigungs-/Bremsrampe die die Zeiten zwischen den einzelnen Micro-Schritten steuert. Momentan benutze ich den 16bit Timer dazu den Schritt-Wert auf den aktuellen Zähler draufzuaddieren und dann in jedem OC den nächsten Schritt zu planen. Gerne würde ich meinetwegen UART und Schrittweitentiming im Hauptprogramm machen - aber wie soll das funktionieren wenn parallel die Interrupts mir das Timing versauen? Grüße Robert
Hallo Robert B., ich würde keinen Schrittmotor einsetzen, sondern ein einfaches Drehspulinstrument. Das versorgt man dann mit einer PWM die der AVR ja in Hardware bietet. Man muß nur ein Register setzen. Also muß man in der Software nur die Umrechnung von Eingangsfrequenz auf den zu setzenden Registerwert machen. Gruß Olaf
Frag mich ja wieviele scheinbar unterschiedliche Typen ein und der selbe Die sind, nur mit unterschiedlichen defekten/marginalen Features ;)
Robert B. schrieb: > Hat jemand eine Idee wie ich meine obigen Anforderungen irgendwie > umgesetzt kriege? Was spricht gegen meinen oben gemachten Vorschlag? Einen ATtiny261 als PWM-Prozessor, der via SPI seine Befehle von einem Hauptprozessor bekommt. Für den nimmst du dann einen ATmega88 oder sowas.
Jörg Wunsch schrieb: > Robert B. schrieb: >> Hat jemand eine Idee wie ich meine obigen Anforderungen irgendwie >> umgesetzt kriege? > > Was spricht gegen meinen oben gemachten Vorschlag? Einen ATtiny261 > als PWM-Prozessor, der via SPI seine Befehle von einem Hauptprozessor > bekommt. Für den nimmst du dann einen ATmega88 oder sowas. Ich hab auch schon mal öfter an sowas Gedacht. Allerdings hat die Sache einen Haken (finde ich): Du brauchst schon mal zwei Programmierschnittstellen und das ist nicht besonders platzsparend.
Simon K. schrieb: > Du brauchst schon mal zwei > Programmierschnittstellen und das ist nicht besonders platzsparend. Kann man auf einen Stecker führen, man braucht nur noch einen weiteren (2-Wege-)Jumper, der das SCK abwechselnd auf den einen oder den anderen Controller legt.
Hi! Danke für die vielen Antworten. Also mit einem Drehspulinstrument wollte ich es nicht machen. Ist mehr ein Bauchgefühl. Zum einen machen alle modernen Kfz-Tachos es so. Ich habe die Stepper da und die passenden Nadeln. Digital finde ich einfach schicker. Zudem ist natürlich die Reproduzierbarkeit/Genauigkeit besser. Alles keine perfekten Argumente, ich weiß. Vielleicht ist es auch einfach sportlicher Ehrgeiz. wie gesagt, die Jungs von Motometer, VDO und Co machen es auch so. Ja, der tiny861 bzw. dann 261 als Steppercontroller wäre eine Lösung. Nun, auch das mag komisch klingen, aber von so einer 2-Chip-Lösung wollte ich gerade weg. Momentan benutze ich nämlich einen mega168 und einen MC33977. Dieser ist ein ASIC speziell für diese Aufgabe - allerdings höllisch groß verglichen zu so einem süßen kleinen mega168 im MLF32-Package. Der tiny861 wäre dann genauso groß - das wäre mit Sicherheit schon mal besser. Wahrscheinlich muss das dann die Lösung sein. Hatte halt den sportlichen Ehrgeiz nur einen uC zu verwenden - bei den Tachos hängen die Stepper nämlich auch direkt am Hauptcontroller - jedoch haben diese zumeist Hitachis auch andere Ausgänge... Vielen Dank! Grüße Robert
Simon K. schrieb: [ISP sharing] > Und MISO, der würde sonst kurzgeschlossen mit dem jeweils anderen AVR. > Oder? Nein, der wird erst aktiviert, nachdem der AVR die Initialisierungs- sequenz erkannt hat. Ohne SCK erkennt er sie nicht, damit ist er im Reset, und alle Pins sind hochohmig. Man muss den SCKs natürlich noch zwei Pulldowns von ca. 1 MΩ spendieren, damit der jeweils unbenutzte nicht in der Luft hängt. Da der zweite ja sowieso Slave-SPI am ersten ist, könnte man natürlich die Programmierung des zweiten auch gleich über den ersten mit erledigen. ;-)
Was spricht den gegen eine kleinen XMEGA? Der hat auch eine PLL und eine Sack voll Peripherie :- )
Ja, die Idee hatte ich auch schon und wollte das XPlain mal bestellen. Bis zu 8 16-bit Timer reichen selbst mir ;-). Zumal da Atmel auch die Möglichkeit geschaffen hat die PWM-Outs direkt/sofort zu invertieren! Sehr schick. ABER: Die Dinger gehen nur bis 3,3V - die Stepper sind auf 5V/20mA ausgelegt. Schätze mal dann bleibt nicht mehr genug Leistung, zumal die Ports am Xmega nur mit 20mA angegeben sind und ich schätze stärker unter Belastung einbrechen als die mit 30mA angegebenen Ports des tinys. Ich merke schon - ich hab wohl wirklich zu viel verlangt. Also entweder - dedizierter tiny - fertigen ASIC - Xmega mit Treibern einsetzen. Schade, aber scheint echt nicht anders zu gehen. Grüße Robert
Was mir gerade noch einfällt: guck dir mal die AT90PWMxx-Controller an, ob du deren (ebenfalls mit einer PLL hochgetaktete) Power stage controller zur Generierung deiner PWM benutzen kannst. Die haben unabhängig von den PSCs noch zwei weitere Timer und eine UART. Vielleicht passt das ja.
OK, mal eine ganz bekloppte Idee: Die langsame PWM nehmen und vertiefpassen, mit der daraus gewonnenen Analogspannung wieder einen simplen PWM-Modulator (zB Rampengenerator mit Komparator) antreiben....
Habe gerade noch mal mit einem Kollegen diskutiert: Was wäre wenn man PWM und Input Capture als ISRs laufen läßt und das Step-Timing in der Hauptschleife erzeugt. Idee: Man pollt quasi den 16bit Timer und vergleicht mit dem eigenen "OC"-Wert. Wenn der Wert drüber liegt führt man den Code aus der vorher in dem Compare Match ISR war. Anschließend könnte man sogar je nach Timing noch per Soft-UART ein Byte rausdüdeln... Grüße Robert
Jörg Wunsch schrieb: > Simon K. schrieb: > > [ISP sharing] > >> Und MISO, der würde sonst kurzgeschlossen mit dem jeweils anderen AVR. >> Oder? > > Nein, der wird erst aktiviert, nachdem der AVR die Initialisierungs- > sequenz erkannt hat. Ohne SCK erkennt er sie nicht, damit ist er > im Reset, und alle Pins sind hochohmig. Das klingt praktisch. Muss ich mal im Hinterkopf behalten!
Hi robertb will lediglich eine Frequenz messen und einen Schrittmotor ansteuern. Warum hat hier noch niemand einen 32-Bitter oder Mini-PC vorgeschlagen. Mit einen ATMega48 steuere ich 2 Schrittmotoren mit Mikroschritt, Rampen, Kommunikation usw. MfG Spess
spess53 schrieb: > Hi > > robertb will lediglich eine Frequenz messen und einen Schrittmotor > ansteuern. > Warum hat hier noch niemand einen 32-Bitter oder Mini-PC vorgeschlagen. > Mit einen ATMega48 steuere ich 2 Schrittmotoren mit Mikroschritt, > Rampen, Kommunikation usw. > > MfG Spess Genau DAS kriege ich ja auch mit einem ATmega_8 hin - nur jedoch ohne Hystherese und mit einer für meine Anwendung zu niedrigen PWM-Frequenz. Ein zweiter Motor ist ja nur ein zweites Step-Timing (also weiterer OC am GLEICHEN 16bit-Timer!) und zwei weitere PWM Ausgänge (also den Timer0 bzw. Timer2 mit seinen OC0A/OC0B bzw. OC2A/OC2B). Das der mega_8 dann noch einen echten UART hat statt nur einem USI ist auch klar. also ist das was du da machst kein Kunststück - geht aber leider an meiner problemstellung vorbei. Die AT90PWM3B sehen übrigens gut aus - das wäre der nächste Ansatz!
Hallo Robert, was ich nicht verstehe ist, warum Du unbedingt einen Schrittmotor einsetzen willst. Das lohnt den ganzen Aufwand nicht. Ich würde Dir meinen Ansatz empfehlen und einen relativ simplen ATmega empfehlen. Gruß Olaf
Gib dochmal Butter bei die Fische, um wieviel Schritte/Microschritte gehts denn überhaupt? Du brauchst bestimmt keine 16Bit Microschritte. Ich würde die Vollschritte/Microschritte in Software machen mit nem Timerinterrupt. 50..100Hz Interruptrate sollten reichen. Und der andere Timer macht dann die Frequenzmessung. Peter
SOO genau ist ein DZM sowieson nicht, bzw haengt von dessen supergenauer Anzeige im Auto sowieso nicht viel - genauer gesagt - fast nichts - ab. Gast
Selbst schuld, wer sich auf die AVR-Familie einlässt. Solche Gegebenheiten sind doch typisch für Atmel. Ich bin ja Gästen gegenüber immer etwas skeptisch eingestellt, aber der von mit geschätzte Gast Yoshi Famosi hat doch im FRED Beitrag "[FYI] Lieferantenliste elektronische Bauelemente" eine relativ gute Liste (http://www.mikrocontroller.net/attachment/55437/lieferliste.pdf) von bevorzugten und eher lieber nicht zu verwendenden Herstellern gepostet. Daran halte ich mich und fahre eigentlich sehr gut damit. Mit Gruß, hth, Iwan
Ja, eine von irgend jemandem erstellete Liste ohne nähere Angabe von Hintergründen verwende ich auch jeden Tag für alle wichtigen Entscheidungen meines Lebens. ;-)
Mark Brandis schrieb: > Ja, eine von irgend jemandem erstellete Liste ohne nähere Angabe von > Hintergründen verwende ich auch jeden Tag für alle wichtigen > Entscheidungen meines Lebens. ;-) Die von Yoshi fein-säuberlich ausgearbeiteten Kriterien decken sich zumindest vollends mit den von mir gemachten Erfahrungen. So schlecht ist die Liste also nicht, meiner bescheidenen Meinung nach. Iwan
Иван S. schrieb: > Die von Yoshi fein-säuberlich ausgearbeiteten Kriterien decken sich > zumindest vollends mit den von mir gemachten Erfahrungen. So schlecht > ist die Liste also nicht, meiner bescheidenen Meinung nach. Mag sein. Freilich müsste man eine solche Liste von Zeit zu Zeit neu evaluieren, denn Lieferanten/Hersteller können sich auch wieder verbessern (oder verschlechtern).
Mark Brandis schrieb: > Mag sein. Freilich müsste man eine solche Liste von Zeit zu Zeit neu > evaluieren, denn Lieferanten/Hersteller können sich auch wieder > verbessern (oder verschlechtern). Klar, ganz meine Meinung. Nur nachdem Yoshis durchaus informativer FRED ja von den Moderatoren (wahrscheinlich war's mod:RTF) gesperrt wurde, kann ich verstehen, dasz er (meiner Meinung nach: leider) keine Liste mehr postet. Überhaupt habe ich lange nichts mehr von ihm gelesen :-( iwan
Na, ja soo informativ fand ich den nicht. Gast
mndbvbhj schrieb:
> Na, ja soo informativ fand ich den nicht.
Weswegen? Was hätte Yoshi Famosi (Gast) besser machen können? Was hat
Dir gefehlt oder war zu kurz ausgeführt?
Interessiert mich nur so aus reinem Interesse, da mir - wie schon gesagt
- die Liste sehr brauchbar erschien.
Mit freundlichem Gruße, Iwan
Ivan, ich weiß, dass du gerade lange Weile hast, kannst du bitte Threads anderer Leute in Ruhe lassen? Der Thread hier war schon mal im Off-Topic (weil er reichlich nichttechnisch wurde), durch deine wertvollen Beiträge rutscht er gerade wieder in diese Richtung ab.
@ Robert B. (robertb) Ich hatte einmal ein ähnliches Problem. Ich musste - Schnelle AD Wandlungen - 10KHZ PWM mit möglichst großer Auflösung realisieren. Ich habe mir viele CPUs angeschaut, die das können (oder doch nicht) Schlussendlich habe ich mich für einen STM32F103CB entschieden. Der würde auch für Deine Applikation passen: - 4 Timer, 32 Bit (jeweils 4 OC/PWM Ausgänge) und zus. 32 Bit Prescaler - bis zu 72MHz CPU-Takt >> möglich an Timer 1 (mit internem RC bis 48MHz) - 12-Bit-AD Wandler - UART hat eigenen Timer/Baudratengenerator - 48 Pins Einziger Nachteil: - 3,3V, kann jedoch mit einem OPV auf 5V erhöht werden (z.B. MCP601...MCP604) Ich nutzte den mit internem RC, Timer 1 mit 48MHz gespeist. Damit konnte ich 10 KHz PWM erzeugen und eine Auflösung von 4800 Counts je PWM Puls erhalten. (andere CPU: dsPIC30, 10KHz >> aber nur 1500 Counts je PWM Puls) Schaue mal hier ins Datenblatt: http://www.st.com/stonline/products/literature/ds/13587.pdf - Seite 1 Features - Seite 19 Blockschaltbild - Seite 20 Clock-Verteilung/Übersicht
Nachtrag: Im Dokument: http://www.st.com/stonline/products/literature/rm/13902.pdf - Seite 258 Timer 1 Übersicht
Markus Müller schrieb: > Einziger Nachteil: > - 3,3V, kann jedoch mit einem OPV auf 5V erhöht werden (z.B. > MCP601...MCP604) Zweiter Nachteil: 100 Pins. Robert waren schon die vergleichsweise kleinen AVRs fast zu groß, wenn man davon zwei nehmen muss. BGA löten ist auch nicht jedermanns Sache (und die QFP-Version natürlich noch größer).
Jörg Wunsch schrieb: > Ivan, ich weiß, dass du gerade lange Weile hast, Wie kommst Du zu diesem Schluß? Ist eine Frage wie "Was hätte Yoshi Famosi (Gast) besser machen können? Was hat Dir gefehlt oder war zu kurz ausgeführt?" nicht legitim? Es gibt immer wieder Meinungsverschiedenheiten und unterschiedliche Geschmäcker, aber ich will mich eben geistig erweitern und auch andere Standpunkte nachvollziehen können, auch wenn sie mit meinen Vorlieben nicht übereinstimmen müssen. > kannst du bitte Threads anderer Leute in Ruhe lassen? Achso, jetzt darf ich also nur mehr in von mir gestarteten FREDs meinen Senf dazugeben, oder sehe ich das falsch? Ich dachte immer, der Hauptzweck solcher Diskussionsforen ist das gegenseitige Austauschen verschiedener Ansichten. Bis dato warst (und bist es ja auch immer noch) einer von meiner Seite aus gesehen vorbildlicher Mod. > Der Thread hier war schon mal im Off-Topic (weil er reichlich > nichttechnisch wurde), Dazu kann ich nichts sagen, das war vor meiner zeit in diesem FRED. > durch deine wertvollen Beiträge rutscht er gerade wieder in diese > Richtung ab. YMMD. Mit freundlichem Gruße, Iwan
Peter Dannegger schrieb: > Gib dochmal Butter bei die Fische, um wieviel Schritte/Microschritte > gehts denn überhaupt? > Du brauchst bestimmt keine 16Bit Microschritte. > > Ich würde die Vollschritte/Microschritte in Software machen mit nem > Timerinterrupt. 50..100Hz Interruptrate sollten reichen. > > Und der andere Timer macht dann die Frequenzmessung. > > > Peter Butter? Gerne. ;-) Eine sin-Periode (eine Umdrehung des Rotors) wird in 32 Mikroschritte geteilt (ergo 5bit, bzw. 8 uSteps pro Vollschritt). Getriebe ist 1:150 und der Zeiger hat 300 Grad Bewegungsraum. Insgesamt ergeben sich also über den Bewegungsbereich 4000 (Mikro-)Schritte. Die Rampe fährt von 30 uSteps/sec bis 3000 uSteps/sec. @Markus: Der 32-Bitter klingt natürlich eindrucksvoll. Allerdings hast du ja schon einen Nachteil genannt bzw hat Jörg schon recht: 5V brauch ich leider und möchte auf Treiber verzichten, 100 pins ist dann in noch lötbaren Packages recht groß. Zudem noch eine Toolchain und Programmer. /edit: Hab jetzt gerade doch mal aus Neugier ins Datenblatt geschaut: Die teile sind schon eindrucksvoll. Vielleicht teste ich die doch mal bzw. bevor ich mich in Xmegas und AVR32 einarbeite werde ich doch wohl mal mit diesen Teilchen beschäftigen. Vielleicht macht es wirklich Sinn wenn es nicht auf Kosten ankommt mal mit ner Kanone zu schießen. ;-) Ich gebe gerne zu, dass nicht nur praktische Erwägungen mich antreiben. Es hat sicher auch etwas mit einem gewissen sportlichen Ehrgeiz zu tun. Danke an alle für die guten Antworten. Werde mich mit den Ergebnissen sicher melden. Grüße Robert
Robert B. schrieb: > Eine sin-Periode (eine Umdrehung des Rotors) wird in 32 Mikroschritte > geteilt (ergo 5bit, bzw. 8 uSteps pro Vollschritt). Getriebe ist 1:150 > und der Zeiger hat 300 Grad Bewegungsraum. Insgesamt ergeben sich also > über den Bewegungsbereich 4000 (Mikro-)Schritte. Die Rampe fährt von 30 > uSteps/sec bis 3000 uSteps/sec. Wow, ich bewundere Deine Adleraugen, 4000 Teilstriche zu unterscheiden und dann auch noch bei der Fahrt. Ich würde einen Sekundenzeiger als ablesbare Grenze ansehen, d.h. 60 Teilstriche, jedoch nicht über 100. Aber selbst da hat man schon größere Ablesefehler durch verschiedene Blickwinkel (Parallaxenfehler). Man muß sich nicht wundern, wenn es aufwendig wird, völlig unnütze Forderungen zu realisieren. Ich kaufe auch nur ne Kaffemaschine, die auf den ml genau die Kaffeetasse füllen kann, auch wenn sie 2000€ kostet. Wenn ich 100ml einstelle und es kommen nur 99ml raus, würde ich ja kurz vor dem Verdursten stehen. Peter
Peter Dannegger schrieb: > Robert B. schrieb: >> Eine sin-Periode (eine Umdrehung des Rotors) wird in 32 Mikroschritte >> geteilt (ergo 5bit, bzw. 8 uSteps pro Vollschritt). Getriebe ist 1:150 >> und der Zeiger hat 300 Grad Bewegungsraum. Insgesamt ergeben sich also >> über den Bewegungsbereich 4000 (Mikro-)Schritte. Die Rampe fährt von 30 >> uSteps/sec bis 3000 uSteps/sec. > > Wow, ich bewundere Deine Adleraugen, 4000 Teilstriche zu unterscheiden > und dann auch noch bei der Fahrt. > > Ich würde einen Sekundenzeiger als ablesbare Grenze ansehen, d.h. 60 > Teilstriche, jedoch nicht über 100. Aber selbst da hat man schon größere > Ablesefehler durch verschiedene Blickwinkel (Parallaxenfehler). > > > Man muß sich nicht wundern, wenn es aufwendig wird, völlig unnütze > Forderungen zu realisieren. > > Ich kaufe auch nur ne Kaffemaschine, die auf den ml genau die > Kaffeetasse füllen kann, auch wenn sie 2000€ kostet. > Wenn ich 100ml einstelle und es kommen nur 99ml raus, würde ich ja kurz > vor dem Verdursten stehen. > > > Peter Lieber Peter, viele deiner Beiträge sind extrem interessant und hilfreich. Aber bei diesem Post bin ich maßlos enttäuscht: Um bei deinem Sekundenzeiger-Beispiel zu bleiben: Ich möchte dich mal sehen wenn der Drehzahlmesser in deinem Auto nur noch mit 60 Schritten Auflösung hin- und her-tickt... Jeder der schon mal einen TICKENDEN Sekundenzeiger gesehen hat weiß das man SO keinen DZM baut. Guck dir mal auf einem Geo-Dreieck einen Winkel von 300/60=5 Grad an und überlege noch mal ob du das wirklich möchtest... Das man weit weniger als 4000 Schritte ABLESEGENAUIGKEIT auflöst ist doch klar - aber ich möchte auch dass sich der Zeiger "ultra-smooth" fortbewegt - und nicht immer um 5 Grad weiterrastet... Schade - eigentlich kannst gerade du es VIEL besser.
@Jörg Wunsch (dl8dtl) (Moderator) >Zweiter Nachteil: 100 Pins. Mache Dir bitte die Mühe und lese meinen gesammten Beitrag. Unter Vorteil steht hier 48 Pins. Es gibt den STM auch als 36-Pinner, den aber nicht von Hand lötbar. Siehe hier: http://www.st.com/stonline/products/literature/ds/13587.pdf Seite 25. Die Kosten eines STM's (STM32F103C8) ab 3,39 EUR. Wenn auch ein kleiner reichen sollte (STM32F100C4) ab 0,85 EUR !!! Also unter einem EUR bei Digikey. Man muss sich ein wenig mit der Materie auseinandersetzen. Unterm Strich fährt man mit einem STM32F10xxxx deutlich besser, denn man kann eine FW-Lib verwenden, die funktioniert mit allen Typen, also STM hat eine wirklich große Palette und entsprechend lässt sich auch Preislich einiges machen. (Fragen beim Distributor des Vertrauens) Zu den Kosten: - Demo-Board ca. 40-70 EUR - JTAG Adapter (z.B. Olimex ARM-USB-OCD) ca. 60-70 EUR - Software (Eclipse/Coudesourceruy Light/OpenOCD) 0 EUR Besser mit einer Kanone auf einen Spatz schießen und dafür auch gleich beim ersten Schuss treffen
@Peter: Word! 4000 ist sowas von übertrieben. Wenn die 5 Grad zu grob sind, löst man halt 1 Grad auf, das sind immer noch nur 300 Schritte. Das sind 0,3% vom Endwert. Was glaubt R.B. was sein Drehzahlgeber für ne Genauigkeit hat...?
Sven schrieb: > @Peter: Word! > > 4000 ist sowas von übertrieben. Wenn die 5 Grad zu grob sind, löst man > halt 1 Grad auf, das sind immer noch nur 300 Schritte. Das sind 0,3% vom > Endwert. Was glaubt R.B. was sein Drehzahlgeber für ne Genauigkeit > hat...? Hast du dir die Mühe gemacht meine Antwort zu lesen?
Nebenbei: Für den Return-To-Zero benutze ich Vollschritte - das sieht extrem schlecht aus und hört sich auch so an. Das sind 4*150*300/360=500 Schritte - dämmert was? Der kommerzielle Freescale-ASIC MC33977 macht nebenbei für diese Anwendung 3000 Schritte (24 uSteps pro Umdrehung) - ich mache nur deshalb 32 uSteps weil sich damit effizienter modulo rechnen läßt... Aber schön alles "Word!", gell? Datenblatt des MC33977: http://www.freescale.com/files/analog/doc/data_sheet/MC33977.pdf Für die Zweifler hinsichtlich der PWM-Frequenz (333 kHz!!!!!): App-Note von Atmel für den Antrieb eines Steppers mit einem tiny: http://www.atmel-grenoble.com/dyn/resources/prod_documents/a10_automotive-mc.pdf
Also was ich an echten analogen Drehzahlmessern kenne, die wackeln wie die Lämmerschwänze. Was auch kein Wunder ist, die Drehzahl wird ja nicht geregelt. Wenn Du es keinem sagst, daß es nur 60 Schritte hat, wird es auch keinem auffallen. Man muß einfach nur die mechanische Dämpfung in Software nachbilden und da reicht eine SW-PWM völlig aus. 333kHz sind völlig übertrieben, wenn die überhaupt der Motor schafft (Wirbelstrom, Wicklungskapazität, Skineffekt). Peter
@ Robert B. (robertb) >Um bei deinem Sekundenzeiger-Beispiel zu bleiben: Ich möchte dich mal >sehen wenn der Drehzahlmesser in deinem Auto nur noch mit 60 Schritten >Auflösung hin- und her-tickt... Jeder der schon mal einen TICKENDEN Wie man Probleme mit HighTec löst, die man ohne sie nie hätte. ;-) >Schritte ABLESEGENAUIGKEIT auflöst ist doch klar - aber ich möchte auch >dass sich der Zeiger "ultra-smooth" fortbewegt - und nicht immer um 5 >Grad weiterrastet... Für sowas nimmt man einen Servo, der hat hat keine Schritte. ;-) Oder gleich einen stinknormalen analogen Drehzahlmesser. Was soll der Quark der krampfhaften Digitalisierung? Digitalefetischismus? MfG Falk
Hi >333kHz sind völlig übertrieben, wenn die überhaupt der Motor schafft >(Wirbelstrom, Wicklungskapazität, Skineffekt). Die Motoren in den originalen Teilen wahrscheinlich schon. Außerdem beziehen sich die ganzen Werte, wenn ich das Datenblatt vom MC33977 richtig deute, auf direkt angetriebene Zeiger. Aber Robert hat nach seinen Aussagen ein 1:150 Getriebe drin. MfG Spess
Falk Brunner schrieb: > Für sowas nimmt man einen Servo, der hat hat keine Schritte. ;-) > > Oder gleich einen stinknormalen analogen Drehzahlmesser. Was soll der > > Quark der krampfhaften Digitalisierung? Digitalefetischismus? Ich habs ja oben bereits geschrieben - ALLE mir bekannten Tachos (VW-Konzern, Mercedes, Opel) seit spätestens 2000 verwenden genau diese Art von Motoren - keine Servos, keine Drehspulinstrumente. Und zwar MIT Getriebe. Dies müsst ihr mir einfach glauben oder die Diskussion hat keinen Sinn... spess53 schrieb: > Hi > >>333kHz sind völlig übertrieben, wenn die überhaupt der Motor schafft >>(Wirbelstrom, Wicklungskapazität, Skineffekt). > > Die Motoren in den originalen Teilen wahrscheinlich schon. Außerdem > beziehen sich die ganzen Werte, wenn ich das Datenblatt vom MC33977 > richtig deute, auf direkt angetriebene Zeiger. Aber Robert hat nach > seinen Aussagen ein 1:150 Getriebe drin. Nein, der MC33977 ist defintiv für Motoren MIT Getriebe. Steht ja im Datenblatt "bis zu 4096 Schritte" - bei 24 uSteps pro Umdrehung macht der Stator demnach bis zu 170 Umdrehungen. Mit diesen Treibern läuft die Sache ja bereits - nur sind die Teile ziemlich groß und es reizt mich halt es ohne zu schaffen. Es gibt in der Tat auch Motoren mit direkt angetriebenem Zeiger - aber wie gesagt - solche werden in aktuellen Tachos NICHT verbaut. Was ich nicht verstehe ist warum nicht akzeptiert wird dass diese Art von Steppern in aktuellen Tachos genau so verbaut wird und meine Zielsetzungen nur denen bereits existierender Lösungen entsprechen. Das ist kein Digitalfetischismus, keine Insellösung und keine wirklichkeitsfremde Vorstellung. Grüße Robert
>Ich habs ja oben bereits geschrieben - ALLE mir bekannten Tachos >(VW-Konzern, Mercedes, Opel) seit spätestens 2000 verwenden genau diese >Art von Motoren - keine Servos, keine Drehspulinstrumente. Und zwar MIT >Getriebe. Dies müsst ihr mir einfach glauben oder die Diskussion hat >keinen Sinn... Stimmt. Dann kauf Dir einen solchen. Gast
Und wofür brauchst Du jetzt 333kHz PWM-Frequenz?
>Nein, der MC33977 ist defintiv für Motoren MIT Getriebe. Steht ja im >Datenblatt "bis zu 4096 Schritte" - bei 24 uSteps pro Umdrehung macht >der Stator demnach bis zu 170 Umdrehungen. Mit diesen Treibern läuft die >Sache ja bereits - nur sind die Teile ziemlich groß und es reizt mich >halt es ohne zu schaffen. Es gibt in der Tat auch Motoren mit direkt >angetriebenem Zeiger - aber wie gesagt - solche werden in aktuellen >Tachos NICHT verbaut. Nein, der 2,7l Reihensechszylinder ist defintiv für Motoren MIT Getriebe. Mit diesem Motor läuft der Mercedes ja 240 nur sind die Teile ziemlich groß und es reizt mich halt es ohne zu schaffen. Kommentar: Man kann einen Trabantmotor auch in einen Mercedes bauen, nur laeuft der dann eben nicht mehr 240. </beschimpfungsmodus ein> Was glaubst Du kleiner Wicht, warum die auf jeden Zehntelcent achtenden Autobauer so verschwenderisch waeren, wenn es denn noch 0.2 Cent billiger ginge??? </beschimpfungsmodus aus> Gast
gsyg<cfbsdk schrieb: > > Dummfasel blabla Tu uns allen einen Gefallen und nimm bitte wieder deine Tabletten. Sven schrieb: > Und wofür brauchst Du jetzt 333kHz PWM-Frequenz? Für genau das was in der von mir schon geposteten Atmel Application Note steht!!! Zitat: "The internal inductance of a stepper motor demands as high a PWM signal as possible to smooth the passage of the current through the coil". Ist das Argument genug?
Das geht sicher auch ohne den Treiber, aber nicht 15 Jahre lang! Der Tacho im Auto muss bei jeder Temperatur auch noch nach 15 Jahren richtig tun. Dank Verschleiß und der Langzeitwirkung der Schmierung benötigt der Motor nach einigen Jahren mehr Kraft, wofür eine Treiberstufe erforderlich ist. Bestes Beispiel ist mein altes Auto: Vor 13 ging die Servolenkung super Leicht. Heute brauche ich richtig Kraft um das Lenkrad bewegen zu können. Der Kraufaufwand ist mit jedem Jahr stetig gestiegen. Solche Ideen (ohne Treiberstufe), sind zwar nett, aber nicht Praxistauglich. So wie es aus sieht braucht jemand etwas Praxiserfahrung. Also, mache es so wie die grossen und Dein Tacho wird Dir freude bereiten. PS: Nimm die Kanone STM32F103, denn Du willst auch eine Kanone ansteuern, zwar klein, dennoch forderst Du die Auflösung. Deshalb: Dein Tacho ist kein Spatz, eher ein Airbus.
Sven schrieb:
> Und wofür brauchst Du jetzt 333kHz PWM-Frequenz?
Das frag ich mich auch die ganze Zeit.
Kannst du das erklären - oder hab ich da was nicht mitbekommen?
Gruß Stefan
Nur aus Interesse: Bei einer Übersetzung von 150:1 muss der Schritt- motor ja ganz schön rotieren, wenn der Drehzahlmesser bei schnellen Drehzahländerungen des Automotors (bspw. beim Gasgeben im Leerlauf) halbwegs mithalten soll, und das Anwendungsobjekt nicht gerade ein Mercedes 240D von 1972 ist ;-) Dass so ein Minimotor mit wenigen Polpaaren schneller dreht als ein Standardschrittmotor, kann ich nachvollziehen. Aber wie hoch ist die maximale Drehzahl tatsächlich? PS: Ich frage das wirklich nur, weil es mich interessiert und nicht, um deine Entwicklung in Frage zu stellen :)
Hallo Markus, vielen Dank für deinen Beitrag. Was die Treiberstufe angeht muss ich dir jedoch wiedersprechen - habe diverse derartige Tachos schon angeschaut - keine Treiber - die Stepper werden direkt mit den Controllern verbunden. Diese wiederum hatten alle nur eine 5V Versorgung. Die Motoren sind gemäß Datenblatt (z.B. von Switec: http://www.switec.ch/downloads/switec/X25_xxx_02_SP_E.pdf) genau dafür vorgesehen. Der Gleichstromwiderstand liegt bei rund 290 Ohm - also ein Strom knapp unter 20mA - dafür sollten die Treiber des tinys reichen. Für alle die noch einen anderen Treiber sehen wollen: von Switec selber: http://www.switec.ch/downloads/switec/X12_017_05_SP_E.pdf Zitat aus dem Datenblatt: "A microstep is an angular rotation of 1/12 deg. of the M-S shaft or 15 deg. on the rotor shaft." Macht bei 360 Grad also auch wieder 24 uSteps pro Rotorumdrehung... Die Kanone STM32F103 habe ich mir bereits fest vorgemerkt. Einen OpenOCD-Jtag wollte ich mir die Tage eh besorgen - werde defintiv mit dem Ding mal arbeiten. Bin von den Daten wirklich begeistert von dem Teil. Grüße Robert
Stefan V. schrieb: > Sven schrieb: >> Und wofür brauchst Du jetzt 333kHz PWM-Frequenz? > > Das frag ich mich auch die ganze Zeit. > Kannst du das erklären - oder hab ich da was nicht mitbekommen? > > Gruß Stefan Ja, hast du nicht. fg Begründung inkl. passender App-Note wurde von mir gepostet.
Hi
>Steht ja im
Datenblatt "bis zu 4096 Schritte" - bei 24 uSteps pro Umdrehung macht
der Stator demnach bis zu 170 Umdrehungen.
24 Steps pro Umdrehung und 24 Positionen pro Step ergibt bei mir etwa 7
Umdrehungen.
MfG Spess
spess53 schrieb: > Hi > >>Steht ja im > Datenblatt "bis zu 4096 Schritte" - bei 24 uSteps pro Umdrehung macht > der Stator demnach bis zu 170 Umdrehungen. > > 24 Steps pro Umdrehung und 24 Positionen pro Step ergibt bei mir etwa 7 > Umdrehungen. > > MfG Spess Ok, noch mal langsam: Bei meinem konkreten Motor (ist ja abhängig von dem Getriebe und den Anschlägen) macht der ASIC ziemlich genau 3000 Schritte - eben 24*150*(300/360). Oh wunder macht er bei meinem eigenen Code mit 32 uSteps/Umdrehung 4000 statt 3000 Schritte. Deine Einlassung kann ich hingegen nicht mal nachvollziehen - schätze zu scheiterst an den zugegebenermaßen durcheinandergewürfelten Bezeichnungen. Die 24 uSteps pro Statorumdrehung sind denke ich klar - die 4096 Steps im Datenblatt beziehen sich auf die Fähigkeit dem ASIC per SPI zu sagen "gehe zu 1745" und das Ding dreht dir den Motor (MIT Getriebe) dann an diese Position (des Zeigers). Dann sagste ihm "gehe zu 1985" und das Ding fährt den Zeiger an die Position, sprich dreht den Stator exakt 10 Umdrehungen (=10 sin/cos Perioden) bzw. 240 uSteps weiter.
@Robert B. (robertb) - Als "Mini-Verstärker" kann der 4-Fach OPV MCP604 verwendet werden, der kann 30mA und ist sehr schnell und relativ günstig (ab ca. 0,62 EUR). Es braucht dann zwar diesen Chip extra neben der CPU, dafür ist der auch Pinkompatibel mit dem LM324 oder vielen anderen. Also falls der doch nicht passen sollte, gibt es sicher hunterde andere zur Auswahl. - Oder man nimmt ein 74xxx Logik-IC, das die Konvertierung von 3,3V auf 5V macht. - Oder, der STM32, Timer 1 hat auch "Negativ-Ausgänge". Man könnte z.B. die Positiv-Ausgänge als "OpenCollector" programmieren, mit den Negativ-Ausgängen einen (oder 4) BSS84 ansteuern, der wiederum an +5V hängt und so die gewünschte +5V schaltet. Am besten finde ich die erste Variante. Bei der zweiten muss man erst mal einen finden, der 3,3V kompatibel ist und auch 20mA Ausgang kann. Hier hab ich beschrieben wie man Eclipse und Co einrichtet. Beitrag "Re: OpenOCD für Eclipse mit ARM Cortex-M3" Mich freut es, wenn ich wieder jemanden für einen STM32 gewinnen konnte, denn bei größeren Stückzahlen die ST produziert, wird der Preis auch für mich irgendwann mal günstiger ...
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.