Einfachster Sinustongenerator

ID: 361008
Einfachster Sinustongenerator 
28.Oct.14 19:30
139

Rudolf Drabek (A)
Beiträge: 272
Anzahl Danke: 12
Rudolf Drabek

In unserem Gemeinschaftsprojekt ist ein RC-Generator als Modulationsquelle vorgesehen, der etwa 10 Bauteile benötigt. Alternativ und auch z.B. als Morsetrainer etc. dieses höchst einfache Gerätchen, bestehend aus einem Mikroprozessor Atmel ATtiny13. Im Grenzfall sind keinerlei weitere Bauelemente für einen Sinus mit weniger als 1% Klirrfaktor erforderlich. Anmerkung: spektrale Signalteile > 15 kHz vernachlässigt, da sie nur für junge Leute hörbar sind. Ggfs ist ein einfaches RC-Filter an Pin5 möglich. Die Frequenz des Sinus ist ca. 500 Hz, aber umprogrammierbar.

Das Programm besteht aus einem 18 kHz Generator, dessen Tastverhältnis von 0..255 und zurück von 255...0 geändert wird. Dadurch kann man mit einem Programm von lediglich 8 Zeilen den Sinus erzeugen. Eine genaue Beschreibung im Anhang. Bis auf die Befehlsbezeichnungen sollten die Kommentare für genügend Erklärungen sorgen.

Schaltung: Pin 1 und 8 verbinden und an +3...5V legen. Pin 4 auf 0V. Stromverbrauch ist 4 mA. Ein kleiner Elko zwischen 4 und 8 ist nützlich bei schwacher Batterie oder langen Leitungen. Ein RC-Glied mit 250Hz Grenzfrequenz an Pin 5 ergibt das gut gesiebte Signal.

Wer sich noch nicht mit µC's beschäftigt hat kann dies als Einstieg nehmen, braucht aber dazu etwas zum Arbeiten und entwickeln. Hier finden sie ziemlich gute Info's und auch wo sie gute Lektüre zum Einstieg finden.

Das obere Oszillogramm zeigt die Samplingfrequenz von 18 kHz mit veränderten Tastverhältnissen  ungefiltert. Das untere Oszillogramm 500 Hz, gefiltert wie im Text erwähnt. Die 18 kHz Reste sind nicht hörbar und z.B. nach Empfang eines damit modulierten Generators der ZF-Selektion des Empfängers zum Opfer gefallen.

Im Bild ist schon deutlich die Phasenverschiebung zwischen dem oberen und unteren Osz. zu sehen. Der Restripple der 18 kHz ist übrigens nicht phasenverschoben.

Dazu noch einige Bilder mit geringerer Siebung. Es zeigt alles deutlicher.

Ob der Beitrag für RMorg überhaupt geeignet ist, weiss ich nicht. Er ist ein wenig digital, aber das wird im RMorg, siehe digitales Radio, in Zukunft sicher öfters vorkommen.

Falls jemand Klirrfaktor messen kann und es nachbaut, wäre ich am gemessenene Wert interessiert. Der Wert muss kleiner 1 % sein.

 

Die .hex Datei folgt.Problem mit hochladen. Bitte vor dem flashen des µC auf .hex umbenennen.

Auf Anfrage sende ich sie per Mail gerne zu. Die Formatierung der ASM Datei ist mit meinem Editor schöner. Bitte die Datei ev. downloaden und dann weitersehen.

 

Anlagen:

Für diesen Post bedanken, weil hilfreich und/oder fachlich fundiert.

 2
Klirrfaktor bestimmen 
29.Oct.14 09:58
139 from 6568

Pius Steiner (CH)
Redakteur
Beiträge: 384
Anzahl Danke: 10

Vielen Dank Rudi

wenn Du mir die reine HEX Datei (ich glaube die hochgeladene Datei ist nicht die Richtige) per Mail schicken könntest, würde ich ab Freitag die Schaltung aufbauen und den Klirrfaktor mit der HP-Brücke bestimmen.
Was ich noch nicht verstanden habe ist, weshalb ist Pin 1 auf High gelegt? Ja ich weiss, wenn ich die Software studieren würde, könnte ich es wahrscheinlich sehen.

Wa smir noch fehlt sind die Einstellungen der Flags des Tiny. Gehe ich richtig davon aus, dass Du die höchste interne RC Taktfrequenz gewählt hast?

Anbei, Deine Lösung wäre auch für meinen DDS Generator ein Kandidat.
herzlichen Gruss
Pius

Für diesen Post bedanken, weil hilfreich und/oder fachlich fundiert.

 3
500 Hz Sinus 
29.Oct.14 10:17
153 from 6568

Rudolf Drabek (A)
Beiträge: 272
Anzahl Danke: 12
Rudolf Drabek

Hallo Pius

Die Fuse Bytes sind wie von Atmel default.Der Takt ist 1,2 MHz initial wird aber, im Listing zu lesen, auf 4,8 MHz umgeschaltet. Das hat damit zu tun, dass das einfache Entwicklungswerkzeug, wie im Link beschrieben, mit 1,2 MHz zurechtkommt. Aber mit 4,8 oder gar 9,6 MHz ?

Letztlich habe ich 4,8 MHz gewählt wegen Stromverbrauch. 36 kHz Samplrate wäre noch möglich.

Das Hochladen geht auch mit "mehr hochladen" nicht. Nicht erlaubte Fileformate.

Schicke .hex per Mail.  Ah ja: Pin1 ist reset.  Es ist nicht "meine Lösung". Ich habe ein Basicprogramm auf Assembler umgeschrieben. Man kann aber sehen, dass der Frequenzumfang ziemlich klein ist.

Siehe Formel im Listing. Ich versuche das asm in eine .doc zu packen und hochzuladen. .zip geht auch nicht.

LG Rudi

Anlagen:

Für diesen Post bedanken, weil hilfreich und/oder fachlich fundiert.

 4
Messungen der Verzerrungen 
31.Oct.14 15:20
381 from 6568

Pius Steiner (CH)
Redakteur
Beiträge: 384
Anzahl Danke: 14

Hallo Rudi

so, ich habe kurz einen Tiny ins Entwicklerboard gesteckt, die Software übersetzt und einen RC Tiefpass "wild" angeschlossen. Deine Vermutung, der Klirr könnte sich unter 1% bewegen hat sich nur teilweise bestätigt.
Die Messungen des Klirrfaktors erledigte ich mit dem HP8903A, der sicher nicht mehr ganz genau stimmt. Damit ich aber die Qualität der Messung schätzen kann, habe ich als Referenz den Tektronix SG505 mit dem gleichen Ausgangspegel gemessen.
Bei 1kHz erreichte der SG505 einen Klirrfaktor von 0.0054%. In allen Messungen war am HP8903A der 30kHz Tiefpass aktiviert.

Hier nun meine Werte:

delay f Verzerrung
5 801 4.86%
10 485 2.93%
15 348 2.1%
20 271 1.66%
30 188 1.18%
40 144 0.95%

Anschliessend verdoppelte ich die Taktfrequenz des Prozessors und erreichte diese Werte:

5 1609 4.78%
8 1160 3.42%
9 1060 3.15%
10 975 2.88%
15 699 2.08%
20 543 1.63%
30 377 1.18%
40 289 0.9%
50 234 0.78%
60 196 0.65%

Anschliessend schaute ich mir das Spektrum auf einem HP3580A an. 500Hz/Div
Das erste "Spick" ist die Grundfrequenz.


Tiny Generator ca. 1kHz

Zum Vergleich der SG505

Selbstverständlich soll der SG505 nicht mit dem Tiny Generator verglichen werden, da der dahinter steckende Aufwand des SG505 enorm ist. Der SG505 hat übrigens den kleineren Klirr als der eingebaute Generator im HP8903A.

Solltest Du mehr benötigen, dann lass es mich wissen.
Gruss
Pius

 

Für diesen Post bedanken, weil hilfreich und/oder fachlich fundiert.

 5
Klirr Resultate 
31.Oct.14 17:28
432 from 6568

Rudolf Drabek (A)
Beiträge: 272
Anzahl Danke: 11
Rudolf Drabek

Lieber Pius

Etwas enttäuschend! Überrascht bin ich von der 2. Harm. Die Sinustabelle ist ja völlig symmetrisch aufgebaut. Also für einfache Aufgaben wird es reichen.

Du sprichst von einem 30 kHz Filter. Sind also die 18 kHz Reste includiert? Speziell bei 4,8 MHz Takt. Bei 9,6 MHz Takt ist ja die Samplingfrquenz 36 kHz.

Die Sinustabelle hat zwar 256 Werte. Es wird aber z.B. bei delay 5 nur 22x abgetastet. Das kann ein Grund sein. Man sieht jedenfalls schön die verbesserten Werte bei etwa gleicher Frequenz aber 2x Takt.

Die Schaltung vom SG505 wäre interessant!

Danke für die prompten Messungen, so schnell nachgebaut.

LG Rudi

Für diesen Post bedanken, weil hilfreich und/oder fachlich fundiert.

 6
Resultat ist nicht schlecht 
31.Oct.14 18:05
448 from 6568

Pius Steiner (CH)
Redakteur
Beiträge: 384
Anzahl Danke: 12

Hallo Rudi

ich bin vom Ergebnis nicht entäuscht. Wenn ich bedenke, dass ein Chip, 2C und 1R reichen und fertig ist der Generator, der ein Sinus Signal liefert dessen Falschanteil lediglich bei 2-5% liegt.

Natürlich ist bei einer Abtastung von 22 mal kein guter Klirr zu erwarten. Die Werte zeigen es ziemlich deutlich auf. Ein Atmel der schnelle wäre würde das Resulat verbessern. Aber wie gesagt, einfacher als mit dem Tiny sehe ich es dann nicht mehr.
Könnte man, zumindest bei einer Fixfrequenz, mit einem Bandpass noch etwas verbessern, was meinst Du dazu?

Beim Messen des Klirrfaktors in kleinen Bereichen habe ich auch schon mal ein schlechtes BNC Kabel, oder eine miserable Lötstelle gefunden. Mein Aufbau war teilweise gelötet, aber dennoch waren längere Leiterbahnen vom Tiny bis zu den Anschlüssen vorhanden, und da könnten sich auch digitale Störungen verbreiten.

Es ist gar nicht einfach, einen verzerrungsarmen Sinus zu erzeugen.
In der heutigen Zeit, nehme ich an, könnte ein gutes Kalibriersignal vielleicht von einer CD kommen?

Was mich erstaunt hat, dass sich (noch) kein RM Mitglied mit Erfahrungen in der Benutzung der Soundkarte als Audiomessplatz gemeldet hat. Ich selber weiss es nicht, aber ich stelle mir vor, dass mit einer guten Audiokarte und der richtigen Software auch Messungen des Klirrfaktors möglich sein müssten. Hat da jemand Erfahrungen und könnte uns ein paar Tips abgeben, worauf man achten müsste?

Ich sende Dir das Schema des SG505 zu, damit Du den Aufwand dahinter sehen kannst. Eines meiner Geräte hatte, nach dem Wurf in die Mulde (nicht ich), das Doppelpoti gelöst. Es liess sich zerlegen und der genaue mechanische Abgleich erfolgte über eine R-Messbrücke, damit die beiden Potis wieder möglichst synchron waren.

schönes Wochenende
Pius

Für diesen Post bedanken, weil hilfreich und/oder fachlich fundiert.

 7
DSP zum tiny 13 additionell? 
01.Nov.14 10:41
525 from 6568

Rudolf Drabek (A)
Beiträge: 272
Anzahl Danke: 10
Rudolf Drabek

Lieber Pius

1.Du hast mich auf eine Ideen gebracht. Im Netz kursieren ja viele Anwendungen mit der Soundkarte. Immerhin 16 bit = 96 dB Dynamik. Da könnte ich ja ev. auch Klirr messen. Werde das suchen und mit CD checken?

2.Noch " ins Unreine" gesprochen ( ein sehr respektierter Chef von mir sagte das 1981):  Mit einem ATmega8 der ja bis 16 MHz betrieben werden kann, ist erstmals das Abtastproblem 2x kleiner geworden. Weiters, PWM läuft ja fast isoliert im Prozessor. Möglicherweise gelingt es im Rest des mega8 eine einfache DSP Funktion zu implementieren. Z.B. ein Filter mit 12 dB/Oktave, das mit der PWM-Frequenz mitläuft. Die variable Frequenz ist einfach zu realisieren, da die Grenzfrequenz eines Filters mit variablen Tastverhältnissen realisiert werden kann. Wäre immer noch 1 IC.

Aber im Moment nur Idee und wenig Zeit. Vielleicht sollten wir das nicht öffentlich weiter betreiben, da es ja unausgegoren ist.

LG Rudi

Für diesen Post bedanken, weil hilfreich und/oder fachlich fundiert.