Hallo allerseits! meine heutige Frage dreht sich um die Möglichkeit Hardware zu kodieren bzw. zuzuordnen. Konkret geht es darum eine Platine die an ein System angeschlossen wird zu erkennen. Z.B. es gibt drei Module, Modul ROT, GRÜN, BLAU und wann immer eines der Module an das System angeschlossen wird soll das System in der Lage sein zu erkennen welches Modul angeschlossen wurde. Anforderungen: es soll möglichst wenig Bauteile benötigen (platzsparend) es soll möglichst wenig Leitungen benötigen und es soll 100% eindeutig sein (fehlerfrei). Zeit spielt bei der Erkennung der Module keine Rolle also wenn die Erkennung 1-2 Sekunden dauert ist das auch kein Problem. Natürlich je schneller desto GUT. Insgesamt soll es möglich sein ~50 verschiedene Werte zu unterscheiden und das bei einer Spannung von 3,3V. Die Leitungslänge zwischen Modul und System beträgt ungefähr 2,5m. Und es soll möglich sein es in der Serienfertigung anzuwenden ~1000/a Bisherige Überlegungen: EEPROM: + nur ein Bauteil + eindeutig - viele Leitungen - muss programmiert werden R2R Widerstands Leiter und Messung mittels ADC: + wenig Leitungen + ziemlich eindeutige Erkennung (bei 6 bit ~50mV pro bit, sollte der ADC gut erkennen) - viele Bauteile - jedes bit muss gesetzt werden (z.B. Lötjumper) Spannungsteiler und Messung mittels ADC: R1 ist ein Festwiderstand R2 besteht aus sechs unterschiedlichen Serienwiderständen welche mittels Jumper aktiviert/deaktiviert werden können (64 Werte jedoch nicht so gut verteilt wie bei R2R Leiter) + nur 7 Widerstände + wenig Leitungen + nur die bits die aktiv sind müssen gesetzt werden (z.B. Lötjumper) - vielleicht nicht möglich alle 64 Werte voneinander zu unterscheiden weil die Werte nicht linear sind und daher manche Werte nah beieinander liegen. Ich würde gerne hören was Ihr zu diesem Thema zu sagen habt und bin gespannt was Ihr für Vorschläge habt. mfg
suckiden schrieb: > Ich würde gerne hören was Ihr zu diesem Thema zu sagen habt und bin > gespannt was Ihr für Vorschläge habt. Silicion Serial Number mit 1Wire Interface. http://www.maximintegrated.com/en/products/digital/memory-products/DS2401.html + 100% Eindeutig + Muss nicht programmiert werden. + Benötigt nur 1 Leitung (VCC/Daten) + GND. -Teurer als eeprom oder wiederstände
Was die vielen Leitungen am EEProm angeht gibt es ja noch onewire. Braucht weniger Platz und genauso viele Leitungen wie die ADC Lösung
suckiden schrieb: > EEPROM: > + nur ein Bauteil > + eindeutig > - viele Leitungen > - muss programmiert werden Sind genau 2 Leitungen: I2C CLK und Data. Stromversorgung hast Du ja auf der anderen Platine auch. Alternative: Widerstand bestücken und rausmessen über ADC. Billig, braucht auch 2 Leitungen, bei 50 verschiedenen Werten wird das aber mit den dekaden schwierig (Spannungsteiler, Auflösung ADC), das lässt sich aber über eine Kominbation mit zwei Widerständen erleichtern - braucht dann drei Leitungen. rgds
Cyblord -. schrieb: > Silicion Serial Number mit 1Wire Interface. > http://www.maximintegrated.com/en/products/digital/memory-products/DS2401.html klingt gut, jedoch habe ich da ein unique Seriennummer oder hab ich was überlesen?. In dieser Anwendung sollte es möglich sein einem Modultyp immer die gleich Nummer zu geben. 1-Wire klingt auf jeden Fall gut. Serial EEPROM klingt auch nicht schlecht: http://www.digikey.com/product-detail/en/11AA160T-I%2FTT/11AA160T-I%2FTTCT-ND/1851333
suckiden schrieb: > Serial EEPROM klingt auch nicht schlecht Hat ausserdem den Vorteil, dass man darin noch viel mehr unterbringen kann, z.B. Kalibrier-Daten, Betriebsstunden usw. usw. Georg
suckiden schrieb: > es gibt drei Module, Modul ROT, GRÜN, BLAU und wann > immer eines der Module an das System angeschlossen wird soll das System > in der Lage sein zu erkennen welches Modul angeschlossen wurde. wäre mal noch interessant zu wissen, wie die denn an das System angeschlossen werden. Sternförmig, Bus, oder noch was ganz anderes? Welche bisherige Kommunikation besteht zwischen den Modulen und dem System? suckiden schrieb: > Insgesamt soll es möglich sein ~50 verschiedene Werte zu unterscheiden Können dabei mehrere Module vom gleichen Typ angeschlossen sein, oder ist mit 50 Modulen gemeint, dass diese zwingend unterschiedlich voneinander sind? Also z.B. ROT kommt höchstens 1 mal vor?
Noch eine Alternative: ein kleiner Microcontroller im SOT23-Gehäuse (z.B. PIC10Fxxx). Kommunikation über eine Leitung über UART (ggf. Software UART, bei kleinen Baudraten kein Problem). Halbduplex ermöglicht bidirektionale Kommunikation, oder der µC sendet einfach immer ständig sein Datenpaket mit der ID.
Wie kommunizieren die Module mit dem System? Gibt es eine Datenverbindung die mitbenutzt werden kann? Haben die Module einen µC der diese Information ggf. schon im internen EEProm speichern könnte?
Warum nicht einfach einen Kodierstecker benutzen? Soetwas wie die guten alten DIN 41612 (übersetzt VG-Leisten).
suckiden schrieb: > klingt gut, jedoch habe ich da ein unique Seriennummer oder hab ich was > überlesen?. In dieser Anwendung sollte es möglich sein einem Modultyp > immer die gleich Nummer zu geben. 1-Wire klingt auf jeden Fall gut. Na ja, sieh dir mal die Zusammensetzung der SN an. "Key Features ... (8-Bit Family Code +48-Bit Serial Number + 8-Bit CRC Tester) " Vlt. kommst du mit dem Family Code hin. Hab aber nicht nachgelesen, wie viele es davon gibt und wie die bestellt werden müssen.
Mache einen Spannungsteiler auf jedes Modul, der jeweils unterschiedliche Spannungen am Abgriff liefert, oder setzte einen Einstellregler rein, der in der gleichen Weise eingestellt wird. Du kannst dann in Deinem nicht näher genannten "System" einen kleinen Kontroller reinsetzen, der mit einem A/D-WandlerKanal diese Spannuung mißt und der restlichen Schaltung "sagt": "Jetzt hat der Kerl Modul Numer 2 drangesteckt -macht, was ihr mit diesem Modul machen müßt!" MfG Paul
Falls die Module auch noch Controller enthalten, die geflashed werden müssen: EEprom. Das kann direkt beim Flashen des Controllers per Nadelbett kontaktiert werden, bei 1000/a macht so eine Programmier-Lösung auch schon Sinn. Das EEprom macht dich absolut flexibel, und ja auch sonst noch gut zum speichern von Daten des Moduls, Parametrierung, Kalibrierung etc dienen. Wenn das Modul natürlich nur einen Peripheriebaustein oder Analogtechnik enthält, wär das sicher overkill.
> es gibt drei Module, Modul ROT, GRÜN, BLAU und wann
3 Module? Dann geht es mit einem Widerstand am Portpin eines MC:
rot: offen
grün: gegen GND
blau: gegen VCC
suckiden schrieb: > klingt gut, jedoch habe ich da ein unique Seriennummer oder hab ich was > überlesen?. In dieser Anwendung sollte es möglich sein einem Modultyp > immer die gleich Nummer zu geben. 1-Wire klingt auf jeden Fall gut. bei deiner Anwendung geht das also nicht > Serial EEPROM klingt auch nicht schlecht: aber begrenzt auf die Subadressen, ich kenne nur 3 A0-A2 also nur 8 Stück möglich wenn das reicht? suckiden schrieb: > es gibt drei Module, Modul ROT, GRÜN, BLAU und wann > immer eines der Module an das System angeschlossen wird soll das System > in der Lage sein zu erkennen welches Modul angeschlossen wurde. was denn nun 3? suckiden schrieb: > Insgesamt soll es möglich sein ~50 verschiedene Werte zu unterscheiden > und das bei einer Spannung von 3,3V. oder 50? suckiden schrieb: > Die Leitungslänge zwischen Modul > und System beträgt ungefähr 2,5m. i2c? sportlich.
:
Bearbeitet durch User
Ich würde da irgendwas mit einem EEprom machen was die Kennung trägt. Egal ob das nun I2C, 1-Wire oder direkt im MC der Baugruppe passiert. So das man das In System über ein paar Testpads programmieren kann. 1K pro Jahr ist ja nun wirklich keine Stückzahl. wenn du mal auf Stückzahlen von über 1K pro Tag kommst kann man sich mal Gedanken über was anderes machen
suckiden schrieb: > Cyblord -. schrieb: >> Silicion Serial Number mit 1Wire Interface. >> http://www.maximintegrated.com/en/products/digital/memory-products/DS2401.html > > klingt gut, jedoch habe ich da ein unique Seriennummer oder hab ich was > überlesen?. In dieser Anwendung sollte es möglich sein einem Modultyp > immer die gleich Nummer zu geben. 1-Wire klingt auf jeden Fall gut. Diese Dinger gibts auch mit EEPROM und OTP. fchk
3 Module langen doch 2 Bit? Also 2 EIngänge vom MC (oder was auch immer drin ist) vorsehen, jeweils je Modul Pullup/Pulldown (bspw R = 00, B= 01, G= 10) und du hast sogar noch Luft nach oben...
bekannt schrieb: > 3 Module langen doch 2 Bit? Also 2 EIngänge vom MC (oder was auch immer > drin ist) vorsehen, jeweils je Modul Pullup/Pulldown (bspw R = 00, B= > 01, G= 10) und du hast sogar noch Luft nach oben... Richtig lesen: "Insgesamt soll es möglich sein ~50 verschiedene Werte zu unterscheiden " Die drei module waren nur ein Beispiel.
Gestellt sei folgende Aufgabe: An einen Mikrocontrollerpin ist eine Schaltung bestehend aus R und C angeschlossen. Schreiben Sie einen Algortithmus, der R,C und die Art der Schaltung über die Ansteuerung des Pins berechnet. Hinweis: Der Wertebereich von R und C bewegt sich in 7 verschiedenen Stufen.
Hallo, wie wär's denn mit einem 8 bit parallel in, serial out Schieberegister? Bitmuster fest am IC, Lesestrobe geht evtl. per RC-Kombi bei Power-Up. Bleiben Takt und Daten, evtl. doch Lesestrobe (zzgl. GND und VCC) Längere Leitungen: BCR135 spendieren, der einen Pullup auf der anderen Seite bedient. Nix programmieren, 1 aus 255, wenig Leitungen. Gruß, Thorsten
Aber die 8 Bit parallel in müssen auch beschaltet werden. Selbst das setzen vom Lötperlen als Kodierung wird wohl aufwändiger als ein kleinen EEPROM zu schreiben.
Ich hab's so verstanden, daß die Kodierungen fix sind, also "Modul grün" immer 00000001 "Modul gelb" immer 00000010 "Modul blau" immer 00000011 "Modul schwarz" immer 00000100 ... und die Module verschiedene Leiterplatten haben -> feste Verdrahtung Ist aber vielleicht falsch!?
suckiden schrieb: > Spannungsteiler und Messung mittels ADC: > R1 ist ein Festwiderstand > R2 besteht aus sechs unterschiedlichen Serienwiderständen welche mittels > Jumper aktiviert/deaktiviert werden können (64 Werte jedoch nicht so gut > verteilt wie bei R2R Leiter) > + nur 7 Widerstände > + wenig Leitungen > + nur die bits die aktiv sind müssen gesetzt werden (z.B. Lötjumper) > - vielleicht nicht möglich alle 64 Werte voneinander zu unterscheiden > weil die Werte nicht linear sind und daher manche Werte nah beieinander > liegen. Ähnliches Prinzip: Konstantstromquelle im Auslesesystem + ADC. In den Modulen sitzen verschiedene Widerstände. Durch den Konstantstrom ist die Spannung über dem Widerstand proportional zur Große.
suckiden schrieb: > und wann > immer eines der Module an das System angeschlossen wird wenn wirklich nur IMMER NUR EINES angeschlossen wird! Das war mir nach dem Lesen nicht ganz klar ist das hier die schönste Lösung 2^6 = 64 damit sind 50 möglich. 6 Bit als Hardkodierung sicher! = 6 Leitungen. 6 Bit als ADC ermittelt müsste noch so gehen = 1(2) Leitungen.
Frank K. schrieb: > suckiden schrieb: >> Cyblord -. schrieb: >>> Silicion Serial Number mit 1Wire Interface. > > Diese Dinger gibts auch mit EEPROM und OTP. > > fchk
100%ig verstanden habe ich es auch nicht. Es gibt also 50 verschiedene Module!? Und sollen mehrere gleichzeitig an das System angeschlossen werden können? Sollen es verschiedene sein? Wenn es wirklich um die krasse Reduzierung der Kontakte geht, wären meine Ideen diese: -> ein kleiner 6pin-µC. Sobald eine Flanke an pin x erkannt wird, wird pin x als Ausgang definiert, seriell das Bitmuster für das Modul ausgegeben (ohne separaten Takt) und anschließend wieder auf Eingang geschaltet. Der Master/das System muss seinen Ausgang natürlich schnell genug auf einen Eingang stellen, aber das ist ja kein Problem. + nur 1 Leitung (ich gehe davon aus, dass Vcc und GND ohnehin vorhanden sind) + das Muster kann 6bit lang sein (reicht für 50), kann aber beliebig erweitert werden (also 8bit, 12bit, .....). Somit ist die Übertragung so kurz wie nötig. + wenn mehrere Module gleichzeitig am System sein können, benötigt der steuernde µC im System pro Modul ein IO. - Der µC muss programmiert werden. Allerdings bei 1000Stück und 50 Modulen sind es im Schnitt 20 identische µCs. Bei Microchip (also PICs) kann man diese fertig programmiert bestellen. Software ist ja bei allen identisch, nur der Inhalt vom EEPROM variiert. Alternativ kann das Muster auch fest im Flash sein, falls der µC kein EEPROM hat (-> 50 verschiedene *.hex). Man könnte aber auch die Anschlüsse zum programmieren (bei PICs 3) rausführen oder zumindest auf dem Modul einen 5pol Header platzieren. 1000 µCs im Jahr programmieren, das bei 253 Arbeitstagen á 8 Stunden: ca. 1 Modul alle 2 Stunden.. sollte machbar sein. Ein Rechenexempel wäre es zu prüfen, was teurer ist: So wie oben beschrieben oder ein größeren, minimal teurereren µC mit 6 (oder mehr) zusätzlichen Eingängen, bei denen man via Lötbrücke oder 0-Ohm-R die Codierung vorgibt (die Pullups dann im µC). Diese brauchen ja nicht an den Stecker. Vorteil dabei wäre es, 1000 identisch vorprogrammierte µCs bestellen zu können, die die Modulcodierung nicht aus dem EEPROM/Flash sondern von den Pins holt. Man könnte damit auch 800 Module Rot, 50 Grün, 100 Blau und 50 Regenbogenfarben machen, was mit den individuell vorprogrammierten µCs nicht ginge. Es sei denn, man hat von allen genug auf Lager. Wären aber im Extremfall 50x1000 µCs, damit bei einer Stückzahl von 1000 im Jahr auch 1000 gleiche Module hergestellt werden können... Recht unwirtschaftlich. Ein PIC16F1503 z.B. hätte einen internen Oscillator, genug IOs mit Pullups und kostet bei 1000 Stück 51 Cent + 11 Cent Programmierung -> 62Cent * 1000 = 620€. Diese müssen dann nur noch eingelötet werden. Ich denke bei dem Preis kann man nicht meckern. Nichts desto trotz musst du dir überlegen, ob es zwanghaft gilt, um jeden Preis so wenig Kontakte wie möglich zu nutzen. Wenn 6 Kontakte kein Ding der Unmöglichkeit sind, würde ich ganz klar zu dem tendieren: Joachim B. schrieb: > 6 Bit als Hardkodierung sicher! = 6 Leitungen. Man kann es sich auch unnötig schwer machen. Zumal sind die 62cent vermutlich mehr, als ein Stecker mit 5 zusätzlichen Kontakten mehr kostet. Doch ob das stimmt oder z.B. durch Platz ausgeschlossen ist, das kann keiner hier wissen ;) Vorteil bei der µC gestützten Methode wäre eine Erweiterbarkeit auf >64 Module, falls das irgendwann nötig wird.
M. E. ist es die Frage, ob diese Module schon so etwas wie Controller beinhalten und über was die sonst so mit dem Master kommunizieren. Dann ist die gute alte Gerätenummer, wie bei RS485 o.ä. üblich, vermutlich das einfachste und die RS485 kann gleich als robuste Kommunikation verwendet werden. Auch eine RS422/232 könnte benutzt werden und hätte als Bonbon Vollduplex.
Hallo an alle! danke für die zahlreichen Vorschläge und Einwände und Entschuldigung für die schlampige Formulierung :) Ich werde nicht alle Kommentare zitieren versuche aber dennoch alle Fragen zu beantworten. 1. Ja es sollen insgesamt 50 verschiedene Module geben (ROT, GRÜN, BLAU war nur zur Veranschaulichung) 2. Ja Modul X soll immer die gleiche Seriennummer bekommen bsp. 000001 3. Es ist immer nur ein Module an das System angeschlossen 4. Die Module selbst beinhalten keinen Controller und sind relativ simpel aufgebaut (daher die Anforderung an wenig Bauteile und wenig Kontakte) 5. Die Anzahl der Kontakte niedrig zu halten ist eine der wichtigsten Punkte (minus Punkt für µc usw.) Ich habe mich momentan für dieses Bauteil entschieden: http://at.rs-online.com/web/p/speicherbausteine-eeprom/0540517/ Bietet locker genügend Speicher für die Seriennummer oder zusätzliche Informationen. Sehr klein und benötigt nur einen Pin. Ich werde nächste Woche ein paar Tests machen um zu sehen wie es bezüglich Signalintegrität aussieht und ob es möglich ist Daten über die 2,5m strecke zu lesen/schreiben. Die niedrigste Frequenz liegt bei 10kHz klingt für mich also vielversprechend.
suckiden schrieb: > Sehr klein und benötigt nur einen Pin. vernünftige Entscheidung, der Baustein ist auch genau dafür gedacht. Du musst nur die Frage klären, wie du die Chips von 50 Baugruppen einzeln ansprechen kannst, eine einzige Leitung wird dafür nicht reichen. Oder kannst du die Baugruppen jetzt schon einzeln ansprechen, ohne sie zu initialisieren? Georg
suckiden schrieb: > Ich werde nächste Woche ein paar Tests machen um zu sehen wie es > bezüglich Signalintegrität aussieht und ob es möglich ist Daten über die > 2,5m strecke zu lesen/schreiben. Die niedrigste Frequenz liegt bei 10kHz > klingt für mich also vielversprechend. Ein externer Treiber kostet auch nicht die Welt und wäre mit Sicherheit zuverlässiger. Ein Mini uC wie ein ATtiny9 o.ä. wäre auch ne Option falls du später noch 1-3 IOs lesen/schreiben willst auf deinen Modulen. Der kann ja evtl das gleiche Protokoll verwenden wie dein Speicher. Dann kannst du mit Minderbestückung arbeiten und dir aussuchen welchen du platziert.
Georg schrieb: > Du > musst nur die Frage klären, wie du die Chips von 50 Baugruppen einzeln > ansprechen kannst, eine einzige Leitung wird dafür nicht reichen. was genau meinst du damit? Frank schrieb: > Ein externer Treiber kostet auch nicht die Welt und wäre mit Sicherheit > zuverlässiger. hast du da ein Beispiel für mich? muss ja bidirektional funktionieren.
suckiden schrieb: > was genau meinst du damit? Du hast 50 solche Chips an einer Leitung. Wie sprichst du einen bestimmten davon an? Oder habe ich das ganze System missverstanden? Georg
Georg schrieb: > Du hast 50 solche Chips an einer Leitung. Hat er nicht! Zitat (5 Beiträge weiter oben): "3. Es ist immer nur ein Module an das System angeschlossen"
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.