Hallo, ich möchte mit einem Arduino einen PWM-Sinus mit 50Hz erzeugen. Im Internet habe ich schon was dazu gefunden, weiß aber überhaupt nicht wie ich anfangen soll. Es soll ein Sinus mit 2,5V Amplitude, 50Hz und einem Offset von 2,5V rauskommen. Dazu hab ich mir gedacht ich leg einen Array an, in dem die Sinuswerte reingelegt werden. Darum bau ich mir ne Schleife, die die Sinustabelle im Array abarbeitet und den Inhalt auf den PWM -Ausgang gibt. Da ich aber leider noch nicht viel programmiert habe. Bräuche ich vll so paar Ansätze, vll als Quelltext. Wäre super, wenn mir jemand helfen könnte. Gruß Andreas
Schreib doch erstmal auf was Du weisst bzw. wie Du es Dir vorstellst. Die Lücken können wir gemeinsam füllen...
Andreas schrieb: > Dazu hab ich mir gedacht ich leg einen Array > an, in dem die Sinuswerte reingelegt werden. Darum bau ich mir ne > Schleife, die die Sinustabelle im Array abarbeitet und den Inhalt auf > den PWM -Ausgang gibt. Alles richtig. Gut, anstelle der Schleife würde man einen Timer nehmen, der einen regelmässigeren Basistakt garantiert, aber das ist jetzt nicht soo wichtig. Also leg mal los. Schön in Schritten arbeiten, immer mit Dingen anfangen, die man testen kann. Bei dir ist das zb die PWM.
Hey vielen Dank erstmal für die Antworten :) Habe jetzt erstmal versucht, das Programm bisschen zu schreiben. Jedoch habe ich bei manchen Sachen Probleme. Ich habe mir erst überlegt, ich werde meinen Sinus auf 40 Stützwerten aufbauen (evtl. kann ich das auch noch erhöhen um den Sinus genauer zu machen). Die habe ich dann erstmal in einen Array geschrieben. Anschließend habe ich meine Variablen deklariert und den PWM-Ausgangspin freigeschaltet. Als nächstes sollte jetzt eigentlich ein Timer kommen, aber da weiß ich noch nicht wirklich wie ich den konfigurieren muss. Habe zwar in der ATMEGA Beschreibung mir diese ganzen Register usw. angeguckt, bin aber nicht so richtig schlau geworden. Ob ich jetzt in den PWM-Mode gehe, oder doch das normale und ob ich Overflow Interrupt mache oder Capture und Compare. Da hab ich nicht so recht die Ahnung. Als nächstes soll er dann die ISR von dem Timer aufrufen (also sozusagen die Schleife). Die Werte aus dem Array auslesen und auf den PWM-Pin geben. Jedoch weiß ich aber auch noch nicht wirklich, wie ich die 50Hz hinbekommen soll. Wäre super nett, wenn ihr mir ein bisschen unter die Arme greifen könntet
Das Tastverhältnis der PWM muss dem momentanen Wert des Sinus entsprechen. Die PWM Frequenz muss ein vielfaches der 50Hz sein (Würde sagen geößer 1000Hz). Welcher Controller soll zum Einsatz kommen? Axel
Wieso brauch ich nur die Werte von 0 bis PI/2. Brauch ich nicht die Stützwerte für eine ganze Vollwelle ?
die Werte wiederholen sich, bzw sind negativ. Arduino heißt Mega 168?
Suche im Internet magic sinewaves von Don Lancaster, besser als plattes PWM.
Ich brauch nur einen festen Sinus mit 50Hz. Kein nachregeln oder so. Soll einfach nur ne Speisespannung für eine Schaltung sein
@ Andreas (Gast) >Ich brauch nur einen festen Sinus mit 50Hz. Kein nachregeln oder so. >Soll einfach nur ne Speisespannung für eine Schaltung sein Dann nimm einen Timer mit Output COmpare FUnktin, erzeuge ein Rechtecksignal mit 50% Tastverhältnis und filtere den Ausgang mit zwei oder drei RC-Filtern. Fertig ist der Sinus. MFG Falk
So hab mich nochmal ein bisschen rangesetzt, aber irgendwie bekomme ich noch nicht wirklich das PWM-Signal raus. Vielleicht kann mir ja jemand sagen, was an meinem Quelltext falsch ist. Wäre richtig super :) Gruß
Filtern musst du sowieso, auch bei der PWM Methode. Wenn du eh nur eine Frequenz brauchst, mach es so wie Falk sagt.
Naja, ich würde aber gern wissen, was an meinem Quelltext falsch ist. Irgendwie lernt man ja nur aus seinen eigenen Fehlern und nicht, wenn man jedes mal von vorne anfängt. Ich denke mein Quelltext ist ja gar nicht so verkehrt, nur da fehlt wahrscheinlich iwie nur ne Kleinigkeit. Naja und Filter hab ich eh dahinter hänger 2 Butterworth. Also das sollte kein Problem darstellen.
Das Problem ist anscheinend, dass er nicht in die ISR springt. Hab das mal getoggelt, aber iwie macht er das nicht. Woran es aber liegt, weiß ich irgendwie nicht...
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.