Posts by WillyR_aus_C

    Guten Tag,

    Ich stelle mir das relativ einfach vor. Ist das auch so, oder ist das ein grösserer Aufwand? Hat das bereits jemand gemacht?

    Da du weiter oben schreibst, du hättest auf der Platine einen Kurzschluß oder Ähnliches verursacht, stelle ich einfach mal die These auf, auch der Empfänger hat eine Klatsche bekommen. Der Empfänger macht nichts anderes als ein moduliertes Signal wie auf die Kanäle aufzuteilen, und bei den Grundfunktionen Lenken und Fahren nur zwei PWM Signale auszugeben.
    Dazu müsstet du erst einmal mit geeigneter Meßtechnik erkunden, ob du auf dieser Platine diese beiden PWM Signal meist mit einer PWM Grundfrequenz von 50 Hz noch findest. Was bedeutet die Frequenz ist relativ stabil, jedoch der Pegelanteil low zu high ( auch genannt Tastverhältnis ) ist variabel. Doch dann könntest du auch gleich auf einfach Modellbaukomponenten zurückgreifen.
    Wenn du allerdings ein PICO verwenden willst, musst du dir im klaren sein, das diese Signale aus dem Empfängerteil der Spannungsspezifikation des PICOs entsprechen. Die maximale Eingangsspannung an den GPIO Ports darf in diesem Falle 3,3 Volt nicht überschreiten. Das gleiche gilt für die Stromlast, welche dann den Fahrmotor steuern soll.

    Wäre es nicht sinnvoller wenn dir eine Umrüstung auf echte Modellbaukomponenten zu teuer ist, und du trotzdem ein PICO verwenden willst auf ein PICO W zu setzen ? Damit könnte dein Sohnemann das Auto später einmal via Tablet oder Smartphone steuern. Natürlich wären dann noch einige eher kleine Umrüstungen notwendig, sowohl elektrischer wie mechanischer Natur.
    Kleine Modellbau kompatible Servos welche sich über PWM ansteuern lassen gibt es u.a. AZ-Delivery und als Motorschalter /-treiber würde je nach Motor eine H-Bridge Platine ausreichen.

    Guten Abend,

    aber bevor man sich mit Li-Akkus beschäftigt, sollte man sich über diese sehr Gründlich Informieren, da sie durch ihre hohe Energiedichte nicht ganz ungefährlich im Umgang wie Herkömmliche Batterien sind, zB. die kann und sollte man nicht einfach so in Reihe schalten (Brand-, Explosionsgefahr!

    könntest du mal bitte erklären, wie das mit der Eingangsfrage und der dazugehörigen Schaltung in Verbindung zu bringen ist ?
    Egal welchen Lithium-basierten Akku-Typ man nimmt, also alle LiION Akkus eingeschlossen, zeige mir bitte für diese Konstellation mit einer oder zwei Zellen die es in dieser Bauform erhältlich sind, ein Möglichkeit, wie man ohne Spannungskonverterschaltung in den zulässigen Eingangsspannungsbereich des Pins 39 mit 1,8 Volt bis 5,5 Volt kommt, und zudem noch ein externes Gerät betreiben kann, welches eine Mindestspannung, wie dieses Display, von 4,7 Volt erfordert ?
    Entschuldige bitte, keiner dieser Unterarten von Li-Akkus hat eine Ladeschlußspannung von über 4,2 Volt hat, bzw. dessen Entladeschlußspannung in der Kombination aus zwei Zellen wirklich noch ausreichend bzw. gering genug sind diese maximal zulässige Eingangsspannung von 5,5 Volt schon zu unterschreiten ?

    Man sollte hier auch einmal erwähnen, was diese Displays für Stromfresser sein können. Je nach Farbkombination weiß-blau, oder gelb-schwarz, je nach Displaygröße, je nach Software Treiberbibliothek und der Fähigkeit der Helligkeitssteuerung via Software, sowie der manuellen Einstellung der Hintergrundbeleuchtung auf diesem Adapterboard und der tatsächlichen Displayfüllung können diese Dinger 350 mA+ verbrauchen. Das ist 14 bis 15 mal mehr wie der PICO selber verbraucht.

    Das diese angegebenen 3,1 Volt wahrscheinlich in dieser Zusammenstellung einer Reihenschaltung der Akkuzellen stark tiefentladen sind, will auch keiner bestreiten. Nur wird man mit dieser Ladeplatine, welche nur für eine Zelle spezifiziert ist, hier keinen Aufladeerfolg erzielen - das ist auch unbestritten.
    Nur löst diese ganze Akku-Diskussion nicht das Thema, welches der TO so in seiner Grundaussage um die Beschaltung welche er beschrieben hat, bzw. auch auf dem Bild zu sehen ist das Problem, womit man bei einer Vc Einspeisung über Pin 39 dann keine Spannung über den Pin 40 für 5,0 Volt kompatible Erweiterungen abnehmen kann.
    Da wir auch alle nicht das Programm kennen, können wir nur mutmaßen ob der Pico überhaupt startet, wenn keine Debug Daten vorliegen. Spätestens an dem Punkt wo die Initiierung des I²C Slaves mit der Adresse des I²C-Seriell Adapters beginnt, steigt das Python Programm mit einem OSEror aus. Nur bekommt man ohne eine entsprechende USB- bzw Debug Verbindung dieses nirgendwo angezeigt. Mit Ausnahme er fängt über einen I²C Bus-Scan den Vorgang die Display-Initiierung ab, und verzichtet dann auf weitere Displaybefehl, oder fängt diese nochmals mittels try-except ab, und gibt dann den Messwert alternativ als "geblinkter" Morse-Code über die OnBoard-LED aus. Aber auch hier, der TO ist Anfänger, oder Einsteiger, wie soll er also wissen, wie man ein Programm dahingegend absichern kann, und die Programmfortsetzung sicherstellen kann auch wenn eine I²C Komponente ausgefallen ist ?
    Diese ganze immer wieder aufgewärmte Diskussion um diese Akkus ist doch vollkommen am Thema vorbei ! Wichtiger ist es hier doch dem TO, und auch anderen späteren Nachlesern zu vermitteln, das man den PICO sowohl über den USB Port wie auch Pin 40 versorgen kann, unter der Maßgabe man hält sich an die Spannunsgdefinition /-spezifizierung wie sie für USB existiert. Um mögliche Rückkopplungen bei der Doppelnutzung sowohl des USB-Ports wie auch parallel extern über Pin 40 zu vermeiden. Oder man nutzt diesen besagten Pin 39, welcher einer viel höhere Spannweite in der Vc zulässt, aber auch Grenzen hat, und man muss gleichzeitig beachten: Pin 40 steht dann nicht mehr als Spannungs-Output bei externer Einspeisung zur Verfügung, bzw, die externen Komponenten müssen auch mit dieser an diesem Pin 39 anliegenden Spannung klar kommen. Oder man verwendet nur 3,3 Volt kompatible Komponenten und kann diese über Pin 36 mit 3,3 Volt, jedoch nur maximal bis 200 mA darüber, versorgen. Zugegebener Maßen, die Anleitung / das Datenblatt in englisch ist hier auch nicht sonderlich Anfängerfreundlich. Man muss sich erst bis Seite 19 von 31 durchhangeln um erklärt zu bekommen, wo die Limits dieses VSYS Port sind und auf ein Z-Diode als Eingangs- / Überspannungsschutz mit 5,6 Volt wird hier gar nicht verwiesen.
    Gerade einmal auf der deutschen Seite des Elektronik-Kompendium werden die Anschlussmöglichkeiten näher beschrieben. Aber auch hier wird nicht näher oder detailliert auf einen Eingangsschutz für diesen Pin eingegangen oder hingewiesen.

    Guten Tag

    Ich möchte mich hier noch einmal ausdrücklich für meine Unkenntnis und für meine unzureichende Recherche entschuldigen

    Das hat rein gar nicht mit dir und deiner Person zu tun.
    Mit der Analyse deines Bildes aus dem Eingangspost, sind hier Nachfragen aufgetaucht, die mit dem eigentlichen Thema nicht in Zusammenhang stehen.

    Ja in vielen Tutorials liest und sieht man, das man 5 Volt Komponenten sowohl über Pin39 und 40 anschließen kann, um deren Stromversorgung sicher zu stellen. Dabei wird aber immer davon ausgegangen, diese Schaltung wird in diesem Moment noch mit dem PC verbunden über USb versorgt.
    Das du nun auf diese Weise erfahren musstest, man kann nicht so einfach von USB Spannungsversorgung auf externe Stromversorgung umstellen, ist eigentlich das was man dir auch wohlwollend vermittelt hat.

    Es ist wichtig und richtig, wenn man keine wirklichen sauberen exakten % Volt bereitstellen kann, diesen Pin 39 zu verwenden. Nur muss man dann auch die anderen 5 Volt Komponenten, wie bei dir das Display ebenfalls mit an diesen Pin 39 anschließen. Mehr ist im Grunde nicht zu sagen. Allerdings bei dir wären 1 x 3,7 Volt aus eine Akku zu wenig für das Display, aber schon 2 x 3,7 Volt sowohl zu viel für das PICO wie auch das Display selber. Daher war die Erwähnung eines Step-Up-Wandlers von ca. 3,7 Volt auf ca. 5,0 Volt, so wie es auch in einer Powerbank gemacht wird sinnvoll und richtig.


    Nur dieser Einwand aus #2 und die Unterstellung aus #8 tragen hierbei rein gar nichts zur Lösung bei. Weil wie schon erwähnt mit einer Einzelzelle ohne Spannungswandler auf 5 Volt wird man niemals die notwendigen 4,7 Volt für das Display erreichen, und mit zwei parallelgeschalteten Zellen ca. 7,4 Volt überschreitet man das Limit der maximalen Versorgungsspannungen von beiden Komponenten. Das ist vollkommen unabhängig der Li-Akku Typs.

    Also nimm dir das nicht zu Herzen, manchmal müssen Aussagen auch in Frage gestellt werden. Oder hat es dir geholfen, das du hier etwas über einen anderen Akku-Typ erfahren hast ? Bedeutungslos diese Aussage.

    Guten Tag,

    18650 gibts auch als LiFePo4.

    Ich finde es immer so toll von dir, wie du auf deiner Meinung behaarst.
    Du sprichst auf der einen Seite die unterschiedlichen Typen möglicher LI-Akkus an. Aber was du bei der ganze Geschichte komplett dabei aus dem Auge verlierst, ist diese Grundaussage der TO.
    Egal welche Art, oder Typen von LI-Akku du nimmst, mit einer einzelnen Zelle wird es dir ohne Zusatzschaltung niemals gelingen - egal welchen Ladezustand diese Zelle hat, eine ausreichend hohe Versorgungsspannung für dieses Display bereitzustellen. Genauso sieht es dann aus, wenn man zwei dieser Zellen im Verbund via Reihenschaltung verbindet dann benötigst du immer wieder (auch wieder egal wie leer diese Akkus sind) eine Zusatzschaltung um die maximal zulässigen Eingangsspannungen beider Basiskomponenten RasPi PICO und des Displays nicht zu überschreiten.
    Wie hier schon geschrieben wurde ist das Maß, oder der Bereich mit 4,7 Volt bis 5,5 Volt sehr stark limitiert. Das kann man mit einer einzelnen Zelle bzw. einer Doppelzellenkombination so nicht darstellen. Damit ist diese Nachfrage nach dem exakten Typ des Akkus vollkommen sinnlos. Ebenso ist bekannt, wenn man sich dieses Aufbau-Foto detailliert betrachtet: Dieses Lademodul mit USB-C Eingang hat am Aufgang nur einen Tiefentladeschutz für eine Einzelzelle. Hier findet auch keine Spannunsgkonvertierung wie bei einer Powerbank statt, wo die Ausgangsspannung auf ca. 5 Volt angehoben wird.
    Natürlich wie schon erwähnt, wenn der Vc Pin des Displays mit Pin 40 des PICO verbunden ist, aber wie geschrieben:

    die den Pico über die VSYS und GND mit Strom versorgen sollen.

    und zu sehen:

    (Orange Kabel von Pin 40 [ Invertierte Bestückung der Pico Platine mit Stiftleisten ])

    (Adapteransicht)

    sollte jedem klar werden, warum diese Schaltung mit Displayfunktion via USB versorgt funktioniert, jedoch nicht, wenn die Spannungsversorgung über besagten VSYS Pin 39 erfolgt. Ohne das ich hier nochmal einen Auszug des Schaltplans der PICO Platine einstellen möchte, weil es schon vor mir jemand gemacht hat, müsste sich nach nun gut 2 1/2 Jahren herumgesprochen haben, wie das Pinout des PICOs aussieht.

    Guten Tag,

    Auf einem SPI angesteuerten Color Display möchte ich sowohl Text, wie auch grafische Elemente darstellen. Das sind zu einem Nachbildungen von analogen Zeigerinstrumenten, zum anderen Balkendiagramm, aber auch einfache Dinge wie Zeiger, die einen Trendverlauf visualisieren sollen.

    Aktuell habe ich schon erste kleine Versuche unternommen diese Darstellungen als eigenständige Funktion ablaufen zu lassen. Mir geht es jetzt nicht darum, wie ich mit den Befehlsfolgen aus der LIB "frambuf" diese Darstellung auf das Display bekomme, sondern ausschließlich darum, wie kann man unter Zuhilfenahme des zweiten Cores diese Aufbereitung beschleunigen ? Das reine Zeichnen von grafischen Grundelementen wie Rechtecke, Linien oder Kreise, glaube ich im Griff zu haben. Ebenso die Ausgabe von linksbündig orientierten Texten.
    Besonders viel Zeit verliere ich offensichtlich bei der Beschriftung einer 3/4 Kreis Skala ähnlich einer Uhr, welche sich am bisherigen Maximalwert orientiert. Hier habe ich noch keine wirklich funktionierende Formel oder Berechnungskrundlage gefunden, welche mir skaliert eine solche Beschriftung an die Richtige Position rückt.

    Mein angedachte Ziel ist es anhand des bisherigen Eingangswertes zwei- oder dreistellig, diese Skala über einen Parameter als 10 oder in jeder anderen Größe bis max. 15 Sklanestrichen aufzuteilen, und diese dabei noch zu beschriften. Dabei bräuchte ich eine Skalenbeschriftung die als Ganzzahl oder mit ".5" als Teiler durch 10/50/100 entsprechend skaliert wird. Dieser Teilungsfaktor soll dann als Textelement in der Form "x100" o.ä. unterhalb des Zeigers zentrisch positioniert werden.

    Wie bestimmt man zudem den Mittelpunktwert eine solchen Textausgabe, wenn man frambuf.text("TEXT", Position_X, Position_Y, Farbe) nutzt ?

    Meine bisherigen Versuche laufen darauf hinaus das ich sehr sehr viel Zeit mit den Berechnungen verliere. Ohne das alle benötigten Ausgaben schon implementiert sind dauert eine solche vollständige Displayaktualisierung mehrere Sekunden.

    Guten Tag,

    Ich bin schon wieder am Ende mit meinem Latein, und muss euch wieder um Unterstützung bitten.

    Ich möchte mehrere Grafikdateien aus einem Pfad erfassen ( Dir-Listing ), diese ggf Umbenennen, und im Anschluss weiter bearbeiten.

    Mein Problem ist nun: wie ermittle ich alle Dateien die in ein Schema *.Dateiendung passen, damit ich nur diese aufgelistet bekomme ? Hierbei wäre es mir wichtig das ich zu einem als Programmparameter die absolute Pfadangabe wie auch ein beliebige Anzahl an möglichen Dateiendungen wie z.B. *,tif, *.jpg usw. angeben kann.
    Diese Dateien sollen ohne das vom Original eine Kopie erzeugt wird, nach einem festen Schema umbenannt werden, so das nur die Dateiendung erhalten bleibt. Diese dann nun neue Liste an gewandelten Dateinamen möchte ich dann in die schon vorhandene Bearbeitungsroutine einbinden.

    Könnt ihr mir hierbei helfen ? Danke

    Guten Tag,

    für eine formatierte Ausgabe komme ich an einer Stelle nicht weiter.

    wenn ich eine Integer-Zahl mit einer voranstehenden Null ausgeben will, schreibe ich

    Python
    zahl = 3
    print(f"{zahl:02d}")

    Nun möchte aber auch eine reele Zahl vorzeichenlos aber mit einer definierten Anzahl Nachkommastellen ausgeben.

    Python
    zahl = 4.148786
    print(f"{zahl:02.3f}")

    Hier passiert aber nun nichts, die erste Stellen, wenn ich verschiedene Zahlen einsetze ist dann auch nicht mehr anhand der Kommastelle "." formatiert.

    Wie kann ich eine Ausgabe erreichen ?

    Code
    04.1487
    10.257

    Danke für eure Hilfe.

    Guten Morgen @DeaD_EyE,

    wahrscheinlich habe ich mich etwas verschwommen ausgedrückt. Es ging und geht niemals um das Datum.
    Es geht rein um die Zeit als Stunden, Minuten und Sekunden Angabe.
    Mit dem Übertrag meinte ich das ich die Umrechnung der Dauer in ein Aufaddierbares Format zur rtc.datetime()[4:7] hinbekmme, ohne das ich jeden Wertübertrag /-überschreitung 23 bei Stunden, 59 bei Minuten und Sekunden ohne IF Abfragen hinbekomme. Das Problem machine.Timer() habe ich durch viel herumprobieren versucht aufzulösen.
    Mit aktiver machine.RTC kann ich nur einen ONE_SHOT Timer bis 3 h 15 min Initiieren, der dann auch sicher zur Ausführung kommt. Ob das an der Version des µPython liegt, oder andere Ursachen hat, kann ich nicht sagen.

    Guten Tag @DeaD_EyE,

    Dein Programm macht offensichtlich das gleiche, was mein Code macht. Ich erkenne jetzt keinen Unterschied in der eigentlichen Funktion, außer der Aufteilung mit Hilfe einer weiteren Funktion zur Berechnung der Verzögerungsdauer für den Timer-Aufruf, welcher in ms erfolgt.

    Es geht jetzt auch nicht um die Herleitung dieser Zeitangabe in ms, und auch nicht wie in deinem #3 geschrieben mit irgendwas, was mit einem Datum zu tun hat.

    Mir geht es jetzt erst einmal um die Lösung eines Teilproblems für ein komplexeres Projekt.

    Dazu möchte ich in der Form:

    Python
    time_table = [("06:30:00", 45),
                   "08:20:00", 15),
                   "12:05:30", 345)]

    eine Art Ausführungstabelle erstellen, später über ein User-Interface dynamisch, wo der Startzeitpunkt als reale Uhrzeitangabe, und die Beendigung über einen Wert der Dauer vorgegeben wird.
    Ich hatte nun mehrere Varianten durchprobiert, bin aber zu keiner wirklich unter allen Umständen funktionierenden Lösung gekommen. Das Datum selber wird dafür gar nicht benötigt. Es soll jeden Tag immer nach dem Muster welcher in dieser Tabelle beschrieben ist ausgeführt werden.

    Dazu hatte ich schon die Überlegung angestellt, jede Sekunde - aller 1000 ms über die interne RTC die aktuelle Zeitabzufragen, im Falle einer Übereinstimmung den ersten Vorgang zu starten und über einen weiteren Timer wie es Tell vorgeschlagen hatte einen ONE_SHOT Timer zu initiieren, welcher dann die Nachfolgeoperation auslöst.
    Dazu hatte ich den in #4 gezeigten Code gestartet. Das ganze passierte auf einem PICO W, und als Indikator habe ich einfach die OnBoard LED genutzt. Wie ich schon darlegte kann man einen ONE_SHOT Timer mit diesem großen numerischen Wert, welcher 6 Stunden entspricht starten. Es folgt auch keine Fehlermeldung, oder ähnliches. Der Wert wird offensichtlich übernommen. Nur hat sich die LED nach diesen 6 Stunden nicht wie erhofft abgeschaltet.
    Bei kürzeren Zeitwerten, welche im Sekunden oder Minutenbereich liegen funktioniert das mit dem ONE_SHOT-Timer auch einwandfrei. Ich weis jetzt nicht wo die Grenze liegt, offensichtlich bei einigen Millionen ms wo dieser nicht mehr korrekt ausgeführt wird.

    Daher hatte ich gefragt, wie man zu der Startzeit diese Dauer wieder als Angabe einer realen Uhrzeit umrechnet, um mit der gleichen sekündlichen Abfrage Startzeit dann auch die Endzeit-Funktion aufrufen kann. Vereinfacht es läuft dann nur ein Timer, welcher pro Sekunde einmal prüft ob eine der beiden Zeiten erreicht ist, und dann die entsprechende Funktion startet.

    Ich kann auch nicht sagen ob es an der Besonderheit des PICO W liegt, oder ob Micropython allgemein ein Problem mit so hohen Übergabezeiten bei der Timer-Initiierung hat.

    Als weitere Besonderheit kommt dann noch hinzu, was aber für dieses Teilproblem erst einmal nach meiner Ansicht unerheblich ist, das die zweite Funktionen nach Ablauf der Dauer eine Rückmeldung geben muss, welche Bedingung ist, damit im weiteren Ablauf der nächste Start mit der neuen Startzeit zur Ausführung kommt. Es ist eine Sicherheitsfunktion, welche im Falle das die Bewegung welche nach Ablauf "Dauer" nicht bis zu einem Referenzpunkt ausgeführt werden konnte ( dieser Punkt muss erreicht oder überfahren werden ) dann den erneuten Start verhindert, und eine Warnmeldung ausgibt.

    Guten Abend,

    Sieh dir mal die Timer-Klasse an.

    Ja, Timer habe ich mir angesehen.
    Okay, ich habe jetzt keine Ahnung warum es nicht so mit langen Überbrückungszeiträumen funktioniert wie es mit kurzen.

    Wenn ich nun einen Timer starte:

    Python
    from machine import Pin, Timer
    
    def Abschalten():
        led.off()
    
    led = Pin('LED', Pin.OUT, value = 1)
    
    timer = Timer(period = (6 * 60 * 60 * 1_000),  # 6 Stunden 
                  mode = Timer.ONE_SHOT,
                  callback = lambda t: Abschalten())

    welcher nur einmal ausgeführt wird, passiert komischer Weise nicht.
    Hier habe ich in der Abwandlung mit der Onboard LED und 21_600_000 ms für die Dauer ein Abschaltung dieser versucht. Deswegen auch mein verspätetet Antwort.
    Auf dem PICO W nun sind über 6 Stunden vergangen und die LED leuchtet immer noch.

    Guten Morgen,

    Ich habe ein kleines Problem - wohl ich habe mich wohl etwas verrannt, und finde keine Lösung.

    Ausgangssituation: Ich habe eine Startzeitt im Format "hh:mm:ss" und eine Dauer im Format "mm". Die Dauer wird immer in Minuten angegeben. Das ich bei einer Dauer größer 60 min dann auch den Stundenwert mit ändern muss ist mir klar.
    Wie bekomme ich nun ohne IF Abfragen heraus, um wie viel ich ggf auch die Stunden erhöhen muss, was mache ich wenn z.B. 17:52:15 die Startzeit ist und die Dauer 83 min beträgt ? Was würde zudem notwendig werden, wenn die Tagesgrenze 0:00 Uhr überschritten wird ?

    Das ist mit der Abfrage über localtime einen Vorgangs starten kann, ist mir klar. Nur wenn ich dann auch noch über die Tagesgrenze komme, weis ich aktuell nicht wie ich dann den Ausgangszustand wieder herstelle.

    Ich bräuchte in µPython eine kleine Hintergrundroutine welche immer zu den Startzeiten eine bestimmt Funktion aufruft, und nach Ablauf der Zeit "Dauer" eine andere Funktion aufruft. Es geht hier nicht um eine einfache GPIO ON/OFF Lösung.

    Ich hoffe ihr könnt mir weiter helfen

    Guten Morgen

    über den Widerstand wird der Spannungsabfall vom Pico gemessen, da das Messgerät den maximalen Strom begrenzt (4...20mA) kann da m.E. nix passieren zur Sicherheit wird noch eine Z-Diode parallel zum Widerstand eingebaut und einen Vorwiderstand hin zum Pico gibts auch noch. Das Konstrukt muss ich nur noch testen

    Wenn du einen Spannungsabfall messen willst, ist es notwendig, das "Meßgeräte" parallel zum Widerstand einzubauen. Ein reiner Widerstand ändert nichts an der Spannung, er ist nur eine Strombremse.
    Da dein PICO selber mit dem gleichen Massepotential verbunden ist, und der AGND des PICOs intern mit dem DGND , oder einfach der gleichen Masse verbunden ist, kannst du keine Spannung mit nur einem Widerstand als Vorwiderstand messen. Die Spannung die zum ADC-Eingang geführt wird, egal ob du diese vor oder nach dem Widerstand ( gemäß deiner Stromlaufskizze ) abgreifst, diese wird immer größer sein als die Referenzspannung des ADCs von 3,3 Volt und damit den RP2040 zerstören.
    Wenn du im Verhältnis die 24 V Spannung auswerten willst, bräuchtest du schon einen Spannungsteiler oder einen Differenziellen ADC. Das Problem ist nunmal das, das auf dem PICO alles gegen Masse liegt.
    Hinzu kommt auch noch der Umstand, das man diese GPIOs nicht unendlich belasten kann.
    Alle Output GPIOs in der Summe sollten nicht mehr wie mit 16 mA belastet werden. Und du wirst je nach Aufbau deiner Spannungsversorgung merken, dass du jeden Schaltvorgang ( Output ) auch wenn es nur wenige mA sind, du als Eingangsschwankung über den ADC Kanal registrierst.
    Bei jedem On- Schaltvorgang wird für eine kurze Zeit die Eingangsspannung je nach Glättungskondensator zusammenbrechen, und du damit einen höheren Spannungswert über den ADC Eingang festsellen. Denn die Schwankung der Referenzspannung aus der gleichen Quelle kommend, hat eine umgekehrtproportionale Auswirkung auf den Meßrohwert des ADC.
    Je nach dem wie viele Ausgänge du für deine Relais nutzt, wie hoch der Strom durch diese GPIO Ausgänge gezogen wird, solltest du diesen Umstand als Meßfehler einkalkulieren.

    Auch wenn es sicherlich bessere Lösung gibt, würde ich hier dafür sorgen das die Ausgangsströme an den Output GPIOs reduziert werden.
    Da deine Ausgangsbeschaltung "geheim" ist, und man hier nur raten kann, mache mal eins , auch auf einem Steckboard, und schalte mal. Wenn du mit einem 2 Kanal- OSZI dann an die Pins ADC_VREF und 3V3_OUT gehst und beobachtest was mit dieser 3,3 Volt Spannung passiert, während der Schaltvorgänge und wie lange es braucht bis sich diese Spannung wieder erholt hat, dann wirst du verstehen, wenn man die Funktion eines ADCs kennt, das dein Aufbau möglicher Weise ungeeignet ist. Dazu muss man beachten, der ADC vergleicht die Eingangsspannung mit dieser Referenzspannung. Mit diesem 47µ / 6,3V Tantal-Elko C2 am Ausgang des Spannungsreglers auf der PICO Platine lässt sich da nicht viel machen. Auch wenn jetzt wieder einige die OPCs nicht mögen, oder warum auch immer hier wettern werden, mit einem OPV kann man den Strom aus den GPIO Ausgängen in den pA ( Pico-Ampere ) Bereich reduzieren, und am Ausgang auf Grund der Stromverstärkung des OPVs einige mA abgreifen, um zB einen Optokoppler sicher anzusteuern. Besonders bei schnellen Schaltspielen der Relais und es sind ja mehrere wirst du ganz schnell feststellen können, wie sich dieses positiv auf die ADC Meßergebnisse auswirkt. Dazu muss man nur den / die OPV(s) aus den 5 Volt deines Spannungswandlers 24to5,0 versorgen. Die Beschaltungsvarinate des OPVs wird Impedanzwandler oder Spannungsfolger genannt. Vorne wenige pA aus dem GPIO-Out rein, hinten einige mA raus, um z.B. einen Optokoppler oder dieses Darlington Array anzusteuern. Denn hier ist die Summe und die Häufigkeit der Schaltvorgänge der potentielle Störfaktor für die ADC Nutzung.

    Guten Morgen

    ... unter Umständen baue ich dann vielleicht auch einen Traco Baustein ein, der funktioniert dann einfach so...

    nachdem ich erst einmal suchen musste was du mit diesem TRACO-Baustein meinst, ich mir dazu auch die Datenblätter des Herstellers angesehen habe kann ich dir zusichern - es wird nichts.
    Ich hatte selber schon einmal mit solchen DC/DC Wandlerbausteinen ein Projekt aufzubauen, und bin dabei zur gleichen Erkenntnis gekommen, wie diese schon erwähnt wurden. Sobald man die ADC-Eingänge nutzen möchte treten genau diese schon aufgeführten Effekte auf. Da diese Bausteine genauso wie die StepDown Wandler mit unterdimensionierten Glättungskapazitäten eine übermäßige Restwelligekeit über den Ausgang mit ausgeben, wird jede ADC Messung zu einer Glückslotterie.

    Sobald das Spannungsdelta am Ausgang, was mit Restwelligkeit oder Ripple bezeichnet wird, etwa 5 mV überschreitet sieht man bei einer Folgemessung oder einer Meßwertaufnahme in Form einer ganzen Meßreihe sehr deutlich diesen Einfluß welche über die proportional mitschwankende Referenzspannung sich in den Meßrohdaten widerspiegelt.
    Es ist zum Schluß auf deiner Platine auch eine Platzfrage, ob man eine externe Referenzspannungsquelle mit allen seinen Zusatzbauelementen unterbringen muss um eben über Pin 35 "ADC_VREF" ein präzisere Spannung im Bereich von 3.25 bis 3.3 Volt einspeißt, oder ob man sich die Mühe macht den DC/DC b.z.w. StepDown-Wandler in seiner Ausgangsspannung so auswählt, oder dimensioniert damit man mit einem LDO und einer möglichst geringen Dropspannung dann nur noch mal zur Verbesserung der Eingangsspannung beiträgt. Gute LDO-Regler ( Low-Drop ) erreichen hier selbst bei einem Spannungsunterschied zwischen EIngangs- und Ausgangsspannung von weniger als 300 mV eine Restwelligkeit von unter 100µv bei gleichzeitig weniger Platzbedarf im Vergleich zu einer externen Referenzspannungsquelle.
    Die Bereitstellung der Versorgungsspannung für den PICO zweistufig aufzubauen, zuerst den großen Sprung von 24 Volt auf etwa 5.5 bis 6.0 Volt und diese dann noch einmal mittels LDO auf 5.0 Volt zu reduzieren, kann durchaus sinnvoll sein.

    Die ADC Eingängen am PICO unter den Standardumständen mit einer Standardversorgung via USB ohne eine besonderes Augenmerk auf die Versorgungs- b.z.w. Referenzspannung zu lenken, liefern etwa die Genauigkeit einer 10 % Schätzung. Ich kann leider aus der Gesamtbeschreibung deinerseits nicht abschätzen, ob du mit einem solchen Meßfehler leben könntest, oder ob es mittels Software notwendig werden würde, diese Meßwerte zu glätten oder / und zu Filtern, um die gewünschte Funktion erreichen zu können. Dabei muss man immer im Auge behalten das solche Software.Lösungen immer mit einem erheblichen Rechenaufwand, und einer entsprechenden Latenz einhergehen.

    Es gibt in diesem Forum schon sehr viele Beiträge, welche man sehr leicht über die Forensuche findet, wo diese Probleme um die erzielbare Genauigkeit mit einem PICO angesprochen werden, und ebenso unterschiedliche Lösungswege aufgezeigt werden.

    Guten Morgen,

    für eine kleines Projekt mit einer einfachen Steuerungsaufgabe habe ich mir zwei Klassen geschrieben, welche jeweils intern einen Timer zur Aktualisierung verwenden.
    Dabei handelt es um eine Klasse zur Displayansteuerung. Welche ein auf einen 128x64 Display, 4 Textzeilen als Variable bereitstellt, und diese mit einer Timer-Wiederholrate X auf dem Display angezeigt, bzw. aktualisiert werden sollen.
    Die zweite Klasse liest nun ein Temperatursensor aus, und trifft die eigenständig anhand von vorgegebenen Parametern ob eine Zuluftklappe geöffnet oder geschlossen werden muss, und regelt zudem einen Lüfter via eines PWM Signals.

    Die Funktion der "Luftsteuerungsklasse" ist schon fertig, und läuft auch schon vollständig fehlerfrei und autonom.
    Nun möchte ich als Information folgende Dinge auf dem Display ausgeben:
    - Lüfterdrehzahl als Prozentangabe

    - den Zustand der Zuluftklappe offen oder geschlossen

    - die Außen- und Innentemperatur jeweils für sich getrennt in einer Zeile.

    Wie bekomme ich es nun hin, einen Datenaustausch zu machen ? In der "Luftsteuerungsklasse" sind all diese Variablenwerte in self.<name> gespeichert bzw abrufbar. Am liebsten wäre es mir, wenn diese Display-Klasse sich die Werte allein abholt.

    Guten Tag Roland53,

    wenn ich deinen Code richtig verstanden habe, würde ich an deiner Stelle die zeitmäßige Trennung in der Variablen Ti außerhalb, also dann in der Übergabe zur Display Routine, machen.
    Dazu kannst du ein wichtiges Merkmal von machine.time_pulse_us() nutzen. Wenn es zu einer Zeitüberschreitung kommt, gibt diese Funktion einen negativen Wert zurück. Das kann sehr effizient im Code der Displaydarstellungsroutine unterbringen. Zudem kannst du diese Displayroutine auch als Klasse schreiben, und einen Counter mitlaufen lassen, welcher die Displayaktualisierungen mitzählt. Anhand dieser, gestartet bei der ersten Wertübergabe eines negativen TI Wertes, kannst du dann diesen Counter dazu nutzen, über deine angestrebte Aktualisierungsrate zu ermitteln, wie lange schon der negative Impuls nicht mehr erkannt wird.
    Ich kann jetzt so ohne praktische Tests nicht einschätzen wie zeitkritisch dein Code ist. Jedoch mit der Aussage von Dennis89 und Franky07 diese Daten aus deiner Funktion herauszulösen, kann man bei einem Pico, wenn keine anderen wichtigen Dinge anstehen, aber der Erfassungscode oberste Priorität genießt, diese Displayroutine als _Thread im sekundären Core laufen lassen. Die Übergabe zwischen den beiden Core's sollte problemlos funktionieren.
    Vielleicht kann Dennis89 hierzu noch einmal eine ergänzende Aussage machen, wie man effektiv einen Datenaustausch zwischen einer Hauptprogramm (__MAIN__) -Routine und einem Thread im sekundären Core gestaltet.

    Für den Fortgang deines Projektes wäre es noch gut zu wissen, wie nun diese Pumpe tatsächlich gesteuert wird ? Ob es nur ein einfaches Schaltsignal ist, oder ob diese Pumpe doch über eine Art Drehzahl- /Leistungsregulierung gesteuert wird ?
    Ebenso habe ich noch nicht ganz verstanden, wie das mit den oberen Zwischenspeichertanks funktionieren soll ? Haben diese alle das gleiche Füllstandsniveau, oder verfügt jeder Tank über einen eigenen Abschaltsensor, wenn diese befüllt werden ?
    In diesem Falle müsste es auch auch eine Art Ventilsteuerung geben !? Vielleicht kannst du Roland53 hierzu mal einige ergänzenden Ausführungen machen.

    Guten Morgen,

    Geile Lösung! Da bin ich echt sprachlos!

    Was ist daran so komisch, ein Komparatorreferenzsignal mittels eines Potentiometers bereitzustellen ? Wahrscheinlich reicht dein Grundwissen auch hier wieder einmal nicht aus, was bei einem Komparator passiert. Die Idee ist an für sich gar nicht so schlecht. Etwas aufwendiger in den Kosten, aber dennoch mit einem geringen Aufwand umsetzbar - zudem sehr flexibel. Was würde wohl passieren, wenn er eine Spannungsbegrenzung via einer Z-Diode herbeiführen würde ? Er hätte in der Auswertung eine zusätzlichen, also falschen, negativen Impuls in der Erfassungskette. Das Signal einstutzen und dann wieder mit einem Komparator auf den gewünschten Pegel anzuheben ist noch nicht einmal eine unübliche Methode. Dazu muss man nur verschiedene Nachschlagewerke benutzen, welche auch als PDF im Netz veröffentlicht wurden, und sich mit Einsteigerschaltungen /-experimenten des RasPi beschäftigen. Mir selber sind mehrere Nachschlagewerke bekannt, welche es mal zu kaufen gab, und nun als "PDF-Sicherheitskopie" im Netz herumgeistern, wo diese Methode - dieser Aufbau verwendet wird. Darunter Bartmann und Koffler, um nur einige Autoren beim Namen zu nennen.

    Guten Tag,

    Ich habe nie behauptet, dass das Python sein soll - im Gegenteil - ich habe explizit Pseudocode geschrieben. Ich stelle weder den Anspruch, hier lauffähigen Python Code zu posten noch den dass er frei von Tippfehlern ist. Das überlassa ich dir.

    Es gibt einen Unterschied, welcher auch für Pseudocode zutrifft ! Das beginnt bei der korrekten und einheitlichen Nutzung eines Syntax ( ob real anwendbar oder nur zur Versinnbildlichung ). Dann, was aber hier gar nicht zur Diskussion stand, ein Fehler in der Programmlogik. Dein Code in seiner Urform ist ja noch nicht einmal frei von Syntaxfehlern, wenn man die unterschiedlichen Schreibweisen von Variablen und Funktionen betrachtet. Wenn man zudem auch noch ein Lob dafür einfordert, für ein Stückchen Code welches von mehreren Mitglieder sowohl in der Struktur, dem Syntax, wie auch in der Programmlogik kritisiert wird - wohl auch berechtigt - sollte mal etwas herunter kommen.
    Auffällig ist hier und insbesondere bei dir, du kritisierst egal bei welchem Mitglied immer wieder die korrekte Schreibweise, den Satzbau, und auch jeden nur erdenklich kleinen Schreib- oder Tippfehler. Würdest du diesen Maßstab mit der gleichen Wichtung mal auf deine Texte und Codes anwenden, müsstest du zu einer gewissen Erkenntnis kommen !

    Ich stelle weder den Anspruch, ... dass er frei von Tippfehlern ist.

    Du darfst also Tipp- und Schreibfehler produzieren, wenn andere Mitglieder es tun, nutzt du es um über diese herzufallen -> ein sehr klares Bild was hier über deinen Charakter gezeichnet wird.

    Schönes Wochenende

    Guten Tag

    Wenn ja waere es nett wenn der TE den Thread mit der Erklaerung woran es lag beenden wuerde

    Ich habe den Dreck in die Ecke geschmissen, nachdem mich diese Mimose dumm angemacht hat, weil ihm offensichtlich meine Antworten auf seine Nachfragen nicht gepasst haben.
    Ursache -> unbekannt !!!
    Ich habe mir von einem anderen Anbieter die gleichen Sensoren besorgt. Mit dem identischen Aufbau, mit dem gleichen Programm funktioniert es so, wie es im Tutorial beschrieben wurde.

    hyle der Pullup befand und befindet sich nun wieder unmittelbar am Controllerboard.


    Iich weine solchen herablassenden Spinnern keine Träne nach, welcher einfach behaupten eine Fragensteller würde bewusst Lügen verbreiten.

    außer Du möchtest Nebelkerzen streuen

    Wahrscheinlich ist es so, es gibt immer wieder Menschen die mit einer Antwort nicht klar kommen, welche auf einen von ihnen selbst gestellte Frage mit einer von der eigenen Erwartung abweichenden Aussage beantwortet werden. Wenn er im Vorfeld schreibt

    Die "Temperatur" 85 deutet auf Probleme in der Spannungsversorgung hin.

    dann werte ich das als Kontrollauftrag und prüfe das nach. Dieses als Anlass zu nehmen, dem Fragesteller zu unterstellen er würde bewusst falsche Informationen weitergeben - ist schon ein Frechheit an sich.
    Nun ist er und das offensichtlich kaputte Zeugs weg. Das Thema hat sich für mich erledigt.

    Jedoch die tatsächliche Ursache wird wohl niemals einer erfahren.

    Guten Abend,

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

    Mit nur einem Sensor funktioniert das Auslesen der "devices" ohne PullUp Widerstand gar nicht. Diese "list" bleibt leer.

    Erst wenn ich einen Widerstand größer 3,3 kOhm einsetze, wird auch der Sensor über den Device-Scan erkannt.

    Ich wusste gar nicht das es hier Mitglieder gibt, welche über eine :gk1: verfügen. Wie es dir doch gelingt aus der Ferne mit einer Bestimmtheit vorherzusagen, welchen Aufbau ich gewählt habe, obwohl ich sowohl bei meinen ersten Versuchen noch ein Steckbrett genutzt habe, habe ich dann auch, weil Kontaktprobleme bei solchen Brettern bekannt sind, alles verlötet aufgebaut. Damit hast du also die wohl göttliche Gabe aus der Ferne zu sagen und exakt zu bestimmen das eine der 68 Lötstellen fehlerhaft ist. Ich bewundere deine Begabung.
    Aber falls du es nicht verstanden haben solltest, ich hatte bereits in meiner ersten Ausführung geschrieben:

    So gibt einer dieser Sensoren ständig nur den Wert von 85 aus, ein Anderer 73,5 usw.

    Keiner dieser Sensoren liefert ob mit oder ohne Pullup, gesteckt oder gelötet einen annähernd richtigen oder passenden Temperaturwert zurück. Alle geben egal was ich in welcher Konfiguration durchprobiert habe, immer eine Temperatur Minimum 40 Grad zu viel an. Wenn du mir jetzt unterstellst, das ich auch zu blöd zum Löten bin, oder zu dumm bin ein Meßgerät zu bedienen, sowie nicht weis was eine Minimalwertfunktion ist, dann sind deine Aussagen ein Zeichen von völliger Selbsterhöhung. Ich könnte auch ein 40 MHz Digital-Oszilloskop anschließen, um die Versorgungsspannung, oder auch das Datensignal zu Monitoren. Nur glaube ich nicht das ein geänderter Aufbau mit den Kontrollmitteln dazu führt, das auf einmal diese Sensoren korrekte Werte ausgeben werden.