MCP3008 zu ESP32

  • Moin Leute


    Hat zufällig jemand nen kleines Stück Code um mit dem ESP32 via SPI den mcp3008 auszulesen?


    Bin seit drei Tagen am suchen und probieren, bekomms aber nicht auf die Reihe.


    Falls sich jemand fragt warum den mcp3008 und nicht intern. Ich hab mit dem internen AD-Wandler große Probleme.

    Erst funktionieren sie, dann manchmal, und später dann gar nicht mehr. *grmml*

    Es kommt dann nur noch 0 als Ausgabe.


    bis denne

    Jan


  • Moin Jürgen

    Guter Fund! Auf den ersten Blick sieht es so aus als wenn es funktionieren könnte.

    Alles das was Adafruit_MCP3008.cpp aufgerufen wird sollte auch für den ESP32

    verfügbar sein. Ich werd das mal checken.


    Danke für den Tip.

  • Zwischenbericht


    Gestern hab ich die Ursache für die Probleme mit dem ESP32 gefunden.

    Ein guter Teil der Steckbrücken fürs Steckbrett hatte ne Unterbrechung, nen Wackelkontakt

    oder war hochohmig. Das so einfache Dinger kaput sein können hat ich nicht auf dem Schirm.


    Und aus der Kategorie "wer misst, misst Mist", Ich hatte am Ausgang des Potis gemessen, aber

    nicht am Eingang des AD-Wandlers, so sah alles gut aus, war es aber nicht.


    Nach durchmessen der ganzen Brücken und neu Verkablung der Schaltung gehen auf einmal

    die AD-Wandler des ESP32 wieder einwandfrei. Welch wundersame Fügung :whistling:


    Im ersten Paket waren 12 von 65 Brücken defekt, im zweiten 4 von 65. Am Rande: Einer bekannten

    aus China hab ich das erzählt, sie meinte nur "Ist doch ne gute Quote".


    bis denne

    Jan

  • Nun läuft es :)


    Vor einiger Zeit bin ich angefangen mein Haus etwas smarter zu machen. Dazu gehören Roladen in Büro und Wohnzimmer, mein Kühlschrank, innen und außen Temperatur und der Akku meines kleinen E-Flitzers.

    Zuerst hab ich alles mit RPis aufgebaut. Vier Stück sind es aktuell. Für drei RPis würde eigentlich ein Mikrocontroller ausreichen. Also werd ich jetzt so nach und nach die drei RPis durch ESP32 ersetzen.


    Das Konzept sieht folgendermaßen aus:


    Zentrale ist ein RPi auf dem Mosqitto läuft. Mosqitto ist ein mqtt-Server und übernimmt die gesamte

    Nachrichtenverteilung. Zusätzlich laufen eine Temperatur Datenbank und die Rolladensteuerung auf dem RPi.


    Visualisierung und Steuerung erfolgt von meinem Win10 Rechner aus. Siehe bild oben. Ein kleines Fenster

    das die wesentlichen Daten anzeigt und durch die Hintergrundfarbe anzeigt on alles ok ist ober halt nicht.

    Zu einigen Funktionen kann man Details abrufen. Z.B. den Spannungsverlauf der Akkus vom E-Auto.


    Als erstes hab ich den RPi im E-Auto abgelöst. Siehe großes Fenster oben. Angezeigt wird die max. und min. Spannung der letzten Minute im kleinen Fenster, bzw. der letzten 400 Minuten im Detail-Fenster.

    Es werden 20 Messungen durchgeführt, Die beiden kleinsten und die beiden größten Werte werden

    verworfen. Die übrigen Messwerte werden gemittelt. Das 10 mal pro Minute. von den 10 Werten

    wird der niedrigste und der höchste gespeichert / übermittelt. Über eine Minute entstehen beim

    fahren sehr unterschiedliche Belastungen. Um das zu erfassen müßte ich entweder sehr viel mehr

    Daten speichern .. oder halt die Extremwerte. Oben kann man gut die Fahrt erkenne, dann eine kleine

    Pause und den Ladevorgang.


    Nachdem das Problem mit den Steckbrücken gelöst war ging es weiter .. mit Problemen.

    Der AD-Wandler im ESP32 hat so seine Probleme, die Kurve Spannung/Digitalwert ist nicht

    linear sondern leicht nach oben gebogen. Sie ist also bei 0V steiler als bei 3V. Da ich nur einen

    kleinen Bereich um 2,6 V brauche, habe die Kurve als linear betrachtet. Aus der Schule solltet ihr

    noch y=mx+b kennen. x ist der Wert vom AD-Wandler, m die Steigung, b der Offset und y die

    gemessene Spannung. Damit hab ich eine Genauigkeit von +-0,05 V erreicht. Voll kommend

    ausreichend für meine Zwecke. Ich hab das dann noch an einem 2. und 3. ESP32 ausprobiert.

    Für jeden ESP32 mußte ich die Kurve neu kalibrieren.


    Weiter gings dann mit der Spannungsversorgung. Am Akku liegen Spannungen bis 48V an.

    Der ESP32 braucht 3,3V oder 5V. Als erstes habe ich einen Stepdownwandler von 7-60V auf 3,3V

    600 mA ausprobiert. Beim Verkabeln mit Meßschnüren ist mir ein Fehler unterlaufen und ich hab

    den ESP32 gehimmelt. Hat hier schon mal jemand erwähnt das mehr als 3,3V nicht gesund ist für

    solche Chips? Ja, es hat jemand erwähnt .. und er hatte recht.

    Ok, neuer ESP32 und weiter gehts, da ist die Spannung auf 1,7V zusammen gebrochen. Irgendwo

    hab dann gelesen das der ESP32 bis zu 800 mA beim verbinden mit dem WLAN braucht. Ok,

    nächsten DC-DC bestellt. 7-24V auf 3,3V 1,5A, angeschlossen ausprobiert, geht nicht, geht, qualmt.

    Beim dritten Versuch hat sich der Wandler in Rauch aufgelöst .. und den ESP32 gleich mit

    gehimmelt. Dann einen DC-DC bestellt 12V auf 5V 3A angeschlossen .. läuft zuverlässig. YEAH


    Fürs weitere basteln sind mir erstmal die ESP32 ausgegangen, 2 neue bestellt, beide kaput.

    3 neue bestellt, aus kaput. Nennt mich Killer. Hab wieder zwei bestellt.


    Ergo: Wenn jemand richtige Abenteuer erleben will, ESP32 sind bestens geeignet ^.^


    bis denne

    Jan