Forum: Mikrocontroller und Digitale Elektronik ATTiny13 ADC-Wandlung ergibt nichts sinnvolles


von Der kleine Nils (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich beschäftige mich aktuell mit einem kleinen LED-Projekt. Ich habe mir 
eine 3-Kanal Treiberstufe mit integriertem Trafonetzteil gebaut. Die 
Treiberstufe verfügt über 3 Konstantstromquellen (LM317). Die Helligkeit 
der LED's möchte ich dann über das Tastverhältnis mittels PWM regeln, 
hierzu schließt ein Transistor einfach die LED-Strecke kurz. Es mag 
eleganter gehen aber es funktioniert soweit.

Die PWM möchte ich über einen ATTiny13A realisieren. damit ich alle 3 
Kanäle mittels PWM regeln kann, habe ich eine 8-Bit Software-PWM mit 
einem Timer programmiert. Das funktioniert soweit auch ganz gut.

Der Gedanke ist, dass ich 3 analoge Potis zur Einstellung der PWM 
verwende, hierzu will ich 3 der 4 ADC-Kanäle des Tiny verwenden. Und 
somit kommen wir auch schon zu meinem Problem.

Die PWM etc. das läuft alles. Ich kann ein Byte vorgeben und die PWM 
funktioniert so, wie sie soll. (Mit dem Oszi geprüft).

Allerdings kommen von der ADC-Wandlung keine wirklich sinnvollen Werte 
zurück. Ich verwende den ADC mit Interrupt, die Bits sind 
linksorientiert. Allerdings scheinen - unabhängig von der Potistellung - 
nur Einsen aus der ADC-Wandlung zu kommen. Zumindestens schaltet die PWM 
die LED's komplett aus (das ist nur bei 0xFF der Fall, habs getestet). 
Das Programm selbst scheint aber normal zu laufen, zumindestens kann ich 
durch extra Variablen einen Blink-Takt auf einem anderen PWM-Kanal 
realisieren.

Aktuell komme ich nicht wirklich weiter und hoffe daher auf ein bisschen 
Unterstützung.

Ich hoffe, meine Beschreibung ist soweit vollständig, so dass keine 
Glaskugel benutzt werden muss.

Viele Grüße
Nils

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Ist das (Bild) die Beschaltung der Potis, die du an den ADC 
angeschlossen hast?


Die passt nicht.
Die Potis werden so
1
     + ------+----
2
             |
3
            +-+
4
           <| |
5
            \ |
6
            |\|
7
            | --------- zum ADC Eingang
8
            | |
9
            +-+
10
             |
11
    GND -----+----

angeschlossen. Die 'äusseren Enden' des POtis kommen an +5V bzw. Masse 
und mit dem Schleifer kann man dann eine einstellbare Spannung zwischen 
+5V und 0V abgreifen.

Aus deiner Beschaltung werd ich nicht wirklich schlau, was da jetzt die 
Idee sein soll. Das ist IMHO einfach nur ein einstellbarer Widerstand, 
der vor dem ADC Eingang sitzt. Aber eine variable Spannung kann man 
damit nicht einstellen.

: Bearbeitet durch User
von Route_66 H. (route_66)


Lesenswert?

Karl Heinz schrieb:
> Ist das (Bild) die Beschaltung der Potis, die du an den ADC
> angeschlossen hast?

Das sind seine Konstantstromquellen für die LEDs. Der Potianschluss ist 
auf 02.png.

von Karl H. (kbuchegg)


Lesenswert?

Route 66 schrieb:
> Karl Heinz schrieb:
>> Ist das (Bild) die Beschaltung der Potis, die du an den ADC
>> angeschlossen hast?
>
> Das sind seine Konstantstromquellen für die LEDs. Der Potianschluss ist
> auf 02.png.


J2, J3, J4?

ok, die hab ich nicht weiter beachtet, weil da keine Potis eingezeichnet 
sind.

von Der kleine Nils (Gast)


Lesenswert?

Ja Karl Heinz, vielen Dank für den Hinweis, das habe ich nicht erklärt. 
Die Potis werden über WAGO-Klemmen an die Platine geklemmt, damit diese 
abgesetzt werden können. J2, J3, J4 sind für die Potis (02.png).

Die LED's werden zwischen J5 und J6 geklemmt (J6 3x GND, J5 3x SW-PWM)

U2, U3, U4 sind LM317 Konstantstromquellen, die Potis dienen zum 
Einstellen des Stroms.

von Der kleine Nils (Gast)


Angehängte Dateien:

Lesenswert?

Manchmal sieht man den Wald vor lauter Bäumen nicht. Ich habe den Fehler 
gefunden!

Der ADC war wohl doch nicht schuld, ich habe das Ergebnis nur falsch 
gelesen.

Der eigentliche Fehler war in der Funktion "write_pwm". Dort beschreibe 
ich die PWM-Arrays neu. Ich muss, bevor ich neue einsen hineinsetze 
natürlich das Array erst einmal komplett auf null zurücksetzen. Das habe 
ich nicht gemacht.

Trotzdem Danke für die Anteilnahme. Ich habe den korrigierten Quellcode 
noch einmal angehängt, falls jemand Interesse hat.

Gruß
Nils

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.