Frequenzerzeugung

OP #7525672
Lesenswert?

Hallo

Ich habe folgende Problemstellung:

Mittels 6-Bit Binärcode soll ein Wert zwischen 50 - 100 einstellbar sein und entsprechend eine Rechteck-Frequenz von 10-20KHz erzeugt werden (200Hz Schritte). Das ganze soll mit Logikbausteinen (keine Programmierung) aufgebaut sein. Gibt es eine einfache Frequenzvervielfachungs-Schaltung die diese Aufgabe erledigen könnte?

Andreas

Moderator (Firma: Titel) Persönliche Seite #7525688
Lesenswert?

Andreas S. schrieb:

Mittels 6-Bit Binärcode soll ein Wert zwischen 50 - 100 einstellbar sein

Wozu der Umweg über 50..100? Welcher Binärwert soll dabei welchem Dezimalwert entsprechen? Was soll bei den "restlichen" undefinierten Binärwerten passieren?

und entsprechend eine Rechteck-Frequenz von 10-20KHz erzeugt werden

Welcher Dezimalwert entspricht dabei welcher Frequenz? 50 = 10kHz? Oder 100 = 10kHz?

So wie der Text da nämlich gerade steht, kann auch eine einzige beliebige konstante Frequenz erzeugt werden und völlig unabhängig vom Binärwert ausgegeben werden.

Das ganze soll mit Logikbausteinen (keine Programmierung) aufgebaut sein.

In einem FPGA werden auch Logikbausteine aneinander geschaltet. Darfst du sowas nehmen?

Gibt es eine einfache Frequenzvervielfachungs-Schaltung

Wozu sollte da ein Vervielfacher nötig sein? Sinnvollerweise nimmt man eine ausreichend hohe Taktfrequenz und teilt die herunter.

diese Aufgabe erledigen könnte?

Was ist denn die eigentliche Aufgabe?

#7525701
Lesenswert?

Andreas S. schrieb:

Gibt es eine einfache Frequenzvervielfachungs-Schaltung die diese Aufgabe erledigen könnte?

Nicht wirklich.

Einfach ist ein einzelnes IC, ein uC wie ATTiny1604, aber du kannst ja nicht programmieren.

Frequenzteiler sind ungeeignet weil das kleinste gemeinsame Vielfache von 10000, 10209, 10400, 10600.. 19800, 20000 irgendwo unerreichbar hoch liegt.

Also benötigt man eine PLL wie CD4046, einen rate multipler wie SN7497, einen Taktgeber der z.B. 5000 Hz produziert (quartzstabil oder reicht RC?) und wegen 10-20kHz noch mindestens ein FlipFlop, also 4 IC. Und hat dann den Spass die PLL stabil zu bekommen. Analogtechnik-KnowHow ist gefordert.

Lern also endlich mal programmieren.

#7525711
Lesenswert?

Andreas S. schrieb:

Mittels 6-Bit Binärcode soll ein Wert zwischen 50 - 100 einstellbar sein und entsprechend eine Rechteck-Frequenz von 10-20KHz erzeugt werden (200Hz Schritte). Das ganze soll mit Logikbausteinen (keine Programmierung) aufgebaut sein.

Mit den 6 Bit adressierst du 50 Analogschalter, die jeweils einen entsprechenden Widerstand an einen 7555-RC-Oszillator schalten. ;-)

#7525718
Lesenswert?

  1. DDS mit Logik ICs aufbauen. Dazu brauchst du einen 8bit Addierer und ein 8bit Latch. (z.B. 2 x 74HC283 und 1 x 74HC273). Und einen festen Takt mit 51.2 kHz.

  2. PLL benutzen z.B. 74HC4046 und einen 8bit Teiler. Hier benötigst du eine feste Frequenz von 200 Hz, die dann von der PLL entsprechend des Teilfaktors multipliziert wird.

Auf jeden Fall brauchst du 7 Bits um 50..100 als Steuerwert vorzugeben.

#7525735
Lesenswert?

Arno R. schrieb:

Andreas S. schrieb:

Mittels 6-Bit Binärcode soll ein Wert zwischen 50 - 100 einstellbar sein

Mit den 6 Bit adressierst du 50 Analogschalter, die jeweils einen entsprechenden Widerstand an einen 7555-RC-Oszillator schalten. ;-)

Nein, nur 6 Analogschalter, die jweils einen Widerstand parallel schalten, an dem von Dir zitierten RC-Oszillator.

Die Leitwerte (1/R_i) und damit die Frequenzen (F~1/R) addieren sich bei Parallelschaltung.

Dazu kommt noch ein Festrwiderstand parallel, damit das bei 10KHz anfängt.

Bei 6 Bit Auflösung könnte sich sogar die Genauigkeit i9n angemessenen Größenordnungen bewegen, wenn man es sorgfältig macht.

Aber ich würde trotzdem einen 8-Pin-ATTiny oder einen STM32 dafür nehmen.

my2ct (re)

OP #7525736
Lesenswert?

Dank für die schnellen Rückmeldungen - war etwas unpräzise. Muss einen Wert von 0-50 (50-100 an einer 7-Segemten Anzeige) in eine Frequenz von 10kHz-20kHz umwandeln mit eine Abstufung pro Schritt von 200Hz:

Wert 0 = 10kHz Wert 1 = 10.2kHz .... .... Wert 49 = 20kHz

Jegliche programmierbaren Bausteine kommen leider nicht in Frage... würde das ganze etwas einfacher gestalten!

Das runterteilen ist schwierig da kein "guter" gemeinsamer Teiler vorhanden ist.

#7525776
Lesenswert?

Re schrieb:

Nein, nur 6 Analogschalter, die jweils einen Widerstand parallel schalten, an dem von Dir zitierten RC-Oszillator.

Ich kann es zwar mathematisch nicht beweisen, aber ich denke, daß man mit 6 Widerstandswerten nicht exakt die geforderten Frequenzschritte bekommen kann. Wenn es doch gehen sollte, um so besser. Dann würde mich mal die mathematische Herleitung bzw. der Beweis interessieren.

#7525784
Lesenswert?

Andreas S. schrieb:

Wert 0 = 10kHz Wert 1 = 10.2kHz .... .... Wert 49 = 20kHz

Lothar M. schrieb:

Denk nochmal darüber nach: welche Frequenz wäre denn der Wert 48? Und der Wert 75?

??? Man kann dem TO ja Formulierungsdefizite vorwerfen, ebenso wie Rechenschwäche (bei 200Hz-Raster würde 20kHz dem Wert 50 entsprechen), aber das prinzipielle Mapping auf 6-Bit-Input hat er doch nun hinreichend und eindeutig klargelegt.

Bis auf die Nebelkerze mit "50..100", die nirgendwo wieder aufgegriffen wird, und die auch nur dann eine Bedeutung hätte, wenn man auf DDS oder PLL-Vervielfachung hinaus wollen würde - was er weder gesagt noch bestätigt hat.

H. H. schrieb:

Hausaufgabe.

Wegen dem Nudging in Richtung DDS/PLL?

(re)

#7525796
Lesenswert?

Andreas S. schrieb:

war etwas unpräzise. Muss einen Wert von 0-50 (50-100 an einer 7-Segemten Anzeige) in eine Frequenz von 10kHz-20kHz umwandeln

Ich liebe Salamischeiben - auf dem Brot.

Mit den nachgereichten Problemveränderungen hat niemand Lust, sich ständig neue Lösungen auszudenken.

Es wird jedenfalls mit Dalamischeibe um Salamischeibe komplexer und erfordert mehr Bauteile - ausser der Lösung mit uC, den muss man nir umprogrammieren.

Dazu gehst du AUF KEINE Nachfrage zur Präzisierung ein. Solche Kundschaft braucht niemand, das wird ein Fass ohne Boden.

Lern endlich programmieren !

#7525798
Lesenswert?

Andreas S. schrieb:

Muss einen Wert von 0-50 (50-100 an einer 7-Segemten Anzeige) in eine Frequenz von 10kHz-20kHz umwandeln mit eine Abstufung pro Schritt von 200Hz:

Den digtialen Wert per DAC (R2R-Widerstandsnetzwerk o.ä.) in eine Spannung 0 - x,x V umwandeln und damit einen U/F-Umwandler betreiben. Was nimmt man denn heute, wenn man XR2006/2007 nicht mehr bekommt? CD4046 vielleicht? Das Ganze ist doch schnell gelöst, wenn man nicht auf die Stinkstiefel achtet.

#7525801
Lesenswert?

Arno R. schrieb:

Dann würde mich mal die mathematische Herleitung bzw. der Beweis interessieren.

Nicht leichter als das, sagte Frederic:

8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ----

Die Frequenz eines RC-Oszillators ist

| f = k * 1/(RC)

mit irgendeiner Konstante k. Oder anders formuliert:

| f = K * (1/R)

mit einer anderen Konstante K wo auch C drinsteckt.

Bei Parallelschaltung von Widerständen addieren sich die Kehrwerte:

| 1/R = 1/R0 + 1/R1 + 1/R2 + 1/R3 + ...

Wähle (unter Einbeziehung der Analogschalterwiderstände)

R0 = K/ 10000Hz (Der ist immer da)

R1 = K/ 200Hz (niederwertigstes Bit) R2 = K/ 400Hz R3 = K/ 800Hz R4 = K/1600Hz R5 = K/3200Hz R6 = K/6400Hz (höchstwertigstes Bit)

Je nachdem welche dieser Widerstände an der Parallelschaltung teilnehmen, wird die Frequenz im 200Hz Raster erzeugt.

Und die Hausaufgabe ist gelöst.

8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ----

Rüdiger B. schrieb:

DAC und VCO.

Das hier wäre dann der DAC-Teil Deiner Lösung, nur dass man auf das "V" in VCO verzichtet.

@TO: Welche Genauigkeit ist eigentlich gefordert?

(re)

#7525806
Lesenswert?

Andreas S. schrieb:

Jegliche programmierbaren Bausteine kommen leider nicht in Frage...

Und warum? Kann dein Lehrer nicht programmieren und so die Lösung der Hausaufgabe nicht überprüfen? Eine Angabe zur erforderlichen Frequenzstabilität fehlt auch immer noch.

Ansonsten gilt in der Elektronik wie im normalen Leben auch: das Leben ist kein Wunschkonzert und Sonderwünsche kosten extra. Man kann viel ins Pflichtenheft schreiben, wenn der Tag lang ist. Man muß es dann aber auch bezahlen wollen.

#7525812
Lesenswert?

Michael B. schrieb:

Dazu gehst du AUF KEINE Nachfrage zur Präzisierung ein. Solche Kundschaft braucht niemand, das wird ein Fass ohne Boden.

Ich habe es mir schon lang abgewöhnt auf solche dummen und skurrilen Aufgaben/Problemstellungen einzugehen. Keinerlei vernünftiges (oder gar kein) Feedback vom TO ist eines der Merkmale solcher Threads. Allermindestens sind sie Troll- ähnlich bzw. -verdächtig. Manchmal lese ich noch für's Amusemang mit. Vor allem ist es oft noch unterhaltsam wie ernst und eifrig viele Scheuklappenträger auf solche Themen eingehen. Viel vergeudete Zeit und Liebesmüh ....

OP #7525816
Lesenswert?

O.k. bin hier als Neuling schon ein bisschen erstaunt über die nicht nur hilfreichen Rückmeldungen...

Die Genauigkeit müsste im Bereich von +-50Hz liegen.

Keine Lernaufgabe oder Hausaufgabe - eine nicht alltägliche Aufgabenstellung um zu verhindern das eine Manipulation mittels Programmierung im Einsatz stattfinden kann.

Danke trotzdem für die Antworten die einen konkreten Vorschlag zur Lösung des Problems aufzeigen...

#7525825
Lesenswert?

Norbert schrieb:

6bit -> 2^6 Zustände

Maximal 64 Zustände, die aber nicht voll genutzt werden müssen. Hier zum Beispiel nur 0-50.

10-20KHz in 200Hz Schritten -> signifikant mehr Zustände.

Nee, 0,2 kHz pro Schritt ist doch klar geäußert.

Aufgabe nicht lösbar.

Nur, wenn man absolut unwillig ist. Schon wieder Freitag?

Andreas S. schrieb:

Die Genauigkeit müsste im Bereich von +-50Hz liegen.

Problemlos erreichbar.

#7525836
Lesenswert?

Axel S. schrieb:

das Leben ist kein Wunschkonzert

... doch-doch, bei der Entwicklung individueller Elektronik ist das durchaus so, dass der Kunde sich etwas wünscht (a.k.a. "Requirements spezifiziert").

... und Sonderwünsche kosten extra.

und ja, deren Umsetzung dann auch entsprechend bezahlen muss.

Allerdings ...

Andreas S. schrieb:

Das ganze soll mit Logikbausteinen (keine Programmierung) aufgebaut sein.

H. H. schrieb:

Wegen mangelnden Realitätsbezugs.

... lassen sich die Specs im Sinne einer Hausaufgabe ohnehin nicht umsetzen, weil zur Frequenzerzeugung mindestens ein Nicht-Logikbaustein benötigt wird, nämlich zur Frequenzerzeugung und ggf. auch zum Phasenvergleich. Logigbaustein zum Oszillator umfunktionieren zählt ja wohl als "Analoge" Verwendung und nicht mehr als "logische Verknüpfung".

H. H. schrieb:

Holzweg, aber sowas von.

Das ging nur um den von Arno gewünschten Beweis, dass man das so machen könnte, wenn man es denn wirklich wollte. Mit all seinen Nachteilen bezüglich Drift, Ungenauigkeit, Toleranzen, etc.

Dass ich persönlich für sowas nicht die digitale Domäne eines µC verlassen würde, wenn man die Bits dadrin schonmal erzeugt hat, hatte ich hoffentlich deutlich gemacht. Und dass die Wortwahl der Hausaufgabe "" wohl auf PLL oder DDS hinauswill, ist auch klar.

Andreas S. schrieb:

Keine Lernaufgabe oder Hausaufgabe

Ja, dann, wir haben uns Mühe gegeben, dafür wollen wir auch bei Laune gehalten werden: Was ist denn nun der tatsächliche Anwendungsfall?

(re)

OP #7525848
Lesenswert?

Re schrieb:

Ja, dann, wir haben uns Mühe gegeben, dafür wollen wir auch bei Laune gehalten werden: Was ist denn nun der tatsächliche Anwendungsfall?

Es handelt sich um Schaltung zum Erzeugung eines Sinussignals deren Frequenz mit Rotationsdrehgebern eingestellt werden kann. Die erzeugte Frequenz wird zur Kontrolle auf einer 7-Segment Anzeige angezeigt.

Das ganze wird verwendet um eine Art Lautsprechertreiberstufe anzusteuern.

#7525856
Lesenswert?

einen rate multipler wie SN7497

der macht jedenfalls gleichmäßige Frequenzstufen, aber das Rechteck sieht sehr unsauber aus. Hat 6 Bit Eingänge, das würde auch passen. https://www.ti.com/product/de-de/SN7497 der wird tatsächlich noch gebaut?

Die erzeugte Frequenz wird auf einer 7-Segment Anzeige angezeigt

Messung mit einem Frequenzzähler oder nur umgerechnete Anzeige des 6-Bit-Werts?

(Firma: schon lange insolvent) #7525861
Lesenswert?

Die Aufgabe ist mit TTL IC relativ einfach lösbar. Es gibt 4 Bit Volladdierer, 74HCT583 im Dezimalsystem und 74HCT283 im Binärsystem. Man muss sich entscheiden, will man Dezimasystem (BCD Binary Coded Digit) oder Binärsystem. Ich habe das vor ~33 Jahren 10-stellig im Dezimalsystem aufgebaut, damals mit sogenannten 2-Tast-Codierschaltern. Für jeweils zwei 4-Bit-Volladdierer ein 8-Bit-D-Flip-Flop 74HCT574 als Accumulatorregister. Zur Funktionsweise : Stellt man an den Einängen eine Zahl z.B. "7" ein, wird diese mit jedem Taktimpuls aufaddiert 0, 7, 14, 21, 28...91, 98, 5, 12 Diese Zahlenfolge addressiert ein Eprom in dem eine Sinustabelle gespeichert ist, damit wird ein DA-Wandler angesteuert. Nur mal um einen Weg aufzuzeigen..

Gast #7525875
Lesenswert?

Andreas S. schrieb:

Rechteck-Frequenz

so rein formell werden keine Frequenzen erzeugt, sondern Spannungen mit der Eigenschaft einer Frequenz. Und dann kommt sofort die Frage nach den Pegel.

Oder sollen nur Werte in Matlab/Simulink erzeugt werden?

Dann nimmt man in der Tat die Frequenz X und multiplziert sie mit k.

OP #7525886
Lesenswert?

Christoph db1uq K. schrieb:

Messung mit einem Frequenzzähler oder nur umgerechnete Anzeige des 6-Bit-Werts?

Frequenzzähler mit 74HC390

Andreas S. schrieb:

Es handelt sich um Schaltung zum Erzeugung eines Sinussignals deren Frequenz mit Rotationsdrehgebern eingestellt werden kann. Die erzeugte Frequenz wird zur Kontrolle auf einer 7-Segment Anzeige angezeigt.

Das ganze wird verwendet um eine Art Lautsprechertreiberstufe anzusteuern.

Das Sinussignal 50-100Hz wird aus einer Rechteckfrequenz 10-20kHz erzeugt. Beim Einspeisen des Rechtecksignals 10-20kHz mittels Frequenzgenerators funktioniert dies einwandfrei. Auch das Einstellen des Zählers mittels Drehgeber ist funktionsfähig - mir fehlt "nur" das Zwischenstück...

Gast #7525896
Lesenswert?

Du musst die Aufgabe vollständig beschreiben, wenn dir einer helfen soll.

Rechteckfrequenzen kann man nicht einfach vervielfachen, weil ein Rechteck aus zu vielen Frequenzen besteht. Soetwas geht mit Mono-Flops und Annahmen über die Frequenzen.

Eingang auf MF, beides auf EXOR und das mehrfach hintereinander.

#7525903
Lesenswert?

Andreas S. schrieb:

Das Sinussignal 50-100Hz wird aus einer Rechteckfrequenz 10-20kHz erzeugt.

Dann schreit das nach DDS, so wie ...

Peter T. schrieb:

Die Aufgabe ist mit TTL IC relativ einfach lösbar.

... es in seinem Beitrag angerissen hat.

Wird dann halt ein TTL-Grab. Oder man nimmt eins der zahllosen DDS-ICs oder -Module, die es für kleines Geld (und obendrauf schon mit deutlich saubererem Sinus-Ausgang) bereits zu kaufen gibt. Üblicherweise mit SPI-Interface. Notfalls könnte auch ein kleiner ATTiny sowas. Läuft aber alles auf das Gleiche hinaus, nur eben mit mehr oder weniger Aufwand.

Andreas S. schrieb:

um zu verhindern das eine Manipulation mittels Programmierung im Einsatz stattfinden kann.

Michael B. schrieb:

Lockbits setzen ?

Magst Du noch etwas darauf eingehen, was gegen diese Maßnahme spechen würde, damit wir nicht so im Trüben fischen?

(re)

#7525909
Lesenswert?

Andi F. schrieb:

Rechteckfrequenzen kann man nicht einfach vervielfachen

Doch, das macht man mit PLL, und da es nur um eine einzige Oktave geht, ist das auch nicht so tragisch.

Aber unnötig, weil der TE ja gar nicht vervielfachen will...

Andreas S. schrieb:

Das Sinussignal 50-100Hz wird aus einer Rechteckfrequenz 10-20kHz erzeugt.

.. sondern herunterteilen, was er ja auch bereits schon gelöst hat.

Er will nur einen Frequenzgenerator mit Rechteckausgang bauen, bei dem er die Frequenz mit 6 Bits vorgeben will.

Wozu ist das Gesamtgebilde am Endeeigentlich gut? Netznachbildung?

(re)

#7525932
Lesenswert?

Ein SN7497 reicht nicht, da er mit Null anfängt, und von da mit 200Hz-Stufen bis 63 einstellbar wäre, was maximal 12,6 kHz ergibt. Die minimalen Schritte bis 20 kHz wären ca. 317 Hz (20000/63). Beispielsweise 333Hz, damit sind 1kHz je drei Schritte.

Man könnte zwei SN74167 wie im Datenblatt 6.Seite gezeigt zusammenschalten https://pdf1.alldatasheet.com/datasheet-pdf/view/109191/TI/SN74167.html aber der wird nicht mehr produziert.

Man kann auch zwei SN7497 zusammenschalten, dann machen die auch 64² Schritte. Im Datenblatt S.5 für drei Stück gezeigt, man braucht noch NOR-Gatter.

Beitrag #7526038 wurde von einem Moderator gelöscht.
#7526117
Lesenswert?

Ja klar gibt es die noch als Reste irgendwo. Ich habe auch mal eine ganze Stange 74167 auf dem Flohmarkt gekauft, liegt seither rum.

Jeder normale Entwickler würde heute z.B. einen DDS nehmen, AD9835 oder ähnliches (9833, 9850, 9851), mit einem Arduino über SPI eingestellt. Die TTL-Technik ist doch uralt (in den Sechzigern aufgekommen). Die DDS gibt es auf Modulplatinen aus China und könnten auch direkt den niederfrequenten Sinus ausgeben. https://www.analog.com/en/parametricsearch/11018#/ die Übersicht der DDS von Analog Devices.

#7526133
Lesenswert?

Andreas S. schrieb:

Mittels 6-Bit Binärcode soll ein Wert zwischen 50 - 100 einstellbar sein und entsprechend eine Rechteck-Frequenz von 10-20KHz erzeugt werden (200Hz Schritte). Das ganze soll mit Logikbausteinen (keine Programmierung) aufgebaut sein. Gibt es eine einfache Frequenzvervielfachungs-Schaltung die diese Aufgabe erledigen könnte?

Du könntest nach diesem Prinzip machen. Über DD3.3 geht min. Frequenz, sie kann durch 6-bit Code fast verdoppelt werden. DD5 macht Impulse gleichmäßig. Nur kannst du hier entweder genau 200 Hz-Schritte machen oder 10 kHz bis 20 kHz Umfang, aber nicht beides gleichzeitig. Oder sollte der Code mindestens 7 bit haben (DD3.3 kann dafür benutzt werden).

Angehängte Dateien:
#7526222
Lesenswert?

Maxim B. schrieb:

Nur kannst du hier entweder genau 200 Hz-Schritte machen oder 10 kHz bis 20 kHz Umfang, aber nicht beides gleichzeitig. Oder sollte der Code mindestens 7 bit haben [...]

Doch: Intern muss der für DDS/PLL sowieso von 6 auf 7-Bit ge-offsettet werden. 2x 74HC283 tun den Job, wenn kein µC verwendet werden soll.

Die gewünschten Schritte im gewünschten Bereich erhält man dann bei DDS mit n-bit-Phasenakku, indem man die Taktfrequenz zu f_clock = 2^n x 200Hz wählt.

Sogar der gewaltige Phasenjitter bei 8-Bit kann vermutlich toleriert werden, weil hinterher ja noch durch 200 geteilt wird und so der effektive Jitter des 100Hz-Signals unter 0.03[rad] liegt.

Ansonsten kriegt der Phasenakku eben 12 Bits - ein TTL-Grab ist es ohnehin schon, wenn kein normaler DDS-Chip (z.B. AD9833) benutzt werden soll.

Oder man macht eben PLL. Oder ein Design, in dem alles von vornherein aufeinander abgestimmt ist.

Michael B. schrieb:

Wobei ich mir nicht mehr sicher bin was der TO wirklich will [...]

Ist ja auch eine öffentliche Diskussion und nicht nur persönlicher TO-Service.

Durch den Ausschluss von µC (obwohl das Argument "Manipulationsschutz" bereits entkräftet wurde) steigt der Aufwand ja gewaltig in die Höhe und die verwendbare Technologie tendiert zu obsoleten Komponenten.

Mag der TO vielleicht dazu noch etwas motivierendes sagen?

(re)

#7526271
Lesenswert?

Christoph db1uq K. schrieb:

Jeder normale Entwickler würde heute z.B. einen DDS nehmen, AD9835 oder ähnliches (9833, 9850, 9851), mit einem Arduino über SPI eingestellt.

Oder den AD9831 nehmen, weil der statt SPI ein klassisches Parallel-Interface hat. Die 6 Bit Sollwert parallel da rein zu schreiben, sollte mit Logikbausteinen machbar sein. Von den 8 internen Registern muss man nur 2 benutzen und davon eins nur einmalig nach Reset (schätze ich mal).

https://www.analog.com/en/products/ad9831.html?tab=documentation-pane-1#product-overview

Moderator (Firma: Titel) Persönliche Seite #7526289
Lesenswert?

Re schrieb:

Er will nur einen Frequenzgenerator mit Rechteckausgang bauen, bei dem er die Frequenz mit 6 Bits vorgeben will.

Wozu raten? Andreas hat doch schon mit einigen Salamischeiben beschrieben, was er will, denn

Andreas S. schrieb:

Es handelt sich um Schaltung zum Erzeugung eines Sinussignals deren Frequenz mit Rotationsdrehgebern eingestellt werden kann. Die erzeugte Frequenz wird zur Kontrolle auf einer 7-Segment Anzeige angezeigt.

Diese ganze Aufgabe wird im echten Leben komplett von Eingabe per Drehencoder über die Anzeige bis zur Ausgabe mit 1 einzigen µC erledigt.

Andere Wege (wie der von dir Gewünschte) mögen aus einem individuellen Blickwinkel ebenfalls gangbar aussehen, sind aber letztlich reisige Umwege und eigentlich unsinnig.

Wenn ich einen Arduino nehme, dann kann ich die Aufgabe "mit Drehgeber auf einer Anzeige 50-100Hz einstellen und entsprechend dazu ein 50% Rechteck mit 10-20kHz (Anzeigewert * 200) ausgeben" locker in 2 Stunden erledigen.

Andreas S. schrieb:

Das Sinussignal 50-100Hz

Ach so, deshalb die Anzeige 50 bis 100

wird aus einer Rechteckfrequenz 10-20kHz erzeugt. Beim Einspeisen des Rechtecksignals 10-20kHz mittels Frequenzgenerators funktioniert dies einwandfrei. Auch das Einstellen des Zählers mittels Drehgeber ist funktionsfähig - mir fehlt "nur" das Zwischenstück...

Nein, realistisch betrachtet erkennst du den Irrweg, verbuchst das bisher Gebastelte als "Lehrgeld", schmeißt es einfach in die Tonne und machst das komplette Design mit einem µC.

Und ebenfalls nein, den kopiert oder manipuliert dir keiner einfach so. Zigmilliarden Anwendungen beweisen das. Es ist in jedem Fall einfacher, eine diskret aufgebaute Schaltung nachzubauen oder zu manipulieren.

Ich würde (nach anfänglicherr Verwirrung wegen des Mordsaufwands) nötigenfalls die Schaltung so "reverse engineeren" und nachbauen, dass das IC-Grab durch einen µC ersetzt wird, der direkt den 50..100Hz Sinus ausgibt.

Wenn mich aber mein Chef mit viel Geld und Zusatzurlaub zwingen würde, sowas zu machen und mir viel mehr Zeit als die obigen 2 Stunden zugesteht und es ihm auch völlig egal ist, was das Zeug hinterher kostet, dann würde ich eine diskrete DDS basteln:

1
                                       CLK
2
0=10kHz                                 |  
3
50=20kHz  ___                          _v__ 
4
0..50 ---|   |   50..100   ___        |    |
5
         | + |----/-------|   |       |12x |
6
50 ------|___|    7       | + |---/---|D-FF|-----o---/-- MSB = 10..20kHz
7
Offset                .---|___|  12   |____|     |   1
8
                      |                          |
9
                      '-------------/------------'
10
                                    12

Damit das MSB bei einem Eingangswert von 100 mit 20kHz toggelt, muss CLK bei einem 12 Bit-Addierer 820 kHz betragen.

OP #7526297
Lesenswert?

Bauform B. schrieb:

Oder den AD9831 nehmen, weil der statt SPI ein klassisches Parallel-Interface hat. Die 6 Bit Sollwert parallel da rein zu schreiben, sollte mit Logikbausteinen machbar sein. Von den 8 internen Registern muss man nur 2 benutzen und davon eins nur einmalig nach Reset (schätze ich mal).

https://www.analog.com/en/products/ad9831.html?tab=documentation-pane-1#product-overview

Dies ist so ziemlich das was ich gesucht habe, scheint mir einen Versuch Wert zu sein ein paar Stunden dafür zu investieren... Hat jemand mit dem AD9831 bereits Erfahrungen gesammelt?

#7526339
Lesenswert?

Der AD9850 hat auch eine parallele Schnittstelle, und es gibt tatsächlich ein Board damit, zum 9831 habe ich noch nichts gefunden: https://www.nooelec.com/store/ad9850-module.html €37.83 Der Chip ist auch kleiner, und damit vermutlich günstiger.

Von Salami zu Mozzarella

"anstelle des Elefanten können auch Erdbeeren genommen werden" Loriots Kochrezepte

#7526371
Lesenswert?

statt SPI ein klassisches Parallel-Interface

Wie war man damals noch froh, dass Motorola auch PLL-Chips mit Parallelinterface anbot. Mikrocontroller waren noch sehr speziell und teuer. http://www.bitsavers.org/components/motorola/_dataBooks/1988_Motorola_CMOS_NMOS_Special_Functions.pdf Da konnte man auch noch eine Diodenmatrix am Stufenschalter anbringen und musste keine Eproms programmieren können.

Angehängte Dateien:
#7526470
Lesenswert?

Andreas S. schrieb:

https://www.analog.com/en/products/ad9831.html?tab=documentation-pane-1#product-overview

Dies ist so ziemlich das was ich gesucht habe, scheint mir einen Versuch Wert zu sein ein paar Stunden dafür zu investieren... Hat jemand mit dem AD9831 bereits Erfahrungen gesammelt?

Das weicht mittlerweile erheblich von Deinen eingangs genannten Anforderungen ab, aber wenn es Dir Spaß macht: nur zu!

Oben hatte ich mich vertippt und meinte den XR-2206. Dieser kann die 50 - 100 Hz Sinus direkt erzeugen, braucht noch einen DAC davor und zwei Trimmpotis zum Abgleich der unteren Frequenz und des Umsetzungsfaktors (Spannweite). Wenn es ohne Programmierung irgendwelcher Bauteile analog gelöst werden soll, ist es eine direkte und einfache Lösung.

Selber würde ich den Drehenkoder an einen µC anschließen, der die beiden Anzeigen direkt ansteuert und auch den Sinus erzeugt. ATmega48 im 28-pol. DIL würde reichen. Ein AD9831 käme mir überhaupt nicht in den Sinn.

#7526657
Lesenswert?

Mi N. schrieb:

Das weicht mittlerweile erheblich von Deinen eingangs genannten Anforderungen ab [...]

Tja, für eine echte Problemlösung ist der allererste Schritt ja üblicherweise, erstmal (unter Mithilfe des TO) diese Anforderungen zu klären, Lücken zu füllen, Irrtümer zu berichtigen und die echten "harten" Erfordernisse von den weniger harten oder unwichtigen zu trennen.

Zielführend ist dabei auch die Angabe von Begründungen. Gerne so kurz wie möglich gehalten, aber doch so lang wie nötig.

Sonst kreist man eben erstmal auf sehr weiten Orbits um die Lösung herum. Oder baut unnötigerweise Dinosaurier.

Christoph db1uq K. schrieb:

"anstelle des Elefanten können auch Erdbeeren genommen werden"

https://www.comedix.de/lexikon/db/erdbeere.php

Mi N. schrieb:

Selber würde ich den Drehenkoder an einen µC anschließen, der die beiden Anzeigen direkt ansteuert und auch den Sinus erzeugt. ATmega48 im 28-pol. DIL würde reichen. Ein AD9831 käme mir überhaupt nicht in den Sinn.

Latürnich. BtDtGts.

(re)

#7526682
Lesenswert?

Mi N. schrieb:

Oben hatte ich mich vertippt und meinte den XR-2206. Dieser kann die 50

  • 100 Hz Sinus direkt erzeugen, braucht noch einen DAC davor und zwei Trimmpotis zum Abgleich der unteren Frequenz und des Umsetzungsfaktors (Spannweite). Wenn es ohne Programmierung irgendwelcher Bauteile analog gelöst werden soll, ist es eine direkte und einfache Lösung.

So würde ich das eigentliche Problem auch lösen. Zumal die Frequenz des Sinus zwischen 50 und 100Hz ja ohnehin mit einem Drehencoder verändert werden soll. Da würde ich das mit dem Drehencoder sein lassen und gleich ein Poti nehmen. Und den Sinus mit XR2206 oder MAX038 erzeugen.

Wienbrücke oder Integrator-Schleife ginge auch, braucht aber Amplituden- Stabilisierung. Das wird bei den niedrigen Frequenzen häßlich.

Oder man bleibt bei dem ursprünglichen Konzept und erzeugt die 10 .. 20kHz mit einem beliebigen Oszillator. Da ginge auch ein 555.

Wenn die genaue Frequenz erforderlich ist (genauer als eine Skala am Poti) kann man ja noch einen Frequenzzähler dazu packen.

#7526683
Lesenswert?

Lothar M. schrieb:

Wenn mich aber mein Chef mit viel Geld und Zusatzurlaub zwingen würde, sowas zu machen und mir viel mehr Zeit als die obigen 2 Stunden zugesteht und es ihm auch völlig egal ist, was das Zeug hinterher kostet, dann würde ich eine diskrete DDS basteln:

1
>                                        CLK
2
> 0=10kHz                                 |
3
> 50=20kHz  ___                          _v__
4
> 0..50 ---|   |   50..100   ___        |    |
5
>          | + |----/-------|   |       |12x |
6
> 50 ------|___|    7       | + |---/---|D-FF|-----o---/-- MSB = 10..20kHz
7
> Offset                .---|___|  12   |____|     |   1
8
>                       |                          |
9
>                       '-------------/------------'
10
>                                     12
11
>

Damit das MSB bei einem Eingangswert von 100 mit 20kHz toggelt, muss CLK bei einem 12 Bit-Addierer 820 kHz betragen.

Das ist keine DDS sondern hoechstens ein NCO. Zu einer DDS gehoert zwingend eine LUT mit einem filterfaehigen Inhalt, um den Jitter am Ausgang wegzufiltern. Das Thema wurde hier ja schon oft genug diskutiert.

Wie jetzt der TO von einer "Rechteckquelle" mit diskreten Frequenzen zu einem (Sinus-)Sweepgenerator kommt, ist mir aber schleierhaft.

Vermutlich kann er weder "Analog", noch "Digital", noch "Brogrammieren fuer Anfaenger - MCU".

Nur so jemand schafft solche geistigen Waenkelzuege.

Und es wird auch nie fertig werden, weil die weiteren Kleinigkeiten (Stromversorgung, Ausgangstreiber, etc.) fehlen.

#7527157
Lesenswert?

Axel S. schrieb:

Wenn die genaue Frequenz erforderlich ist (genauer als eine Skala am Poti) kann man ja noch einen Frequenzzähler dazu packen.

Es geht nicht um Regelung der Frequenz mit einem Bediener in der Regelschleife, sondern um eine Steuerung in diskreten Stufen im 200Hz-Raster. Das ging doch aus dem Ausgangspost sehr deutlich hervor - was auch immer das Kernproblem mit analoger Elektronik/Schaltungstechnik zu tun hat.

Andreas S. schrieb:

Mittels 6-Bit Binärcode ... (200Hz Schritte)

#7527185
Lesenswert?

Man kann natürlich das alles mit 74 Serie machen... Wie ich die Schaltung gezeichnet habe plus 2x 283-Addierer... Aber wozu solch Aufwand? Man kann das viel einfacher und kostengünstiger mit AVR machen. ISR von Timer für 50 oder 100 kHz, Freq-Koeff. addieren, aus Flash Sinusfunktion holen und mit einfachen DA-Wandler mit 6 oder 8 Widerständen oder ähnlich wie Schieberegister bei Horowitz oder gar mit PWM... AVR kann auch gleichzeitig Drehgeber und Tasten bedienen und auch eine Anzeige für Frequenz...

#7527193
Lesenswert?

Rainer W. schrieb:

Es geht nicht um Regelung der Frequenz mit einem Bediener in der Regelschleife, sondern um eine Steuerung in diskreten Stufen im 200Hz-Raster. Das ging doch aus dem Ausgangspost sehr deutlich hervor

Entweder kennst du den TE persönlich oder hast eine bessere Glaskugel.

Aus den Ausgangspost ging genau nicht hervor, was eine Anforderung im Sinne des eigentlichen Problems und was eine Idee des TE zur Lösungsfindung ist.

Geht ja schon mit seiner anfänglichen Frage nach 6 Bit und der späteren Konkretisierung auf Drehencoder los. Wobei mir gerade auffällt, daß er vielleicht gar keinen (inkrementellen) Drehencoder gemeint hat, sondern so eine Art Drehschalter von 0-9. Genauso bin ich mir sicher, daß es keine Forderung nach diskreten Stufen gibt, sondern daß einzig das vorgesehene Display nunmal nur diskrete Stufen anzeigen kann.

Das ganze ist als XY-Problem bekannt: https://de.wikipedia.org/wiki/XY-Problem und wird auch hier im Artikel [[Netiquette]] thematisiert.

Persönliche Seite #7527220
Lesenswert?

Michael B. schrieb:

Dazu gehst du AUF KEINE Nachfrage zur Präzisierung ein. Solche Kundschaft braucht niemand, das wird ein Fass ohne Boden.

Lern endlich programmieren !

Ich glaube, vor dem Programmieren erst einmal ist ->formulieren<- angesagt. In keinem einzigen Beitrag hier sind die Randbedingungen für die Schritte, der Rahmen, die Progression und die zugehörigen Frequnenzen / sowie deren erlaubte Abweichung spezifiziert. Ohne das sind alle Ratschläge Ratespiel.

Scheint heute normal. Wir rennen mit 10% info ans Projekt und bauen mal, um später zu ändern. Macht ja Spass.

#7527296
Lesenswert?

Rainer W. schrieb:

Maxim B. schrieb:

... aus Flash Sinusfunktion holen und mit einfachen DA-Wandler mit 6 oder 8 Widerständen oder ähnlich wie Schieberegister bei Horowitz oder gar mit PWM...

Hast du die Problembeschreibung überhaupt gelesen? Was willst du da mit einer Flash Sinusfunktion oder einem DAC?

Du mußt das halbe Puzzle des TO aus Salami-Scheiben schon als Ganzes betrachten und darfst nicht aus einer Ecke auf das Bild schließen.

Er "braucht" das frequenzvariable Signal zur Steuerung eines digitalen Sinusgenerators. Konkret sollen aus 20kHz Rechteck 100Hz Sinus werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren