www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit einem Programm


Autor: ChristianK (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ChristianK (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ChristianK (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.