Hi alle, ich benoetige einen Puls Quadraturausgang (4. Phasen -> A u. B jeweils true und false). Mein System besteht zurzeit aus einem DSP C6747. Bislang bin ich dabei zu ueberlegen einen DDS dafuer zu nehmen. Der AD9852 bietet mir eigentlich genau das was ich brauche eher zuviel als das ich brauche. Das ist ein DDS mit 4 Ausgaengen (2 mal true und false). Die ansteuerung erfolgt guenstigerweise direkt ueber SPI oder digital parallel von der DSP. Aber mir schein es so, als ob ich mit Kanonen auf spatzen schiessen wuerde. Ich habe noch keine erfahrung mit Quadratur Puls Ausgaengen. Deshalb meine Frage. Gibt es fertige Quadratur Decoder / Controller die mir folgendes liefern: - 2 Phasen A u. B mit jeweils true und false - beide Phasen haben gleiche Ausgabefrequenz nur die Phase B wirkt Richtungs bzw. Phasengesteuert - Anteuerung ueber SPI oder digital parallel - sehr genau! Der Ausgang sollte von 1 Hz bis 30 kHz einstellbar sein, mit einer Abweichung im promile Bereich Gruss Johann
Johann schrieb: > ich benoetige einen Puls Quadraturausgang Also einen Rechteckausgang... > Mein System besteht zurzeit aus einem DSP C6747. > : > Der Ausgang sollte von 1 Hz bis 30 kHz einstellbar sein, Und zudem noch so langsam... Warum machst du das nicht mit dem DSP in Software selber? Das packt sogar ein 8-Bit AVR mit der linken Hand und nebenher... > mit einer Abweichung im promile Bereich Worauf bezieht sich diese Abweichung? Auf die absolute Frequenz? Eine Abweichung von 1 Promille bei 30kHz sind 3 Hz... Eine Abweichung von 1 Promille bei 1 Hz ist 1mHz... Eine Abweichung von 1mHz bei 30kHz sind 0,0003 ppm. So genau ist keine (wirtschaftlich bezahlbare) Zeitbasis... :-o Das wäre 1 Sekunde Abweichung auf 10 Jahre! Oder bezieht sich diese Abweichung auf die relative Frequenz? Das wäre einfach: ein jeder Quarz kleiner 100ppm packt das locker.
Genau es soll ein Rechteckausgang sein. Der Fehler soll sich auf die relative Frequenz beziehen :) Ich habe es schon mit dem PWM Ausgang der DSP versucht, dass kann man aber vergessen!! Ich bin kein Experte in der Materie, aber ich denke softwaretechnisch waere es viel zu umstaendlich. Ich habe viele loops die Teilweise bis zu 1ms bearbeitung benoetigen, auch CPU interups sind vorhanden. Ich kann es mir erlichgesagt softwaretechnisch nicht vortellen. Wie waere denn die Taktik es softwaretechnisch umzusetzen? Zaehlervariablen? oder Timer? ... Die DSP hat auch nen Hardware Timer. Man koennte dann mit Interrups paar GPIOs steuern, aber dabei habe ich bedenken, da der PWM Controller des DSP auch nix andere gemacht hat, jedoch lgen die Fehler im prozentbereich, also nix mit promille. Gruss Johann
Johann schrieb: > jedoch lgen die Fehler im > prozentbereich, also nix mit promille. Naja, das kommt dann auf die Genauigkeit der Zeitbasis an. Wenn du den Takt für den PWM Teil erst mit einer PLL aus dem Grundquarz erzeugst, kann das schon passieren. Wobei ich im Prozentbereich schon arg finde. Was genau war da ungenau? Ansonsten bleibt natürlich immer die Möglichkeit, das extern in einem CPLD oder FPGA zu machen....
Johann, ist das beruflich oder privat ? 1. spezifiziere bitte die gewünschten genauigkeiten und schrittweiten der frequenzwahl ? 2. möchtest du den phasenversatz zwischen beiden spuren verstellen können ? wir haben so eine quadratur-encoder simulation schon gemacht um ein eigenes design (decoder) umfassend automatisiert testen zu können. kleiner uC mit eigener clock per spi vom host-system angesteuert. infos siehe 1.+2. bitte bei interesse deinerseits an tom at tktronic punkt de
Christian R. schrieb: > Wenn du den Takt für den PWM Teil erst mit einer PLL aus dem > Grundquarz erzeugst, kann das schon passieren. > Wobei ich im Prozentbereich schon arg finde. Ok, wenn ich 30kHz mit 1/1000 auflösen will, brauche ich 30MHz auf dem Zähler. Ich könnte mir aber vorstellen, dass man da im Grenzbereich die Spec auch ein wenig lockern könnte... ;-) Und wenn du dann mit 0,3% auskommen würdest, würde ein einziger mit 10MHz getakteter Zähler mit 2 Compare-Einheiten (für die beiden Spuren) locker ausreichen. Und ich würde das Ganze per SW abwickeln, denn bei 30kHz sind pro Zyklus ja ewige 33us Zeit... ;-)
@ Christian: Ja dazu habe ich die PPL genutzt. Das Counterregister der PWM ist leider nur 16 bit. Das Reicht nicht aus um den gewuenschten Frequenzbereich zu decken. Deswegen musste die ganze Zeit die PPL und den Counter anedern. Da kann man sich schon vorstellen, dass es nicht toll funktioniert. @ Thomas: Ich melde mich @ Lothar: 0.3 % ist erheblich zuviel. Ich habe funktionen in meinem Code, die bis zu 1ms dauern. SW-Technisch ist es mir zu aufwendig und ich habe zweifel an der Genauigkeit.
Tomas Kuckenburg schrieb: > 1. spezifiziere bitte die gewünschten genauigkeiten und schrittweiten > der frequenzwahl ? > 2. möchtest du den phasenversatz zwischen beiden spuren verstellen > können ? Fuer alle als info: 1. die Genauigkeit sollte im bereich von 50 Hz bis 30 kHz mindestens 0,01 % sein. Unter 50 Hz darf es zunehmen. 2. Ja der Phasenversatz zwischen beiden Spuren muss verstellbar sein. Die B Spur soll die Richtung weisen. Also entweder 90 Grad vor oder nachlaufen. Der DDS von AD bietet mir eine Aufloesung von 1uHz. Das wuerde meine Bedurfnisse voellig decken. Auch die ansteuerung ueber SPI ist vorteilhaft. Der IC ist aber erstmal bissle teuer und zweitens ueberdiemensioniert. Hat noch unzaehlige weitere Funktionen und kann bis 100 Mhz Frequenzen ausgeben. Deswegen suche ich halt nach ner anderen Loesung oder einem anderen IC.
Gähn, sowas langweiliges. Kann der DSP wahrscheinlich problemlos per Timer/PWM Funktion. Wenn nicht, reicht ein Timer mit Taktausgang und zwei popelige CMOS-ICs. Ist präzises wie der Takt des DSP, und damit wahrscheinlich quarzstabil. Beitrag "Re: pulse direction signal zu encoder a b?" MFG Falk
@Johann (Gast) >1. die Genauigkeit sollte im bereich von 50 Hz bis 30 kHz mindestens >0,01 % sein. Unter 50 Hz darf es zunehmen. Das sind 100ppm, das macht jeder normale Quarz. >2. Ja der Phasenversatz zwischen beiden Spuren muss verstellbar sein. Wieviel? Welche Auflösung? >Die B Spur soll die Richtung weisen. Also entweder 90 Grad vor oder >nachlaufen. Ist immer so bei einem Drehgeber. MFG Falk
Falk Brunner schrieb: > Gähn, sowas langweiliges. Kann der DSP wahrscheinlich problemlos per > Timer/PWM Funktion. Wenn nicht, reicht ein Timer mit Taktausgang und > zwei popelige CMOS-ICs. Ist präzises wie der Takt des DSP, und damit > wahrscheinlich quarzstabil. > > Beitrag "Re: pulse direction signal zu encoder a b?" > > MFG > Falk Wie gesagt per PWM gehts nicht. Eine PPL konstellation die mithilfe des 16bit Counters den Frequenzbereich abdeckt gibts nicht. Ausserdem habe ich die Genauigkeit ueberprueft, die belauft sich bei hohen Frequenzen bis zu 1%. Ich werde es mal mit dem Timer des DSP probieren. Der laeuft ohne PPL, sollte vlt. praziese genug sein. Ein Timer muesste mit der DSP verbunden sein, der Takt wird Softwaretechnisch errechnet und ausgegeben. Die Frquenz (bzw. Pulsweite) wird dabei jede millisekunde geandert. Phasenversatz immer 90 Grad. Aufloesung nicht sehr hoch.
Schau Dir mal die dsPIC30 bzw. dsPIC33 von Microchip an. Die haben mehrfach PWM-Ausgänge und sind sehr schnell.
@ Johann (Gast) >Wie gesagt per PWM gehts nicht. >16bit Counters den Frequenzbereich abdeckt gibts nicht. Ausserdem habe >ich die Genauigkeit ueberprueft, die belauft sich bei hohen Frequenzen >bis zu 1%. Kaum. >Ich werde es mal mit dem Timer des DSP probieren. Der laeuft ohne PPL, >sollte vlt. praziese genug sein. >Phasenversatz immer 90 Grad. Aufloesung nicht sehr hoch. Das ist aber im vollen Widerspruch zu deinem letzten Posting! "Ja der Phasenversatz zwischen beiden Spuren muss verstellbar sein." Ja was denn nun?
@ Falk: Sorry mein Fehler. Ich muss die Moeglichkeit haben einen Ausgang, sei es B, um 90 und -90 Grad zum anderen Ausgang zu verschieben. Also ganz einfach Richtungsweisend.
@ Johann (Gast) >Sorry mein Fehler. Ich muss die Moeglichkeit haben einen Ausgang, sei es >B, um 90 und -90 Grad zum anderen Ausgang zu verschieben. Also ganz >einfach Richtungsweisend. Aha. Also nimm die Schaltung aus dem Link oben, den Takt per Timer erzeugen, die Richtung per IO-Pin. Fertig. MFG Falk
>Die B Spur soll die Richtung weisen. Also entweder 90 Grad vor oder >nachlaufen. Ist sogar noch viel lustiger: wenn man sich den vorherigen Flankenwechsel merkt, kann man schon beim nächsten Flankenwechsel (A oder B) sagen, in welche Richtung es geht. Das nennt sich dann Vierfachauswertung... Johann schrieb: > 0.3 % ist erheblich zuviel. Das hängt wie gesagt von der maximalen Taktfrequenz deines Zählers ab. Ich habe hier 10MHz angesetzt. > Ich habe funktionen in meinem Code, die bis zu 1ms dauern. SW-Technisch > ist es mir zu aufwendig und ich habe zweifel an der Genauigkeit. Hat dein DSP keine Interrupts? Das Umschalten des Port-Pins würde ich per Hardware machen (Compare-Funktion) und das Setzen des nächsten Umschaltzeitpunkts per Software... Falk Brunner schrieb: > Beitrag "Re: pulse direction signal zu encoder a b?" Danke, Falk, den Beitrag hatte ich schon mal gesucht... ;-)
@ Lothar Miller (lkmiller) Benutzerseite >> Beitrag "Re: pulse direction signal zu encoder a b?" >Danke, Falk, den Beitrag hatte ich schon mal gesucht... ;-) Ist im Artikel Drehgeber verlinkt, damit er der Nachwelt erhalten bleibt. Und das Klima rettet ;-)
Lothar Miller schrieb: > Hat dein DSP keine Interrupts? > Das Umschalten des Port-Pins würde ich per Hardware machen > (Compare-Funktion) und das Setzen des nächsten Umschaltzeitpunkts per > Software... An Interrups habe ich auch schon gedacht. Welchen wuerdest du da benutzen? Timer Interrupts an GPIO? Lothar Miller schrieb: > Das hängt wie gesagt von der maximalen Taktfrequenz deines Zählers ab. > Ich habe hier 10MHz angesetzt. Ich habe soeben den DSP Internen Timer ausprobiert. Der laeuft mit 24 Mhz. Bei hohen Freuqenzen habe ich einen Fehler von 0,2%. Das ist mir leider zu hoch.
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.