Fragen zur korrekten Schaltplanerstellung

Fragen zu Schaltungen, Elektronik, Elektrik usw.

Moderator: T.Hoffmann

Antworten
Philuminati
User
User
Beiträge: 40
Registriert: Do, 19.10.17, 12:05

Sa, 30.06.18, 22:05

Hallo,

Ich habe mir ein größeres Projekt vorgenommen, um ein bisschen Erfahrung im Umgang mit Elektrotechnik zu sammeln. Dabei kommen ständig Fragen auf. Diese würde ich gerne bei Bedarf immer in diesen Thread schreiben. Meist sollte es nur darum gehen, Schaltpläne o.ä. "abzusegnen" :D .

Der folgende Schaltkreis soll es mir ermöglichen, sechs Drähte (in der Skizze als S1-S6 (0 Ohm Widerstände) dargestellt) auf Leitfähigkeit zu prüfen. Konkret soll einfach nur überprüft werden, ob der Draht intakt ist, oder durchtrennt. Geprüft wird mit einem Arduino Nano (zumindest vorläufig...). Da mein Projekt viele derartige Konzepte enthalten wird, ist es nicht möglich, den einfachen Weg zu gehen, sprich einfach jeden Draht mit einem Input des Arduinos zu verknüpfen. Ich muss also irgendwie "durchschalten". Ich habe mir das so gedacht: Die Drähte sind mit je einem Eingang eines AND-Gatters verbunden. Der andere Eingang wird mit einem Ausgang eines CD4017, also einem Dezimalzähler, verbunden. Der Arduino sendet dann ein Clocksignal an den 4017 und sorgt so dafür, dass immer nur ein AND-Gatter durchschalten kann. Wenn der Draht am entsprechenden Gatter intakt ist, würde das Gatter durchschalten, ist er durchtrennt, würde das Gatter nicht durchschalten und am Input des Arduinos würde ein "LOW" anliegen. Die Frage ist nun, ob der Schaltplan so in Ordnung ist, oder ob es da Verbesserungsvorschläge (Auch in Bezug auf die übersichtliche Erstellung von Schaltplänen; es ist mein erster :roll: ) gibt. Und ob das Ganze überhaupt so funktioniert, wie ich mir das vorstelle.
Dateianhänge
ArduinoMehrInputs_Schaltplan.png
dieterr
Hyper-User
Hyper-User
Beiträge: 1142
Registriert: Mo, 04.01.16, 18:16

So, 01.07.18, 18:39

Philuminati hat geschrieben: Da mein Projekt viele derartige Konzepte enthalten wird,
Von wie vielen Leitung sprichst du im Endausbau? 10 - 100 - 1000?
Philuminati
User
User
Beiträge: 40
Registriert: Do, 19.10.17, 12:05

So, 01.07.18, 19:55

Es wird bei einem zweistelligen Betrag bleiben, ich rechne im Moment mit ca. 30-40. Es werden aber noch andere Dinge dazukommen, die Pins bei den Arduinos belegen. Bei Outputs ist das allerdings kein Problem, dafür nehme ich einfach ein paar Schieberegister, die sind ja kaskadierbar. Und Inputs wollte ich eben nach diesem Prinzip aufbauen. Insgesamt werden vielleicht so etwa je 60 In- und Outputs benötigt.
Borax
Star-Admin
Star-Admin
Beiträge: 11980
Registriert: Mo, 10.09.07, 16:28

So, 01.07.18, 23:01

Da reicht doch der CD4017 alleine auch. Die Drähte einfach direkt an die Ausgänge des 4017 und das andere Ende an einen Input-Pin. Ich würde da aber lieber einen 'echten' Input Multiplexer verwenden (z.B.: https://www.reichelt.de/ICs-74HC-74HCT- ... CH=74hc151 ) Oder mehrere Arduinos (bzw. die nackten Atmel Chips) und die dann über irgendein Protokoll (SPI / I2C ...) zusammenschalten.
Philuminati
User
User
Beiträge: 40
Registriert: Do, 19.10.17, 12:05

So, 01.07.18, 23:13

Borax hat geschrieben:Die Drähte einfach direkt an die Ausgänge des 4017 und das andere Ende an einen Input-Pin.
Ich bin so bescheuert... :roll: da hätte ich drauf kommen können. Was genau wäre denn der Vorteil eines echten Multiplexers? Für mich sieht das gerade nur nach mehr belegten Pins am Arduino aus. Weitere Arduinos habe ich mir auch schon überlegt, aber wieder verworfen. Das mit dem nackten Chip weckt allerdings mein Interesse. Wie genau würde ich so einen Chip denn verwenden? Und so ganz allgemein, wann muss ich immer Pull-Down-Widerstände einfügen?

PS: Der CD4017 wär halt insofern gut, weil ich davon noch 100 Stück zu Hause rumliegen habe.
Borax
Star-Admin
Star-Admin
Beiträge: 11980
Registriert: Mo, 10.09.07, 16:28

So, 01.07.18, 23:24

Was genau wäre denn der Vorteil eines echten Multiplexers?
Dass Du genau den Kanal ansteuern kannst, den Du gerade 'lesen' willst. Falls da mit dem Zähler irgendwie mal etwas 'durcheinander' gerät, weißt Du ja sonst nicht mehr, welchen Draht Du gerade prüfst.
Wie genau würde ich so einen Chip denn verwenden?
Prinzipiell genau wie einen Arduino auch. Z.B. einen ATMega8. Der hat 28 Pins (schafft also locker 16 Input-Kanäle) und kostet ca. 2€ (direkt ab China auch 1€).
Philuminati
User
User
Beiträge: 40
Registriert: Do, 19.10.17, 12:05

So, 01.07.18, 23:32

Ich denke, wenn der Zähler immer nur von 1-6 zählt, sollte da nicht so oft was aus dem Ruder laufen. Vielleicht mache ich auch einfach eine Art siebten "Draht" der immer durchtrennt ist, so als Kontrollinstanz.

Das mit dem Chip verstehe ich noch nicht so richtig. Also der ATMega ist ja der Chip vom Arduino, oder? Aber wie zum Beispiel flashe ich den? Hat ja keinen USB-Anschluss?

Und eine weitere Frage noch: Ich werde die gesamte Hardware meines Projektes auf Lochrasterplatinen löten. Wie packe ich da ICs richtig drauf? Ich habe gesehen, dass es da so Halterungen gibt, aber ich frage mich woher ich die beziehen sollte, da es immer massenhaft Reviews gibt, die sagen, dass ein Großteil der Pins beim Transport verbogen wurde. Kann man ICs auch direkt auflöten oder sollte man das lassen? Und nehme ich in diesem Fall DIL-Packungen oder SMD?
Borax
Star-Admin
Star-Admin
Beiträge: 11980
Registriert: Mo, 10.09.07, 16:28

Mo, 02.07.18, 08:11

Kann man ICs auch direkt auflöten
Kann man. Aber dann kann man sie nur sehr schwierig austauschen. Präzisionsfassungen (z.B.: https://www.reichelt.de/IC-Sockel/MPE-0 ... stct=pos_8 ) sind da eigentlich das Mittel der Wahl. Für Lochrasterplatinen kannst Du nur DIL nehmen. SMD eignet sich nur für 'gedruckte' Platinen ( Lochrasterplatinen haben 2.54mm Abstand. SMD meist 1.27mm Pin Abstand). Nur SMD Widerstände/Kondensatoren/Dioden kann man auch ganz gut auf Lochrasterplatinen löten.
dass ein Großteil der Pins beim Transport verbogen wurde
Dann kann man die auch wieder gerade biegen.
Also der ATMega ist ja der Chip vom Arduino
Aber auf dem Arduino ist der 'große' ATMega328. Der Atmega8 ist eine alte einfachere Version. Flashen kannst Du den z.B. mit einem Arduino ;) (siehe z.B.: https://www.arduino.cc/en/Tutorial/ArduinoISP )
Benutzeravatar
Achim H
Star-Admin
Star-Admin
Beiträge: 13067
Registriert: Mi, 14.11.07, 02:14
Wohnort: Herdecke (NRW)
Kontaktdaten:

Mo, 02.07.18, 08:53

Borax hat geschrieben:Falls da mit dem Zähler irgendwie mal etwas 'durcheinander' gerät, weißt Du ja sonst nicht mehr, welchen Draht Du gerade prüfst.

Dann besorgt man sich eine Bargraph-Anzeige oder einzelne Leds und schließt diese parallel an die Ausgänge an. Mit jedem Takt wird ein anderer Ausgang High und schon sieht man, welcher gerade aktiv ist.

Man könnte auch den Clock an einen 4026 leiten und eine 7-Segment-Anzeige verwenden.

@ Philuminati
Ich würde vorschlagen, alle 4 Und-Gatter in einem 4081 zu verwenden. Nur 3/4 des IC zu verwenden ist Verschwendung.

Statt einem 4017 (Dezimalzähler, zählt von 0-9) kann man auch einen 4022 (Oktalzähler, zählt von 0-7) verwenden. Dadurch wäre Reset überflüssig (nach 7 kommt wieder die 0). Beide Zähler sind DIL16 und kosten ungefähr gleich viel.

Die Leiterbahnen vom Oktal-/Binärzähler zu den Und-Gattern würde ich so einfach wie möglich verlegen. Es ist völlig wurscht, ob der 1. Ausgang (0) auch das 1. Gatter ansteuert oder ein beliebig anderes. Dadurch würden die Drähte nur in einer anderen Reihenfolge getestet werden.
Borax
Star-Admin
Star-Admin
Beiträge: 11980
Registriert: Mo, 10.09.07, 16:28

Mo, 02.07.18, 09:55

Wenn das Abfragen der Inputs nicht zeitkritisch ist, wäre das für Dich einfachste vmtl. i2c input/output port expander wie z.B. MCP23017. Kostet bei Reichelt gerade mal 1.1€: https://www.reichelt.de/ICs-MCP-1-2-/MC ... CLE=140074
Erklärung z.B. hier: https://www.adafruit.com/product/732 oder hier (Deutsch): https://www.nikolaus-lueneburg.de/2015/ ... -expander/
Du kannst 8 solche Chips mit einem I2C Bus steuern. Das ergibt 128 I/O Kanäle, sollte also für Deine 60 In- und Outputs reichen.
Philuminati
User
User
Beiträge: 40
Registriert: Do, 19.10.17, 12:05

Di, 03.07.18, 01:09

Also, ich hab mich bisschen eingelesen und glaube, dass das mit dem ATMegachip zu schwer für mich ist. Das mit dem Port Expander werde ich mir überlegen. Da ist noch was bei meiner 4017-Methode, was nicht wie geplant lief. Ich habe ein Testsetup auf einem Breadboard gesteckt und was Interessantes beobachtet. Folgendermaßen: Ich habe an die Outputs 0-4 des 4017 LEDs angeschlossen (mit Widerstand). Clockinhibit, Reset und Clock habe ich je an einen Output des Arduinos gesteckt. Dazu kommt ein Setup mit einem Button, das dem Arduino einen Input liefert (hier liegt das Problem definitiv nicht). Der Arduino führt jedesmal, wenn der Button gedrückt wird, einen LOW-HIGH-Wechsel an Clock aus. Dh immer wenn man auf den Knopf drückt, wird einen Eingang weitergeschaltet. Aber aus irgendeinem Grund wird der Reseteingang nicht getriggert, wenn der Zähler auf Q5 schaltet. Das hat zur Folge, dass ich den Knopf so oft drücken muss, bis ich wieder bei Q0 bin. Das ist nicht im Sinne des Erfinders. Ich vermute, dass das was damit zu tun hat, dass Q5 über den Arduinopin, der auf LOW gestellt ist, auf GND gezogen wird. Aber ich weiß nicht so recht, wo die Pullup-/downwiderstände hinsollen. Im folgenden Schaltbild sind die Zahlen als Orientierung eingebaut. Die Stromversorgung des gesamten Konstrukts lief über den Arduin; dieser wiederum erhielt seinen Strom über USB.
Philuminati
User
User
Beiträge: 40
Registriert: Do, 19.10.17, 12:05

Di, 03.07.18, 01:09

4017ArduinoReset.png
Benutzeravatar
Achim H
Star-Admin
Star-Admin
Beiträge: 13067
Registriert: Mi, 14.11.07, 02:14
Wohnort: Herdecke (NRW)
Kontaktdaten:

Di, 03.07.18, 07:28

Nur eine Idee:
bau mal in die Strecken 1 + 3 Dioden ein, damit der Strom nur in eine Richtung fließen kann.

Nachtrag:
Irgendwie entzieht es sich meiner Logik, warum man Reset überhaupt mit einem Low füttern sollte, wenn dieser Pin ein High erwartet.
D5 an Clock Inhibit würde mehr Sinn machen.
Borax
Star-Admin
Star-Admin
Beiträge: 11980
Registriert: Mo, 10.09.07, 16:28

Di, 03.07.18, 08:30

Du musst den Pin am Arduino (der mit Reset das 4017 verbunden ist) als Eingang (ohne internen PullUp!) definieren. Und nur wenn Du einen Reset vom Arduino aus haben willst, selbigen wieder als Ausgang umdefinieren. Sonst hält der Arduino-Pin den Reset Eingang so wie es vom Arduino-Programm vorgegeben ist (low oder high). Der Arduino Output-Pin hat wesentlich mehr 'Power' als der 4017. Daher reagiert der Reset Eingang nicht auf den Zustand des 4017 Q5 Ausgangs.
Philuminati
User
User
Beiträge: 40
Registriert: Do, 19.10.17, 12:05

Di, 03.07.18, 15:41

Also, ich habe Achims Methode zuerst aufgebaut. Die Minuspole der Dioden sind auf der Resetseite, die Pluspole bei Q5 und D5. Der Effekt ist, dass zwar ein Resetsignal von D5 aus funktioniert, aber nicht von Q5. Wenn ich die Verbindung zu D5 rauslasse, funktioniert ein Reset über Q5, jedoch ist das irgendwie immer verzögert (unter einer halben Sekunde, aber deutlich bemerkbar). Ich habe normale IN4007er Dioden genommen. Wenn ich das Setup gleichlasse, dh mit den Dioden, und Borax' Vorschlag befolge, funktioniert es einwandfrei. Sowohl der Q5- als auch der D5-Reset funktionieren dann ohne Verzögerung. Ich werde nun wohl diese Methode erstmal benutzen, aber ich frage mich immer noch, wieso der Vorschlag von Achim so eine Verzögerung hervorruft.
Borax
Star-Admin
Star-Admin
Beiträge: 11980
Registriert: Mo, 10.09.07, 16:28

Di, 03.07.18, 16:14

wieso der Vorschlag von Achim so eine Verzögerung hervorruft
Da müsste ich jetzt länger drüber nachdenken. IMHO müsste es aber auch ohne die Dioden verzögerungsfrei funktionieren, wenn D5 als Eingang definiert ist. Und das 'Umdefinieren' in einen Ausgang dauert ja nur wenige Takte, liegt also im µS Bereich.
ustoni
Auserwählter
Auserwählter
Beiträge: 2105
Registriert: Sa, 04.06.11, 12:39
Wohnort: Mechernich

Di, 03.07.18, 16:23

Mich wundert eher, dass es mit den 2 Dioden überhaupt funktioniert.
Durch die beiden Dioden liegt am Reset-Pin im inaktiven Zustand kein klar definiertes LOW mehr an. Der Effekt ist etwa der gleiche wie bei einem offenen, also nicht belegten, Reset-Pin.
Wenn die beiden Dioden in der Schaltung verbleiben sollen, muss der Reset-Pin zusätzlich über einen Pull-Down-Widerstand (z.B. 10 kOhm) auf LOW, also Masse gelegt werden.

Beide Verfahren gleichzeitig anzuwenden ist aber völliger Unsinn. Die einfachste und sicherste Lösung ist das von Borax vorgeschlagene Verfahren.
Benutzeravatar
Achim H
Star-Admin
Star-Admin
Beiträge: 13067
Registriert: Mi, 14.11.07, 02:14
Wohnort: Herdecke (NRW)
Kontaktdaten:

Di, 03.07.18, 17:17

Durch die beiden Dioden liegt am Reset-Pin im inaktiven Zustand kein klar definiertes LOW mehr an.

Ich verstehe nicht, warum am Reset unbedingt ein Low angelegt werden soll?
Wenn dieser Eingang offen gelassen würde, wird der Zähler doch auch nicht resettet.
ustoni
Auserwählter
Auserwählter
Beiträge: 2105
Registriert: Sa, 04.06.11, 12:39
Wohnort: Mechernich

Di, 03.07.18, 17:40

Es handelt sich um ein Digital-IC. Erlaubt und definiert sind hier nur die Zustände LOW und HIGH.
Laut Timingdiagramm im Datenblatt muss der Reset-Pin für normale Zähl-Operation auf LOW liegen.

Bei einer Betriebsspannung von 5 V wird laut Datenblatt ein Potential bis max. 1,5 V als LOW interpretiert.
Ab einem Potential von 3,5 V wird ein HIGH erkannt. Der Bereich zwischen 1,5 V und 3,5 V ist nicht definiert.

Bei offenem Eingang (oder bei Verwendung der beiden Dioden) liegt am Reset-Eingang kein definiertes Potential an.
Das Verhalten des ICs ist in diesem Zustand nicht vorhersehbar.
Benutzeravatar
Achim H
Star-Admin
Star-Admin
Beiträge: 13067
Registriert: Mi, 14.11.07, 02:14
Wohnort: Herdecke (NRW)
Kontaktdaten:

Di, 03.07.18, 18:26

Bei offenem Eingang (oder bei Verwendung der beiden Dioden) liegt am Reset-Eingang kein definiertes Potential an.
Das Verhalten des ICs ist in diesem Zustand nicht vorhersehbar.

Für einen undefinierten Zustand sind aber noch ca. 1,5V erforderlich. Woher sollen diese kommen, wenn an diesem Pin nichts angeschlossen ist?

Ich habe aber verstanden, dass es besser ist, diesen Pin mit einem Pull-Down Widerstand an GND anzuschließen.
Danke für die Aufklärung.
ustoni
Auserwählter
Auserwählter
Beiträge: 2105
Registriert: Sa, 04.06.11, 12:39
Wohnort: Mechernich

Di, 03.07.18, 18:44

Die Eingänge eines CMOS-ICs sind extrem hochohmig.
Deshalb kann es sein, dass aus der Umgebung ein Signal bzw. Potential "eingefangen" wird. Da der Eingang so hochohmig ist, ist es auch nicht möglich dieses Potential mit einem normalen Multimeter zu messen. Im Extremfall wäre es sogar denkbar, dass z.B. ein Heizlüfter, der sich in der Nähe befindet und einschaltet, einen Reset auslöst.

Deshalb schaltet man auch die Eingänge von unbenutzten Gattern eines ICs - je nach Typ - auf Masse oder VCC - eben um einen definierten Eingangszustand zu erhalten.
Antworten