Beiträge von Andreas

    Hallo zusammen,

    nach dem hier sage ich diesem Forum (nach Beschäftigung mit Einplatinenrechnern im 12. Jahr) Adieu!

    Macht's gut. Mir geht der Umgang beim Versuch, Probleme Anderer zu lösen mächtig auf den Senkel. Anpöbeln lasse ich mich hier (ab jetzt) nicht weiter.

    Mein Tutorial zur Bare-Metal-Programmierung (BMT, geplante Fertigstellung August 2023, inkl. Vorstellung von Code von 17 abgeschlossenen Bare-Metal-Projekten) bekommt dann ein anderes Forum.


    Andreas

    Hallo Wily,

    lies nochmal in #3 den Absatz, in dem das Wort "Kontaktproblem", "Reset" etc. wie aus dem Nichts auftaucht.

    Wie man der Ansicht sein kann, mit einem DMM über eine Spannungsmessung diese Ursachen ausschließen zu können, erschließt sich mir aufgrund der fehlenden methodischen Eignung nicht.

    Dann ziehe Dir auch mal das Datenblatt zum DS18B20 rein. Die Quelle der Weisheit zu Problemen mit dem DS18B20.

    Ich bin hier raus. Für längere Zeit. Schade ums fast fertige BMT.

    Anpöpeln lasse ich mich hier nicht, nachdem ich Dir alle Fakten zu Ursachen und Lösungen genannt habe.


    Beste Grüße

    Andreas

    Hallo Willy,

    Es ist ja nur ein Sensor der den Wert 85 ausgibt. alle anderen geben ebenfalls definitiv falsche Werte aus.

    Hinweis auf einen Fehler bleibt ein Hinweis auf einen Fehler. Sich darüber hinweg zu setzen und weiter zu machen, ohne eine Klärung anzugehen, wird Dich nicht ans Ziel führen.


    Na ja, sagen wir mal so: Wenn Du einen Messwert anforderst, während der Sensor noch die Bits für die letzte Messung aus den Registern zieht, dann liegt es nahe, dass mindestens ein Messwert falsch ist: der nicht vollständig ausgelesene und ggf. auch der zuletzt ausgelesene. Schau Dir mal das Datenblatt zum DS18B20 an.

    Oder mit anderen Worten: Du musst dem DS18B20 auch die Zeit geben, vollständige Daten zur Verfügung zu stellen. Außerdem erhöhst Du die Temperatur des DS18B20, wenn Du in zu kurzen Abständen ausliest (ein von Strom durchflossener Leiter stellt einen Widerstand dar, der Strom in Wärme umwandelt). Aber das spielt solange keine Rolle, wie die Werte eh offensichtlich nicht valide sein können.

    An diesem Punkt der Argumentationskette angekommen, wirst Du einen Fehler (Schaltung, Software, ggf. Sensor) zugeben müssen und abstellen müssen, bevor Du in den Bereich zuverlässiger Messwerte gelangen kannst.

    Du hast ein Problem in Deinem Aufbau - nicht wir. Bei uns läuft das seit Jahren. Wenn du alle Lösungsvorschläge ignorierst, wirst Du der Lösung keinen Schritt näher kommen.

    Beste Grüße

    Andreas

    Hallo Willy,

    den verwendeten Pin (welchen auch immer) hast Du aber schon für OneWire konfiguriert? Nicht, dass es daran liegt.

    Welchen Zweck verfolgst Du mit der Messung der Spannungen? Ich halte das für vollkommen irrelevant, zumal die Werte nur geringfügig von 3,3 V abweichen - außer Du möchtest Nebelkerzen streuen.

    Was ich nicht verstehe: Der DS18B20 gehört seit rund 10 Jahren zu den am häufigsten eingesetzten Sensoren für Raspberry Pi, Arduino & Co.

    Es gibt Tutorials für jede Plattform und Auslese-Programme für so ziemlich jede Programmiersprache. Es ist wirklich alles zig-mal geklärt und erläutert worden. Trotzdem bereitet das Teil immer noch solche Probleme.

    Für einen industriellen Einsatz habe ich mal einen Ofen-Kalibrator gebastelt, bei dem 25 kalibrierte DS18B20 zum Einsatz kamen. Da gab es nie Probleme. Also funktioniert das auch mit recht vielen dieser Sensoren.


    Beste Grüße

    Andreas

    Hallo Willy,

    3 Tips von mir:

    1. Fehlermeldung

    Die "Temperatur" 85 deutet auf Probleme in der Spannungsversorgung hin. Im Datenblatt zu DS18B20 heißt es:

    Zitat


    The power-on reset value of the temperature register is +85°C.

    Du hast also offensichtlich ein Kontaktproblem. Während des Auslesens (z.B.) geht die Spannung verloren. Beim nächsten Kontakt gibt es einen Reset. Brauchbare Messwerte liegen dann noch nicht vor.

    2. Verzögerungszeit

    Ersetze im Quellcode die Wartezeit 750 ms durch einen Wert >= 950. Auslesen und Berechnung von 12 Bits dauert laut Datenblatt DS18B20 750 ms. Die Praxis zeigt aber, dass es auch mal länger dauern kann. Das sollte die Angabe von fehlerhaften Temperaturen von 85 (°C) verhindern. Siehe aber 1. bzgl. Kontaktproblem.


    3. Widerstand 4k7

    Der Widerstand 4k7 gilt als maximaler Einstiegswiderstand. Bei mehr Sensoren muss dieser Widerstand verkleinert werden.

    Ersetze den Widerstand 4k7 durch einen kleineren Widerstand. z.B. 3k9, 3k3, 2k7, 2k2, 1k8, 1k5, 1k2.

    Bei dem "passenden" Widerstand sollte es funktionieren.


    Poste auch mal Deine Schaltung, wie Du es tatsächlich aufgebaut hast und nicht, wie das Tutorial es vorgegeben hatte.


    Beste Grüße

    Andreas

    Hallo Marlon,

    Ja genau sobald ich das Signal in irgendeiner Art und Weise Empfange und Auslesen kann, kann ich software seitig mein Plan vollenden.
    Der Plan war es etwas zwischen den Klingel Taster zu bauen was erkennt wenn dieser Gedrückt wird.
    Danke für die schnelle hilfe. :)
    Beste Grüße,
    Marlon

    da gibt es zahlreiche Möglichkeiten, zu erkennen, ob jemand den Klingeltaster betätigt. Ohne Anspruch auf Vollständigkeit:

    1. Die Klingel läutet. Akustische Erkennbarkeit durch ein Mikrophon. Da für gibt es Module, die ein Signal liefern und über GPIO abfragbar sind.
    2. Bei Betätigung des Klingel-Tasters wird ein Stromkreis geschlossen. Wenn Du einen Draht um die Klingelleitung (irgendwo) wickelst, wird eine Spannung induziert, die Du an der Spule abgreifen kannst. Liefert auch ein Signal, dass über GPIO (nach Reduzierung auf 3,3 V für RPi oder 5 V für Arduino & Co.) abfragbar ist. Auf diese Weise lassen sich auch Festnetzleitung abhören... Ist aber ein anderes Thema.
    3. Je nach Klingelanlage (deswegen fragten Kollegen danach) lassen sich die Signale auch gezielt abgreifen / abfragen, sofern entsprechende Schnittstellen vorhanden sind.
    4. Wenn der Klingelzustand zusätzlich durch eine Funzel angezeigt wird, kannst Du einen Optokoppler einsetzen, der ebenso auf einem GPIO-Eingang den Zustand der Funzel meldet.

    Beste Grüße

    Andreas

    Hallo stresch89,

    Ja,

    da habe ich mich falsch ausgedrückt. Ich suche eben eine Umgebung die gleich aufgebaut ist

    die wirst Du nicht finden, weil Entwickler von Programmen zur Generierung von GUIs (Graphical User Interfaces, graphische Benutzeroberflächen) sich von eigenen Vorstellungen leiten lassen und selten Ergebnisse anderer nachprogrammieren. Da geht es um Zweckmäßigkeit und Anwendbarkeit, was weitestgehend in der IEC 62366 als Gebrauchstauglichkeit bezeichnet wird.

    Man ist zwar gewohnheitsgemäß irgendwo angekommen, dass man denkt/sagt, eine nachgeahmte GUI sei gebrauchstauglich (weil man sie kennt und sich deswegen schneller einarbeiten kann). Trotzdem können Auftraggeber (intern, extern) eigene GUI-Entwürfe bevorzugen.

    Man tut aber gut daran, sich an gewissen Vorgaben zu halten (Farben, Fonts, Zeichengröße, Schriftstil, Breite und Höhe von Schaltflächen. Deswegen kannst Du sowas in diesen Programmen einstellen. Diese Programmen geben selten einen "Standard" vor.

    Wie schon von Vorrednern vorgestellt, solche Programme gibt es für jede bessere Programmiersprache, diese Programme erzeugen Code für eine oder mehrere Programmiersprachen. Du musst nur auf die Ereignisse eingehen, die nach Anklicken der Bedienelemente abgesetzt werden und den Code, der von diesem Programm erzeugt wurde, durch eigene Programmierung Deiner Ideen ergänzen.

    Je nach Programm, Programmiersprache und Qualität des erzeugten Codes ist das mehr oder weniger aufwändig.

    Wenn Du nicht auf Python angewiesen bist, würde ich Dir empfehlen, mal Lazarus / FreePascal anzuschauen. Dieses Entwicklungspaket hat in vielerlei Hinsicht neue Standards gesetzt. Die GUIs inkl. mit vielfältigen Bedienelementen sind schnell zusammengeklickt. Der erzeugte Code ist zweckmäßig und erlaubt sehr schnelle Ergänzung Deiner eigenen Ideen (sog. CallBack-Routinen).


    Beste Grüße

    Andreas

    Hallo GrandMast3r,

    was hast Du gemacht, um sicherzustellen, dass Sender und Empfänger die gleiche Baudrate, Anzahl Datenbits und Stopbits, Parität verwenden und identische Flusskontrolle betreiben?

    Kann es sein, dass ein 2. Programm auf der seriellen Schnittstelle "lauscht" und deswegen "Deinem" Programm Daten vorenthalten werden?


    Beste Grüße

    Andreas

    Hallo zusammen,

    ich weiß nicht, auf welche RPi-Modelle Ihr Euch bezieht. Bei meinen stehen 28 GPIO-Pins zur Verfügung. Es gibt bis zu 5 alternative Funktionen. Sofern nicht anders festgelegt, ist eine davon immer GPIO.

    Deswegen macht für mich die Angabe geringerer Anzahlen in diesem Thread wenig Sinn.

    Ich würde eher den Sinn hinterfragen, Temperatur-Sensoren verwenden zu wollen, die möglicherweise einen Arbeitsbereich bieten, der hier möglicherweise gar nicht benötigt wird.


    Beste Grüße

    Andreas

    Hallo JohannI,

    hast Du Dir mal das Datenblatt durchgelesen?

    Da stehen ein paar Infornationen drin, die bzgl. Deines Vorhabens stutzig machen.

    Ausleserate 30 k/s.

    Aber auch: Datengröße ist von 1 bis 23 Bit frei einstellbar. Das beeinflusst auch die Leserate.

    Das legt die Frage nahe: Auf welche Datengröße bezieht sich die Ausleserate?

    Um das herauszufinden, hilft nur Probieren...

    Der ADS1256 hat nur 8 Kanäle. Du schreibst was von 200 Messwerten. Brauchst Du dann 200 Kanäle?

    ADS1256 kann 30.000 Messwerte (momentan unbekannter Datenbreite) pro Sekunde.

    Du forderst 200 x 6000 Meswerte pro Sekunde = 1200000 Messwerte pro Sekunde. Das ist um Dimensionen mehr, als das Datenblatt der Hardware in Aussicht stellt.

    Es gibt chemische Prozesse, bei denen eine physikalische Eigenschaft 6000 mal pro Sekunde sinnvoll gemessen werden können soll.

    Im Allgemeinen bin ich bei solchen Raten aber höchst skeptisch.


    Wenn der interne Puffer nicht ausreicht, dann muss Dein Programm einen solchen Puffer bereit stellen, Daten sammeln und danach auswerten, anzeigen, speichern.

    Beste Grüße

    Andreas

    Hallo Jens,

    natürlich kannst Du einen RFID-Chip /-Karte verwenden, um damit Abläufe beliebiger Art in Gang zu setzen.

    Letztes Jahr habe ich z.B. Informationen (Personenname, Name von Anwendungen, Rollen dieser Personen in Anwendungen) auf RFID gespeichert.

    Das von mir erstellte Programm hat dann nach Einlegen der RFIDs die User-Konfigurationen der betreffenden Anwendungen um die Personen und deren Rollen ergänzt.

    Bei den Anwendungen handelte es sich überwiegend um Programne, die in der Medizintechnik zur Produktionssteuerung oder bei Produktprüfungen verwendet werden.

    Beim nächsten Programmstart gab es dann neue Admins, Prüfkoordinatoren oder Prüfer...


    Beste Grüße

    Andreas

    Hallo telo36,

    der Widerstand von 4k7 ist ein Richtwert, der für einen einzigen DS18B20 zu guten Ergebnissen führt.

    Je mehr Sensoren Du an denselben Datenpin anschließen möchtest, umso kleiner wird der Widerstand ausgelegt werden müssen.

    Es gab schon Berichte, wonach erst ein Widerstand von 800 Ohm zum Ziel führte.

    Um für einen Satz von mehreren DS18B20 ein guten Näherungswert zu erhalten, habe ich früher einen 5k-Poti eingesetzt (hinter solchen 800 Ohm). Dann habe ich die Sensoren ausgelesen und mich für den Widerstand entschieden, bei dem kein Sensor unerreichbar war.

    Bedenke aber auch, dass es einen Unterschied macht, ob Du eine fliegende Schaltung auf einem Steckbrett oder eine fest verlötete Schaltung verwendest.


    Beste Grüße

    Andreas

    Hallo Anton,

    ohne Dein genaues Vorhaben vorgestellt zu haben, möchte ich bezweifeln, dass die einzige Lösungsmöglichkeit über Bare Metal erfolgen muss.

    Ich bin auch immer wieder erstaunt, welch abstruse Ideen Auftraggeber sich ausgedacht haben. In den Projekten meiner Firma hat sich herausgestellt, dass nur 20 % der "Bare Metal"-Anfragen tatsächlich besser als Bare Metal umgesetzt werden sollten.

    Sollte sich bei Dir Bare Metal als sinnvollere Variante erweisen, dann bereite Dich schon mal darauf vor, dass der Teil mit der Laufzeitfehlersuche & Optimierung einen gegenüber der "gewöhnlichen Programmierung" erheblichen Mehraufwand bedeutet.

    Die wesentliche Voraussetzung besteht darin, dass Du in C sattelfest bist und bei Bedarf Schnittstellen in Assembler beisteuern kannst. Ansonsten wird es so richtig zäh werden ...

    Solltest Du davon aussgehen, dass die Bare Metal-Programmierung so ähnlich von Statten geht wie in Python (Copy & Paste der geistigen Ergüsse anderer) dann vergiss Deine Idee lieber...


    Beste Grüße

    Andreas

    Hallo zusammen,

    so kann das natürlich nicht funktionieren, weil Ihr kein Device stromlos machen dürft, von dem aus noch Kommandos geladen werden sollen, um den Shutdown zu begleiten.

    Was funktioniert: Eine RAM-Disk einrichten, dorthin alle für den Shutdown erforderlichen Kommandos übertragen. Dort können dann auch wieder system-Units etc. angepasst werden.

    Alternativ würde ich das gewünschte Verhalten im Kernel implementieten und diesen dann neu compilieren.

    Dann hat man aber ein System, das sich nicht wie der "Standard" verhält.


    Beste Grüße

    Andreas

    Hallo zusammen,

    diesen Thread verfolge ich, seit es ihn gibt, mit zunehmendem Schmunzeln.

    ralfi1988 : Was __blackjack__ Dir zu vermitteln versucht - bei Dir aber irgendwie nicht richtig anzukommen scheint - wird vielleicht durch ein eigenes Erlebnis deutlich(er).

    Ich hatte mal für meine Firma Mitte der 90er Jahre die Internet-Präsenz erstellt. In Ermangelung anderer Software habe ich die Funktionalitäten von PowerPoint genutzt. Das Ergebnis war eine Homepage, die so aussah, wie ich mir das vorgestellt habe und die so funktional war, wie ich es angelegt habe.

    Aber: Die Homepage war trotz einstelliger kBit/s-Datenrate doch schrecklich langsam. Ich habe mir dann den "Quellcode" angeschaut, also das, was PowerPoint aus meinen Eingaben gemacht hatte.

    Rund 1/3 des Codes waren für mich elend lange Verkettungen von Informationen, die nicht direkt mit meinen Eingaben in Verbindung zu bringen waren.

    Ein weiteres Drittel hatte erkennbar mit meinen Eingaben zu tun. Aber niemand, der HTML kann, würde das so umsetzen. Stichwort <div> etc. bezogen auf einzelne Worte und nicht über einen Absatz.

    Und das letzte Drittel war einfach nur Füllmaterial.

    Diese Erkenntnis versuchte __blackjack__ Dir näher zu bringen.

    Ich habe dann den Quellcode der Eingangsseite genommen und nach Gutdünken händisch optimiert. Übrig blieben weniger als 30 % der ursprünglichen Zeilen, die allesamt essentiell waren.

    Die Seite wurde recht flott geöffnet. Die Optimierung der restlichen 40 Seiten war dann nur noch Fleißarbeit.

    Ein paar Wochen später gab es von irgendeiner Internet-Einrichtung einen Preis für die funktionale Gestaltung, bei der auch die Geschwindigkeit der Darstellung der einzelnen Seiten gebührend berücksichtigt wurde.

    Na ja, wo kein Datenmüll vorhanden ist, lädt es sich auch schneller.


    Beste Grüße

    Andreas