Forum: Mikrocontroller und Digitale Elektronik ATtiny13 ADC int REF


von Gerd A. (inputsammler)


Lesenswert?

Hallo

Habe eine 3x4 Matrix Tastertur über ADC angeschlossen
Das funktioniert auch so weit so gut. Aber mit AREF als VCC

Nun wollte ich die interne 1,1 nehmen da mein Attiny13 mit einer 3V 
Batterie betrieben wird. Und dadurch sich die Werte immer wieder etwas 
verschieben.
nach diesem Schema angeschlossen
http://www.avr-asm-tutorial.net/avr_de/keypad/keyboard.html
Muß ich da nun einen C an Aref anschließen (gibs ned beim 13??)

Was muß ich ändern.

ADC PB3

Bitte um Hilfe

von Hannes Lux (Gast)


Lesenswert?

> Habe eine 3x4 Matrix Tastertur über ADC angeschlossen
> Das funktioniert auch so weit so gut. Aber mit AREF als VCC

Das ist auch ok so.

> Nun wollte ich die interne 1,1 nehmen da mein Attiny13 mit einer 3V
> Batterie betrieben wird.

Das halte ich für keine gute Idee.

> Und dadurch sich die Werte immer wieder etwas verschieben.

Nein, die verschieben sich nicht. Wenn sich die Betriebsspannung (also 
auch die ADC-Referenz) ändert, dann ändert sich die Ausgangsspannung des 
Tasten-Spannungsteilers in gleicher Weise. Das System korrigiert sich 
also selbst.

> nach diesem Schema angeschlossen
> http://www.avr-asm-tutorial.net/avr_de/keypad/keyboard.html
> Muß ich da nun einen C an Aref anschließen (gibs ned beim 13??)

Laut Datenblatt Tiny13, Seite 2, Pinout-Skizze trägt keiner der Pins den 
Namen AREF. Demzufolge ist AREF nicht von außen zugänglich und es kann 
auch kein C angeschlossen werden.

> Was muß ich ändern.

Eigentlich nichts.

> ADC PB3

Das sollte kein Problem darstellen.

Es könnte allerdings sein, dass Dein Tasten-Spannungsteiler durch 
Bauteiltoleranzen etwas andere ADC-Werte ergibt und dadurch die LUT 
etwas angepasst werden muss. Voltmeter, Dreisatz und Taschenrechner 
sollten da helfen.

...

von Gerd A. (inputsammler)


Lesenswert?

Also Danke erst mal,

Das soll ein Codeschloss werden für Garagentore
Da läuft mit Batterie.
- ATtiny13V ist im sleep Modus
- Wenn geweckt (PB5 RESET) dann über Relais auf Spannungversorgung über 
220V --> 3,3V --> damit nicht immer Strom Verbraucht wird.


Was ich nicht verstehe ich geh doch dann mit 0V-3,1V in den ADC rein.
Rechnet es dann Intern das UM. (Datenblatt Seite81)

Also ich habe da irgendwo einen Denkfehler drinn.

1,1V -->1023
0V --> 0

Aber bei 2V eingang ?? --> 2000??

Danke

von yalu (Gast)


Lesenswert?

> Aber bei 2V eingang ?? --> 2000??

2V --> 1023

Wenn du die 1,1V-Referenz nimmst, kannst du keine Spannungen über 1,1V
messen.

Aber du wolltest doch nach dem Beitrag von Hannes die Referenzspannung
auf VCC lassen, weil nur dann der digitale ADC-Messwert unabhängig von
Versorgungsspannungsschwankungen ist, oder?

von gerd (Gast)


Lesenswert?

Hallo.

Jetzt mal etwas grundsätzlicher, damit der Gerd A. (Hallo Gerd) das 
versteht.

Der ADC im Tiny13 nimmt als Vergleichsspannung die Betriebsspannung: die 
Spannung am Input wird damit verglichen. Der Spannungsbereich von 0 bis 
3 V entspricht dann linear den Werten 0..1023. Mit den Vergleichswerten, 
die für die einzelnen Tasten angegeben sind, werden daraus die Tasten 
ermittelt.

Die Schaltung und die Software funktionieren bei allen 
Betriebsspannungen, wenn VCC als Referenz verwendet wird. Ein ADC misst 
nämlich eigentlich keine absolute Spannung sondern immer nur das 
Verhältnis einer Spannung zur Referenzspannung. Und die Verhältnisse des 
Spannungsteilers zur Versorgungsspannung bleiben immer dieselben.

Was passiert nun, wenn Du die interne URef nimmst? Alle 
Eingangsspannungen oberhalb von 1,1 V ergeben 1023. Das erklärt sich 
recht einfach aus der Funktionsweise eines ADC. Damit kannst Du alle 
Tasten vergessen, die mehr als 1,1 V erzeugen (bei 12 Tasten und 3 V 
sind das ca. 8 Tasten), die kriegst Du dann prinzipiell nicht erkannt.

Ich kann auch nur davor warnen, mit der internen URef zu arbeiten und 
die R-Kombinationen am Keyboard dem anzupassen. Jede kleinste Änderung 
der Betriebsspannung wirkt sich dann schon ziemlich auf das Netzwerk aus 
und Du wirst verzweifeln, wenn die Taste 8 immer eine 9 liefert, wenn es 
draußen warm ist.

mfg
gerd

von Gerd A. (inputsammler)


Lesenswert?

Also DANKE euch.

Danke Gerd für deine ausführliche Antwort,

Stimmt ja (lange ist es her)
Die Teilungsverhältnis im Widerstandsnetzwerk bleiben ja immer gleich.
Das heiß bezogen auf VCC wird immer aufgeteilt in im ADC 1023 Teile
Dadurch fällt auch im Verhältnis zu VCC immer der gleiche Anteil ab, pro 
Tastendruck,

Nur zur Verständnis :
Wenn ich Interne Ref nehmen würde müsste ich extern dafür sorgen das 
beim Widerstandsnetzwerk nie mehr wie 1,1V ankommen (Zehnerdiode oder 
Regler)

Danke NOCHAML

Gruß Gerd A.

von yalu (Gast)


Lesenswert?

> Wenn ich Interne Ref nehmen würde müsste ich extern dafür sorgen das
> beim Widerstandsnetzwerk nie mehr wie 1,1V ankommen (Zehnerdiode oder
> Regler)

Nur im Bereich von 0V bis 1,1V können sinnvolle Messungen durchgeführt
werden.

Spannungen zwischen 1,1V und VCC machen den Kontroller aber nicht
kaputt. Sie liefern einfach nur den maximalen Digitalwert (1023) am ADC,
können also nicht von 1,1V unterschieden werden.

Eine Spannungsbegrenzung brauchst du nur dann, wenn Eingangspannungen
größer als VCC oder kleiner als 0V auftreten können. Oft genügt dafür
ein einfacher Serienwiderstand vor dem ADC-Eingang, da die Spannung
bereits durch die internen Schutzdioden im Controller nach oben und
unten begrenzt wird. Der Widerstand dient dazu, den Strom durch diese
Dioden zu begrenzen, der nicht höher als etwa 1mA sein sollte.

von beginy (Gast)


Lesenswert?

Hallo

Habe gerade auch ein ADC- Ref.-Spannungs- Problem mit dem Tiny 13:

In Bascom wird mit  "Config Adc = Single , Prescaler = Auto
Start Adc" der ADC aktiviert, wobei dann 5 V als Referenzspannung
für den AD- Wandler verwendet werden. Funktioniert auch.

Da ich sehr kleine Spannungen messen muss (< 200mV) , möchte ich gerne
die interne 1,1 V Referenzspannung aktivieren.

Könnte mir bitte jemand sagen, wie das mit Bascom geht ?

Gruß

Beginy

von beginy (Gast)


Lesenswert?

Danke, erledigt,hab´s gefunden! ADC muß in Bascom mit:

"Config Adc = Single , Prescaler = Auto, Reference = Internal "

konfiguriert werden, damit die interne Ref._Spannung von 1,1 V verwendet 
wird.

von Paul Baumann (Gast)


Lesenswert?

Wenn Du unbedingt über den Config_Befehl gehen willst, schau mal in der
Bascom Hilfe bei "Config ADC" nach. Dort gibt es nämlich auch noch die
Option "Reference".

Du kannst aber natürlich auch die entsprechenden Register "von Hand"
laden und im Datenblatt nachsehen, welche Bits gesetzt sein müssen,
um die interne Referenzspannung zu benutzen.

Das empfiehlt sich unter Anderem deswegen, weil man über die diversen
Config-Befehle gar nicht an alle Möglichkeiten herankommt, die man
hat.

MfG Paul

von Beginy (Gast)


Lesenswert?

Ja, danke Paul für den Tip . In der Bascom- Hilfe hatte ich dann die 
Lösung auch gefunden.
Früher oder später wird Bascom nicht mehr genügen und ich werde mir doch 
noch Assembler aneignen müssen.

Schönes Wochenende !

Beginy

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.