Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie wichtig ist es 2 Signale gleichzeitig zu wandeln?
the_Ghost666
26.09.2008, 10:49
Moin zusammen.
Ich möchte 2 Signale von einer positionsempfindlichen Diode (PSD) in einen Atmega bekommen. Das Signal soll dabei in der Lage sein, im Audioberech (also sagen wir bis 25kHz) zu erfassen.
Die PSD wird mit OPs ausgestattet, die den Lichtstrom in eine Spannung umwandeln (über die Referenzspannung bin ich mir noch nicht sicher, 1,1V oder 2,5V). Laut Abtasttheorem muss ich ja nun mit 50kHz abtasten. Aber ich brauche 2 AD-Werte pro Wandlung, einmal für Diode1 und einmal für Diode2.
Wie groß ist der Einfluss, wenn ich die Wandlungen nacheinander Anstoße, wie hoch muss dann die Abtastfrequenz sein? Zwischen Start von Wandlung1 und Start von Wandlung2 werden wohl 20 Takte mit 16MHz, also knapp 1,25µs vergehen.
Es gibt zwar externe ADCs, die 2 Wandlungen gleichzeitig können (und sogar 12Bit haben, statt die 10 vom AtMega), aber das wäre erst die vorletzte Möglichkeit.
Weiß jemand weiter?
MfG
Björn
kolisson
26.09.2008, 11:09
hallo,
also ich weiss jetzt nicht, wie wichtig es ist, gleichzeitig zu wandeln.
mir viel nur gerade ein, wenn du es gleichzeitig haben wolltest, könnten dir sample&hold schaltungen helfen.
gruss
p.s.
da ich PSD noch nie gehört habe... was macht denn diese diode ?
gibts da einen artikel oder ein datenblatt.
Der Fehler entsteht eigentlich nicht durch die zeitversetzte Wandlung, sondern dadurch, daß man hinterher annimmt, die Wandlung wäre gleichzeitig vollzogen worden. Ich könnte mir vorstellen, daß man durch Interpolation den Fehler nachträglich (auf der digitalen Ebene) wieder rausrechnen kann.
Ob das nötig ist weiss ich nicht (weil ich Deine Anwendung nicht kenne).
Weil Du aber von einem Audiosignal sprichst, könnte man sich überlegen, welchen Effekt die Verzögerung eines Kanals von einem Stereosignal für die Wahrnehmung haben könnte.
Bei einer Schallgeschwindigkeit von 330 m/s breitet sich der Schall in 1,5 Mikrosekunden um etwa einen halben Millimeter fort. Das wäre mit einer minimalen, kaum wahrnehmbaren Kopfdrehung auch passiert (oder kompensiert). In diesem Fall, schätze ich, würde die Zeitverzögerung nichts ausmachen.
the_Ghost666
26.09.2008, 11:47
Moin,
ja, an Sample & Hold hab ich auch gedacht, bin mir aber unsicher wegen dem Aufbau. Ich möchte es natürlich so klein wie möglich haben und wenige Extra-Teile. Besonders selbstgebaute S&H mit FETs möchte ich vermeiden.
Die Abtastrate möchte ich auch recht flexibel halten, einige S&Hs haben da leider etwas Tiefpasscharakteristik, wenn ich mich nicht täusche.
Eine PSD ist hier erklärt http://de.wikipedia.org/wiki/Position_Sensitive_Device
Meine Kurzform:
Du hast eine flache, große Kathode und an den Seiten sind kleine Anoden aufgebracht. Das ganze im Stiel einer Photodiode. Nun fällt ein Lichtpunkt (Laser) darauf und der erzeugt einen Photostrom von einigen µA. Der fließt aber nur genau in der Mitte der Diode in beide Richtungen gleichmäßig ab. Sollte er etwas ausser-mittig sein, wird eine Anode bevorzugt. Dann kann man aus (Differenz der Ströme) / (Summe der Ströme) die Position auf dem Chip feststellen. Da die Diode das im Gegensatz zu CMOS oder CCD-Sensoren bis zu 100kHz schafft, ist es ne extrem schnelle Methode.
Die IR-Triangulationssensoren von Sharp müssten nach dem gleichen Prinzip laufen, es sei denn sie nehmen halt CMOS oder CCD.
An unserer FH ist damit ein Teststand aufgebaut um halt Abstände zu messen, an nem anderen Standort wollten sie damit Lautsprecher vermessen, also wie groß ist die Amplitude, wenn ich X Herz drauf gebe.
Über den Winkel zwischen Quelle und Objekt, bzw Objekt und Sensor müsste man sogar Abstandsänderungen von groß bis sehr klein erkennen können. Es gibt allerdings eine nichtlinearität, die man bei den Messwerten rausrechnen muss.
Ich hatte überlegt nen externen 12bit ADC zu nehmen, und die Daten mit 50kHz zu sampeln, in Rohform abzulegen und dann an nen Rechner weiterzugeben (muss aber schon fix gehen). Alternativ bei niedriger Samplerate oder schnellen Schüssen eine Messung machen und die auf nem LCD ausgeben.
the_Ghost666
26.09.2008, 11:50
Moin Ranke,
ich denke so einfach ist das nicht, da ich es nicht für Töne nehmen möchte, sondern universell einsetzen will. Wenn ich noch Rechenkapazität auftreiben kann, dann sogar in den unteren Ultraschallbereich bis 40kHz.
Für die einfachen Messungen ist das natürlich völlig egal, aber wenn ich damit fortlaufend Werte sammeln möchte, denke ich, dass es nicht so simpel ist.
25kHz wird eng, der ADC ist nur bis 4kHz ausgelegt, schnellere signale wird er nicht vernünftig messen, auch wenn du bei 16MHz einen prescaler von 2 benutzt, kommen dabei keine 8Mhz ADC clock an, bzw. 8Mhz / 13 clocks = 615kHz abtastrate bei rum
ich habe einen oszi versucht zu bauen, 16MHz mega32
bis ADC prescaler 8 ist das ergebnis noch präzise, bei 4 verdoppelt sich die samplerate nichtmehr sondern nur um rund 10% und bei 2 ist garkein unterschied zu 4 mehr zu erkennen
hier mein code
unsigned char adcval[923];
unsigned char* end;
unsigned char* pos;
ISR(SIG_ADC)
{
*pos = ((unsigned char)(ADC/4))+'!'; //ich reduzier hier auf 8bit um die datenrate zu drücken
//(38.5 kBaud ist die einzige vernünftige baudrate für 16Mhz
pos++;
if (pos > end) { //wenn die tabelle voll ist, gebe ich die werte alle an den computer
ADCSRA &= ~((1<<ADEN) | (1<<ADIE));
pos = adcval;
do {
while (!(UCSRA & (1<<UDRE)));
UDR = *pos;
} while (pos++ < end);
}
}
int main()
{
//Pointer statt indizes damit der arrayzugriff schneller wird
end = &(adcval[922]); //ende festlegen
pos = adcval; //anfang festlegen
UBRRH = 0; //UART initialisieren
UBRRL = 25;
UCSRC = (1<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (1<<URSEL);
UCSRB = (1<<RXEN) | (1<<TXEN);
ADMUX = (1<<REFS0); // AD channel ADC0 und ADC initialisieren
ADCSRA = (1<<ADPS1) | (1<<ADPS0) | (1<<ADEN) | (1<<ADATE);
ADCSRA |= (1<<ADSC); //free runing mode permanentes samplen,
//der interrupt wird über ein befehl über UART eingeschalten
sei();
while(1);
return 0;
}
das mit 4kHz findest du auch im datenblatt
Besserwessi
26.09.2008, 12:19
Der AD in den AVR8 controllern wird zu langsam sein für 2 Kanäle. Man kann zwar den AD bis etwa 100 kHz Sampling rate laufen lassen, hat dann aber Probleme mit dem Ümschalten des Kanals und Übersprechen. Für 2 Kanäle reicht das kaum. Die auflösung der PSDs kann auch durchaus einen 12 Bit AD gebrauchen.
Es kommt etwas auf die Beleuchtung an. Wenn die Lichtintensität, die Auf den PSD fällt immer konstant ist, reicht es nur die Differenz der beiden Ströme zu messen. Das Summensignal braucht man dann höchstens um langsame Drift zu korrigieren und unabhängig von der beleuchtung zu werden. Es gibt auch extra Verstärker die analog versuchen die Position zu berechnen auch den Verhältnis (I1-I2)/(I1+I2). Das geht auch ganz gut wenn man kein Fremdlicht hat. Wenn man Fendlicht hat müßte man das noch vom Nenner abziehen. Alternativ kann man die Lichtquelle modulieren.
Die wirklich gleichzeitige Messung hat beim PSD hat duchaus ihren Sinn, wenn man Schwankungen der Intensität der Lichtquelle ausgleichen will oder muss.
the_Ghost666
26.09.2008, 12:43
Danke für die Info.
Also wirds doch auf einen externen ADC rauslaufen. Der Sensor selbst hat nur ein sehr kleines Gehäuse (so ne runde Standard-Optik-Aufnahme), sodass ich wohl einen OP für die Verstärkung der Einzelsignale direkt hinter den Sensor setze und dann für eine zweite Ebene einen Dual-ADC suche, oder halt zwei ADCs die ich zeitgleich Triggern kann, müsste ja mit SPI und gleichen Modellen gehen. Dann hätte ich wenigstens die Analogleitung nur im Gehäuse, der Rest könnte digital laufen... es sei denn die wollen einen analogen Ausgang am Gerät.
kolisson
27.09.2008, 00:49
@the_Ghost666
danke für den link und die erklärung.
insiofern kommt mir das bekannt vor, da man früher.... also ich meine früher... ganz früher
in den pickups der ersten cd-player verwandt hat, um die ausrichtung der linse und den fokuspunkt auszuwerten.
das waren noch zeiten,... da waren die pickups noch aus aluminium ... und all die prismen drinne.
ich hab hier noch so ein PSD rumliegen aus alten zeiten und wusste bisher nicht, wie ich es nennen sollte.
nun kann ich es einordnen... in das fach PSD
dieses , was ich habe, ist allerdigns nicht mit kathoden am rande. ich habe 4 stück photozellen , die in der mitte quasi durch ein sehr feines kreuz voneinander getrennt sind.
auf jedenfall.. danke für die erklärung.
gruss klaus
the_Ghost666
27.09.2008, 00:58
Moin, was du meinst mit dem Kreuz in der Mitte ist eine Vier-Quadranten-Diode. Leider finde ich dazu nichts gutes bei Wiki, wird aber genutzt (immernoch) um einen Laser in 2 Dimensionen zu erkennen. Auch aktuelle Blueray-Laufwerke arbeiten mit einer.
radbruch
27.09.2008, 01:19
Hallo
Vielleicht hilft das weiter:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=33070
Es wird dort unter anderem auf die avrfreaks verwiesen die mit 500kHz mehrere ADC-Kanäle auswerten.
Gruß
mic
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.