Forum: Mikrocontroller und Digitale Elektronik ADC Sin Cos PCI Karte


von tetef (Gast)


Lesenswert?

hallo zusamen,


ich verwende ADC (Atmega8) um Daten zweier Analoge Signale (Phase und 
Amplitude) zu digitalisieren und daraus die Realen und Imaginaeren Werte 
zu berechnen. Bis dahin alles ok. Nun muss ich diese Daten weiterleiten, 
zu meinem PCI Karte, die Analoge-Eingaenge hat.

Meine Frage wie kann ich die berechneten Daten weiter zu meiner PCI 
Karte weiterleiten.

Danke im Voraus.

von noips (Gast)


Lesenswert?

Was macht denn die PCI-Karte genau? Digitalisiert sie die Werte an ihren 
analogen Eingängen? Wieso willst du die an die Karte weiterleiten?

von Gast (Gast)


Lesenswert?

> wie kann ich die berechneten Daten weiter zu meiner PCI
> Karte weiterleiten.

Mit einem DA-Wandler.

von tetef (Gast)


Lesenswert?

hi,

die PCI Karte digitalisierte die Werte.
>>Wieso willst du die an die Karte weiterleiten?
Der Grund ist einfach, weil die Karte unter LabView erkannt wird.

von tetef (Gast)


Lesenswert?

>>Mit einem DA-Wandler.

Die Werte sind in double (Real und Imag). wie kann ich sie weiterleiten, 
oder aus welchem Port?

von Gast (Gast)


Lesenswert?

An dem Port an dem du einen DA-Wandler angeschlossen hast. Such dir 
einen passenden aus.

von tetef (Gast)


Lesenswert?

Ich verstehe nicht was Du meinst.

Die werte sind in double (Real=3.45666 und Imag=2.56444), wenn ich sie 
Weiterleite(z.B an die Ports B und C) dann sind die Werte nicht mehr 
gleich. An die Ports B und C werden 3 bzw. 2 angezeigt. Die Genauigkeit 
wird verloren gehen, oder was meinst Du?

von Gast (Gast)


Lesenswert?

Dann wandel deine double Werte eben in Fixkommawerte um oder einfach in 
einen 16Bit Wert.

Aber dein Konzept solltest du so oder so nochmal überdenken.

von Tobi (Gast)


Lesenswert?

Was soll das werden ?

Wenn deine PCI Karte analoge Eingänge hat, warum benutzt du dann nicht 
deren AD Wandler ?
Falls es nicht ohne den Atmega geht dann übertrage die Daten vom Atmega 
z.B. seriell zum PC via USB oder RS-232.

von noips (Gast)


Lesenswert?

>Wenn deine PCI Karte analoge Eingänge hat, warum benutzt du dann nicht
>deren AD Wandler ?

Das frage ich mich auch. Warum musst du deine komplexen Werte unbedingt 
mit dem Controller ermitteln. Schicke die analogen Signale doch gleich 
über PCI-Karte zu LabView und berechne mit LabView die komplexen Werte.

von tetef (Gast)


Lesenswert?

LabView braucht langer fuer die Berechnung. Die Karte in sich ist sehr 
schnell, aber die Bearbeitung ist ziemlich langsm, vorallem wenn man 
schon weiss, das nur eine Schleife braucht 1ms.

Das ist der Grund, warum ich diesen Weg nicht umgehen moechte. Ich 
moechte die Bearbeitung in RealTime realisieren, mehr Samples zu 
erhalten (mehr als 2500 Samples/s pro Sensor)

von Tobi (Gast)


Lesenswert?

Bist du sicher ?

Ich kenn mich mit LabView nicht aus, aber ein Atmega8 ist schneller als 
LabView auf aktueller PC Hardware ?? Kann ich kaum glauben.

von noips (Gast)


Lesenswert?

>LabView braucht langer fuer die Berechnung.

Ich kenne mich mit LabView zwar nicht aus, aber LabView läuft doch auf 
einem PC. Und ich kann mir nicht vorstellen, dass ein PC langsammer 
rechnet, als ein ATmega.

>Die Karte in sich ist sehr schnell, aber die Bearbeitung ist ziemlich >langsm, 
vorallem wenn man schon weiss, das nur eine Schleife braucht 1ms.

Was meinst du hier mit "Bearbeitung"? Was ist eine Schleife. Wie gesagt, 
ich kenne mich mit LabView nicht aus.

von noips (Gast)


Lesenswert?

Oh, habe das Posting vor mir nicht gesehen. Hab fast gleiches 
geschrieben.

von Aahh (Gast)


Lesenswert?

Labview ist eine Kruecke, und deren Karten noch mehr. National 
Instruments hat eine DigitalIO Karte, fuer sehr viel Geld. Die ist aber 
trotz PCI und dem ganzen Scheiss langsamer wie ein Mega8....

von noips (Gast)


Lesenswert?

LabView wird doch bestimmt die Werte aus einer z.B. txt-Datei lesen 
können. Dann sende die Daten vom Controller über RS-232 zum PC und lege 
sie in einer Datei ab, auf die LabView dann zugreifen und die Werte 
einlesen kann. Du brauchst dann halt eine Funktion, die die double-Werte 
für die Übertragung in Zahlen in ASCII-Code umwandelt.

von Klaus (Gast)


Lesenswert?

Kann mir auch nicht vorstellen, dass LabView langsamer ist...
Aber wenn, dann mach den AtMega an die RS 232 Schnittstelle, Labview 
kann dann direkt darauf zugreifen, ohne Umwege über txt Datei o.ä.

von Karl H. (kbuchegg)


Lesenswert?

Schon mal ausprobiert, was beim LabView so langsam ist? Wahrscheinlich 
wird es der Display-Update sein. In dem Fall hilft es auch nichts die 
Übertragung möglichst kompliziert zu machen.
Ich geh da mit den anderen. Ich kann nicht glauben, dass ein Mega8 mit 
10Mhz und ohne FPU schneller rechnen kann als eine 3Ghz 32-Bit Maschine 
mit FPU.

von tetef (Gast)


Lesenswert?

habe ich es auch am Anfang gedacht, leider die Berechnung hat gezeigt, 
dass LabView langsammer ist.

Wenn Du Cosinus und Sinus rechnen willst (unter labview, dafuer brauchst 
Du natuerlich die Amplitude und Phase), dann sollst zuerst diese 
Variablen  messen bzw. berechnen, die mit der Zeit schnell aendern. 
Dafuer brauchst Du ein paar Samples, um auf diese Variablen zu kommen. 
Nimmst Du einen kleinen Anzahl der Samples, wird Dein CPU belastet. 
Nimmst Du einen grossen Anzal der Samples, wird Dein CPU entlastet, ABER 
Deine Berechnungen werden nicht exakt.
Wenn Du schnell mit dem Sensor pruefst, bekommst keine schoene 
Darstellung der Daten. Die Kurven werden abgehackt, ich meine die 
Abstand zwischen 2 Punkten ist groesser als bei einem langsamen 
Pruefung.
Nur diese Prozedur verlangt viel Zeit und sieht deutlich auf die Kurven.

von noips (Gast)


Lesenswert?

Wie ermittelst du denn die Werte (Real- und Immaginaerteil) aus deinem 
analogen Signal?

von tetef (Gast)


Lesenswert?

ich habe eine analog Schaltung entwickelt, die mir die Phase und 
Amplitude  ermitteln koennen, die ich weiter mit ADC unter 
Microcontroller als Real und Imag. bearbeiten kann.

von noips (Gast)


Lesenswert?

Also deine analoge Schaltung liefert dir zwei anologe Signale, von denen 
eins ein Maß für Amplitude und das andere ein Maß für Phase ist. Diese 
analogen Signale digitalisierst du mit dem ADC des Atmega8 und aus den 
digitalen Werten berechnest du dann den Realteil und den Imaginärteil 
des Signals. Habe ich es richtig verstanden?

Du hast aber eine PCI-Karte, mit der du die analogen Signale auch 
digitalisieren kannst. Du sagst aber, dass es zu lange dauert, die 
Prozedur statt mit dem Controller gleich mit der Karte und LabView zu 
machen. Was dauert denn so lang, die A/D-Wandlung, die Kommunikation der 
Karte mit LabView, die Umrechnung von Amplitude und Phase in Real und 
Imaginär oder was genau?

von tetef (Gast)


Lesenswert?

Du hast es richtig verstanden.

am anfang habe ich nur die DifferenzSpuleSpannung und 
SinusGeneratorSpannung. Aus diesen beiden Signalen musste ich unter 
LabView die Amplitude und die Phase berechnen und dann die Real und 
Imag-Teile ermitteln. So richtig.

Und weil dies Verfahren langsamer ist, habe ich die Schaltungen 
entwickelt, die mir die Apmlitude und Phase ermitteln.

Eigentlich koennte ich jetzt direkt die Analog-Signale (Amplitude und 
Phase) zu meiner PCI Karte verbinden und siehe, ob es eine Verzoegerung 
gibt!!

Das werde ich heute machen.

von noips (Gast)


Lesenswert?

Was ist DifferenzSpuleSpannung? Was ist SinusGeneratorSpannung?

von tetef (Gast)


Lesenswert?

DifferenzSpuleSpannung: die Spannungsdifferenz zwischen 2 Spulen
SinusGeneratorSpannung: Die Spannung aus einem Sinusgenerator.

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
Noch kein Account? Hier anmelden.