Forum: Mikrocontroller und Digitale Elektronik attiny85 ADC zieht Strom?


von Paul G. (paul_g210) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi

Ich bin immer noch bei meinen ersten Versuchen mit dem Attiny85.

Beim testen des ADC's ist mir aufgefallen das wenn ich den ADC Eingang 
(PB3) an den 5V Ausgang des Attiny85-Boards lege ziemlich viel Strom 
fließt.

Der tiny verbraucht alleine nur ~16mA, mit OLED nur 17mA, aber sobald 
ich den ADC Pin an die 5V lege springt der Strom auf ~60mA.

Dann habe ich gelesen das wenn die Pins als Eingänge geschaltet sind 
diese ~100MOhm Eingangswiderstand haben und wenn der ADC samplt 
1-100kOhm.

Was übersehe ich das den hohen Strom erklären könnte?

Das ist der Code den ich im Moment verwende:
1
#include <SSD1306_minimal.h>
2
SSD1306_Mini oled;
3
4
char buff[4];             // char array 4 digits
5
const int ADCPIN = 3;     //PB3
6
int ADC1_READ = 0;
7
8
void disp_val() {
9
 oled.startScreen();
10
 oled.clear();        // Clears the display
11
 oled.cursorTo(0, 0);
12
13
 ADC1_READ = analogRead(ADCPIN);   // read ADC PB0 value
14
 itoa(ADC1_READ,buff,10);      // convert int to char array
15
 oled.printString(buff);
16
}
17
18
void setup() {
19
  pinMode(ADCPIN, INPUT);
20
21
  oled.init(0x3C); // Initializes the display to the specified address
22
  oled.clear(); // Clears the display
23
  delay(1000); // Delay for 1 second
24
}
25
26
void loop() {
27
  disp_val();
28
  delay(500);
29
}

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Paul G. schrieb:
> Beim testen des ADC's ist mir aufgefallen das wenn ich den ADC Eingang
> (PB3) an den 5V Ausgang des Attiny85-Boards lege ziemlich viel Strom
> fließt.

In deine „Blackbox“ in der Zeichnung gehen einfach mal so 12 V rein.
Irgendwer da drin wird daraus wohl die Spannung für den Controller
regeln.  Erzeugt derjenige vielleicht eine Versorgungsspannung von
weniger als 5 V (bspw. 3,3 V), und du versuchst dann, an die Eingänge
von außen 5 V zu legen?  In dem Falle öffnen die Eingangsschutzdioden
und führen Strom in Richtung Controller ab.

Wenn das nicht so ist, dann müsstest du uns etwas mehr über den Inhalt
deiner Blackbox verraten.

von Paul G. (paul_g210) Benutzerseite


Angehängte Dateien:

Lesenswert?

Es handelt sich um ein "Development Board" aus China, steht zwar 
Digispark drauf...

Die 12V gehen soweit ich das verstehe von VIN in den 78L05 und der macht 
5 Volt draus. Die Teile sind mit einem Bootloader versehen (vermutlich 
Micronucleus) und ich programmiere den einfach mit der Arduino IDE. 
Sketch hochladen, tiny an USB hängen und dann läd er es hoch.

Ach ja und das OLED ist so ein Standart SSD1306 I2C.

: Bearbeitet durch User
von Paul G. (paul_g210) Benutzerseite


Lesenswert?

Jörg W. schrieb:
>Erzeugt derjenige vielleicht eine Versorgungsspannung von
> weniger als 5 V (bspw. 3,3 V), und du versuchst dann, an die Eingänge
> von außen 5 V zu legen?

Nein, wenn ich VCC direkt am Tiny messe (PIN8) liegen dort ~5,1V an (bei 
12,4V an VIN), und das selbe am 5V out Pin...

: Bearbeitet durch User
von ACDC (Gast)


Lesenswert?

PB3 als Eingang definiert?

von Paul G. (paul_g210) Benutzerseite


Lesenswert?

ACDC schrieb:
> PB3 als Eingang definiert?
1
const int ADCPIN = 3;     //PB3
2
...
3
void setup() {
4
  pinMode(ADCPIN, INPUT);
5
...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Paul G. schrieb:
> Nein, wenn ich VCC direkt am Tiny messe (PIN8) liegen dort ~5,1V an (bei
> 12,4V an VIN), und das selbe am 5V out Pin.

Dann habe ich keine Idee mehr aus der Ferne.

ps: Direkte Messung der VCC an einem ADC-Pin funktioniert auf diese
Weise sowieso nicht.  Du musst ja gegen eine Referenzzspannug messen,
die gleich oder höher als die Eingangsspannung ist.  VCC kann man
zwar als Referenzspannung benutzen, aber damit kannst du logischerweise
dann nicht VCC messen, denn das Ergebnis wird immer der Max-Wert sein
(Mess- und Referenzspannung sind gleich).

Du musst also deine Messspannung entweder so weit herunter teilen, dass
du gegen die interne Bandgap-Referenz von 1,1 V messen kannst, oder aber
du drehst den Spieß um und misst die Bandgap selbst gegen Vcc als
Referenz.

pps: Was für einen Sinn soll es eigentlich haben, die Spannung hinter
dem 5-V-Regler zu messen?  Solange von den 12 V am Eingang halbwegs noch
was übrig ist, misst du doch an dieser Stelle sowieso einen konstanten
Wert.

: Bearbeitet durch Moderator
von Axel L. (axel_5)


Lesenswert?

PB3 geht als USB Eingang über eine 3,6V Zehnerdiode und einem 68 Ohm 
Widerstand auf Masse.

Gruss
Axel

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Axel L. schrieb:
> Zehnerdiode
Clarence Melvin schrieb sich ohne 'h'...
https://de.wikipedia.org/wiki/Zener-Effekt

von Stefan F. (Gast)


Lesenswert?

Axel L. schrieb:
> PB3 geht als USB Eingang über eine 3,6V Zehnerdiode und einem 68 Ohm
> Widerstand auf Masse.

Ich denke auch, dass das der eigentliche Knackpunkt ist.

Wenn du einen Pin für was auch immer benutzt, schau in den Schaltplan 
des Moduls um zu sehen, was da sonst noch so dran hängt. (Gilt generell 
für jedes Mikrocontroller-Modul).

von Paul G. (paul_g210) Benutzerseite


Lesenswert?

Jörg W. schrieb:
> pps: Was für einen Sinn soll es eigentlich haben, die Spannung hinter
> dem 5-V-Regler zu messen?  Solange von den 12 V am Eingang halbwegs noch
> was übrig ist, misst du doch an dieser Stelle sowieso einen konstanten
> Wert.

Ich wollte einfach nur mal den ADC bei ~1024 sehen und dabei ist mir 
halt aufgefallen das ziemlich viel Strom fließt was ja eigentlich nicht 
sein dürfte. Ich probiere mal eine andere Spannungsquelle.

Wie ist das dann aber wenn ich genau weiß wieviel VCC der Tiny bekommt, 
dann kann ich doch VCC als Refernz nehmen und durch 1024 teilen und dann 
auf eine externe Spannungsquelle mit gleicher Erde anwenden oder geht 
das nicht?

Ich habe gerade mal aus Spaß den ADC "INPUT" Pin mit dem Voltmeter 
gemessen und alles andere abgeklemmt und da kommen 3,15V raus! Wie kann 
den das sein?

Dann habe ich einen anderen Baugleichen Tiny genommen und da kommt das 
selbe raus. Könnte das evtl etwas mit dem Bootloader zu tun haben? Der 
nutzt ja den ADC PIN PB3 auch für die USB Kommunikation... nur dachte 
ich bisher das er das nur nach dem Einschalten macht und nach ein paar 
Sekunden sich die PINS normal verwenden lassen sollen. Ich versuche mal 
PB0 als ADC input, der müsste frei sein...

von Paul G. (paul_g210) Benutzerseite


Lesenswert?

Ahh, ihr wart schneller, ich dachte mir das schon fast mit dem USB...

von Paul G. (paul_g210) Benutzerseite


Lesenswert?

Paul G. schrieb:
>Ich versuche mal PB0 als ADC input, der müsste frei sein...

PB5

von Einer K. (Gast)


Lesenswert?

Paul G. schrieb:
> PB5
Der braucht meist eine Fusesetzung, damit er als vollwertiger ADC taugt.

von Paul G. (paul_g210) Benutzerseite


Lesenswert?

Arduino Fanboy D. schrieb:
> Paul G. schrieb:
>> PB5
> Der braucht meist eine Fusesetzung, damit er als vollwertiger ADC taugt.

Danke, ich schau mal ob ich das hinbekomme.

Mir schwant langsam das die Wahl eines solchen Fertigboards evtl. nicht 
der richtige Weg war. Evtl. kann man ja das ganze USB gedöhns ablöten 
bzw. die richtigen Tracks durchkratzen und so PB3/PB4 frei bekommen, 
dann noch den Bootloader löschen und das ganze per USBasp hochladen...

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Der USB Bottloader ist doch gerade das Hauptmerkmal dieses Moduls. Wenn 
du das entfernst, bleibt nur noch der nackte Chip übrig. Dann kannst du 
den gleich einzeln kaufen.

Ich sage mal so:

Ein Mikrocontroller mit genau 3 freien Pins ist halt ein bisschen knapp 
zum Experimentieren. Wie wäre es stattdessen mit einem Arduino Nano 
(compatible) für 1,50€ ?

von Paul G. (paul_g210) Benutzerseite


Lesenswert?

Stefanus F. schrieb:
> Der USB Bottloader ist doch gerade das Hauptmerkmal dieses Moduls. Wenn
> du das entfernst, bleibt nur noch der nackte Chip übrig. Dann kannst du
> den gleich einzeln kaufen.

Und wenn ich Reset an PB5 deaktiviere um dort den ADC zu bekommen kann 
ich sowieso nicht mehr mit dem USBasp flashen, sofern ich das richtig 
verstehe...


> Ich sage mal so:
>
> Ein Mikrocontroller mit genau 3 freien Pins ist halt ein bisschen knapp
> zum Experimentieren. Wie wäre es stattdessen mit einem Arduino Nano
> (compatible) für 1,50€ ?

Hab noch zwei davon rummliegen ;). Wollte halt mal einen auf 
"Minimalismus" machen. Ich wechsle zum Nano.

von Stefan F. (Gast)


Lesenswert?

Paul G. schrieb:
> Und wenn ich Reset an PB5 deaktiviere um dort den ADC zu bekommen kann
> ich sowieso nicht mehr mit dem USBasp flashen, sofern ich das richtig
> verstehe...

Ganz Recht

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Paul G. schrieb:
> Hab noch zwei davon rummliegen ;).

Benutz die doch für reale Projekte, die du zuvor auf deinem Nano so
einigermaßen getestet hast, dass die Portierung dann kaum noch Bugs
erwarten lässt.

von Axel L. (axel_5)


Lesenswert?

Lothar M. schrieb:
> Axel L. schrieb:
>> Zehnerdiode
> Clarence Melvin schrieb sich ohne 'h'...
> https://de.wikipedia.org/wiki/Zener-Effekt

Ok, einen Punkt Abzug für Rechtschreibung. Immer noch die einzige 
richtige Antwort :-)

Gruß
Axel

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.