Hallo zusammen,
ich möchte mir gerne einen "intelligenten" Durchgangsprüfer basteln, um
z.B LAN-Kabel oder komplexere Kabelbäume zeitschonend zu prüfen.
Für meinen ersten Prototypen hatte ich mir einen eigenen 96bit
Multiplexer aus &-Gattern gebastelt. Funktionierte eigentlich ganz gut -
musste aber selber mit einer Prüfspitze an das andere Ende der Adern
gehen und alles abtasten.
Für das neue Projekt möchte ich aber jetzt einen GPIO expander (z.B
MCP23S18), welchen ich über i2c steuere, verwenden. Im Endausbau soll
die Schaltung dann O(100) Verbindungen testen können - brauche also etwa
200 GPIOs (oder mehr...).
Funktionieren soll es dann so, dass ich einen Port per Write auf High
setzte
und dann die restlichen Ports auslese und mit einen Prüfliste
vergleiche.
Jetzt hätte ich eine sehr grundlegende Frage, die mir vielleicht ein
initiales trail-and-error erspart:
Kann ich Ports von einem einzelnen Baustein verbinden? Sprich, kann ich
einen Port auf High setzen und am zweiten Port das Signal ablesen? Das
tritt z.B auf wenn ich eine Brücke zwischen zwei Adern habe.
Danke schon mal im voraus!
LG,
Max
Max schrieb:> Kann ich Ports von einem einzelnen Baustein verbinden?
Du kannst beliebig viele mit beliebigen anderen verbinden, solange
1. nur 1 davon ein Ausgang ist
oder
2. mehrere davon Ausgänge sind, aber den selben Pegel ausgeben.
Max schrieb:> GPIO expander (z.B MCP23S18), welchen ich über i2c steuere
Wieviele solcher Port-Expander kannst du an 1 I2C betreiben? Wieviele
unterschiedliche Adressen kannst du einstellen?
Ich würde da einfach die "übliche" Schieberegisterlösung nehmen. Die ist
durch simples Einfügen von zusätzlichen Schieberegistern beliebig
skalierbar.
Max schrieb:> Kann ich Ports von einem einzelnen Baustein verbinden? Sprich, kann ich> einen Port auf High setzen und am zweiten Port das Signal ablesen? Das> tritt z.B auf wenn ich eine Brücke zwischen zwei Adern habe.
Ja. Du brauchst aber auf der Empfangsseite an jedem Pin Pulldown- oder
Pullup-Widerstände. Digitale Eingänge dürfen niemals offen sein, weil
sie dann in einen undefinierten Zustand geraten können, in dem
unzulässig hohe Querströme auftreten können, die möglicherweise den
Pintreiber beschädigen können. Daher Pins, die offen sein können, immer
mit einem Widerstand von 10...100k auf einen definierten Pegel ziehen.
Aonsonsten schließe ich mich lkmiller an: die Lösung mit
Schieberegistern (74HC595 für die Ausgänge, 74HC597 für die Eingänge)
wäre billiger und sinnvoller.
fchk
Max schrieb:> Für das neue Projekt möchte ich aber jetzt einen GPIO expander (z.B> MCP23S18), welchen ich über i2c steuere, verwenden.Lothar M. schrieb:> 2. mehrere davon Ausgänge sind, aber den selben Pegel ausgeben.
Bei Ports mit Open-Drain Ausgang (MCP23S18) ist es völlig egal, ob die
den selben Pegel ausgeben. Ein einziger Ausgang, der das Netz runter
zieht, reicht für Low an den Eingängen (wired-OR in negativer Logik).
Vielen Dank schon mal für die Antwort(en)!
Den Ansatz mit den Schieberegistern habe ich im Forum bereits des
öfteren gefunden, bin mir aber nicht sicher ob sich mit dieser
"üblichen" Lösung meine Idee realisieren lässt. Der Plan ist, dass ich
mithilfe von Musterkabelbäumen meinem Durchgangsprüfer beibringe welche
Verbindungen er zu testen hat. Dazu muss
es mir a-priori mal möglich sein jede Verbindung bidirektional zu testen
(danach kann ich mittels Software auf die notwendigen reduzieren).
Übersehe ich da etwas wenn ich sage, dass das mit Schieberegistern nicht
machbar ist?
Dann zur Frage wieviele Expander ich betreiben kann. Grundsätzlich habe
ich eine 3 bit Adresse. Somit müsste ich den Adressbereich des MCP23S18
eigentlich multiplexen um auf meine 200 Ports zu kommen. Deswegen habe
ich jetzt nach Bauteilen mit mehr Ports wie z.B den PCA9698 (3bit Adr /
40bit I/O) gesucht.
Zu meiner eigentlichen Frage:
Als Anhang habe ich eine sehr rudimentäres Bild (bitte um Verzeihung...)
wie ich mir die Beschaltung vorgestellt hätte. Wenn ich pin 4 auf High
schalte sollte ich also auf pin 3 und 5 ein High bekommen. Auf den
anderen Low.
Aber wie Frank geschrieben hat, würden pin 1, 2 und 6 eigentlich
undefiniert sein.
Also müsste ich entweder pin 2 oder 6 auf Low setzen (dann den jeweils
anderen auslesen) und pin 1 ignorieren damit jeder Pegel definiert ist.
Oder wäre es besser alle Ports mittels pull-up auf Vcc zu hängen und
beim Prüfen die Ports auf Low zu schalten?
Danke,
Max
Max schrieb:> es mir a-priori mal möglich sein jede Verbindung bidirektional zu testen> (danach kann ich mittels Software auf die notwendigen reduzieren).> Übersehe ich da etwas wenn ich sage, dass das mit Schieberegistern nicht> machbar ist?
Wieso sollte das mit Schieberegistern nicht machbar sein? Erkläre das
genauer. Warum meinst Du, dass Du mit Schieberegistern nicht beliebige
Bitmuster erzeugen kannst, wie Du es mit IO-Expandern machen kannst?
> Zu meiner eigentlichen Frage:> Als Anhang habe ich eine sehr rudimentäres Bild (bitte um Verzeihung...)> wie ich mir die Beschaltung vorgestellt hätte. Wenn ich pin 4 auf High> schalte sollte ich also auf pin 3 und 5 ein High bekommen. Auf den> anderen Low.> Aber wie Frank geschrieben hat, würden pin 1, 2 und 6 eigentlich> undefiniert sein.
Nicht nur eigentlich. Serienwiderstände nützen Dir da nichts.
> Also müsste ich entweder pin 2 oder 6 auf Low setzen (dann den jeweils> anderen auslesen) und pin 1 ignorieren damit jeder Pegel definiert ist.
Wie willst Du Pin 1 ignorieren? Der würde Dir irgendwann kaputt gehen.
Nochmals: Du darfst niemals zu irgendeinem Zeitpunkt undefinierte Pegel,
womöglich noch in der Nähe von VCC/2 (was Du nicht weißt, weil ist ja
undefiniert) haben. Das killt Dir irgendwann die Schaltung. Nicht
sofort. Irgendwann. Solche Pins sind nämlich auch sehr empfänglich für
elektrostatische Entladungen.
> Oder wäre es besser alle Ports mittels pull-up auf Vcc zu hängen und> beim Prüfen die Ports auf Low zu schalten?
Genau das ist der richtige Weg. Idealerweise mit Open Drain Ausgängen,
dann hast Du auch keine Umschaltung der Datenrichtung mehr. Die HC595
haben keine OpenDrain Ausgänge, da müsstest Du z.B. auf TI TPIC6C596
oder Nexperia NPIC6C596A ausweichen (letztere gehen auch mit 3.3V
Logikspannung erstere nur mit 5V). Für die Eingänge dann weiterhin
74HC597 oder HC165.
fchk
> Wieso sollte das mit Schieberegistern nicht machbar sein? Erkläre das> genauer. Warum meinst Du, dass Du mit Schieberegistern nicht beliebige> Bitmuster erzeugen kannst, wie Du es mit IO-Expandern machen kannst?
Bitte korrigiere mich wenn ich falsch liege, aber die Lösung mit
Schieberegistern eignet sich
nur wenn ich eine Art Bus teste. Sprich ich habe eine Eingangsseite und
eine Ausgangsseite. Also für den Fall, dass ich einen einzigen Kabelbaum
habe. (Ein- und Ausgänge fest definiert sind.)
Das Problem das ich habe kommt ins Spiel, weil Ein- und Ausgänge bei
unterschiedlichen Kabelbäumen mit unterschiedlichen Steckern
Konfektioniert sein können. Die Stecker haben zwischen 1-37 Kontakte.
Also als Beispiel:
Kabelbaum 1 hat auf einer Seite zwei Stecker Typ A und auf der anderen
Seite einen Stecker Typ B und einen Stecker Typ C
(AA)->(BC).
Kabelbaum 2 hat nun Stecker A und B auf einer und A und C auf der
anderen
(AB)->(AC)
Natürlich kann ich jetzt jeweils einen Adapter pro Kabelbaum basteln -
Ist aber sehr unpraktisch. Wenn ich aber einen Adapter für die Stecker
AA habe und einen für BC
bei denen ich über meine Software einen der A Stecker dann als Ausgang
und den B Stecker als Eingang verwenden kann, kann ich alle beliebigen
Kombinationen testen.
Sollte das mit Schieberegistern auch machbar sein, wäre das natürlich
super. Dann bräuchte ich aber bitte jemanden der meinen Knopf im Kopf
lösen könnte :)
Max
Max schrieb:> Bitte korrigiere mich wenn ich falsch liege, aber die Lösung mit> Schieberegistern eignet sich> nur wenn ich eine Art Bus teste. Sprich ich habe eine Eingangsseite und> eine Ausgangsseite. Also für den Fall, dass ich einen einzigen Kabelbaum> habe. (Ein- und Ausgänge fest definiert sind.)
Mit dieser Konfiguration könntest Du niemals Kabelbrücken in einem
Stecker testen.
Nein, Du musst das schon so machen, dass JEDER Pin sowohl an einem
OpenDrain Ausgang eines Ausgangs-Schieberegisters als auch an einem
Eingang eines Eingangsschieberegisters angeschlossen ist. Damit kannst
Du den Ausgangspin quasi zurückmessen, und Du siehst, was an allen
anderen Pins passiert.
D.h.
Aussgangsmuster rausschieben (mit Shift Clock)
Ausgangsmuster vom Ausgangs-Schieberegister in die Ausgaberegister
raustakten (Register Clock), damit erscheinen sie an den Ausgangspins.
Delay
Eingangsmuster von den Eingangspins ins Eingabe-Schieberegister Laden
Eingangsmuster hineintakten
wobei jeder Pin zu jeder Zeit GLEICHZEITIG Eingangspin als auch
Ausgangspin ist.
fchk
Statt einem Schaltkreisgrab würde ich einfach mehrere MCs nehmen. Die
kann man dann als Open-Drain mit Pullup konfigurieren.
Ich hab so mal einen Tester für bis 40-polige Flachkabel gebaut, also 80
IO-Pins. Es waren 3 Stück AT89C51, die Kommunikation erfolgte über die
UART, der letzte zeigte das Ergebnis an.
32 IOs abzüglich 2 für die UART ergibt so 30 nutzbare Pins je MC.
Aufgebaut auf einer Rasterplatine mit DIP-40 MCs.
Die Firmware war identisch, der erste erkannte seine Funktion als Master
mit permanent low an RXD.
Frank K. schrieb
> Nein, Du musst das schon so machen, dass JEDER Pin sowohl an einem> OpenDrain Ausgang eines Ausgangs-Schieberegisters als auch an einem> Eingang eines Eingangsschieberegisters angeschlossen ist. Damit kannst> Du den Ausgangspin quasi zurückmessen, und Du siehst, was an allen> anderen Pins passiert.>> D.h.> Aussgangsmuster rausschieben (mit Shift Clock)> Ausgangsmuster vom Ausgangs-Schieberegister in die Ausgaberegister> raustakten (Register Clock), damit erscheinen sie an den Ausgangspins.> Delay> Eingangsmuster von den Eingangspins ins Eingabe-Schieberegister Laden> Eingangsmuster hineintakten>> wobei jeder Pin zu jeder Zeit GLEICHZEITIG Eingangspin als auch> Ausgangspin ist.
Jetzt macht es endlich Sinn. Danke für die Klarstellung!
Das war eben auch meine Grundidee, als ich an die GPIO expander dachte -
Die Ports müssen gleichzeitig als Ein- und Ausgang betrieben werden
können. Ich habe aber nicht beachtet, dass die Ports Ein- und Ausgang
GLEICHZEITIG sein müssen.
Also für 200 Ports würde ich demnach 25 Eingangs (74HC597) + 25
Ausgangsregister (74HC595).
Für die Ausgänge kaskadiere ich die Register (Serial-out von Register N
auf serial-in von Register N+1) und schiebe einen Low Zustand durch wenn
ich eine Verbindung testen will. Mit einer steigenden Flanke am Storage
Clock liegt dann mein gewünschter Zustand an.
Aber wie lese ich die Eingangsregister aus? Ich habe mein Bitmuster and
den jeweiligen parallelen Eingängen anliegen und schiebe das Muster auf
den seriel-out. Damit nicht alle 25 gleichzeitig auf serial out schieben
müsste ich jedes Bauteil einzeln adressieren können. Wenn ich das
Datenblatt richtig lese wäre das mehr oder weniger ein High am parallel
load des jeweiligen 597 - Brauche also 25 "Adressleitungen"?!
Oder gibt es da einen simplere Lösung dafür?
Max
Max schrieb:> Aber wie lese ich die Eingangsregister aus? Ich habe mein Bitmuster and> den jeweiligen parallelen Eingängen anliegen und schiebe das Muster auf> den seriel-out. Damit nicht alle 25 gleichzeitig auf serial out schieben> müsste ich jedes Bauteil einzeln adressieren können.
Die schieben zwar alle gleichzeitig, aber jeweils vom serial out in den
serial in vom nächsten Baustein. Die werden genau wie die
Ausgangsregister in Reihe geschaltet.
> Oder gibt es da einen simplere Lösung dafür?
Allerdings, und zwar deinen PCA9698, der ist doch wie gemacht für diese
Aufgabe. Das wären fünf statt fünfzig ICs. Oder was spricht dagegen?
Du kannst auch mit 4017 kaskadiert immer einen Ausgang schalten und auf
allen Eingängen gleichzeitig messen. Wie "lauflicht" und an den
Eingängen darf dann auch nur der Eingang sich ändern, wo der Draht drann
geht. Ändert sich der Zustand am Eingang nicht, ist der Draht
unterbrochen; ändern sich mehrere, hast Verbindung zu anderen Drähten.
Du könntest auch (bei verteilten µCs) alle Portregister auf "H" schalten
und nur ne Bitmaske 1<< auf den Datenrichtungsregistern(DDR)
durchschieben und nen kurzen LOW-Impuls generieren. Somit hast du immer
einen Ausgang und der Rest deiner Portpins sind alles Eingänge mit
pull-up.
Auch wenn du somit deinen Kabelbaum nur squentiell testest und nicht
alle Drähte gleichzeitig, sollte das trotzdem (im Vergleich zur
Rüstzeit) immernoch schnell genug sein.
<Achtung: Opa erzählt ausm Krieg>
1
Früher(tm) hatten wir auf der einen Seite des Kabelbaums einen LED-Treiber-Schaltkreis (2xA277) und auf der anderen Seite eine LED-Reihe.
2
Auf den A277 haben wir eine Sägezahnspannung gegeben und auf der anderen Seite ist dann eine LED nach der anderen angegangen. So, in KnightRider-manier.
3
Da hat man sofort und genau gesehen, wenn da was nicht stimmte.
4
Erst waren Meister und auch die Damen aus der Produktion skeptisch. nach zwei Tagen bereits waren alle hellauf begeistert.
Bauform B. schrieb
> Allerdings, und zwar deinen PCA9698, der ist doch wie gemacht für diese> Aufgabe. Das wären fünf statt fünfzig ICs. Oder was spricht dagegen?
Das war auch mein Ursprünglicher Gedanke. Jedoch hat Frank sehr
einleuchtend argumentiert, warum ich für meine Durchgangsprüfung
(Brücken zwischen Verbindungen können vorkommen - kein Flachbandkabel)
Ports brauche die gleichzeitig Ein- und Ausgang sind. Ich will ja später
auch in der Lage sein nicht nur Verbindungen zu testen, sondern auch
Musterkabelbäume zu lernen.
Jedoch sind 50 ICs wirklich etwas viel...
Ich könnte aber die 74HC595 für die Ausgänge verwenden und die PCA9698
als Eingänge. Das würde zumindest das ganze auf 30 reduzieren.
Max
Max schrieb:> Jedoch sind 50 ICs wirklich etwas viel...> Ich könnte aber die 74HC595 für die Ausgänge verwenden und die PCA9698> als Eingänge. Das würde zumindest das ganze auf 30 reduzieren.
Und das Systemdesign komplexer machen.
Du kannst die gesamte Logik in einen einzigen Chip hineinbekommen.
Technisch ist das überhaupt kein Problem. Es gibt FPGAs mit 600 oder
1000 Pins, damit kannst Du sehr viel größere Kabelbäume testen. Dann
brauchst Du nicht mal mehr einen Microcontroller. Du steckst einen
"guten" Kabelbaum an, drückst auf eine "Lernen"-Taste, klemmst
nacheinander die zu testenden an, drückst auf eine "Prüfen" Taste, und
bekommst entweder ein rotes oder grünes Licht.
Technisch einfach.
Das Problem ist:
1. Kannst Du solch großere Gehäuse noch löten? Eher nicht. SO16 kannst
Du
löten. Ist zwar eine Heidenarbeit, aber es geht, und es ist einfach.
2. Je komplexer und größer die Bausteine, desto empfindlicher werden sie
und desto schneller gehen sie auch kaputt. Ich habe Dir deswegen auch
die NPIC6C596 genannt, weil die (a) Open Drain Ausgänge haben (das haben
die HC595 nicht) und (b) etwas höhere Treiberleistungen von 250mA pro
Pin. So schnell sollte da also nichts kaputt gehen. Das Risiko besteht
aber immer, durch ESD oder was auch immer. Dann musst Du in der Lage
sein, Dein Zeug zu reparieren.
Kannst Du einen SO16 im 1.27mm Raster tauschen, ohne dass die
Leiterplatte beschädigt wird? Wahrscheinlich. Pins mit gutem
Seitenschneider abknipsen und Pads mit Entlötlitze säubern.
Kannst Du Du einen SSOP48 im 0.635mm Raster per Hand tauschen, ohne auch
nur ein Pad zu beschädigen? Es geht, aber Du brauchst das richtige
Werkzeug. Heißluft ist fast Voraussetzung dafür. Das wäre Dein PCA9698.
3. Es bleibt ja nicht bei den ICs. Du solltest unbedingt an jeden Pin
eine ESD-Schutzdiode gegen GND hängen. Sowas wie Semtech UCLAP3301H oder
Nexperia PESD3V3U1UB, und dazu einen 22 Ohm Serienwiderstand. Klar. Das
ist Arbeit.
Ich würde das mit HC165 und NPIC6C596 machen, und dann modular. Pro
Board 48 Pins. Da orderst Du einmal einen 10'er Pack Leiterplatten beim
Chinesen und kannst dann nacheinander aufbauen und testen, je nach
Bedarf. Wenn Dir da mal ein Pin hopps geht, kannst Du es leicht
reparieren.
Und die Chips sind in größeren Mengen auch billiger. Ein 74HC165 im
SOIC16N kostet 33 Cent einzeln, im 25'er Paket sind es nur noch 24 Cent.
Das gesamte 25'er Paket kostet nur 6€. Ein NPIC6C596ADJ im SOIC16N
kostet einzeln 62 Cent, im 25'er Paket nur noch 50 Cent, d.h. 12.50€ für
das ganze 25'er Paket. Bei 100 wirds noch weniger.
fchk
Max schrieb:> Jedoch hat Frank sehr> einleuchtend argumentiert, warum ich für meine Durchgangsprüfung> (Brücken zwischen Verbindungen können vorkommen - kein Flachbandkabel)> Ports brauche die gleichzeitig Ein- und Ausgang sind.
Genau das können die PCAs doch? Oder umgekehrt: das kann kein Baustein,
je nachdem, was man unter gleichzeitig versteht. Jeder Pin kann einzeln
als Eingang oder Ausgang konfiguriert werden und als Bonus kann man den
Zustand eines Ausgangs-Pins lesen. Dabei liest man aber immer nur das,
was man eben ausgegeben hat -- es sei denn, es gibt einen Kurzschluss
nach VDD oder GND. Wobei beide nicht vom kaputten Kabel her kommen
können (GND schon garnicht).
Frank K. schrieb:> Ich würde das mit HC165 und NPIC6C596 machen, und dann modular. Pro> Board 48 Pins. Da orderst Du einmal einen 10'er Pack Leiterplatten beim> Chinesen und kannst dann nacheinander aufbauen und testen, je nach> Bedarf. Wenn Dir da mal ein Pin hopps geht, kannst Du es leicht> reparieren.
Keine schlechte Idee, das sollte man auch mit dem PCA machen, da wären
es 40 Pins pro Board.
Max schrieb:> Die Ports müssen gleichzeitig als Ein- und Ausgang betrieben werden> können. Ich habe aber nicht beachtet, dass die Ports Ein- und Ausgang> GLEICHZEITIG sein müssen.
Nö, müssen sie nicht.
Es darf nur nicht zu Datenkämpfen kommen bei Kurzschlüssen im Kabel,
daher open-drain Ausgänge.
Und Eingänge müssen Unterbrechungen erkennen, daher mit Pull-Up.
Die beste Lösung ist daher eine entsprechende Anzahl MCs, z.B. 3 Stück
ATmega640 für die 200 Anschlüsse. Die sind noch gut lötbar (0,8mm
Raster).
Man schiebt natürlich nicht 100-mal ein einzelnes Bit durch, sondern
gibt nur soviele verschiedene Muster aus, daß ein Fehler eindeutig
erkannt wird.
Wenn die Tests schön schnell erfolgen, lassen sich auch Wackelkontakte
gut lokalisieren.
Bauform B. schrieb:> Frank K. schrieb:>> Ich würde das mit HC165 und NPIC6C596 machen, und dann modular. Pro>> Board 48 Pins. Da orderst Du einmal einen 10'er Pack Leiterplatten beim>> Chinesen und kannst dann nacheinander aufbauen und testen, je nach>> Bedarf. Wenn Dir da mal ein Pin hopps geht, kannst Du es leicht>> reparieren.>> Keine schlechte Idee, das sollte man auch mit dem PCA machen, da wären> es 40 Pins pro Board.
Sollte man nicht.
Rechnen wir mal den Worst-Case-Fall durch. Der Fragesteller will 200
Pins haben. Wir haben also 200 zurücklesbare Open-Drain-Ausgänge, und
jeder Ausgang hat einen 10k Pullup. Wenn ein einzelner Ausgang auf Low
gezogen wird, fließen I=U/R=3.3V/10000R=330uA. Das ist vernachlässigbar
für den Treiberpin, aber auf der anderen Seite sollte es auch nicht
weniger Strom sein, damit im offenen Zustand der Pin sicher auf High
gezogen wird.
So, jetzt nehmen den gemeinst möglichen Fall: Alle 200 Pins sind
miteinander verbunden. Wir haben also 200 parallel geschaltete
10k-Pullups, die ein Treiberpin auf Low ziehen können muss. Ist also der
200-fache Strom, also 330uA*200=66mA. Der NPIC6C596 macht das problemlos
- der kann bis zu 100mA pro Pin zeitlich unbegrenzt im Dauerbetrieb. Der
PCA kann nur 17mA bei 3V Versorgunsgspannung. Reicht also nicht, das
wird langfristig zu einer Zerstörung des Pintreibers führen.
Gut, jetzt kann man sagen: "200 Pins parallel, das macht doch niemand!".
Sicher, kann man. Aber wo zieht man die Grenze? Wenn man mal
zurückrechnet, liegt sie bei 51 parallel geschalteten Pins, bevor man
die Spezifikation überschreitet. Bei Verwendung von PCAs kann man also
nicht mehr als 50 Pins bereitstellen, wenn man den gesamten Apparat
idiotensicher machen will. Das ist aber ziemlich weit entfernt von den
200 Pins, die als Ziel angegeben wurden.
Und ich als potentieller Kunde und Verwender erlaube mir jetzt einfach
mal den Luxus, ein idiotensicheres Gerät zu fordern, das ich nicht mal
eben so versehentlich kaputtbekomme. Klar, mit 230V und Vorschlaghammer
bekommt man alles klein, aber ein einfaches, passives, nach Anleitung
angeschlossenes Testkabel darf nach meinem Verständnis NIEMALS zu einem
Defekt führen, egal wie es intern beschaltet ist.
Der Fragesteller möge sich daran vielleicht mal ein Beispiel nehmen, wie
man Geräte und Schaltungen auslegt und was man ganz einfach mal
übersehen kann.
fchk
PS: Warum selber löten? Es gibt doch Dienstleister, die die Boards nach
Übermittlung von Gerber und Pick&Place Daten durch ihre
Automatenbestückung schicken. Dafür designt man natürlich ausschließlich
SMD-Bausteine ein, weil die Bestückung von TH Komponenten VIEL mehr
(Faktor 3 bis 5) kostet. Aber das ist ja auch kein ernsthaftes Problem
mehr in dieser Zeit, wo der geneigte Lochrasterer ernsthafte Probleme
hat, Bausteine in DIL noch zu bekommen. Auch 400 SMD-Widerstände (200*
10k Pullup und 200* 22R Serien) und 200 ESD-Schutzdioden im
SOD523-Package (1.2mm*0.8mm) verlieren so ganz schnell ihre Schrecken.
Frank K. schrieb:> So, jetzt nehmen den gemeinst möglichen Fall: Alle 200 Pins sind> miteinander verbunden.
Man kann sich aber auch die Hose mit der Kneifzange anziehen. Wenn Du
solch große Angst hast, dann kannst Du das doch einfach in der Firmware
abfangen. Niemand zwingt Dich, alle Pullups gleichzeitig anzuschalten
und bei Überlast auch tagelang eingeschaltet zu lassen.
Es sind übrigens nur 100 Adern, d.h. 100 Pullups nötig.
Frank K. schrieb:> PS: Warum selber löten?
Ich habe nicht den Eindruck, daß der TO gleich eine Massenproduktion
vorhat.
Für Musterbestückung zahlst Du ordentlich drauf, da sich dann in der
Regel die Einrichtungskosten potenzieren.
Eine Rasterplatine mit DIP kann sich da schnell rechnen.
Die ATmega640 kann man auch auf fertige Adapterplatinen setzen:
https://www.pollin.de/p/rapitus-samxs-adapterplatine-tqfp-100-810530?gclid=EAIaIQobChMIieODi5-m6AIVyPhRCh2vqQslEAkYASABEgIoavD_BwE
7 MCs im DIP-40 (ATmega162) ginge aber auch.
Peter D. schrieb:> Man schiebt natürlich nicht 100-mal ein einzelnes Bit durch, sondern> gibt nur soviele verschiedene Muster aus
um Kurzschlüsse oder Unterbrechengen festzustellen reicht pro Byte 8-Bit
doch abwechselnd 0x55 und 0xAA alle 8-Bit geprüft
Max schrieb:> Jedoch sind 50 ICs wirklich etwas viel...> Ich könnte aber die 74HC595 für die Ausgänge verwenden und die PCA9698> als Eingänge. Das würde zumindest das ganze auf 30 reduzieren.
da der PCA9698 40 Bit also 5 Byte macht und bis zu 8 adressiert werden
können, hast du noch 3 Stück übrig! Reicht zwar nicht für alle Eingänge
reduziert den IC Bedarf aber auf 3 freie PCA9698 und spart 12
Schieberegister, also nur noch 8x PCA9698 und 13x 74HC595 also nur 21 IC
statt 30.