Forum: Mikrocontroller und Digitale Elektronik Problem mit einem Programm


von ChristianK (Gast)


Angehängte Dateien:

Lesenswert?

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 :)

von Huch (Gast)


Lesenswert?

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.

von Huch (Gast)


Lesenswert?

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.

von ChristianK (Gast)


Lesenswert?

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ß

von spess53 (Gast)


Lesenswert?

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

von Huch (Gast)


Lesenswert?

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.

von ChristianK (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.