Beiträge von Franky07

    Moinsen,

    SSR bekommst du als Fertigbauteil, sogar für eine Hutschienenmontage. Als Karte mit Mehreren dieser SSR kannst du vergessen !

    Da du von einem harten Schalten sprichst ( nur An oder Aus ) sind MOSFETs für reine Gleichspannungslasten fast der ideale Schalter, sofern die Auswahl des MOSFETs richtig getroffen wurde, und die Betriebs- bzw Umgebungstemperaturen eingehalten werden. Da deine Angaben mit:

    Es sollen 10x 12V DC-Lasten bis zu 15A,

    doch etwas allgemein gehalten ist, du keine Angaben machst ob es sich um ohmsche oder induktiven Lasten handelt kann man hier auch keine wirklich allgemeingültige Empfehlung ( Kosten u. Baugröße ) aussprechen.

    Solche Wünsche, mit solchen Spezifikationen sind fast schon als Individuell anzusehen. Hier wirst du als Fertigplatinen nichts passendes finden. Zumal 15 A auf einer "Normalo" Platine sind schon heftig, nicht unmöglich, aber du musst auch den Querschnitt für diesen Strom bis zum Schaltelement bekommen. Das bedeutet mit Sicherheit 17,5 A Maximalstrom immerhin 16 mm Leiterbahnenbreite ! Da kann man auch nicht diese einfachen Leiterplattenverbinder mit Schraub- oder Klemmanschluss verwenden. Hier musst du für sichere, ausreichend massive Kontaktübergabepunkte sorgen.


    Da heißt es nur "Selber ist der Man(n) !",. oder man setzt auf SSR mit einer Hutschienenmontagesystem.

    Moinsen

    Wenn ich das alles lese, überlege ich doch einfach 5V durchballern zu lassen. Ist ja im Gehäuse und wenn der so leise ist, wird man den vermutlich nicht hören.

    Nicht jeder GPIO PIn bei RaspI hat während des Startvorgangs den Status LOW. Das kann man in den Unterlagen zu dem entsprechenden RasPI Modell / Version nachlesen. Da sich das Thema mit der Definierung dieses GPIOs als PWM Output Pin ohnehin von alleine erledigt, verstehe ich deine Aufregung nicht. Es war nur der Hinweis, das du dich nicht beim Power On und während des Bootprozesses bis zur Aktivierung der Steuerungssoftware über eine ungewöhnliches Verhalten wunderst, und denkst der Lüfter sei defekt.
    Wenn der GPIO -> PWM Output initiiert ist, macht der Lüfter dann genau das, was durch deine Software angewiesen wird !

    Moinsen

    Der wird doch trotzdem an 5V angeschlossen, ausgenommen des Steuerpins, oder hab ich das falsch verstanden?

    Ja, der Lüfter mit den PIN 1 und 2 des Lüftersteckers mit der Vc verbunden. Der Pin 4 ( PWM ) ist eine OpenDrain Pin, also du musst hier einen entsprechenden Pegel / Potential anliegen haben, einfach offen lassen ist also nicht ! Oder du verwendest einen Hochohmigen Pulldown, damit das "AUS" auch gewährleistet ist.

    Moinsen

    Wo kann man so eine fertige Relaiskarte erwerben?

    In dieser Konfiguration gar nicht.
    Diese 15 A kann man auch mit einem MOSFET schalten, damit liegt der Nebenstrom, also der Schaltstrom in einem Bereich der weit unter dem eines Relais ist. Einfach nur der Schaltimpuls brauch mal etwas mehr Strom, ansonsten ist es nur die Erhaltungsladung das Gate auf der Spannung zu halten. Wir reden hier also von µA !
    Oder verwendest SSR, da liegt der Erhaltungsstrom auch weit unter dem eines magnetmechanischen Relais.

    Moinsen,

    Es kommt ganz darauf an wie du das Programmieren möchtest !
    Man kann es manuell Step by Step machen, dann musst du jede GPIO Ausgabe mit allen Verweilzeiten entsprechend dem Datenblatt des SPI Slaves händisch programmieren. Du kannst fertige oder vorgefertigte Bibliotheken sowohl für den SPI Bus, wo dir dann nur das Timing der Pegeländerungen abgenommen wird, oder du verwendest fertige Bibliotheken für die SPI-Slaves selber. Dann musst du schauen, was in und mit dieser Bibliothek möglich ist, und ob du eine erweiterte Funktion zum Setzen des MMCP23x17 Basierten CS möglich ist, oder oder oder...

    Ich habe keine Ahnung auf welcher SW Grundlage du das ganze aufbauen willst.

    Moinsen,

    Ja, du kannst pro CS bis zu MCP27x17 anschließen.

    Und ja, du entsprechend der Programmiersprache und Bibliothek dem RasPI Mitteilen, welcher CS für diesen Funktionsblock zuständig ist, und welche Adresse angesprochen werden soll. Einiges Bibliotheken bieten es bereits an, dass man den CS Pin separat angeben muss. Damit musst du dich als Programmierer dann nicht mehr darum kümmern, welcher CS für eine Datenübermittlung geschalten werden muss. Damit erzeugst du das CS für die DigiPots. Also musst du den Code entsprechend schachteln damit das ganze funktioniert.

    Ich hatte die Frage nur gestellt um zu verstehen wo dein dritter CS Pin aus deinen Erklärungen her kommt ich will nicht alle MCP23S17 auf einen eigenen CS Pin am Raspi legen.

    Das geht auch nicht ! Du kannst mit einem CS - Signal , bzw einem CS Port am RasPi, wie auch beim I²C immer nur 8 dieser MCP23x17 zusammenschalten,

    Dazu musst du eine, am besten OOP Routine programmieren, die diese 288 Digipots als Verwaltungsnummer behandelt. Als Parameter wird dann CS-Port am RasPi, die Slvae Adresse binär A0-A2, das Register A- oder B, sowie die Portnummer benötigt, um ganz gezielt einen GPIO der viele MCP23x17 im Ausgang umzuschalten.

    Moinsen,
    Wenn du einen LVT - Typ Optokoppler nimmst ( Preisgünstig ) musst du am EIngang auch einen gewissen Strom anliegen lassen, damit die interne LED auch schon hell leuchtet ;) Nur dann ist gewährleistet das der Optokoppler schaltet und nicht nur als Lichtgesteuerter Verstärker arbeitet.
    Damit brauchst du zwar nicht viel Spannung am Eingang ( meist nur um die 1,3 Volt ) was man mit einem Vorwiderstand einstellen kann, aber schon etwas Strom, um diesen Optokoppler zum Schalter zu machen. Oder du nimmst einen Optokoppler mit Schmitt-Trigger Eingang, der einiges mehr kostet, aber auch als Schalter sauber arbeitet, selbst wenn die Eingangsspannung mal schwanken sollte. Trotzdem die Ausgangsbeschaltung bleibt die gleiche, nur das du den abgezweigten Eingangsstrom minimal reduzieren kannst.
    Entweder du hast einen höheren Flächenbedarf bei geringeren Investitionskosten, oder einen geringeren Flächenbedarf bei höheren Bauelementekosten. Es ist im Prinzip erst einmal eine Frage der Umsetzbarkeit, denn ich hatte dir schon gesagt, oder geschrieben: Auf Grund der höheren Taktrate des SPI Busses unterliegen die Leitungslängen noch strengeren Anforderungen wie beim I²C Bus. Du muss das alles innerhalb der technischen Grenzen auch auf eine Platine bekommen, bzw du musst das HAT Prinzip von mehreren gestapelten Platinen anwenden, sonst die die Funktion bis zur letzten, Leitungslängen bedingten letzten Komponente bei diesem Spiel der Kaskadierung nicht mehr gewährleistet.

    Ich meinte eigentlich, dass jeder GPIO Pin des Rapberry pi am Ende ein CS Pin sein kann 😬 zumindest hab ich das so von dir verstanden.

    Ja, das kann sein ! Aber ich verstehe nicht wie du bei potentiell 24 Stück dieser MCP23S17 zuzüglich der noch ausstehenden Meßkanäle so viele GPIOs auf dem RasPI finden willst ?


    Wenn ich hier die blauen Kreuzchen zähle, hättest du maximal 19 GPIOs die du als CS Pin direkt von RasPI aus gesteuert nutzen könntest.
    Daher verstehe ich diese deine wiederholte Nachfrage nicht. Wenn du 288 CS für die DigiPOTs brauchst, musst du über einen Umweg gehen, wie gesagt entweder Schieberegister oder eine geeignete Zusammenschaltung von Portexpandern um diese gezielt und einzeln ansteuern zu können.

    Wie sich wiederholt schon sagte, ja es geht, aber du musst gedanklich loslassen, das du alle CS Schaltfunktionen direkt vom RasPI aus steuern kannst . Das geht nur über einen Umweg,

    Moinsen,

    Ich verstehe nun fast gar nichts mehr !
    Im Prinzip kannst du mit deinem DigiPOT eine Spannung einstellen. Soweit schön und gut. Aber wenn dir der Ausgangsstrom nicht reicht, egal ob für eine Messung oder eine Ansteuerung, die Kosten wie genannt aber nebensächlich sind, dann nimm doch einen z.B. LM358 OPV, der kann als Impedanzwandler fungieren, das DigiPOT entlasten, und einen höheren Ausgangsstrom bei UIN = UOUT liefern.
    Es gibt zahlreiche OPVs die sowohl mit einer höheren Eingangsspannung klar kommen, und sowohl in den Ausführungen Dual- oder Quad- OPV verfügbar sind. Dabei ist die maximale Eingangsspannung aus dem DigiPOT kommen von 24 Volt nicht das wirkliche Problem.

    Wenn das sofortige Erkennen einer Schaltzustandsänderung für die Gesamtfunktion so wichtig ist, kannst du auch wieder mittels eines OPVs , einem Vorwiderstand und einem Optokoppler des resultierende Signal aus dem Optokopplerausgang auf einen als INPUT arbeitenden MCP23x17 schicken. Eine Hilfsspannungsquelle für 3,3 volt bzw. 5,0 Volt kann man mit einem 2950 LDO aus der ohnehin vorhanden 24 Volt Spannung gewinnen. Diese wird nur benötigt um am Ausgang des Optokopplers eine kompatible Eingangsspannung für den MCP23x17 bereitzustellen.

    Dazu legt man eine Spannung am Collektor des Optokoppler-Ausgangs an, und am Emitter verbindet man diesen mit einen 2,2 K Widerstand mit Masse, und führt das Spannungssignal zwischen Emitter und Pulldown über einen weiteren Widerstand zum Input-GPIO des Portexpanders.
    Nun musst du allerdings dafür sorgen, das das RasPI selber über diesen Event informiert wird. Das geschieht über die Ausgänge INT_A und INT_B am Portexpander. Weiterhin musst du nun eine Programmroutine schreiben, welche auf diese GPIOs die mit diesen INT-Rückmeldern verbunden sind, auf einen Flankelwechsel triggern. Also einen Input Interupt auslösen, damit du sofort ( und innerhalb von 20 mSek ) dieses betreffende PORT-Register auslesen kann, um festzustellen an an welchen Input Pin des Portexpanders eine Spannungsänderung festgestellt wurde.

    Wenn die Anzahl der Messkreis übersichtlich bleiben, also nicht jeder DigiPOT Ausgang einzeln überwacht werden muss, kannst du hierfür den immer noch freien I²C Bus nutzen, und die I²C-Typen MCP23017 verwenden. Aber auch hier kann man dank der Skalierbarkeit durch Bus-Adressen 8 dieser MCP23017 an einem I²C Bus betreiben.

    Um noch ein Wort zu den Kosten zu verlieren. Die OPVs an den Ausgängen der DigiPOTs sind eher nicht das wirkliche Problem. Eher und viel teurer wäre eine DigiPOT zu finden, der sowohl mit dieser höheren analogen Eingangsspannung klar kommt, wie auch einen höheren Ausgangsstrom dauerhaft standhält.

    OPVs als Impedanzwandler am Ausgang sind im Bild 8-6 des Datsheets des MCP 41HV51-50K beschrieben.
    allerdings solltest du auf einen geeigneten OPV achten, der mit diesen Spannungen auch noch arbeiten kann.

    Da mit immer noch nicht ganz klar ist, warum du einen Ausgang eines DigiPOTs überwachen willst, oder ob es sich nur um eine Schaltzustandsüberwachung eines Result-Elementes ( hart geschaltete Komponente [ Buzzer , Kontrolllampe usw ] an oder aus ) handelt, wäre es besser wenn du hier mal eine Auszugsskizze anfertigst was du wirklich Messen, oder Kontrollieren willst, bzw. wie dieser DigiPOTs mit diesen zu überwachenden Stromkreisen in direkter Verbindung stehen.

    Moinsen jumbo125 ,

    ich kenne zwar nicht deine möglichen Bezugsquellen, und ich werde hier auch keine Werbung für einen speziellen Händler oder Online-Shop machen.
    Diese Sub-µC Schaltung die sich um die Bereitstellung der Stromversorgung des PI ( allgemein ) kümmert, ein echtes Aus, ein echtes An, realisiert mit einer sofortigen Wiederstartfähigkeit kostet, ohne das ich diesen Versandkostenanteilen zustimmen kann, inkl. Controller, MOSFET, Status LED und all dem benötigten Kleinkram genau 3,12 € inkl. MwSt.
    Damit wird der Schalter zu einem Schalter, oder bleibt es ! Dennoch wird das PI jedesmal auch wieder vollständig und korrekt heruntergefahren. Man muss es nicht so machen, man könnte es, und es schließt potentielle Fehler in der Bedienlogik aus.

    In diesem Sinne wünsche ich dir maximale Erfolge, immer eine fehlerfreie Bedienung, eine hohe und lange Lebensdauer aller deiner Komponenten. :thumbup:

    Moisnen,

    Wer bei seiner solchen Technik nicht die Weitsicht mitbringt, aber unbedingt weil sie gerade herumliegen "Schalter" verwenden will. Des Menschen Willen ist sein Himmelreich.
    Ich hoffe du vergisst niemals den Schalter wieder auf ON zu stellen bevor du manuell die Stromversorgung für einen Reboot unterbrichst. Dann läuft diese Shutdown-Routine im Kreis und schaltet deinen Server sofort weder ab, sobald das Shutdown Script aktiv wird.

    Ich hoffe nur du wirst dauerhaft Glücklich mit dieser Lösung, und stolperst niemals über diesen kleinen Fehler statt eines Tasters einen Schalter zu verwenden.

    wo ist das gefordert in #1? ahh warte nirgendwo

    Das sollte dir als Fachkraft der Elektronik aber bekannt sein das man mit einem Schalter, und das war meine Grundannahme aus dieser Wortverwendung Schalter, das er 2 getrennte Zustände wirklich herbeiführen will.
    Schalter ein , Pi geht ein. Schalter auf aus, Pi fährt herunter und wird vom Strom getrennt.
    Aber ich hatte auch schon geschrieben :

    Vielleicht sollten der TO sich mal detaillierter Äußern, was der Schalter genau machen soll, vor allen ob er mit diesem selben Schalter dann das PI auch wieder starten will ?

    Also was wird das nun mit einer Unterstellung ? Solange der TO nicht eindeutig verlauten läßt, er will das Pi nur mit einem "Schalter" herunterfahren, bekommt er es so auch nicht und ohne weitere Zusätze wieder mit dem selben Schalter an. Gut wenn man unbedingt ein Pi in den Shutdown schicken will, aber dann nochmal eine gesonderte Stromversorgungstrennung vornehmen um den Kasten wieder an zu bekommen - geiles Konzept.

    Solange der TO hier weiterhin mitliest aber sich nicht traut ein Statement abzugeben, warum er eine Schalter statt eines Tasters verwenden will, oder ob er nur die Begriffe verwechselt hat, kann ich auch dir vorwerfen, du hast möglicher Weise das Ziel des TO verfehlt.
    Für Klarheit kann nur er sorgen, in dem er sagt, was das Ziel sein soll. Diese Kombination aus Schalter und der reinen getasteten Funktion des Auslösens eines Shutdowns widerspricht sich.

    Für was willst du wieder grundlos den TE verwirren und überfordern?

    Erkläre dem TO bitte wie er mit einem Schalter ( nicht Taster ) sowohl das Pi einschalten wie auch ausschalten kann ? Ansonsten würde ja ein Taster zum Shutdown ausreichen !
    Ich erkenne den Sinn nicht, eine Schalter zu verwenden, wenn man bewusst den Begriff Schalter verwendet.

    Als Elektroniker solltest durchaus auch den Unterschied zwischen einem Taster und Schalter kennen ? Ich vermute mal das es so sein sollte.

    Denn wenn er ein Schalter verwenden will, aber das Prinzip eines Schnurschalter als harte Methode abzulehnen ist , keine Ahnung. Vielleicht sollten der TO sich mal detaillierter Äußern, was der Schalter genau machen soll, vor allen ob er mit diesem selben Schalter dann das PI auch wieder starten will ?

    ?? Was soll das denn schon wieder

    Er sprach von einem Kippschalter !
    Für meine Verständnis des Begriffes Schalter ist dieser kein Taster, sondern verbleibt in seiner Schalterstellung, bis eine erneute Änderung eintritt.
    Aus diesem Grund, wenn er Einschaltet also der Schalter dann auch in diesen Zustand LOW oder HIGH verharrt, muss er diesen Zustand weiterführend umsetzen. Denn wenn er dann diesen Schaltzustand ohne Zwischenschaltelement umkehrt wäre bei einen PowerOFF die Arbeitsweise wie bei einem Schnurschalter, welcher ja allgemein abzulehnen ist !

    Einschalten ist Einschalten = Herstellung der Stromversorgung. Und Ausschalten als zweite Schalterstellung ist dann das Auslösen des Shutdown mit anschließender Unterbrechung der Stromversorgung nach Beendigung des Herunterfahrprozesses.

    Muss man nicht so machen, man kann auch den PI herunterfahren lassen und weiterhin den Ruhestrombedarf in Kauf nehmen. Nur wie bekommst du dann mit dem selben Schaltelement das PI wieder an ?

    Moinsen,

    Nimm einen ATTiny, ein ESP ist weit aus und mehr als übertrieben.
    Dann nimmst du einen größeren MOSFET, damit du aktiv das PI schalten kannst.
    Wenn der Kippschalter den Status On bekommt, schaltest den MOSFET via des Tiny-GPIOs auf High damit der PI Strom bekommt. Dann brauchst du noch zwei Leitungen zum RasPI einmal als Eventauslöser für deinen Shutdown Script, und einmal um den Status am TX Pin zu erfassen. Wenn das RasPi, wahrscheinlich auch der andere PI-Clone vollständig herunter gefahren ist, fällt die Spannung am TX-GPIO auf LOW ab, und du kannst mit dem Tiny feststellen das der Shutdown Prozess abgeschlossen ist. Als Reaktion auf dieses Pegelwechsel "to Low" kannst du dann gefahrenlos den MOSFET veranlassen, die Stromversorgung zu unterbrechen. Dafür reicht ein Tiny25 oder 412 , welche dann selber in den Energiesparmodus gehen können. GGF wäre beim 412er sogar noch ein Pin / GPIO frei, um eine Status LED zu betreiben.

    Moinsen,

    Zur Nachfrage:
    Ja, jeder OUTPUT Chanel eines Portexpanders kann als eigenständig wirkender CS Chanel für einen weiteren SPI-Slave dienen.

    Und der ganze Rest:
    Ich weiss zwar immer noch nicht was dir so vorschwebt, aber :

    Ein MOSFET ist kein Schalter im Sinne eines Relais, außer du meinst einen Optokoppler mit MOSFET Ausgang, alternativ einer Levelshifterschaltung aber auch hier kann ich dir gleich den Wind aus den Segeln nehmen.

    LevelShifter als N-Kanal-MOSFET Schaltungen funktionieren, wenn die LOW-Side bei 3,3 Volt liegt nur bis max. 18 Volt auf der High Side. Mit alle den Vorwiderständen und Einkoppelwiderständen um einen Optokoppler zu betreiben, bzw einen solchen OPTO -MOSFET kommst du nicht nur auf einen höheren Bauteileaufwand, sondern auch auf einen höheren Platz- und Investitionskostenbedarf.

    Grundsätzlich ist die Frage zu stellen, sind diese "Spannungserkennungssysteme" eine Event-Funktion, also der RasPI muss umgehend auf eine Spannungsänderung reagieren, oder reicht es wenn diese innerhalb einer Programmroutine ( Statemachine ) nur regelmäßig oder bei Bedarf abgefragt werden.

    Wenn es sich um ein Eventsystem handelt, wird es ohnehin um einiges Aufwendiger. Wenn es ausreicht nur zyklisch die Spannung zu prüfen, ist die reine ADC Messung, dann auch ohne besondere Referenzspannungsquelle vom Materialeinsatz her günstiger, und platzsparender.

    Bei einem Eventsystem müsstest du zudem die INT_A und INT_B Ausgänge jedes MCP23x17 ( 16 Input Chanels ) noch mit dem RasPI verbinden, damit dieser Chip den RasPI anstoßen kann "Hallo, hier ist gerade etwas an einem GPIO passiert". Anschließend musst du dieses Portregister des betreffenden Portexpanders innerhalb von 20 mSek auslesen um zu erfahren, welcher GPIO eine Veränderung des Pegels festgestellt hat. Zudem kannst du auch hier keine 24 Volt auf den INPUT GPIO des Portexpanders prallen lassen, so das in diesem Fall sogar wieder sehr materialaufwendig Optokoppler notwendig werden.
    Da alle MCP23x17 über 2 getrennte Port-Register verfügt, bedeutet jeder weitere MCP23x17 als Input am RasPI ( egal wie abgefragt ) nochmals 2 zusätzliche GPIOs !

    -> Fall "Statemachine mit ADC"
    Widerstände für den ADC sind Cent-Ware ( 0,7 Euro-Cent SMD ) und mit ca. 3 Euro Materialeinsatz für einen ADC hast du 8 Eingangskanäle abgefrühstückt. Und du kannst sogar eine Aussage treffen ob die Spannung bei ungefähr 24 Volt liegt, oder ob durch eine anderen / äußeren Einfluß ( Leitungsbeschädigung / Korrosion / eingedrungene Feuchtigkeit ) sich ein potentieller Ausfall anbahnt.


    -> Fall "Portexpander als Inputconector":

    Im Vergleich mit einem Optokoppler brauchst du noch eine Hilfsspannung, 3 Widerstände und diesen Optokoppler pro Kanal -> mehr als die doppelten Kosten für 8 Kanäle plus zusätzlichen Aufwand für eine Event Programmierung und entsprechend viele freie GPIOs am RasPi .

    Wie gesagt, machbar ist vieles oder einiges, aber ohne das Ziel klar zu wissen, kann ich hier auch nur mehr oder minder im Nebel herumstochern.

    Grundsätzlich, wenn es eine Überwachungsfunktion ist, sollte man sich nicht auf einen digitalen boolschen Werte ( ja oder nein ) verlassen, dann sollte die vorausschauende Selbstdiagnose einen höheren Stellenwert einnehmen. Dazu kannst du auch um das Ganze zu parallelisieren den I²C und einem MCP23017 verwenden, um in einem eigenen Thread / Programm die ADCs mittels des sekundären SPI Busses abzufragen, um einfach schneller Zugriff auf die Werte zu erhalten, und natürlich eine schnellere Verarbeitung unabhängig des primären SPI Bus OUTPUT Controllings zu haben. Damit könnt eine SW Routine sich mit dem primären SPI Bus um die ganzen DigiPOTs kümmern, und eine eigenständige Programmroutine mittels MCP23017 ( 16 Ports mal 8 ADC Chanels ) oder MCP23008 ( 8 Ports a 8 ADC Chanels ) in dem I²C zuzüglich des sekundären SPI Bus um die Spannungsüberwachung.