Atmega328p Zeitintervall passt nicht

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • djmsc wrote:

      Wasi wrote:

      Von PinD.0 ein Kabel auf GND dann 10KOhm und dann die 3,3V vom Bewegungsmelder?
      Richtig???
      Ja damit ein definiertes Signal anliegt. Ein Input ist immer Tri-State. Also offen und mit dem Pulldown ziehst du den Eingang auf Masse.Wenn jetzt ein High-Signal kommt wird es auch registriert.
      OK, das kann ich Nachvollziehen.
      Danke.
    • So hab ich es jetzt

      BASCOM Source Code

      1. 'Relais schalten mit dem mega328p
      2. 'Die 3te
      3. $regfile = "m328pdef.dat"
      4. $crystal = 8000000
      5. $hwstack = 32
      6. $swstack = 8
      7. $framesize = 24
      8. Dim Var As Byte
      9. Config PIND.0 = Input
      10. Config PORTB.0 = Output
      11. Waitms 3000 'Warte 3sec
      12. DO
      13. If PIND.0 = 1 then
      14. Portb.0 = 1 'Relais schalten auf Low
      15. Waitms 10000
      16. Else
      17. Portb.0 = 0 'Relais schalten auf Low
      18. End If
      19. Loop
      20. End
      Display All
    • Hallo Wasi,
      so wird dein Code ja jetzt laufen.

      In deinem Post schreibst du:
      Port B wird aber nicht auf High..
      Aber nach gerraumer Zeit (Gefühlt ewig) Schaltet das Relais doch noch. Warum auch immer???

      Falls du einen PID als Sensor benutzt, und dort ein BISS001 Chip werkelt, schau dir mal dessen Ausgangssignal an. Ich habe dort einen ähnlich verzögerten Signalwechsel gemessen.
      Meist nach einem Spannungsausfall.

      Gruß Rudi
      Immer Glück haben ist fast wie können..
    • Rudi Einstein wrote:

      Hallo Wasi,
      so wird dein Code ja jetzt laufen.

      In deinem Post schreibst du:
      Port B wird aber nicht auf High..
      Aber nach gerraumer Zeit (Gefühlt ewig) Schaltet das Relais doch noch. Warum auch immer???

      Falls du einen PID als Sensor benutzt, und dort ein BISS001 Chip werkelt, schau dir mal dessen Ausgangssignal an. Ich habe dort einen ähnlich verzögerten Signalwechsel gemessen.
      Meist nach einem Spannungsausfall.

      Gruß Rudi
      Hallo Rudi,

      laufen, ja, nur nicht wie erwartet, warum auch immer.

      Das High setzen auf Port B lag an der Taktung des mc's, der jetzt auf 8Mhz läuft.

      Ich nutze den RCWL-0516 als Bewegungsmelder und ein 1 Kanal Relais.


      Im moment möchte ich mal schauen das alles so wie Programmiert funktioniert, um das auch nachvollziehen zu können, den momentan sieht's nicht danach aus.



      BASCOM Source Code

      1. 'Relais schalten mit dem mega328p
      2. 'Die 3te
      3. $regfile = "m328pdef.dat"
      4. $crystal = 8000000
      5. $hwstack = 32
      6. $swstack = 8
      7. $framesize = 24
      8. Dim Var As Byte
      9. Config PIND.0 = Input
      10. Config PORTB.0 = Output
      11. Portb.0 = 0 'Relais schalten auf Low
      12. DO
      13. If PIND.0 = 1 then
      14. Portb.0 = 1 'Relais schalten auf High
      15. Waitms 5000
      16. Else
      17. Portb.0 = 0 'Relais schalten auf Low
      18. End If
      19. Loop
      20. End
      Display All
      Das ist der Code momentan und wie ich das sehe passt das auch.


      Ich versuche mal später ein Video Hoch zu laden um das zu Veranschaulichen was ich nicht verstehe.
    • Was passt denn nicht?

      schau dir mal das an, da ist der gleiche Sensor verbaut,

      Notbeleuchtung

      Da findest du auch einen Verweis auf das Datenblatt vom RCWL-0516

      Du möchtest dass bei "Bewegung" das Relais 5 Sekunden an ist und dann aus?
      Messe mal die Ausgangsspannung am Sensor, also das was du bei PIND.0 abgreifst.
      Der Sensor an sich hat ja auch schon ein monostabiles Verhalten. Bei meinem Sensor sind das ca. 6 Sekunden.
      Ob es Streuungen gibt von Platine zu Platine weiß ich nicht ist aber zu erwarten.

      Kann man aber auch direkt am Sensor einstellen
      Wissenswertes
    • Hier nochmals das Programm das mit dem Aufbau funktionieren sollte.

      BASCOM Source Code

      1. 'Relais schalten mit dem mega328p
      2. 'Die 3te
      3. $regfile = "m328pdef.dat"
      4. $crystal = 8000000
      5. $hwstack = 32
      6. $swstack = 8
      7. $framesize = 24
      8. Dim Var As Byte
      9. Config PIND.0 = Input
      10. Config PORTB.0 = Output
      11. Portb.0 = 0 'Relais schalten auf Low
      12. DO
      13. If PIND.0 = 1 then
      14. Portb.0 = 1 'Relais schalten auf High
      15. Waitms 5000
      16. Else
      17. Portb.0 = 0 'Relais schalten auf Low
      18. End If
      19. Loop
      20. End
      Display All
      Und hier die 2 Videos.

      Video 1

      Video 2
    • Wasi wrote:

      Das sind 2,7V hinter den 10KOhm und davor 3,3V
      Danke für die Info, werde ich mal schauen.

      Das glaube ich nicht.

      Bitte messen
      1) Direkt am Sensorausgang OUT gegen GND, KEIN Kabel zum 328er gesteckt
      ohne Bewegung? irgendwas gegen 0,V?
      mit Bewegung? irgendwas gegen 3,3V?
      2) Jetzt Kabel an OUT und Verbinden mit Pin 2 am 328er

      Mitch64 wrote:

      Du musst den Reset permanent über einen Pull Up auf VCC halten, sonst läuft dein Programm nicht.

      Dann musst du die Blaue Leitung direkt an den Pin 2 anschließen.

      Dann sollte es gehen.
      3) das berücksichtigt?

      Für das Verhalten in Video 1 habe ich eine teilweise Erklärung, zumindest bei deinem Anschluss mit OUT Sensor an PIN1 (Reset)

      Der 328er reagiert nicht wirklich auf deine Programmierung denn:

      Ist der Sensor AUS --> Ausgang geht auf GND --> der 328er kriegt einen RESET und tut nichts mehr --> Relais aus
      Ist der Sensor EIN --> Ausgang geht auf 3,3V --> der 328er arbeitet normal --> Relais ein (warum auch immer, das ist noch zu klären).
      jetzt kommts: Die Zeitkonstante deines Sensors wird bei 2-6 Sekunden liegen. Dann schaltet der wieder auf GND und zieht den RESET runter. AUS.

      Warum gehts dann nicht wenn OUT Sensor auf PIN2 klemmt? Probier mal einen anderen Eingang eines anderen PORTS, z.B. den PC.0
      PD0/PD1 sind auch für die serielle Schnittstelle verantwortlich. Ich hatte das mal dass sich trotz neu Programmieren PD0/PD1 nicht mehr ansprechen ließen nachdem ich versehentlich den Befehl $baud im Listing vergessen hatte rauszulöschen.

      Sie wollten einfach nur seriell bleiben und haben alle Versuche abgelehnt sich wieder als normale Ports zu verhalten.

      WorstCase mal einen anderen 328er verwenden.

      The post was edited 2 times, last by Riedleweg ().

    • Mitch64 wrote:

      Du musst den Reset permanent über einen Pull Up auf VCC halten, sonst läuft dein Programm nicht.
      Das braucht man nicht, da die AVR den PullUp schon am Resetpin schon eingebaut haben.
      Siehe dazu das Datenblatt vom jeweiligen AVR.

      Riedleweg wrote:

      Die Zeitkonstante deines Sensors wird bei 2-6 Sekunden liegen.
      Ich vermute auch, dass der Sensor für längere Zeit eingeschaltet bleibt und nicht nur einen kurzen Impuls ausgibt.

      @Wasi stopp einfach mal, ohne AVR, wie lange der Sensor auf High ist.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • djmsc wrote:

      Das braucht man nicht, da die AVR den PullUp schon am Resetpin schon eingebaut haben.
      Siehe dazu das Datenblatt vom jeweiligen AVR.
      Der PullUp wird in der Größenordnung wie die anderen PullUps liegen, mit denen mal Pins belegen kann.
      Und das ist ziemlich hochohmig (geschätzt zw. 20k und 50k Ohm).
      Welcher Wert der Reset-PullUp hat, konnte ich im Datenblatt nicht finden.

      Ich würde mich darauf nicht verlassen, wenn eine Schaltung nicht funktioniert.
      Oder zumindest mal mit dem Multimeter messen, ob der Pegel auch nahezu 5V hat.
      Wenn nicht, externen PullUp ran. Dann ist diese Fehlerquelle zumindest ausgeschlossen.

      Hochohmige Eingänge können leicht Störungen einfangen und darauf reagieren.
      Das Relay kann z.B. solche Störungen verursachen.
    • Hallo Wasi,

      ich habe mal einen Sensor zur Steuerung eines el.-mech. Zählers verwendet und in diesem ist auch ein BISS001 verbaut.
      Ich hatte seinerzeit auf den Einsatz eines MC verzichtet, da diese Anordnung sehr stabil lief.
      Im beigefügtem Schaltbild ist vielleicht nur das Timing für dich interessant, denn die Einschwingzeit des Sensors ist ziemlich variabel.
      Im übrigen stimme ich mit den Darstellungen von @Riedleweg bezüglich Timing überein.

      Gruß Rudi
      Files
      Immer Glück haben ist fast wie können..