Schalter mit Arduino

Morgen,
Bin echt neu in der Materie Arduino.

Ich will eine Steuerung mit Arduino bauen die mehrere Schalter abfragt. Darunter drei Mikroschalter die ich als Endschalter nutzen möchte, sowie einige Reedkontakte oder auch Hallsensoren die bei anliegen eines kleinen Magnetfeldes schalten sollen.

Nu hab ich den Sparkfun Qwiic Switch gesehn, da kann man direkt Mikroschalter dranmachen und sie über den Qwiic Switch durchschleifen, von einem zum nächsten usw.

Qwiic Switch Eckstein Shop

Die erste Frage wäre ob ich da wohl auch Reedkontakte mit nutzen könnte, an sich sind es ja auch einfach mechanische Schalter.

Die zweite Frage wäre ob ich damit statt der Reedkontakte auch Hallsensoren anschliessen kann.

Und vor allem...WIE sind die anzuschliessen und im Programm nacher identifizierbar und ansprechbar?

Ich hab dazu erstaunlich wenig finden können.

Wozu diese Aufwändige Zusatzplatine, wenn du Schalter/Microschalter direkt an einen Arduino anschließen kannst ? Zumal diese Platinen für einen speziellen Schalter (Joystick) gebaut wurden.

Da keine richtige Beschreibung für das Teil vorliegt, würde ich auch als Anfänger erstmal davon absehen.

Die sind auch für Mikroschalter, deswegen sind da diese zwei Schlitze wo Kontakte von den meisten Mikroschalter direkt reinpassen zum einlöten, die Platine steckt dann direkt am Mirkoschalter dran.

Mir kam die Lösung eleganter vor als einzelne Kabel überall durchzuwinden, es kommt da schon so einiges zusammen. Es werden so 9 Reedkontakte oder Hallsensoren, plus drei Mikroschalter.

Aber ja, es gibt weder Beschreibung noch Garantie usw., daher bin ich auch etwas verhalten momentan. Hab zwar mal zwei Stück mitbestellt zum probieren, aber ich schau auch nach weiteren Möglichkeiten.

Mikroschalter direkt anschliessen wäre ja eine Möglichkeit, aber da gehen mir glaub ich die Pins am Arduino aus? Und ich müsste vielleicht einen Widerstand reinfriemeln zum entprellen?

Es kommen später noch ein RFID und ein Funkempfänger dazu die auch beide abgefragt werden sollen. Und dann soll ein Servo angesteuert werden bei dem die Mikroschalter als Endschalter dienen.

Was könnte ich tattdessen benutzen? Ich hab mal nach Shields für Mikroschalter undso gegoogelt aber mit den Ergebnissen komm ich nicht so recht weiter. Ich hab so Multifunktions-Shields gesehen, mir ist aber nicht klar wie ich das mit Mikroschaltern verwenden kann.

Was könnte ich tattdessen benutzen?

z.B. Schieberegister....

Oder auch MCP23017

Viele Varianten, es gibt.

battlecore:
... Und ich müsste vielleicht einen Widerstand reinfriemeln zum entprellen?

Nein. Ein Widerstand hat mit Entprellen genauso wenig zu tun wie Hülsenfrüchte mit Gasriesen.

Gruß

Gregor

Mir kommen die Qwiic Switch wie Lego-Bausteine vor, mit denen man kleine Sachen schnell zusammenstöpseln kann, dann aber irgendwann an unüberwindbare Grenzen stößt. Ein Problem könnte alleine schon die Entfernung (Kabellänge) sein, über die die Schalter verteilt sind. In einer elektrisch rauhen Umgebung sollte I2C nur mit kurzen Strippen (1m) an den Controller angeschlossen werden, und gegen Einstreuungen aus der Umgebung gut geschützt werden. Erzähl doch mal, was für eine Maschine da gesteuert werden soll?

Digitale Hall-Effekt Schalter können angeschlossen werden, brauchen aber eine eigene Stromversorgung, so daß das nicht ohne Löten geht. Sie benötigen aber auch keine Entprellung, kommen also auch ohne extra Controller aus.

Ich würde eher zu einem kleinen Arduino (Mini...) tendieren und einem Board mit Schraubanschlüssen, das mehrere Schalter abfragen und an den Master Controller übertragen kann. Solche Boards nahe bei den Schaltern montieren, kurze Strippen mit Abschirmung oder als twisted pair.

Daneben gibt es noch Uno-ähnliche (kompatible) Boards mit Steckkontakten für handelsübliche 3-polige Kabel für Gnd, Vcc und einer Datenleitung. Daran können wahlweise Servos, Reed- oder Hall-Schalter angestöpselt werden. Wenn die digitalen Anschlüsse ausgehen, dann können auch noch die Analog-Eingänge als digitale Ein- oder Ausgänge benutzt werden.

Ja das ist auch die Ursache wieso ich da keinen Durchblick habe, sag ich mal so. Zumal ich ja auch noch nie einen Arduino hatte, ist völlig Neuland. In die Programmierung arbeite ich mich auch noch ein. Da mach ich mit Starterkits grad so einige Versuche um da mal reinzukommen.

Wäre für meinen Fall nicht so ein CNC-Shield geeignet? Weil die ja sowohl die Anschlüsse für Endschalter haben sowie auch einen Motortreiber für Schrittmotoren. Das ist mir jetzt grad spontan so eingefallen, weil man an einer Fräse auch die Motoren für die drei, vier oder fünf Achsen hat und die auch Endanschläge haben.

Damit wären dann ja die drei Endschalter sowie der Schrittmotor anschliessbar.

Für die 9 Reedkontakte könnte ich dann doch ein Tastenfeld umfunktionieren? Also Taster raus und Reedkontakte dran?

Dank euch erstmal für die Eingebungen, ihr seid echt schnell.

battlecore:
... In die Programmierung arbeite ich mich auch noch ein. ...

Gewöhne Dir vom Start weg an, Deinen Code übersichtlich zu formatieren. Bei der Fehlersuche ist das Gold wert. Echt jetzt.

Gruß

Gregor

Oh, hat sich überschnitten mit dem schreiben.

Das ist für einen Schliessmechanismus einer Tür. Daher kommt auch noch ein RFID-Leser dazu, einmal mit Karte und einmal noch mit einem Handsender. So wie sie in den Starterkits mit drin sind, damit wollt ich das mal ausprobieren.

Die Reedkontakte sollen wie ein großes Tastenfeld sein, nur ohne Tasten, man fährt mit einem kleinen Magneten drüber in einem bestimmten Muster, also swipen, nur eben in groß. anschliessend Karte davor und den Handsender drücken. Schwupp, Tür entriegelt.

gregorss:
Nein. Ein Widerstand hat mit Entprellen genauso wenig zu tun wie Hülsenfrüchte mit Gasriesen.

Gruß

Gregor

Das hab ich so frei aus dem englischen rausgelesen.

DrDiettrich:
Daneben gibt es noch Uno-ähnliche (kompatible) Boards mit Steckkontakten für handelsübliche 3-polige Kabel für Gnd, Vcc und einer Datenleitung. Daran können wahlweise Servos, Reed- oder Hall-Schalter angestöpselt werden. Wenn die digitalen Anschlüsse ausgehen, dann können auch noch die Analog-Eingänge als digitale Ein- oder Ausgänge benutzt werden.

Meinst du Shields zum draufstecken? Die hab ich gesehn mit Schraubanschlüssen für Motoren, halt so Motorshields.

Dadurch kam mit die Idee mit dem CNC-Shield vor ein paar Tagen, aber den Gedanken hatte ich nicht weiter verfolgt weil ich so auf diese Mikroschalter fixiert war.

gregorss:
Gewöhne Dir vom Start weg an, Deinen Code übersichtlich zu formatieren. Bei der Fehlersuche ist das Gold wert. Echt jetzt.

Gruß

Gregor

Ja muss ich ohnehin, ich will da ja später auch noch durchblicken. Ich hab früher JavaScript und HTML gemacht, da wars ohne Kommentare auch schon nicht so dolle einfach.

battlecore:
Das [mit dem Widerstand und Entprellen] hab ich so frei aus dem englischen rausgelesen.

Du verwechselst das evtl. mit Pullup-/Pulldown-Widerstand. So ein Widerstand ist dazu da, einen Pin mit einem eindeutigen Pegel zu versorgen - dann kann man auch von einem Pin mit offenem Taster immer sagen, dass er einen High- oder Low-Level hat.

Gruß

Gregor

Ups, ja stimmt, Pull up / Pull Down war das mit dem Widerstand. Sorry. Hatte mich mit dem prellen der Schalter beschäftigt weil das da bei Eckstein in dem Shop auch irgendwo mit drinstand das die Platine das auch unterdrückt.

Um mehrere Schalter einzubinden und zu entprellen könntest Du auch die MoToButtons Klasse aus meinen MobaTools benutzen. Die entprellen nicht nur, sondern bieten neben der statischen Abfrage des Schalterzustandes auch eine Ereignisverwaltung. Also den Moment des 'Drückens' bzw. 'Loslassens', und das 'kurz Drücken' und 'lange Drücken'. Das kannst Du einfach abfragen, ohne dich um die Details kümmern zu müssen.

Mit einer Instanz der Klasse können bis zu 32 Schalter/Taster verwaltet werden. Es wird auch unterstützt wenn die Schalter über einen Portextender oder eine Matrix angeschlossen sind, da das Einlesen der 'Rohdaten' in einer Callbackfunktion erfolgt.

Nimm erst mal ein einfaches und überschaubares Projekt. Wenn jetzt plötzlich noch Motoren reinkommen sollen, dann wirft das einige andere Konzepte über den Haufen.

gregorss:
Nein. Ein Widerstand hat mit Entprellen genauso wenig zu tun wie Hülsenfrüchte mit Gasriesen.

Naja, so ganz stimmt das nicht.
Wenn du per Hardware entprellen willst, brauchst du einen Widerstand und zusätzlich einen Kondensator.
Also war die Aussage des TO nicht vollständig, der Kondensator fehlte.
Da ist dann ein Entprellen per Software sicher einfacher.

MicroBahner:
Um mehrere Schalter einzubinden und zu entprellen könntest Du auch die MoToButtons Klasse aus meinen MobaTools benutzen. Die entprellen nicht nur, sondern bieten neben der statischen Abfrage des Schalterzustandes auch eine Ereignisverwaltung. Also den Moment des 'Drückens' bzw. 'Loslassens', und das 'kurz Drücken' und 'lange Drücken'. Das kannst Du einfach abfragen, ohne dich um die Details kümmern zu müssen.

Mit einer Instanz der Klasse können bis zu 32 Schalter/Taster verwaltet werden. Es wird auch unterstützt wenn die Schalter über einen Portextender oder eine Matrix angeschlossen sind, da das Einlesen der 'Rohdaten' in einer Callbackfunktion erfolgt.

Hört sich passend an, danke. Werd ich im Hinterkopf behalten...hoffe ich. Muss ich die Schalter direkt an Arduino anschliessen? Und dann den Pins den jeweiligen Schalter zuweisen? Weil mir gehen dann wohl die Pins aus am Arduino.Die 9 Reedkontakte oder Hallsensoren müssen ja auch noch dran.

Das war der Grund wieso mir ein CNC-Shield ganz gut gefallen hat.

DrDiettrich:
Nimm erst mal ein einfaches und überschaubares Projekt. Wenn jetzt plötzlich noch Motoren reinkommen sollen, dann wirft das einige andere Konzepte über den Haufen.

Ja ich probier mit son Starterkit einiges aus. Aber ich versuch mich zu orientieren was ich für das Projekt alles benötige. Da ich such die Mechanik und alles noch fräsen und drehen und schweissen muss zieht sich das auch in die Länge. Die Zeit dazwischen kann ich gut nutzen. Zudem hab ich auch noch eins meiner Autos in der Mache was sich hinzieht mangels verfügbarer Teile.

Ich hab immer wieder längere Rumgammelphasen ne.

HotSystems:
Naja, so ganz stimmt das nicht.
Wenn du per Hardware entprellen willst, brauchst du einen Widerstand und zusätzlich einen Kondensator.
Also war die Aussage des TO nicht vollständig, der Kondensator fehlte.
Da ist dann ein Entprellen per Software sicher einfacher.

Das sagst du so in deinem jugendlichen Leichtsinn. Ich bin Analog aufgewachsen :smiley:

battlecore:
Das war der Grund wieso mir ein CNC-Shield ganz gut gefallen hat.

Deine verlinkte Schalterplatine hat aber nix mit einem CNC-Shield zu tun.

Muss ich die Schalter direkt an Arduino anschliessen?

Warum fragst du das?

Der Kollege sprach von:

Es wird auch unterstützt wenn die Schalter über einen Portextender oder eine Matrix angeschlossen sind

Ist das nicht klar genug?

battlecore:
Muss ich die Schalter direkt an Arduino anschliessen?

Nein. Die HW kann da vollkommen beliebig sein, da das Einlesen der 'Rohdaten' über eine Callbackfunktion erfolgt.

D.h. Du schreibst eine kleine Funktion, die dir die Taster und Schalter einliest - wie auch immer. Direkt über Pins, über I2C oder aus einer Matrix ... ganz egal. Der Funktionswert ist eine 'Bitleiste'. D.h. ein 16-Bit Wert, bei dem jedes Bit einer Tasterstellung entspricht - so wie sie beim Aufruf der Funktion gerade stehen. Wenn Du mehr als 16 Taster/Schalter hast, kann es auch ein 32-Bit Wert sein.
Um Entprellen und Auswertung kümmert sich die Klasse. Die ruft dann zum passenden Zeitpunkt deine Funktion auf, um festzustellen, wie die Taster gerade stehen.
In der Lib ist auch ein Beispiel dabei.

HotSystems:
Deine verlinkte Schalterplatine hat aber nix mit einem CNC-Shield zu tun.

Hatt ich was falsches verlinkt? Es ging um ein Shield für Fräsen und Drehbanke usw. wo viele Endschalter und mehrere Motoren dranpassten. Das wäre genau mein Anwendungsfall.

Die Verriegelungen der Tür würde ich per Schrittmotor gleichzeitig über eine sich drehende Scheibe bewegen wo die Riegel mit Schubstangen dran sind. Die Enfschalter werden dann mit kleinen Blechlaschen betätigt sobald die Endlage erreicht ist.

Das ist genau wie bei einer Fräse z.b. Wenn der eine oder andere Schalter betätigt ist, soll der Motor dann nur noch in die jeweils sndere Richtug drehen können.

Um abzufragen ob die Tür auf oder zu ist würde ich einen dritten Schalter nehmen der dann bei geschlossener Tür betätigt ist, bei offener Tür nicht betätigt. Der Trick dabei, wenn die Tür geschlossen ist muss der Motor losdrehen und die Verriegelung verriegeln, also abschliessen quasi.

combie:
Warum fragst du das?

Der Kollege sprach von:Ist das nicht klar genug?

Weil ich wissen wollte ob das mit einem CNC-Shield auch geht.

Bin am Handy und da kann ich nicht mehrere Posts zitieren, muss da meinen Post immer editieren und mit Copy&Paste ein weiteres Zitat einfügen. Ausserdem hab ich meine Lesebrille nicht dabei.