GPIO geht erst nach Python Script

  • Hallo Leute,

    ich habe folgendes Problem. Ich habe mir einen Bodenfeuchtigkeitssensor aus einem koplanaren Kondensator gebastelt.

    Dazu hab ich ein kleinen Codeschnipsel mit wiringPi geschrieben um an den GPIO Pins abzufragen wann der Kondensator geladen ist und die Zeit die er dafür braucht zu messen.
    Das ganze funktioniert auch einwandfrei. Das Problem ist aber, dass das ganze nur funktioniert, wenn vorher das selbe programm in python geschrieben laufen lasse.
    Ich zeige euch am besten mal die Programme:


    Und die Funktion in C++ die von einem anderen Programm aufgerufen wird.


    das komische daran ist, dass von dem c++ Programm auch andere GPIOs genutzt werden. Die funktionieren allerdings einwandfrei. Es ist immer der Pin vom Sensor der spinnt. Habe auch schon den Pin des Sensors mal geändert. Selbes problem. es klappt wirklich immer erst wenn ich das pythonscript ausgeführt habe. Nach nem reboot geht es dann nicht mehr. Führe natürlich beide immer mit root rechten aus.

    Jemand ne Idee?

    Gruß
    Sc0rpe


  • Hi !
    Was sagt denn ein

    Code
    gpio readall


    nach einem Neustart ?
    Und was ändert sich dann nach dem durchlaufenlassen des Programms ?

    verwendet wird übrigens wie man sieht der wiringPi-Pin 6. Man sieht, dass der Pin jetzt auf OUT steht, allerdings sollte mein C++-Programm den Pin ja auch exportieren.

    Magic Happens....hab gerade mal updates auf den Pi installiert...jetzt gehts es....ich versteh die Welt nicht mehr.
    Egal. Hauptsache es geht jetzt.
    Danke.

  • Hallo Sc0rpe,

    leider geht aus Deinen Programm-Ausschnitten nicht hervor welchen GPIO-Pin Du genommen hast.

    Zum anderen ist die Messung der Zeit, die der Kondensator benötigt, um zwischen HIGH und LOW entladen bzw. zwischen LOW und HIGH aufgeladen zu werden, möglicherweise nicht das Maß der Feuchtigkeit, das Dir vorschwebt.

    HIGH bedeutet eine Spannung > 1,3 V, LOW eine Spannung < 0,8 V. Was Du hier also an Zeiten misst, entspricht Spannungspegeln zwischen LOW und HIGH. Du misst hier also an einer relativ steil verlaufenden Flanke der Auf- und Entladungskurve. Die Zeiten, die Du misst, entsprechen dem Durchstoß definierter Spannungswerte - ohne die exakten Werte zu kennen. Bei steil verlaufen Spannungs-Zeitkurven ist dort also mit wenig reproduzierbaren Werten zu rechnen.

    Wenn Du genauer arbeiten möchtest, müsstest Du die Spannungswerte über einen A/D-Wandler auslesen und über einen größeren Spannungsbereich z.B. von annähernd 0 V bis annähernd 3,3 Volt messen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Andreas,

    danke für deine Antwort. Wieder was gelernt.
    Hab den "Sensor" aber schon ein wenig ausprobiert. Die Werte sind nicht wirklich die besten, das stimmt. Sie schwanken doch ein wenig.
    Das ist aber okay, deswegen nehme ich ja mehrere Messungen und mittel diese. Ausreiser-Werte werden vorher rausgeschmissen. Mit dieser Methode sind meine werte bisher recht stabil. Was die Zeiten, dann bedeuten werde ich selbst noch "kalibrieren". Geht also durchaus auch so und der Aufbau ist einfacher.

    Ich verwende übrigens den wiringPi pin 6. hatte ich in den anderen Post geschrieben, da ich es oben vergessen hatte.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!