Hallo, bin gerade dabei ein Programm zu programmieren doch irgendwie macht er nur Mist. Das Problem ist folgendes: Ich will mit dem Programm einen PWM-Sinus erzeugen, aus dem widerrum ein Rechteck erzeugt wird. Anschließend soll ein Signal eingelesen werden, das soll synchron gleichgerichtet werden ( also mit dem Rechteck multipliziert werden) und dann soll das Signal integriert werden. Eigentlich nicht so schwer. Mein Problem ist an der Sache, dass das Rechteck nie wirklich steht. Das eiert immer um die Nullstellen des Sinus herum, weil es ja abgetastet wird. Dadurch hab ich nie eine gleiche Periodendauer und er verhaut mir völligst das Ergebnis. Hatte mir jetzt überlegt den Vorteiler runterzusetzen, damit ich mehr Abtastpunkte habe. Aber dann fängt irgendwie nur noch alles an zu schwingen. Hat jemand eine Idee wie man das hinbekommen könnte, dass das Rechteck steht und nicht rumwackelt ? Bin grad echt am verzweifeln... Vielen Dank schon mal im voraus :)
Spontan frage ich mich warum Du nicht gleich ein Rechtecksignal erzeugst und erst den Umweg über einen Sinus gehst. Dann sehe ich im Interrupt Float Berechnungen. Die Float Berechnungen dauern sehr lange. Die macht man nicht im Interrupt. Möglicherweise hilft es wenn Du die auslagerst und/oder völlig auf den Sinus per PWM verzichtest. Ich werde sowieso aus der Beschreibung nicht schlau. Wer macht da genau was? Zumindest ein Blockschaltplan wäre hilfreich.
Noch zwei Hinweise zum Quelltext: Erstmal poste die besser als C-Datei als Anhang. Dann sind sie für uns besser lesbar. Dann poste bitte den kompletten, kompilierbaren Code. (Es fehlt z.B. main). Falls möglich reduziere den Code soweit das alles unnötige herausfällt, so dass aber der Fehler noch auftritt. Das ist dann für uns alle leichter.
Hallo viele danke für die schnelle Antwort. Habe auch gerade festgestellt, dass die Abfrage der Messwerte in der ISR das ganze kaputt macht. Werde jetzt versuchen dass irgendwie auszulagern. Der Controller auf dem das programmiert wird, ist son Arduino. Und bei dem reicht die setup und die loop anscheinend aus.hab vorher auch nie damit programmiert. das ist das problem an der sache. das mit dem festen rechteck hab ich mir auch shcon überlegt. Aber ich brauch halt genau ein Rechtecksignal das mit 55 Hz getaktet ist und ich habe keine ahnung wie ich das anstellen soll. Auch die Programmierung des Sinus, habe ich schon aus einer Vorarbeit übernommen. Das ist auch nicht auf meinem Mist gewachsen :P Aber ich soll das nun mal verwenden. Wenn du ne Ahnung hast wie ich mir ein Rechtecksignal mit 50Hz erzeuge wäre es super. Gruß
Hi >Wenn du ne Ahnung hast wie ich mir ein Rechtecksignal mit 50Hz erzeuge wäre >es super. Am einfachsten mit einem Timer im CTC-Mode. MfG Spess
50Hz oder 55Hz? Evtl. muss man mal gucken wie genau sich das erzeugen lässt. Aber den Tip von spess53 berührt das im Grunde nicht. >Auch die Programmierung des Sinus, habe ich schon aus einer Vorarbeit >übernommen. Das ist auch nicht auf meinem Mist gewachsen Das mag ja sein. Aber wenn Du den Sinus nur brauchst, das ist mir bis jetzt noch nicht klar, um daraus ein Rechtecksignal zu erzeugen, dann lass den Sinus weg und erzeuge gleich ein Rechtecksignal.
Ne ganz so einfach ist das nicht :P Also worum es geht ist eine Ansteuerung. Die Elektronik usw. ist jetzt auch komplett fertig. Die Schaltung wird von dem Sinus gesteuert. Dann schaltet der mir paar Zustände usw. und dann kommt am Ende der Schaltung ein Signal raus. Und das Signal soll verarbeitet werden. Man soll letztendlich durch Addition der Samples und anschließendem Teilen durch die Samples den Mittelwert des Signal rausbekommen. Da das Signal aber negativ ist, muss es ja noch gleichgerichtet werden und das mit dem Rechtecksignal.Und das muss daher wieder genau phasengleich mit dem Eingangssinus sein.
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.