www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Sin Cos PCI Karte


Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wie kann ich die berechneten Daten weiter zu meiner PCI
> Karte weiterleiten.

Mit einem DA-Wandler.

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Mit einem DA-Wandler.

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

Autor: Gast (Gast)
Datum:

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

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noips (Gast)
Datum:

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

Autor: Aahh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.ä.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noips (Gast)
Datum:

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

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist DifferenzSpuleSpannung? Was ist SinusGeneratorSpannung?

Autor: tetef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DifferenzSpuleSpannung: die Spannungsdifferenz zwischen 2 Spulen
SinusGeneratorSpannung: Die Spannung aus einem Sinusgenerator.

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.