Hysterese in Programm schreiben

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • @veryoldman ich versteh' nicht, warum du überhaupt an Oamps denkst, wenn du Spannungen von 0..10V hast. Da reicht doch ein Spannungsteiler. Oder willst du nur einen Teilbereich des möglichen Messumfangs auf 0..5V bringen?

      Bezüglich der Haltbarkeit von eeram-Werten: die erste Speicherzelle scheint nicht so stabil zu sein, wie der Rest. Das ließt man zumindest immer wieder. Deswegen wird die oft nicht verwendet. Ansonsten ist das schon langzeitstabil, auch ohne Stromversorgung. Du hast ja in deinem Programm eine Abfrage drin, if eeram-Wert>99 then eeram-Wert=0. Wenn du die 99 durch den maximalen Wert deines Trockenvorgangs ersetzt, dann bis du ja bei Störungen des eerams auf der sicheren Seite, verdorren kann dann nix.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo Christian, tschoeatsch,

      @christian,
      lange nichts von Dir gehört bzw. gelesen!
      Der Inhalt wurde aber teils gelöscht! Kommt ganz sporadisch halt doch vor. In meinem Fall der Sollwert von Temp, könnte aber auch der Sollwert von Feuchte sein! Wie soeben von tschoeatsch erwähnt, handelt es sich hierbei um eine Instabilität der Speicherzelle(n). Warum aber auch immer, das wäre der Punkt über welchen man sich dann noch unterhalten müsste! Ich hab das Beschreiben und Auslesen bis jetzt erst einmal genutzt für meine Klimaanlagen-Steuerung (manuell) im Auto um den Kompressor zu steuern! Da geschieht es allerdings auch ab und zu, dass ein eingegbener Sollwert sich verändert ohne dass eine Taste betätigt wurde!

      @tschoeatsch,
      Frage eines unwissenden: Kann ich denn direkt, ohne die erste Speicherzelle zu benutzen, höher gehen, z.B. auf 4 oder 6? Bis jetzt hab ich gedacht, das wäre nicht möglich.
      An OPAmps hab ich gedacht um die Fühler an die AVR Eingänge anzupassen. Spannungsteiler wären die einfachste Lösung, 90K zu 9,1 z.B.
      Ja, diese Abfrage hab ich in dem Code, weil ich verhindern möchte, dass die Werte über 100 gehen. Man könnte den Wert vielleicht auf 50% setzen, damit ist man dann näher am Sollwert dran. Das ist aber eine andere Geschichte!

      Gruß
      Klaus
    • veryoldman schrieb:


      Kann ich denn direkt, ohne die erste Speicherzelle zu benutzen, höher gehen, z.B. auf 4 oder 6? Bis jetzt hab ich gedacht, das wäre nicht möglich.
      Ich würde den Befehl Readeeprom gar nicht nehmen.
      Hier mal die frei übersetzte Hilfe:

      Auszug aus der BasCom-Hilfe schrieb:

      Diese Anweisung dient der Abwärtskompatibilität mit BASCOM-8051.Sie können anstelle von READEEPROM auch die ERAM-Variable verwenden:
      Also einfach mit DIM wie im folgenden Beispiel gezeigt, dimensionieren.
      Die erste Speicherzelle des EEPROMs wird durch die Variable Dummy übersprungen.

      BASCOM-Quellcode

      1. Const Config_Max = 16 ' maximale Größe des Konfigurationsspeichers
      2. Dim A As Byte
      3. Dim X As Byte
      4. Dim Y As Byte
      5. Dim W As Word
      6. Dim AppconfigRAM(Config_Max + 1) As Byte ' Konfig-Bereich (Allg.) im EEPROM
      7. Dim AppconfigKeyRAM(2 , 12) As Word ' Konfig-Bereich (Tasten) im EEPROM
      8. Dim Dummy As Eram Byte ' Erstes Byte auslassen
      9. Dim AppConfigCheck As Eram Byte ' Prüfbyte
      10. Dim Appconfig(Config_Max + 1) As Eram Byte ' Konfig-Bereich (Allg.) im EEPROM
      11. Dim AppconfigKey(12) As Eram Word ' Konfig-Bereich (Tasten) im EEPROM
      12. A = AppConfigCheck
      13. If A = 255 Then ' Konfig noch nicht im ERAM
      14. For Y = 0 To Config_Max
      15. X = Lookup(Y , ConfigDefault)
      16. Appconfig(Y) = X
      17. Next
      18. For Y = 0 To 11
      19. W = Lookup(Y , KeyData)
      20. AppconfigKey(Y) = W
      21. Next
      22. AppConfigCheck = 0
      23. End If
      24. For X = 0 To Config_Max
      25. AppconfigRAM(X) = Appconfig(X)
      26. Next
      27. For X = 0 To 11
      28. W = AppconfigKey(X)
      29. AppconfigKeyRam(0 , X) = W - 2
      30. AppconfigKeyRam(1 , X) = W + 2
      31. Next
      32. ConfigDefault:
      33. Data 1 ' LCD Backlight
      34. Data 0 ' Freeplay (0=aus)
      35. Data 30 ' MP3 Volume
      36. Data 0 ' MP3 EQ
      37. Data 0 ' Spielpause
      38. Data 0 ' Trackpfad
      39. Data 255
      40. Data 255
      41. Data 255
      42. Data 255
      43. Data 255
      44. Data 255
      45. Data 255
      46. Data 255
      47. Data 255
      48. Data 255
      49. Data 255
      50. Data 255
      51. KeyData:
      52. Data 192% ' Taste 0
      53. Data 92% ' Taste 1
      54. Data 174% ' Taste 2
      55. Data 238% ' Taste 3
      56. Data 100% ' Taste 4
      57. Data 180% ' Taste 5
      58. Data 244% ' Taste 6
      59. Data 108% ' Taste 7
      60. Data 186% ' Taste 8
      61. Data 248% ' Taste 9
      62. Data 114% ' Taste *
      63. Data 254% ' Taste #
      Alles anzeigen
    • Hallo Zitronenfalter, Stefan, tschoeatsch,

      ich hab zwar nicht unbedingt die Ahnung wie ihr aber der Sinn dieses aufgeblähten Codes erschließt sich mir nicht unbedingt. Ich glaube auch nicht, dass das das sproradische Auftauchen des Fehlers beseitigt oder? Wenn der Fehler des verloren Sollwertes nur mal ab und zu geschieht, kann ich damit leben. Ich hab auf der Schaltung alle Spannungsversorgungen und notwendigen Pins gut abgeblockt. In der Spannungsversorgung hängt auch ein 1F 5V und hält für kurze Zeit die Versorgung aufrecht! Jetzt aber mal zu meiner Frage, kann ich die Adressen im EEProm zufällig auswählen oder muss ich unbedingt bei 1 anfangen?

      @tschoeatsch,
      Ich will schon den gesamten Bereich anzeigen, schon bedingt durch den Feuchte-Messer, der liegt im Schrank ja schon bei ca. 8,8V = 88% . Der Temperaturfühler könnte auch ohne Vorbeschaltung an Mega8, da liegt der gemessene Wert bei ca. 1,7V = 17°. Wenn ich tatsächlich einen bzw. zwei OPs benutzen sollte, dann müssen diese dann auch bis 0V runtergehen (Rail to Rail), muss ich dann mal schauen, wo ich da einen bzw. welchen ich bekomme. Das mit der Hysterese ist anscheinend jetzt in Ordnung, danke dafür!

      Gruß
      Klaus
    • Lass dich von dem code von Zitronenfalters Beispiel nicht verwirren. Interessant sind nur die 'dim'-Anweisungen. Schau auch mal hier
      avrhelp.mcselec.com/readeeprom.htm
      dim x as eram byte legt den Speicherort für die Variable x in's eram. Und zwar in der Reihenfolge, wie sie 'gedimt' werden. Auf die Art kann man die schwache erste Stelle im eram mit einem dummy belegen, den man aber zu nix verwendet. Das restliche eram ist ja stabil.
      Oder besser gesagt, das erste byte kann überschrieben werden
      According to a data sheet from ATMEL, the first location in the EEPROM with address 0, can be overwritten during a reset so don't use it.
      Ansonsten kannst du mit readeeprom jede Adresse anspringen, du musst die halt angeben.

      Ich erkenne mit meinen schwachen Elektronikkenntnissen immer noch nicht die Notwendigkeit von Ops.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo tschoeatsch,

      keine Angst, verwirrt bin ich schon, das muss aber am alter liegen! :/ ?( :S In der Bascom Hilfe hab ich auch schon gesucht aber mein Problem sind die doch ziemlich fehlerhaften Englisch Kenntnisse. Ist leider so! Gibt es die Hilfe nicht irgendwo auch in German Language? Würde mir sehr helfen.
      Was die OPs anbelangt, um Istwerte zu erlangen, die ziemlich genau sein sollen, so wird man nicht um OPs herum kommen. Mit einem Spannungsteiler bekommt man diese Genauigkeit nicht hin. Vielleicht mit paralell Schaltungen von Widerständen aber bleibt das Ganze dann auch Linear? In diesem meinem Fall aber, ist diese 100%ige Genauigkeit aber garnicht gefragt, es kommt hier nicht auf 1 oder 2° oder % an. Ich hab hier noch ein paar OPs liegen (Rail to Rail), die könnte ich verwenden, könnte sie aber auch für meine MoBa gebrauchen! :D ;)
      Ich schau mir die Dim Anweisungen von Zitronenfalter "Schmetterling" nochmal an, vielleicht steig ich da ja durch! Versprochen!

      Gruß
      Klaus
    • @veryoldman Spannungsteiler sind linear, zumindest rechnerisch und wenn der Ausgang damit nicht überlastet wird. Was du mit Parallelschalten bezwecken willst, kann ich nur erahnen. Du brauchst keine bestimmten Widerstandswerte, wichtig ist nur, dass der Kontroller keine zu hohe Spannung abbekommt, auch beim Einschalten des Sensors und dessen Ausgang nicht zu stark belastet wird. Werlche % zu welcher Spannung gehört, ist völlig egal, das wird bei den weiteren Berechnungen berücksichtigt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo,

      bei Verwendung des Eprom ist es sehr ratsam Brownout zu setzen.

      Desweiteren:
      Dim E_Dummy As Eram Byte At &H00 >>>> sicherheitshalber nicht benutzen
      Dim E_variable As Eram Byte At &H01 >>>> Speicherzelle 1 des Eprom wird belegt
      Dim E_variable_1 As Eram Byte At &H02 >>>> Speicherzelle 2 des Eprom wird belegt
      Dim E_variable_2 As Eram Word At &H03 >>>> Speicherzellen 3+4
      Dim E_Variable_3 As Eram Byte At &H05
      Dim E_variable_4 As Eram Byte At &H01FF >>>> letzte Speicherzelle (512Byte)
    • veryoldman schrieb:

      In der Bascom Hilfe hab ich auch schon gesucht aber mein Problem sind die doch ziemlich fehlerhaften Englisch Kenntnisse.
      Da hilft manchmal 'babelfish'. Und wenn's nicht hilft, ist es meistens lustig.
      Hier würde es helfen
      babelfish.PNG
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo tschoeatsch,

      a_475_f10f3094 da bin ich wieder, in der Zwischenzeit hab ich versucht mit einem Rail to Rail OP die beiden Eingänge anzupassen, das ist zwar ein Weg aber ich habe ihn wieder verworfen. Nachteil des OPs, er läuft irgendwie weg wegen Temperatur (warum auch immer!)! Kann natürlich auch an den Widerständen liegen. Egal, Geschichte! a_563_31ebf57e
      Jetzt hab ich es mit sehr genauen 0,1% Kohleschicht Widerständen probiert und es klappt wesentlich besser, die hatte ich hier noch zu liegen. Damit kann ich gut leben, es sind 10K viertelwatt, man könnte den gemessenen Wert vielleicht noch genauer hinbekommen aber 1° bzw. 1% Abweichung macht den Kohl nicht fett. Jetzt werde ich noch versuchen die Tasten mit debounce zu entprellen, dann geht es ans Testen an der Anlage! Bin mal gespannt ob ich das vor Weihnachten noch hin kriege. a_357_9ede01a4
      Gruß
      Klaus
    • Hallo tschoeatsch,

      da bin ich wieder, in der Zwischenzeit hab ich versucht mit einem Rail to Rail OP die beiden Eingänge anzupassen, das ist zwar ein Weg aber ich habe ihn wieder verworfen. Nachteil des OPs, er läuft irgendwie weg wegen Temperatur (warum auch immer!)! Kann natürlich auch an den Widerständen liegen. Egal, Geschichte!
      Jetzt hab ich es mit sehr genauen 0,1% Kohleschicht Widerständen probiert und es klappt wesentlich besser, die hatte ich hier noch zu liegen. Damit kann ich gut leben, es sind 10K viertelwatt, man könnte den gemessenen Wert vielleicht noch genauer hinbekommen aber 1° bzw. 1% Abweichung macht den Kohl nicht fett. Jetzt werde ich noch die Tasten mit debounce entprellen, dann geht es ans Testen an der Anlage! Bin mal gespannt ob ich das vor Weihnachten noch hin kriege.

      Gruß
      Klaus
    • @veroldman:
      Vielleicht hilft Dir dieser TIP wegen OP's und Messung:
      Für mein Projekt benötige ich Messung von Spannungen bis 70V über interne Spannungsteiler eines OP's mit einer Genauigkeit von Millivolt - ich benutze hierfür die Texas-Instruments Serie INA. Genauer INA 157, INA 137 ... gibt da verschiedene. Ich messe allerdings Differenz Spannungen. Vielleicht hilfts Dir aber trotzdem,

      Lg Walter
    • Hallo Walter, hallo Leute,
      als Erstes, an alle ein herzliches, gesundes und nachträgliches neues Jahr 2018! trinkende-smileys-211

      Zu meinem Projekt kann ich euch mitteilen, es funktioniert und die Anlage wird diese Tage von mir in Betrieb genommen. Die Messspannungen (Temperatur und Feuchtegrad) werden über Spannungsteiler auf die ADC Eingänge gelegt. Ich hab dann doch auf OPs verzichtet!

      Gruß
      Klaus