Eine ADC Verständnissfrage

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

    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!

    • Eine ADC Verständnissfrage

      Hallo Forum
      Ja, ich schon wieder.
      Wie ist das jetzt.
      Wenn der AREF Pin mit einer genauen 2,5V Spannung versorgt wird
      ändert sich dann der gemessene GETADC auch, wenn VCC sinkt?
      Hab diese Problematik gerade bei einer mit Li-Ion Akku versorgten Schaltung
      und einen LDR, logischer weise ändert sich der GETADC wert bei fallender Spannung.
      Wobei als Referenz gerade AVCC verwendet wird. a_67_e210de67
      Ronnie
    • Ist ja auch nicht nötig, Die Hälfte von 4V ist für den Adc das selbe wie die Hälfte von 3V. Wenn die Referenz Vcc ist.
      Mache Avr geben die Ref an ihrem Pin aus. Keine Ahnung wie belastbar das wäre a_71_f9c57bbe
      Der Ldr kann über einen Pin versorgt werden, dann zieht er nicht immer an der Batterie.
      Und für die Betriebspannung wird kein Teiler benötigt, die kann er sich aus der Vbg errechnen.
    • MItch,

      eigentlich ist ja gerade so.
      Der LDR an VCC der Tiny auch und der ADC auf AVCC.
      Und eben das ist das problem gerade, da die Firmware bei bestimmten ADC Werten was macht.
      Wenn nun aber die Spannung am Akku runtergeht dann stimmen die (festen) Einstellungen im PROG nicht mehr.
      Gut, ich könnte jetzt die sinkenden Batteriewerte an das ADC Messergebnis anpassen, will aber das mal mit den
      TL431 ausprobieren.
      So hätte ich mir das mal in meinen jugendlichen Leichtsinn vorgestellt.

      test1.png
    • Was mich erst mal an deinem Schaltbild verwirrt ist folgendes.
      • Im Schaltbild ist ein Bauteil mit LDR benannt, hast aber eine LED eingezeichnet. Was stimmt denn nun?
      • Du schaltest immer Masse, z.B. bei der Generierung der AREF. Du solltest die +-Seite schalten und das andere auf Masse lassen.
      • Du generierst links im Schaltbild AREF = 2,5 V und legst das auf PA0. Und rechts holst du das Signal von PA0 und versorgst damit dein "LDR". So funktioniert das nicht.
    • Mitch64 wrote:

      Was mich erst mal an deinem Schaltbild verwirrt ist folgendes.
      • Im Schaltbild ist ein Bauteil mit LDR benannt, hast aber eine LED eingezeichnet. Was stimmt denn nun?
      LED nur deshalb, weil ich auf die schnelle kein Symbol für den LDR gefunden hab.

      • Du schaltest immer Masse, z.B. bei der Generierung der AREF. Du solltest die +-Seite schalten und das andere auf Masse lassen.

        Habe in dieser Schaltungsweise beste Erfahrungen gemacht, was den SLEEP Stromverbrauch angeht. < 50µA
        Andersrum ist der Stromverbrauch höher, warum auch immer.

      • Du generierst links im Schaltbild AREF = 2,5 V und legst das auf PA0. Und rechts holst du das Signal von PA0 und versorgst damit dein "LDR". So funktioniert das nicht.

        PA0 ist der AREF Eingang beim 1634 (hätte ich ja auch mal schreiben können das es ein Tiny ist)
        Sollte also stimmen.


    • Dämmerungsschalter ist schon mal nah dran.
      Ich hab da mal einen 4 Kanal PWM Regler gebaut.
      Und meine Frau meint, das es in der Weihnachtzeit einfach zu dunkel ist auf dem Balkon.
      Naja da gibt eines das andere.
      Soweit bin ich eigentlich schon zufrieden.
      Der Verbrauch liegt im Sleep bei 4µA.
      Beim Watchdog aufwachen (8192) holt er seine ADC's für die LDR und den Akku sind 4mA für 10ms
      Wenn der LDR unter seinen Einschaltwert liegt, ist der PWM verbrauch grad mal 16mA.
      Da sollte der 9.0Wh Akku schon ein paar Tage Leuchten. Bin mal gespannt wie der sich bei Kälte
      verhält.
      Wo ich noch am suchen bin, die PWM Kanäle eingeschaltet lassen und in Sleep schicken.
    • Also du möchtest einmal die Helligkeit und einmal die Akku-Spannung ermitteln.
      Welche Spannung hat der Akku? Welche der Controller? Welchen Controller nimmst du?

      Du sagst, du hast da mal einen 4-Kanal PWM-Regler gebaut.
      Den verwendest du jetzt mit deiner neuen Schaltung?

      Oder soll jetzt die PWM am Controller selbst generiert werden? Weil bei einer externen PWM-Regelung brauchst du ja keine PWM am laufen haben, oder?

      Aber sollte doch die PWM von deiner LDR-Schaltung kommen, musst du einen Sleepmode finden (Datenblatt), den dein Controller unterstützt und bei dem die Timer weiter laufen.
      Je nach Controller hast du da auch einen 16-Bit Timer zur Verfügung. Damit kann man den Controller aufwecken.
      Wenn die Abstände größer werden beim Aufwecken, wird der Stromverbrauch geringer. Aber auch bei kleinerem System-Takt. Der Watchdog ist da mit ca 2s ziemlich unflexiebel. Zudem muss man ja die Helligkeit und Akkuspannung nicht alle 2 Sekunden prüfen. So schnell ändert sich das nicht.
      Alle 15 Minuten würde aus meiner Sicht auch reichen.
    • Ronnie wrote:

      Wenn nun aber die Spannung am Akku runtergeht dann stimmen die (festen) Einstellungen im PROG nicht mehr.
      ..
      Andersrum ist der Stromverbrauch höher, warum auch immer.

      ...
      die PWM Kanäle eingeschaltet lassen und in Sleep schicken
      Dann ist Dein Ldr auch Vdr :cursing:

      Den Ref Ausgeschaltet vor dem Sleep?

      Das sollte im Idle Mode gehen, aber dann sinds deutlich mehr als 4µA ^^
      Mit Reduzierung des Takt auf 32 khz können es dann unter 10µA werden
    • Moin,

      Mitch64 wrote:

      Also du möchtest einmal die Helligkeit und einmal die Akku-Spannung ermitteln.
      Welche Spannung hat der Akku? Welche der Controller? Welchen Controller nimmst du?
      Ja, beide werden ermittelt.
      LI-ION Akku 3.6V
      ATTINY 1634

      Mitch64 wrote:

      Du sagst, du hast da mal einen 4-Kanal PWM-Regler gebaut.

      Den verwendest du jetzt mit deiner neuen Schaltung?
      Oder soll jetzt die PWM am Controller selbst generiert werden? Weil bei einer externen PWM-Regelung brauchst du ja keine PWM am laufen haben, oder?
      Ja, hab ich
      Genau, der macht den Job jetzt.
      Ja, PWM macht der Controller.

      Mitch64 wrote:

      Aber sollte doch die PWM von deiner LDR-Schaltung kommen, musst du einen Sleepmode finden (Datenblatt), den dein Controller unterstützt und bei dem die Timer weiter laufen.

      Je nach Controller hast du da auch einen 16-Bit Timer zur Verfügung. Damit kann man den Controller aufwecken.
      Wenn die Abstände größer werden beim Aufwecken, wird der Stromverbrauch geringer. Aber auch bei kleinerem System-Takt. Der Watchdog ist da mit ca 2s ziemlich unflexiebel. Zudem muss man ja die Helligkeit und Akkuspannung nicht alle 2 Sekunden prüfen. So schnell ändert sich das nicht.
      Alle 15 Minuten würde aus meiner Sicht auch reichen.
      Aus dieser Sicht hab ich es noch nicht betrachtet
      Zur Zeit läuft der Watchdog mit ca. 8Sek. Das ist höchste Wert beim Tiny.
      Und da die beiden Timer sind ja eigentlich für den PWM belegt.
      Hmm, da könnte man ja den 16 Timer während der Schlafenszeit als Zähler verwenden.
      Aber die laufen ja nicht im Powerdown.
      Aber der Denkanstoß mit den 15Min ist gut, da beiß ich mich jetzt mal dran fest!
      Hab da schon einen Idee.
      Danke
    • Servus Pluto,
      na ich nenn die Dinger immer LDR ist so Definiert in meinen Hirn :)
      Ich denk das ist ein ALS (ALS-PDIC144-6C/L378) gibts beim R
      Genau deinen Ansatz im WDT zu zählen hatte ich auch.
      Und die 32khz fass ich auch mal ins Auge.
      Das müsste aber dann so laufen, das der Tiny in den Fuses mit intern 8Mhz
      läuft. Und das Programm mit 32khz ($crystal = 32768) kompiliert wird und als erste
      Programmzeile die Umstellung via Out Clkpr auf 32khz ist, oder?
      Andererseits würde ich mich doch mit dem ISP aussperren?
    • Ronnie wrote:

      Andererseits würde ich mich doch mit dem ISP aussperren?
      Das liegt am Programmer. Bei meinem MKII ist mir genau das passiert a_166_29aea317
      Alternativ habe ich einen Usbasp der geht runter bis auf "Kippschalter Takt"
      Solange der Takt während der Laufzeit runter geschaltet wird sollte das kein Problem werden da er bei einem Reset wieder den in den Fuses festgelegten aufnimmt.
      Beim runterschalten per Clkpr läuft der 8mHz weiter, das x mehr Strom benötigt als wenn er per Fuses auf 32kHz eingestelllt wird.
      PS Sind die 8Mhz nötig? mit 1Mhz braucht er nur 1/4 soviel Strom ca 0,7mA im Idle noch 0,1mA was bei den 14mA für die Pwm nicht mehr auffällt.
    • Sorry, hatte noch was anderes zu tun.
      FAZIT:
      Fast(*) alles funktioniert super.
      Die beste Lösung ist tatsächlich wenn der mit 8Mhz läuft.
      Hier läuft der PWM auf PRESCALE 256 im 1Mhz muss ich bis auf 2 runter damit es nicht flackert.
      Was fast 6mA ausmacht.
      Ich möchte das jetzt nicht mal ansatzweise, auf 32khz probieren.
      Ich hab den Tip von Pluto beherzigt und zähl im (8sek)WDT eine Variable hoch bin mal bei 5Min.
      Dann wird mal nach der Helligkeit geschaut, wobei das so schnell geht das es keins von meinen
      Messeisen schafft es zu messen wieviel das wirklich ist. Ich schätz mal 500µA max für 50ms.
      Geht dann wieder schlafen (powerdown) so um die 5µA.
      Bei den angeschlossenen Lichterketten 4 Stück (diese TEDI Teile 2xAA 3V mit 20 Led pro Kette)
      hab ich das auch noch mal optimiert, liegt jetzt bei 14mA für alle vier.
      Ich denk das kann man mal so lassen.
      (*) das fast muss jetzt auf den freundlichen Herrn aus dem Land der aufgehenden Sonne warten.
      Hier ist dann der AREF Pin auch an die 2.5V angeschlossen, dann wird es auch noch mit dem GETADC
      bei fallender Spannung klappen.
      Besten Dank erstmal für die Tipp's
      Ronnie