Moin erstmal! Für einige Messaufbauten brauche ich oft einen Signalgenerator mit mindesten 2 Kanälen. Für mich reicht oft ein einfaches Sinus-Signal, wobei die Phasenverschiebung zueinander einstellbar sein sollte. Zunächst habe ich im Forum nach bestehenden Lösungen und Geräten gesucht. Ich selber wurde nicht im Internet fündig. Als kostenintensive Lösung habe ich nur Signalgeneratoren gefunden, die mindestens 259€ (Siglent SDG1010 - was sehr sehr günstig ist) kosten. Leider hat genau dieses Gerät unterschiedliche DA-Wandler und kann somit nicht gleiche Ausgangsspannungen zur Verfügung stellen. Nicht weiter schlimm, aber dieser Kompromiss gefällt mir überhaupt nicht. Aus diesem Grund möchte ich zunächst einen kostengünstigen Signalgenerator für <= 60Hz entwickeln und hoffen auf Unterstützung bei den Spezifikationen. Dieses Projekt werde ich zu 100% durchführen, wird aber sicherlich einige Monate in Anspruch nehmen. Den Source-Code und die Gerberdaten werde ich veröffentlichen. Spezifikationen: Zwei Analoge Ausgänge mit >=+-10V; >=14bit; max. 60Hz; sample rate ca. 216Ksps ( 1/60Hz = 16,66ms --> 16,66ms / 3600 = 4,63µs -> 216k ) - Kurzschlussfeste Ausgänge - Klirrfaktor: <= 0.2% (wobei ich hier wenige Kenntnisse besitze) - Offset einstellbar, wie auch die Amplitude (digital oder Analog? ) - Ein oder zwei DA Wandler, die zueinander synchronisierbar sein sollten. Ich möchte mir die Möglichkeit offen halten die Anzahl der Kanäle von 2 auf 4 zu erweitern. - evtl. Triggerausgang - Frequenzänderungen des Sinussignals bei 0° oder 180°; evtl. dieses Event auf dem Triggerausgang ausgeben (Goodie) Power Supply: 230V auf +-15V; konservativer Aufbau Bedienung: zunächst einfach Steller: Offset, Amplitude 1, Amplitude 2, Phasenverschiebung, Frequenz Anzeige: möglichst übersichtlich und kostengünstig Mögliche Logik: C2000 Serie, STM32, MSP430G2... (Value Line), XILINX CPLD Schön wäre eigentlich die Möglichkeit die Schaltung einfach nachbauen zu können, dies würde aber die Auswahl der Logik/Mikrocontroller schnell auf MSP430 oder STM32 reduzieren. MSP430G2553 ziehe ich aufgrund des Preises vor, wobei der Code sehr kompakt sein sollte um ein SPI Signal von ca. 5Mhz zu erzeugen. Ich bin mir nicht einmal sicher ob es überhaupt möglich ist - muss geprüft werden. Mögliche DA Wandler: Analog Devices: 1x AD5722 12bit - ca. 9€ 1x AD5732 14bit 1x AD5752 16bit - ca. 20€ (würde ich als zu teuer definieren) Texas Instruments: 2x DAC8831 16bit - soic - ca. 16€ ... ich suche noch weitere möglich DAC raus. Vorschläge sind erwünscht!. Am Liebsten wären mir DACs, die man in gleichem PIN-Layout in unterschiedlichen Auflösungen (12, 14 und 16bit) kaufen kann. Optionale Erweiterungen: + Erhöhung der Ausgangsfrequenz + Rechteck, Sägezahn (Wobei ich für ersteres eine Komparatorenlösung vorziehen würde) Zielpreis wäre eigentlich zwischen 20€ und 50€, aber aufgrund des DA Wandlers und die Anzeige sehe ich da etwas schwarz die 20€ zu erreichen.
Billige AD Wandler, wobei diese wirklich nicht genau sind, 16Bit steht nur in der Überschrift: Texas Instruments DAC8411 DAC8311 DAC7311 DAC6311 DAC5311 Wenn es billig sein soll, dann würde der DAC8311 (14bit) und DAC7311 (12bit) durchaus reichen. Die Signalqualität bei Wechselsignalen könnte ich mit meinem Oszilloskop (8Bit AD) eh nicht richtig prüfen. lach
Es geht um ein Stueck oder so. Dann vergiss die Preise. Die Arbeit ist viel teurer. Dann mach gleich eine vierlagige Leiterplatte. Die ist erstens leichter zu routen, und zweitens kompakter.
Na Sowas schrieb: > ...vierlagige Leiterplatte. Bestimmt nicht, wird für private Zwecke viel zu teuer. Ich bin selber ein Fürsprecher für 4lagige, aber dies würde nur Sinn machen bei teureren Projekten.
Eine 4 lagige Leiterplatte gibt's fuer 100 Euro. Wie lange dauert das Layout mit einer 2 Lagigen, wie lange mit einer 4 Lagigen ? Nun nimmt man die Differenzstunden und multipliziert die mit einem Stundenlohn. Rechne.
Hop Triceratop schrieb: > Nun nimmt > man die Differenzstunden und multipliziert die mit einem Stundenlohn. > Rechne. Es ist eigentlich mehr als traurig, da stelle ich mich bereit etwas zu entwickeln, weil ich es selber benötige und weil ich es der Allgemeinheit zur Verfügung stellen möchte. Was bekomme ich? Kritik von Gästen. Dabei kennen die liebe Gäste überhaupt nicht meinen Hintergrund, welche Erfahrungen ich bereits gemacht habe und wie gut ich im Layouten bin. Mich interessiert zunächst nicht die Arbeitszeit, ich bin eher am Überlegen ob ich einen kleinen ungenauen Signalgenerator bauen soll oder eher mit einer höheren Signalqualität. Ich will hier überhaupt nicht in diesem Stadium irgendeine Diskussion über Platinen, Layer oder Layout führen. Würdet ihr einmal in einem realen Projekt mitgearbeitet haben, dann wüsstet ihr es auch.
Hop Triceratop schrieb: > Eine 4 lagige Leiterplatte gibt's fuer 100 Euro. Wie lange dauert das > > Layout mit einer 2 Lagigen, wie lange mit einer 4 Lagigen ? Nun nimmt > > man die Differenzstunden und multipliziert die mit einem Stundenlohn. > > Rechne. Weist du denn, ob der TE das im Rahmen einer Diensttätigkeit macht? Dann würde ich dir unter gewisse Umständen Recht geben. Wenn er es aber als privates Hobby macht, dann sind 100 Euro ( oder sind es sogar mehr? ) für eine vierlagige Leiterplatte schnell ein Betrag, der alleine so groß ist, wie die sonstige Kosten. Somit also nicht tragbar. Ralph Berres
Ok. Lassen wir die Layer. Das ganze soll zwar als Lehrprojekt aufgegleist werden, aber nicht unbedingt fuer eine Multilayer Leiterplatte. Auch gut. Es gibt immer noch genug zu tun. Ich wuerd das FPGA/CPLD sein lassen, und einen Controller waehlen, der 4 SPI Schnittstellen auf's Mal bedienen kann. Ein zusaetzliches FPGA/CPLD erhoeht nur den Aufwand, und erschwert die Reproduzierbarkeit.
Tim R. schrieb: > Es ist eigentlich mehr als traurig, da stelle ich mich bereit etwas zu > > entwickeln, weil ich es selber benötige und weil ich es der > > Allgemeinheit zur Verfügung stellen möchte. Mal ganz im Ernst. Ich würde an deiner Stelle für deinen privaten Gebrauch genau das Gerät entwickeln und bauen, was deinen persöhnlichen Anforderungen genau entspricht. Das würde ich ganz im stillen Kämerlein machen ohne irgend jemanden hier zu informieren. Wenn dein Projekt dann abgeschlossen ist, würde ich es zur Veröffentlichung Fachzeitschriften wie Funkamateur Elektor UKW Berichte usw anbieten. Wenn das Projekt interessant für einen breiteren Personenkreis ist, bekommst du für die Veröffentlichung sogar noch Geld. Da brauchht man wirklich das Forum hier nicht dafür. Wie du schon festgestellt hast, wird hier eh nur alles zerredet. Ralph Berres
Nur mal so als Frage: Du möchtest eine maximale Ausgangsfrequenz von 60Hz mit 216ksps abtasten? Warum dieser Aufwand? 60Hz lassen sich mit weit geringerer Abtastrate sauber produzieren. Auch mit einem Klirrfaktor von weniger als 0,2% Gruß Jobst
> Du möchtest eine maximale Ausgangsfrequenz von 60Hz mit 216ksps > abtasten? > Warum dieser Aufwand? > 60Hz lassen sich mit weit geringerer Abtastrate sauber produzieren. > Auch mit einem Klirrfaktor von weniger als 0,2% Ich bin zunächst davon ausgegangen die Phasenverschiebung zwischen den Kanälen in 0,1° Schritten einstellen zu können. Bei 1° genaue Einstellung bräuchte ich mindestens: T = 1/60Hz = 16,66ms 1° = 16,66ms / 360 = 46,296µs würde eine Samplerate von 21,6Ksps entsprechen. Faktor 10 davon, wenn eine 0,1° genaue Einstellung erfolgen soll.
Tim R. schrieb: > Bei 1° genaue Einstellung bräuchte ich mindestens: Nein, brauchst Du nicht. Das geht anders. Du mußt nur die Stützstellen korrekt berechnen. Gruß Jobst
Für ein 60 Hz Signal reicht der Ausgang einer ganz normalen Soundkarte alle mal aus. Die passende Lösung (bis ca. 18 kHz) wäre also ein alter PC mit einer durchschnittlichen Soundkarte und etwas Software und einem Ausgangsverstärker dazu. Mit einer Abtastrate von 200 kHz könnte man Signale bis etwa 40-80 kHz darstellen, je nachdem wie viel Aufwand man bei Rekonstrucktionsfilter treibt. Mit einem der genannten schnellen µC könnte die Abtastrate aber ggf. auch etwas höher (Richtung 1 MHz) werden, auch wenn dabei die Auflösung etwas geringer wird. Für nur Sinus gibt es auch gleich fertige DDS ICs - da reicht dann ein kleiner 8 Bit µC für die Steuerung und Anzeige.
Ulrich schrieb: > Für nur Sinus gibt es auch gleich > fertige DDS ICs - da reicht dann ein kleiner 8 Bit µC für die Steuerung > und Anzeige. Da kann er aber nicht die Phase von 2 Signalen einstellen. Soundkarte fällt vermutlich wegen unterer Grenzfrequenz aus. Gruß Jobst
Ulrich schrieb: > Rekonstrucktionsfilter Und genau bei diesem Thema bekomme ich gerade etwas Kopfschmerzen. Mein SCILab qualmt gerade und versuche schon vorab in der Signaltheorie (sehr eingerostet) einige Probleme vorab zu lösen. Da sieht man sehr schön, dass Auflösung nicht immer alles ist, wenn die Samplefrequenz nicht stimmt. Eine Samplerate von 250Ksps sieht allerdings sehr vielversprechend aus, wenn man Dithering (Aufmodulierter Sägezahn) nutzt. --> http://www.mikrocontroller.net/articles/Dithering SCILab-Code (Erste Anfänge, bitte nicht zu viel Kritik)
1 | sample_rate = 250000; //Ksps |
2 | anzahl_perioden = 1; |
3 | frequenz = 60; // Hz |
4 | ausloesung = 8; // resolution bit |
5 | res_bit = 2/(2^ausloesung); // Value per bit |
6 | sample_rate_inv = 1/sample_rate; |
7 | t_periode = 1/frequenz; |
8 | t = 0:(1/sample_rate):anzahl_perioden*t_periode; |
9 | N=size(t,'*'); //number of samples |
10 | s=sin(2*%pi*frequenz*t); |
11 | s2=s; |
12 | l_i = size(s,'*'); |
13 | for i=1:l_i; |
14 | if(s2(i)>=0) |
15 | if(modulo(s(i),res_bit)<res_bit) |
16 | s2(i) = (round(s(i)/res_bit))*res_bit; |
17 | else
|
18 | s2(i) = ()round(s(i)/res_bit) + res_bit)+res_bit; |
19 | end
|
20 | else
|
21 | if(modulo(s(i),res_bit)<-res_bit) |
22 | s2(i) = (round(s(i)/res_bit) + res_bit)+res_bit; |
23 | else
|
24 | s2(i) = (round(s(i)/res_bit))*res_bit; |
25 | end
|
26 | end
|
27 | end; |
28 | |
29 | |
30 | //nun alle samples einmal einen Schritt nach links verschieben
|
31 | l_value = s2(0);//erste Position merken, wobei dies immer 0 sein sollte |
32 | |
33 | |
34 | l_i = size(s,'*'); // ja nochmal |
35 | for i=1:(l_i-1); |
36 | s2(i)=s2(i+1); |
37 | end; |
38 | s2(l_i) = l_value; //oh ein wunder 0 |
39 | |
40 | //quantisierungsrauschen
|
41 | l_i = size(s,'*'); // ja nochmal |
42 | l_flipflop = 0; |
43 | for i=1:(l_i); |
44 | if l_flipflop == 0 then |
45 | s2(i)=s2(i)+res_bit; |
46 | l_flipflop = 1; |
47 | else
|
48 | s2(i)=s2(i)-res_bit; |
49 | l_flipflop = 0; |
50 | end
|
51 | end; |
52 | |
53 | |
54 | plot2d(s); |
55 | e=gce(); |
56 | e.children.foreground = 5 |
57 | plot2d(s2); |
58 | e=gce(); |
59 | e.children.polyline_style = 1 |
60 | e.children.foreground = 2 |
Tim R. schrieb: > - Frequenzänderungen des Sinussignals bei 0° oder 180° Würde ich bei 90° oder 270° machen, einfach um den vollen Pegel zu garantieren. (Ist in Deinem Fall allerdings weniger kritisch) Ich habe auch gerade mal Simuliert. 250kHz PDM und ordentliches Filter dahinter. Erfüllt Deine Bedingung von <0,2% Klirr. Ich habe mir nicht einmal Mühe gegeben. Das Ganze ist also mit einem ATmega168 mit Boardmitteln + Filter (.. Verstärker, etc.) zu erledigen. Bis zu 4 Kanäle sind kein Problem - wenn sie an einem Port sitzen. Der IRQ benötigt ca. 50 von 80 Takten, bei 20MHz Takt. Gruß Jobst
Ich habe einen berechneten Datenstrom über ein Filter geschickt. Das kann man alles in Calc/Excel machen. Gruß Jobst
Hier der Stream. Dies durch ein 300Hz 24dB/Okt Filter schicken ... Alle 4µs ein Bit ... Gruß Jobst
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.