Hallo Ich würde gerne 4 Analog-Signale mit 20ksps abfragen. Ich benötige allerdings nicht die vollen 10bit sondern lediglich 8bit Auflösung. Aus dem Datenblatt konnte ich folgendes Entnehmen: - Bei 10bit ADC Clock maximal 200kHz * 13 Takte pro Umwandlung = ~15ksps - Bei weniger Auflösung >200kHz möglich Ich bräuchte bei meiner Anwendung also 4*20k*13 ~ 1Mhz ADC Clock - Ist das richtig und ist das bei 8bit machbar? - Kann ich die 4 Eingänge gleichzeitig auswerten bzw. alle 4 gleichzeitig aufnehmen und nacheinander auswerten? - Rechne ich richtig wenn ich sage, der µC(20Mhz) ist durch die Auswertung allein dann zu 5% ausgelastet? Danke für eure Hilfe.
Daniel K. schrieb: > - Rechne ich richtig wenn ich sage, der µC(20Mhz) ist durch die > Auswertung allein dann zu 5% ausgelastet? Die Wandlung geschieht in Hardware, lastet die CPU also garnicht aus, wenn du nicht Däumchendrehen sondern Interrupts verwendest. Wenn du Däumchendrehen verwendest, verheizt du damit unnötig CPU-Zeit. Ein Wandlungsvorgang braucht eher 15-16 ADC-Takte, wenn mans mit Interrupt-Einsprunggedöns usw rechnet. Bei 1MHz ADC-Takt kommt man also auf maximal 63kSamples/s. Die Auswertung, puh, das musst du selber wissen. Daniel K. schrieb: > Kann ich die 4 Eingänge gleichzeitig auswerten bzw. alle 4 > gleichzeitig aufnehmen und nacheinander auswerten? Wirklich gleichzeitig geht nicht. Es gibt nur einen ADC, dessen Eingang gemultiplext wird. Daniel K. schrieb: > ist das bei 8bit machbar Machbar sicher, Rauschen usw. wären ein Thema. Steht sicher auch viel im Datenblatt zum 8-Bit-Betrieb. mfg mf
Dann müsste ich mit der ADC Clock noch etwas höher gehen. Mit 20 MHz und eine Prescale von 16 ergeben sich 1,25 Mhz , mit einem Prescale von 8 ergeben sich 2,5 MHz. Hat vielleicht schon jemand Erfahrungen mit solchen ADC Clock Geschwindigkeiten im 8-bit Betrieb gemacht? Dann hätte ich noch die Frage ob ich in der Schaltung irgend etwas machen kann/muss um ein Rauschen bzw. ein Schwanken der Werte zu unterdrücken.
Daniel K. schrieb: > Schaltung irgend etwas > machen kann/muss um ein Rauschen bzw. ein Schwanken der Werte zu > unterdrücken. Das kommt durch den Wandelvorgang von selbst rein. Ein gewisses Zappeln in den Werten lässt sich nicht unterdrücken. Eine Frage wäre, ob du in deiner verarbeitenden Funktion sowieso einen Tiefpasscharakter drin haben wirst. Dann kann dir das Zappeln im Grunde umso mehr egal sein, umso niedriger die Grenzfrequenz deines digitalen Filters ist. Über den Daumen gepeilt kann man sagen: Bei einer 10-Bit-Wandlung zappeln die untersten zwei Bits, wenn man so auf 100kHz ADC-Frequenz ist und mit 10kΩ in die ADC-Pins speist(eigene Erfahrung). Bei 8 Bit/100kHz wäre das ja noch egal. Du planst, mit der Geschwindigkeit um den Faktor 10-25 höher zu gehen. Es werden dir also 4-5 eitere Bits verloren gehen. Effektiv kann man nur von den obersten 3-4 Bits von einer gewissen Stabilität ausgehen. Insgesamt würde ich dir also eher zu einem DSP raten, die haben schnellere Wandler und mehr Rechenpower. mfg mf
Mini Float schrieb: > Ein Wandlungsvorgang braucht eher 15-16 ADC-Takte, wenn mans mit > Interrupt-Einsprunggedöns usw rechnet. Bei 1MHz ADC-Takt kommt man also > auf maximal 63kSamples/s. Der erste Wandlungsvorgang braucht 25 Takte, jeder weitere exakt 13 Takte: "A normal conversion takes 13 ADC clock cycles. The first conversion after the ADC is switched on (ADEN in ADCSRA is set) takes 25 ADC clock cycles in order to initialize the analog circuitry." Im Free Running Modus erzeugt das einen perfekt gleichförmigen Takt, wie ein Timer. Während der Interrupt das eine Sample abarbeitet, wird das nächste schon produziert.
Bleibt das Problem, dass ich 8Bit mit einer ADC Clock von 1,25 MHz sauber wandeln müsste.
Ausprobieren. R2R-DAC (oder etwas Ähnliches) an Port D, dessen Ausgang an den ADC. Ganz langsam anfangen, und die Differenzen und die Streuung zwischen den in den R2R-DAC geschobenen und den per ADC eingelesenen Werten merken. Dann ADC-Frequenz steigern, bis sich die Werte ändern.
Philipp Klostermann schrieb: > Der erste Wandlungsvorgang braucht 25 Takte, jeder weitere exakt 13 > Takte: Dann lass den Mega48 halt warten. Wenn du sonst nicht viel machst. Für einen Interrupt-Betrieb müssen zwangsweise ein paar Register gerettet werden. mfg mf
Das sind 13 Takte des AD Taktes. Der µC selber hat noch 16 mal mehr Takte zur verfügung - das reicht auch für einen Interrupt, allerdings dann nicht mit 5% Auslastung, sondern eher 50%. In ASM muss man nur das Statusregister wirklich retten, bei den CPU Registern kann man einfach einige für den Interrupts reservieren. Ob die Schwankungen bei 1,25 MHz AD Takt schon zu groß sind, müsste man probieren, es ist jedenfalls schon knapp außerhalb der Spezifikation. Ggf. kann man sonst den Takt auf 16 MHz anpassen und kommt so auf 1 MHz AD Takt.
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.