Ich habe folgende Vorrausetzung: Mehrere programmierbare Bauelemente, nur eine Leitung zum Daten übertragen, die Übertragungsprotokolle sind allen Elementen bekannt, aber... Sowohl das sendende als auch das empfangende Element kennt nicht die Übertragungsgeschwindigkeit des anderen und... Es übertragen über 50 Elemente über die gleiche Leitung PTP. Die Im Micronetzwerk verbauten Elemente können nicht nur leicht in ihrem Cpu-Takt abweichen, sie können gar mit weit auseinanderklaffenden Frequenzen arbeiten (1 - 40 Mhz) und eine einheitliche Schnittstelle gibt es nicht. Es gibt nur den einen Pin den ich nach belieben programmieren kann. Quarze kommen nicht zum Einsatz und einzellne Module können unter leichten Störungen leiden (Spannungsabfall). Ich will folgendes: Ein auf Empfang gestelltes Modul soll die aktuelle Übertragungsbeschwindigkeit auf der Hauptleitung erkennen (permanent und ohne Datenverlust). Dies muss ich mit so wenig Befehlen wir möglich umsetzen (Assembler - AVR). Momentan habe ich aber nicht mal einen Ansatz, wie ich das umsetzen soll. Der resultierende Datendurchsatz ist mir erstmal egal. Wenn sich zwei Elemente spontan auf eine möglichst hohe Geschwindigkeit einigen kommt mir das aber entgegen. Bei dem Projekt geht es nicht um High-End-Lösungen. Es muss nur einfach irgendwie funktionieren. Es geht auch nur ums Übertragen eines aktuellen Status oder den aktellen Wert des ADC, usw. BTW: Kennt einer einen ADC der mit mehr als 24 Bit messen kann? Grüße
>Was für ein Unsinn. Denke ich auch. >BTW: Kennt einer einen ADC der mit mehr als 24 Bit messen kann? Ich glaube, dass jemand, der im Netz keinen ADC findet, auch keine Design mit so einem Baustein hinbekommt. Hier wäre jedenfalls einer: http://www.ti.com/lit/ds/symlink/ads1282.pdf
Ich würd mich jedenfalls mal LIN anschauen. Dort gibt es Autobaud, mit dem die um ca +-2% schwankende Baudrate erkennen kann. Prinzipiell müsste das auch mit 4000%/-97.5% gehen. Dann aber nicht mit der Autobaud-Funktionalität eines Mikrocontrollers, sondern per Input Capture.
Wegschmeißen und alles komplett neu und vernünftig machen! Alleine diese Aussage: Micronetzwerk schrieb: > Dies muss ich mit so wenig Befehlen wir möglich > umsetzen ist grenzwertig. Was sind denn "so wenig befehle wie möglich"? Mal angenommen 5000 (asm-)befehle wären das absolute minimum, was du an befehlen brauchst... ist das dann noch brauchbar?
Grundsätzlich müsste hier jede Übertragung mit einem festen Signalmuster ohne Bedeutung beginnen, aus dem sich jeder Teilnehmer am Bus die Übertragungsrate ermitteln kann. Dann folgen die Adresse, dann der Befehl, die Daten etc... Bei 1...40 MHz sollte man sich aber auch auf eine Baudrate o.ä. einigen können. Logischerweise bestimmt der langsamste Teilnehmer die obere Grenze dafür: Sollte es schnellere Übertragungen auf diesem Bus geben, könnte ein langsamerer Teilnehmer etwas missverstehen - und dann folgt Kuddelmuddel...
So wie das Lin-System möchte ich meins auch gestalten: Ist ein Modul der Meinung die Leitung ist frei sendet es einfach drauf los. Dabei verhindert eine analoge Schaltung, dass das Modul die Datenleitung auf High schalten kann, wenn die Leitung von außen bereits auf Low ist (und umgekehrt). Gesendet wird die Adresse des Ziels, dann die eigene Adresse und der Befehl bzw. die Daten. Das empfangende Modul antwortet mit der Senderadresse, der eigenen Adresse und den angeforderten Daten bzw. dem empfangenen Befehl als Bestätigung. Antwortet das Empfängermodul nicht korrekt, ist die Nachricht nicht empfangen worden. Alles woran ich scheitere ist die Synchronisierung. Ich könnte aber folgenendes versuchen: Ich gehe auf eine konstante Übertragungsgeschwindigkeit für alle Module. Jedes Modul das nicht sendet misst den zeitlichen Abstand der kurzen High-Low-Wechsel. Dies soll dann die korrekte Geschwindigkeit fürs Empfangen und Senden sein. Dabei gehen aber bereits die ersten Bits verlohren. Dies umgehen könnte ich, indem ich einfach eine Art Wake-Up-Befehl sende, an dem sich alle empfangenden Module orienteiren können. Das was ich mir da ausgedacht habe hat für meinen Geschmack aber zwei Nachteile. Ich kann nicht mit verschiedenen Geschwindigkeiten auf der gleichen Leitung arbeiten und ich denke das wird zu viele AVR-Assembler-Befehle verbrauchen. Als Erstkonzept ist es aber Entwicklungsfähig. Grüße
@Oldie Zumindest theoretisch müsste es einen Weg geben langsamere Teilnehmer bei schnelleren Übertragungen auszuschließen. Dafür fällt mir aber grade nichts ein.
Micronetzwerk schrieb: > BTW: Kennt einer einen ADC der mit mehr als 24 Bit messen kann? Wenn du die Signale in der Qualität bereit stellst ...
@ADC Tu ich... @Oldie Wenn ich jede Nachricht um eine Checksumme ergänze, können Module, die für die Nachricht zu langsam sind, die Nachricht verwerfen. So könnte ich bestimmte Geschwindikeiten (sagen wir 1, 10, 100, 1000 khz) vorgeben. Bekommt ein sendendes Modul auf seiner hohen Geschwindigkeit nicht die erwünschte Antwort, versucht er es bei der nächsten Gelegenheit mit einer niedrigeren Geschwindigkeit. Müsste eigendlich auch mit jeder anderen Geschwindigkeit funktionieren.
Micronetzwerk schrieb: > @ADC > > Tu ich... Benutz mal Dein Hirn! 24 Bit Auflösung sind 16777216 diskrete Werte. Bei einem Messbereich von 5V ergäbe das eine Schrittweite von 0,000'000'298V. Das sind 300 Nanovolt. Weißt Du, in was für Regionen Du Dich da bewegst? Kannst Du überhaupt eine so gute Spannungsquelle herstellen? Mit Sicherheit nicht, so wie Du Dich hier äußerst. Geh wieder mit Deinen Legos spielen. fchk
@Frank K. Genau, weil du dich hier so erwachsen gibst... Das ich nicht lache. Und ein Poti der rund 40 Euro kostet sollte so genau sein... Und ja ich brauche eine so hohe Auflösung und sogar noch sehr viel mehr.
Micronetzwerk schrieb: > Das ich nicht lache. Und > ein Poti der rund 40 Euro kostet sollte so genau sein... @Frank K. Ja, das musst Du nähmlich wissen, solche teuren Potis sind so genau, das ist nähmlich ein 46603 Gang-Spindelpoti ;)
Wie sehen denn die Signale aus, die Du mit 24 bit oder mehr messen willst? Wie sieht denn die Referenz aus, die diese Genauigkeit leistet? Wie sieht denn Dein Schaltungsaufbau aus, dr 24 bit oder mehr verarbeiten kann? Wie ist denn das Rauschen Deiner gesammten Meßschaltung? 0,3 µVolt sind verdammt wenig... und Du willst ja noch genauer messen?
Micronetzwerk schrieb: > Und ein Poti der rund 40 Euro kostet sollte so genau sein... O nein. Ist es nicht. Nicht ansatzweise. Sieh doch einfach mal ins Datenblatt des Potis, was da als Toleranz, Linearität, Temperaturkoeffizient etc. angegeben sind. Wenn da was besseres als 0.1% steht, würde mich das sehr wundern. Und überleg' mal, was 0.1% in Relation zu Deinen 24 Bit sind. 0.1% sind gerade mal das LSB von 10 Bit. > Und ja ich brauche eine so hohe Auflösung und sogar > noch sehr viel mehr. Dann machst Du konzeptionell was falsch. Was willst Du damit anstellen? Wenn Du eine Rotationsbewegung genau erfassen möchtest, nimm einen Drehimpulsgeber (oder eine Chopperscheibe und Lichtschranken o.ä.). So etwas macht man nicht analog, und schon gar nicht mit einem Poti.
Micronetzwerk schrieb: > > Genau, weil du dich hier so erwachsen gibst... Das ich nicht lache. Und > ein Poti der rund 40 Euro kostet sollte so genau sein... Und ja ich > brauche eine so hohe Auflösung und sogar noch sehr viel mehr. Hier dein Fisch: ><((((*>. *** Do not feed the trolls. ***
Man könnte eine Synchronisation machen, indem alle Teilnehmer nacheinander ihre maximal machbare Baudrate preisgeben (natürlich in der Geschwindigkeit, dass alle es Empfangen können). Diese muss dann jeder speichern und kann dann entscheiden "Ok, ich sende an Teilnehmer 15, der kann xxx Baud". Damit andere sich nicht angesprochen fühlen, sollte man noch eine Prüfsumme übermitteln. Ich finde jedoch, du solltest einfach einen anderen uC nehmen (und ansich auch den gleichen, mit gleichem Takt), der mehr Pins hat. Das vereinfacht nicht nur dein Protokol und Software, du sparst dir auch die Baud-Erkennung. Z.B. ein uC mit CAN. Sind 2 statt einer Leitung und hat ansich alles, was du willst gleich mit drinne. Wenn du Geld für nen 40€ Poti und PCBs hast, solltest du die paar Cent, was so ein Controller mehr kostet, auch haben. Zum ADC wurde denke ich schon alles gesagt. Selbst wenn der Pote 1000 Gänge hätte und perfekt Linear wäre, ist es immernoch ein Widerstand (und bei 1000 Gängen bestimmt ein relativ großer). Und (gerade große) Widerstände rauschen. Dazu haben 24bit ADCs zwar 24bit Auflösung, jedoch INL und DNL, ggf. noch einen Gain-Error, und und und. Und du brauchst eine ausreichend genaue Referenzspannung. Zusätzlich kommen noch Störungen von außen (u.a. durch die "Antenne" / Datenleitung), weshalb die Messleitung gut abgeschirmt sein sollte. Der Aufbau wird mit Sicherheit nicht trivial und auch nicht günstig sein. Schau dir einfach mal an, was 8 Digit genaue Voltmeter kosten. Die sind nicht ohne Grund so teuer. Und dann noch 32bit ADC? Mit nem Poti? Das is rausgeschmissenes Geld. John Drake schrieb: > *** Do not feed the trolls. *** Ich befürchte es auch, aber dennoch.
:
Bearbeitet durch User
@ Micronetzwerk Poste doch einmal die Schaltpläne und ein Foto deines Aufbaus.
Zum Poti mal laut denkend: Der Winkel den ich messen möchte muss auf 0,00057296° von 360° genau (besser etwas mehr) bestimmt werden. Wenn Ihr mir sagt, dass kein Poti der Welt so genau wiedergeben kann, glaube ich euch das. Ich dachte auch mal, dass man die Tolleranzwerte ignrieren kann, indem man die äußeren Pole auf + und - legt. So sollte sich die Messleitung selbst skalieren (davon ausgehend, dass der Poti gleich warm ist). Ein zweiter Poti sollte umgekehrt gepolt den Referenzwert geben. Rauschen sollte entgegengewirkt werden, indem von 100 Messungen der Durchschnittswert ermittelt wird. Wie ich grade nachgerechnet habe reicht hier der 24 Bit ADC. Ich sollte wohl mal meine Daten auf den aktuellsten Stand bringen. Meine Daten basieren auf einen älteren ADC mit weniger Bits. Ich habe leider nicht notiert wieviel Bits das wahren (an diesem Punkt wiedermal was gelernt).
@Michael Skropski Theoretisch könnten die einzelnen Stellen nicht nur wissen welche Gegenstellen die gleiche oder eine ähnliche Geschwindigkeit unerstützen, sondern auch welche Signalstärke die jeweilige Gegenstelle hat. So könnte eine Art Routingtabelle erstellt werden. Ist mir aber offengesagt etwas to much. Ich denke auch eine einheitliche (niedrige) Baudrate ist zum ansteuern vollkommen ausreichend.
Micronetzwerk schrieb: > Rauschen sollte entgegengewirkt werden, indem von 100 Messungen der > Durchschnittswert ermittelt wird. So eine Anzahl von Messungen verwendet nur jemand, der noch nie einen µC effizient programmiert hat. Sei's drum. Eine wie starke Abnahme des Rauschens erwartest du dir von der Mittelung über 100 Werte?
Micronetzwerk schrieb: > Zum Poti mal laut denkend: > Der Winkel den ich messen möchte muss auf 0,00057296° von 360° genau > (besser etwas mehr) bestimmt werden. Wozu zur Hölle? Das sind ca 1mm Umfang auf 100 Meter Radius! Idee wäre mit Zahnräder, wobei ich mir vorstellen kann, dass, wenn es so genaue Zahnräder mit so wenig Spiel gibt, sie seehr teuer sind. Bei der Anforderung bin ich raus. Und ich denke, ohne Entmutigen zu wollen, dass du es so schnell nicht hinbekommen wirst.. Wenn du sowas mit nem Poti machen willst.
Micronetzwerk schrieb: > Der Winkel den ich messen möchte muss auf 0,00057296° von 360° genau Eine Teleskopsteuerung mit zwei Bogensekunden Genauigkeit? ;-)
@ Micronetzwerk Mal ganz nett und ruhig und freundlich gesagt: Deine Anforderungen an den ADC sind außergewöhnlich. Ist Dir das klar? Du wirst vielleicht verstehen, dass die Leute hier, die in der Lage wären Dir zu helfen auch abschätzen wollen ob sich das überhaupt lohnt. Wir wissen leider nicht, was für einen Bildungs- und Erfahrungshintergrund hast. Bitte schreibe doch einmal etwas dazu. Weißt Du, wenn mein 13jähriger Neffe, der sich soetwas zweifellos ausrechnen kann, einen ADC mit 24 Bit haben will, dann hinterfrage ich seine Absichten. Wenn aber Prof. Dr. Dr. Bienlein, den ich zehn Minuten zuvor noch mit 10l flüssigem Stickstoff hantieren sehen habe, mich in der Kantine vom CERN fragt, dann suche ich in meinen Datenbüchern. Verstehst Du, was ich sagen will? Vielleicht bist Du ja auch ein sehr motivierter Amateur - es hat ja auch Schüler gegeben, die sich Rasterelektronenmikroskope gebaut haben. Dann schaue ich auch mal nach, aber warne Dich auch, dass das sehr schwierig wird, sehr teuer und ungeheuren Lernaufwand und viele Fehlversuche bedeutet. N_2 brauchst Du trotzdem. Also, hab Verständnis für die Skepsis der kompetenten Leute und nimm die unhöflichen Antworten als verunglückten Ausdruck dessen, was ich hier sagen wollte. Jedenfalls, viel Erfolg.
Davon ausgehend, dass in meinem hypotetischem Beispiel auf einer Skala von 1 bis 100 dann 100 Messungen gemacht werden und jede Messung eine Zufallszahl zwischen diesen 1 bis 100 ist, dann sollte ein daraus ermittelter Durchschnittswert ja wohl eine glatte 50 sein. Auch wenn 99 Messungen den Wert 50 ergeben und die eine verbleibende eine radikale Fehlmessung von 100 hat, kommt dabei trotzdem ein Wert sehr nahe bei 50 raus. Ob ich jetzt 10, 100 oder noch viel mehr Messsungen miteinander vergleiche ist ja hier erstmal nicht relevent. Mir ist aber auf jeden Fall wichtig, dass eine extreme Fehlmessung weniger ins Gewicht fällt. Zugegeben sind 100 Messungen arg viel. 10 sind mir aber auch zu wenig. Ob jetzt die Wahrscheinlichkeit einer Fehlmessung von 1 : 100 oder weniger angemessen ist, wird sich dann zeigen, wenn ich weiß wieviel Rauschen tatsächlich auftritt. Wenn du aber die ultimative Lösung für mich hast, bin ich ganz Ohr. Ich für meinen Teil möchte grade nur die Wahrscheinlichkeit des Worst-Case vermindern.
> Davon ausgehend, dass in meinem hypotetischem Beispiel auf einer Skala > von 1 bis 100 dann 100 Messungen gemacht werden und jede Messung eine > Zufallszahl zwischen diesen 1 bis 100 ist, dann sollte ein daraus > ermittelter Durchschnittswert ja wohl eine glatte 50 sein. So? Eine glatte 50? Aha. Interessant. Schonmal von dem ollen Gauss gehört?
Uiiii, wie man das Rauschen los wird, mit welcher Gesetzmaessigkeit, ist nicht bekannt. Ja. Dann ... lass es sein. Das wird so nichts.
Nur so nebenbei ... je nach Anwendung muss man 10'000'000 Mittelungen machen, um was Vernuenftiges zu sehen.
Micronetzwerk schrieb: > Zum Poti mal laut denkend: > Der Winkel den ich messen möchte muss auf 0,00057296° von 360° genau > (besser etwas mehr) bestimmt werden. Was um alles in der Welt ist die Anwendung?
Ja dann erklärt mir bitte mal was: Wenn ich über ADC eine Messung durchführe, bekomme ich einen absoltuten Wert. Ein absulotuer Wert hat keinen Von-Bis-Bereich (aus einer absoluten Zahl kann man kein Rauschen ablesen). Er kann nur vom Rauschen fehlerhaft sein (je nachdem welche Spitze ich grade erwicht habe). Die Wahrscheinlichkeit eine fehlerhafte Messung erhalten zu haben kann ich (auch) reduzieren, indem ich mehrere Messungen miteinander vergleiche. Soll das falsch sein? (Jetzt weiß ich auch was hier die ganze Zeit mit Trollen und Fischen gemeint ist)
Also angenommen, du hast einen 10Bit Wandler und einen Sensor dran. 10 Bit gehen von 0..1023 Dann misst Du zum Beispiel folgende Werte, wenn Du 5 Messungen machst: 703 703 704 703 704 Ein 10 Bit Wandler kostet 1 Euro und ein Design hat einen Aufwand von 4h. Jetzt machst Du die gleiche Messung mit einem 24 Bit Wandler und skalierst das Signal. Dann wäre das Ergebnis vielleicht: 703.7241 703.1348 703.9821 704.0129 703.1100 Wandler: 5 Euro. Aufwand für das Design: auch 4h. Und so würde das Signal aussehen, wenn Du jemand mit Erfahrung das Design machen würde: 703.7241 703.7248 703.7237 703.7244 703.7242 Material vielleicht 100Euro. Aufwand für das Design: 1 Woche.
> (Jetzt weiß ich auch was hier die ganze Zeit mit Trollen und Fischen > gemeint ist) Au weia. Er weiß es!
Micronetzwerk schrieb: > Ja dann erklärt mir bitte mal was: > > Wenn ich über ADC eine Messung durchführe, bekomme ich einen absoltuten > Wert. Ein absulotuer Wert hat keinen Von-Bis-Bereich (aus einer > absoluten Zahl kann man kein Rauschen ablesen). Er kann nur vom Rauschen > fehlerhaft sein (je nachdem welche Spitze ich grade erwicht habe). Nicht nur. Auch ein ADC ist kein ideales Bauteil. So wie übrigens alle elektronischen Bauteile. Was du dir in deinem Kopf vorstellst, wie absolut präzise ein ADC arbeitet, ist eine Sache. Ob das in der Praxis auch so ist, ist eine ganz andere Sache und hängt nicht nur davon ab, ob du das nötige Kleingeld hast, den IC zu kaufen. Aber egal: wer solche Anforderungen wie im Eröffnungsposting lösen kann, der kann auch in einem Alien_Raumschiff einen Computervirus einspielen. Und davor ziehe ich meinen Hut :-)
:
Bearbeitet durch User
Und dann kommt noch die Referenz, auf die sich der Messwert bezieht. Da gibt es welche, die haben eine Genauigkeit von 0.1%, eine Stabilitaet von 2ppm und ein Rauschen von 5uVpp 1..10Hz, oder sonst was. Und dann kommen Thermospannungen. Ein Thermoelement, Typ K, zugegeben, speziell kombiniert, das macht 40uV pro Grad. Heisst irgendwelche Temperaturunterschiede ergeben schnell mal duzende von uV.
Und dann kommt induziertes Rauschen. Ein normaler (SMD-)Kondensator ist mikrophonisch, bedeutet er wandelt Vibrationen in Spannung, macht nochmals ein paar uV.
.... und von den Eigenschaften eines Potis (auch wenn es 40 Euro kostet), haben wir noch gar nicht gesprochen.
Wir haben hier Leser und Poster, die kaempfen um uV, ein Leben lang. Deren Beitrage sind jeweils sehr interessant.
Das wird wohl eher ein 500€ Potentiometer. Wenn das mal reicht.
@All, lasst es ihn doch einfach ausprobieren, manche Fehler muss man selber machen um das Problem zu verstehen mann kann einem Kind 1000 mal sagen... "die Kerze ist heiß, nicht anfassen" und trotzdem wird es sich irgendwann mal verbrennen also : @Micronetzwerk wenn du noch eine höhere Genauigkeit als 24Bit brauchst, teile deine zu messende Spannung mit einem 1:1 Widerstands-Spannungsteiler in zwei gleich große Teile und messe die Teilspannungen je mit einem 24bit Wandler...dann hast du eine gesammt Auflösung von 48bit (das ist auch beliebig erweiterwar) Gruss Uwe
:
Bearbeitet durch User
@ Uwe B. Ganz grosses Hmmm, vielleicht auch nur 25 Bit. Gruss
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.