Hallo Leute, ich hätte das auch Meßschieber die 1001te nennen können, aber dann macht's ja erst gar keiner auf ;-) Spaß beiseite, ich möchte mit einem Mega328p die Daten von mehreren (mind. 3, eher 4-5) Meßschiebern gleichzeitig einlesen. Die ganzen einschlägigen Seiten wie Yadro, Shumatech usw. kenne ich und hab auch fast alle Beiträge zu diesem Thema hier im Forum gelesen. Die Daten von einem Meßschieber einlesen ist auch überhaupt kein Problem. Für die, die die Seiten nicht kennen: Das schwierigste, weil schnellste Protokoll dürfte wohl das 2x24 sein. http://www.yadro.de/digital-messleiste/protokoll.html#a2 direkt gefolgt vom 21 Bit-Protokoll. (Beide 70-80kHz Clock) Die BCD(6/7)-Protokolle sind verhältnismäßig langsam ... Ich frage mich nur, ob/wie es realisierbar ist, mit einem Mega328p/16MHz 3-5 solcher synchronen Signale parallel einzulesen (die Signale sind natürlich untereinander nicht synchron, sondern völlig unabhängig). Zunächst mal hab ich nur zwei externe Interrupts (INT0/INT1), die ich eigentlich schon für was anderes brauche - außerdem sind's eh nur zwei. Dann wären da noch die PC-Ints ... Bevor ich also nach 3 vertanen Nächten frustriert aus dem Fenster springe, ist das mit Polling überhaupt zu schaffen? Hat jemand ne gute Idee, wie das mit (wenig) externer Hardware (z.B. Schieberegister) besser zu schaffen ist? Evtl. 1 D-FF pro Meßschieber-Eingang? Damit würde man zumindest die Zeit zum Einlesen des Datenbits von 1/2 Clock auf 1 Clock verlängern. Wenn's zuviel externe HW wird, kann ich auch gleich 3-5 ATtinys nehmen, für jeden Meßschieber einen ... Ich freu mich auf gute Ideen ... ... oder zur Not auch auf ein 'laß es sein, ist nicht zu schaffen' Gruß - Karl
Kann vielleicht gehen, ist aber schon sehr aufwändig. Nimm ieber drei kleine Attinys, jeder liest EINEN Meßschieber ein und sendet die Daten per SPI/USART/I2C zum Master. Fertig. MfG Falk
Hm, vielleicht versteh ich das ja jetzt falsch, aber kannst du nicht einfach einen kompletten IO-Port einlesen? Dann kannst du ja quasi immer 8 Bit gleichzeitig einlesen. Aber das ist zu einfach, ich hab bestimmt was falsch verstanden... Gruß
Joachim schrieb: > Hm, vielleicht versteh ich das ja jetzt falsch, aber kannst du nicht > einfach einen kompletten IO-Port einlesen? Dann kannst du ja quasi immer > 8 Bit gleichzeitig einlesen. Aber das ist zu einfach, ich hab bestimmt > was falsch verstanden... ja, das wär einfach - wenn die Meßschieber brav alle ihre Daten synchron anliefern würden. Da aber jeder - wie in jedem Meeting ;) - einfach dann losquatscht, wenn es ihm grade passt, wird das nix ... @Falk: Im moment wehr ich mich noch ein wenig dagegen, mehrere uC's in dem Projekt einzusetzen - ein ATmega und ein paar TTLs wären mir lieber, auch wenn die TTLs das Gleiche kosten wie ein ATtiny. Nur wenn dann das TTL-Grab teuerer wird als mehrere uCs, wird's blöd ... Das Ganze ist ein low cost Projekt, alles soll so billig wie irgendmöglich sein. Gruß - Karl
Senden die Messleisten zyklisch? Wenn ja, mit welcher Frequenz wird ein komplettes Datenpaket gesendet? Wie schnell soll die Aktualisierung der Anzeige erfolgen? Vermutlich um die 10 Hz?
Hat der 328p nicht nen ganzen Berg Pinchange-Interrupts? Damit müsstest du das doch relativ einfach einlesen können.
Karl F. schrieb: > Spaß beiseite, ich möchte mit einem Mega328p die Daten von mehreren > (mind. 3, eher 4-5) Meßschiebern gleichzeitig einlesen. Warum muß es gleichzeitig sein? Ich würde sie einfach nacheinander einlesen. Laut Deinem Link kann man sie auf 50/s hochsetzen, das ist /4 immer noch viel schneller, als ein Mensch ablesen kann. Peter
Falls die CPU-Leistung beim Parallelverarbeiten aller Datenströme der Engpaß ist und die Meßrate nicht allzu hoch sein muß, könnte die CPU die Daten im Zeitmultiplex aufnehmen, d.h. der µC kümmert sich immer reihum nur um einen Meßschieber und schaltet erst nach Empfang eines gültigen Datensatzes zum nächsten Meßschieber weiter. Das Auswählen könnte z.B. über ein bzw. zwei TTL Multiplexer laufen, die dann einen Meßschieber zum µC durchschalten.
Also der Vorschlag das von mehreren einzelnen kleinen Atmegas per Kanal zu erledigen ist simpel, effizient, pragmatisch , praktisch und gut ! GUT !
Bei 80kHz und 16MHz hast du 2000 Takte Zeit um maximal 5x1 bit auszuwerten, das sollte selbst mit Interrupts reichen. Dafür nicht nur einen sondern mehrer Prozessoren zu langweilen finde ich irgendwie fies ;-) Eine andere Idee wäre, per Timer bpsw. alle 500 Takte einen Port einzulesen und diesen in 8 parallele Bitströme umzuwandeln (per shift/rotate). Alle 4000 Takte ergibt das 8 bytes zum Analysieren mit mindestens 3-bit hintereinander pro Impuls. Wenn die Protokolle je AVR-Pin bekannt sind kann man das Pollen bei den langsameren entsprechend seltener machen. Mark
Mark L. schrieb: > Bei 80kHz und 16MHz hast du 2000 Takte Zeit um maximal 5x1 bit > auszuwerten, das sollte selbst mit Interrupts reichen. Klingt auf den ersten Blick sehr verlockend. Dumm nur, dass 16e6 / 80e3 = 200 (nicht 2000) Dann wird das Ganze schon etwas knapper ... - Karl
XMega verwenden und Event-System und DMA nutzen. Jedem Messschieber einen Port spendieren, dann kann man locker parallel arbeiten. Die CPU muss die Daten dann nur noch verarbeiten, nicht aber wegschaufeln. Edit: Eventuell liessen sich die 8 UARTs / 4 SPIs des XMega verwenden, dann hat man noch 8x länger Zeit, bevor man reagieren muss.
Martin schrieb: > FPGA Knut Ballhause schrieb: > XMega verwenden Hallo Leute, ich dachte ich hatte mich klar ausgedrückt: ich will das mit einem Mega328p machen. Das ist gesetzt, weil die Meßschieber nur Teil eines anderen Projektes sind. Wenn das mit dem alleine nicht zu machen ist, dann bekommt er entweder ein paar TTLs oder ein paar Tinys zur Seite gestellt. Evtl. ist das mit dem alternierenden Auslesen noch eine Idee. Worst case wäre (glaube ich) wenn die Meßschieber nicht auf 50x gestellt sind und die 4x zeitgleich von mehreren Meßschiebern reinlaufen. Ich werd mir das mal näher anschauen. Danke für's mitdenken. Gruß - Karl
Karl F. schrieb: > Dumm nur, dass 16e6 / 80e3 = 200 (nicht 2000) > Dann wird das Ganze schon etwas knapper ... Oje, sorry da hab' ich mich ziemlich blöd verrechnet. Dürfte aber trotzdem gehen, nur nicht ganz so bequem.
Ich verstehe auch nicht, warum man unbedingt Meßschieber mit verschiedenen Protokollen verwenden muß. Wenn alle das gleiche Protokoll sprechen, sollte es deutlich einfacher sein. Peter
Peter Dannegger schrieb: > Ich verstehe auch nicht, warum man unbedingt Meßschieber mit > verschiedenen Protokollen verwenden muß. Das wird wohl daran liegen, wie immer. Karl F. schrieb: > Das Ganze ist ein low cost Projekt, alles soll so billig wie > irgendmöglich sein. citb
Karl F. schrieb: > Evtl. ist das mit dem alternierenden Auslesen noch eine Idee. Ich habe die Schieblehrenanzeige SLA1 von ELV: http://www.elv.de/output/controller.aspx?cid=683&detail=10&detail2=69830 Sie hat 4 Kanäle und macht das mit einem Multiplexer. Eingangsschaltung: Ziehwiderstände nach Masse, Resetschaltung koppelt Signal mit Diode ein, ein Jumper ermöglicht die Fernversorgung der Schieblehre mit 1,5V. Dann kommt eine Pegelanpassung mit 4x LM393 und danach der Multiplexer (2x CD4503). Die beiden Signale gehen an PD6 und PD7. Der Prozessor scheint ein ATmega32 zu sein. Gruß Dietrich
citb schrieb: > Peter Dannegger schrieb: >> Ich verstehe auch nicht, warum man unbedingt Meßschieber mit >> verschiedenen Protokollen verwenden muß. > > Das wird wohl daran liegen, wie immer. > > Karl F. schrieb: >> Das Ganze ist ein low cost Projekt, alles soll so billig wie >> irgendmöglich sein. > > citb Hallo Leute, das liegt nicht NUR daran, dass es kostengünstig sein muss, sondern auch daran, dass es auf den Meßschiebern nicht draufsteht, was sie für ein Protokoll sprechen. Wenn ich drei gleiche Meßschieber im Laden kaufe, dann sind die sicherlich gleich, aber wenn ich zum Anbau an eine Maschine - vom selben Händler(!) - einen Meßschieber in 150mm, einen in 250mm und einen in 500mm kaufe, dann kann das gut sein, dass die unterschiedliche Protokolle sprechen ... das Interface steht bei diesen Dingern nunmal nicht im Vordergrund. Ein weiterer möglicher Grund ist der stufenweise Ausbau einer Maschine - ein Jahr später gibt's evtl. dieses Modell Meßschieber nicht mehr bzw. man kann aus o.a. Grund zumindest nicht gezielt einen kaufen, der ein bestimmtes Protokoll spricht, leider. Gruß - Karl Nachtrag: Wenn ich mir das aussuchen könnte, würde ich nur welche mit dem BCD6-Protokoll verwenden. Die 'zappeln' nicht, der Meßwert ist stabil und das Protokoll ist relativ langsam, so dass das Einlesen von mehreren Meßschiebern überhaupt kein Problem wäre ...
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.