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.
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.
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?
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.
>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.
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)
>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.
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....
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.
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.ä.
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.
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.
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.
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?
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.