www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM mit verschiedenen Frequenzen


Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich stehe im Moment vor einem kleinen (großen) Problem:

Ich möchte mit Bascom ein Programm für einen ATtiny24 schreiben, das es 
ermöglicht, anhand der Stellung eines DIP Schalters verschiedene 
Frequenzen zu erzeugen.
Wie ich die PWM ansich erzeuge ist mir klar. Jedoch bin ich mir nicht 
schlüssig darüber, wie ich dem Programm nun mitteilen kann, dass es bei 
Schalterstellung X eine Frequenz von z.B. 33,0 Hz, bei Y 35,4 Hz und bei 
Z 36,6 Hz erzeugen soll.

Kann mir da jemand auf die Sprünge helfen oder mir vielleicht anhand der 
drei o.a. Frequenzen das eine oder andere Beispiel an den Kopf werfen?
Zwar hab ich bereits im Forum und auch über diverse Suchmaschinen 
gesucht, konnte bisher aber leider nichts finden, woraus ich wirklich 
schlau wurde.

Ich sag schonmal vielen Dank!

Gruß,

Kai

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tipp 1: Dipschalter kann man als (Binär-)Zahl einlesen (z.B. 3 Schalter 
-> 0-7), diese Zahl kann man als Array-index benutzen
Tipp 2: Bei soo niedrigen Frequenzen nimmt man software-PWM (Ist 
bestimmt bei Bascom schon eingebaut, aber das Bascom-Manual musst du 
lesen, nicht ich ;) ). Bei Soft-PWM wird i.d.R eine Variable hoch (oder 
auch runter, ist egal) gezählt, als zusätzlicher Teiler. Wie weit da 
gezählt werden muss, kann man dann z.B. aus einem Array auslesen.

Also:
 - lies nach, wie man in Bascom ein PWM-Signal ausgibt
 - bau das so um, dass du die Frequenz einstellen kannst
 - lies nach, wie man Dipschalter einliest (PINS, SChieberegister, oder 
wieauchimmer)
 - Ordne die Schalter-Stellungen den PWM-Einstellungen zu.
(Nennt man Divide-And-Conquer-Methode: Zerteil die Aufgabe in kleine 
Teile, und löse die nacheinander).

hth. Jörg
ps: wozu brauchst du ein PWM-Signal mit einstellbarer FREQUENZ ?
Bei PWM stellt man doch normalerweise den 'Duty-Cycle' (die An/Aus-Zeit) 
ein...

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg!

Danke für deine Antwort.

Wie ich grundsätzlich die PWM erzeuge stellt kein Problem dar. Dazu habe 
ich mich hierdran orientiert: 
http://www.roboternetz.de/wissen/index.php/Bascom_...

Mit dem Umbauen des Codes, so, dass je nach Schalterstellung eine andere 
Frequenz erzeugt wird, hab ich meine Probleme.
Ich weiss leider nicht, was genau ich ändern muss/kann/darf und wie das 
dann aussehen muss.

Der Rest, wie das Auslesen des DIP Schalters usw. ist keine große Hürde.

Die Schaltung soll am Ende insgesamt, abhängig von der Stellung des DIP 
Schalters, 64 verschiedene Töne generieren und als externes CTCSS-Modul 
für CB-Funkgeräte dienen.
Ich weiss, dass es solche Module fertig zu kaufen gibt, da ist aber das 
Problem, dass sie 1. recht teuer und 2. i.d.R. unzulässig sind, da sie 
ins Gerät eingebaut werden müssen. Darum mein Versuch, eine externe 
Lösung zu bauen.
Die Hardware ist soweit auch schon fertig, es fehlt nur noch die 
Programmierung. Und die bereitet mir schon seit einigen Wochen 
Kopfzerbrechen.

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meinst du das CTCSS: http://de.wikipedia.org/wiki/CTCSS ?
 Das wird ein bisschen komplizierter als ein 30Hz PWM-Signal.
Da musst du nämlich einen Ton erzeugen, d.h. ein schnelles 
(Hardware-)PWM-Signal mit dem passenden Sinus modulieren (Stichworte: 
Sinustabelle, DSS -> "Digital Signal Synthesis").
 Sollte aber noch machbar sein.

hth. Jörg

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist mir schon klar.
Das PWM Signal wird durch einen Tiefpass geschickt und dort dann in ein 
Sinus Signal umgewandelt. Das ist soweit alles gelöst.

Hier mal ein Ausschnitt des Codes für die PWM:
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up Prescale = 1

Do
 Compare1a = 255
Loop

End

Die Frage ist nun, ausgegangen vom ATtiny24 (1 MHz), was muss ich hier 
ändern, um z.B. auf eine Frequenz von 33,0 Hz zu kommen?

Autor: LTE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin da zwar kein Profi, aber verursacht PWM hier nicht unerwünschte 
Störungen / Interferenzen ?

Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für solche Dinge lässt man den Tiny besser eine Sinuskurve abklappern 
und die mit hoher PWM Frequenz ausgeben. Dann reicht ein simpler 
Tiefpass und es sieht trotzdem nicht schlecht aus.

Als Beispiel kann die Applikations Note AVR314 von Atmel dienen. Hier 
werden mit einem beliebigen AVR DTMF Touchtones erzeugt - also sogar 
zwei Töne gleichzeitig.
Für die neuen Frequenzen muss man dann halt rechnen.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kai schrieb:
> Kann mir da jemand auf die Sprünge helfen oder mir vielleicht anhand der
> drei o.a. Frequenzen das eine oder andere Beispiel an den Kopf werfen?

DDS
Der Seite von Jesper Hansen mit seinem miniDDS sind leider die Links zum 
Code-Download abhanden gekommen.
http://www.radanpro.com/Radan2400/mikrokontroleri/...

Der Kern ist eine kleine Assembler-Schleife, die sich per Inline 
bestimmt auch in BASCOM umsetzen lässt.

Was du brauchst sind:
 - eine Sinustabelle
 - ein Phasenzähler
 - ein DAC
 - und ein Phaseninkrement, passend zu deiner Frequenz berechnet

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.