Forum: Mikrocontroller und Digitale Elektronik AREF-Pin am Arduino Nano


von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe hier Arduino-Nanos und Pro Minis aus China (verschiedene 
Verkäufer), bestückt mit einem AT328 im 32-Pin TQFP. Beim Nano ist der 
AREF-Pin auf die Stiftleiste geführt, beim Pro Mini nicht. Bei allen 
Versionen ist ein C nach Masse dran.

Aber: Ich kann am Pin (20) keine Spannung messen. Ich habe gerade wieder 
einen Aufbau gemacht, wo ich die interne Bandgap nutze, funktioniert. 
Laut Datenblatt ist die Spannung am Pin permanent vorhanden, was ist da 
los bzw. übersehe ich?

Ich habe noch zwei China-Unos, ebenfalls mit TQFP bestückt, da sind die 
5 bzw. ca. 1,1 Volt an AREF zu messen, wie ich es erwarte.

von M. K. (sylaina)


Lesenswert?

Manfred schrieb:
> Aber: Ich kann am Pin (20) keine Spannung messen. Ich habe gerade wieder
> einen Aufbau gemacht, wo ich die interne Bandgap nutze, funktioniert.
> Laut Datenblatt ist die Spannung am Pin permanent vorhanden, was ist da
> los bzw. übersehe ich?

Einfach mal mit dem Multimeter zwischen Nano-Pin und Atmega-Pin messen 
ob da wirklich Durchgang ist. Vielleicht ists eine schlechte (bzw. nicht 
vorhandene) Lötverbindung. Am ARef-Pin hat man, wie du schon 
festgestellt hast, immer die aktuell eingestellte Referenzspannung. 
Deshalb soll man ja ARef nicht mit Vcc verbinden (kann zum Kurzschluss 
führen und den Atmega beschädigen).

von Bussard (Gast)


Lesenswert?

.. oder der C ist kein Kondensator oder hat Schluß, oder ....

Mal am Pin den Leiterzug trennen und messen.

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Aber: Ich kann am Pin (20) keine Spannung messen. Ich habe gerade wieder
> einen Aufbau gemacht, wo ich die interne Bandgap nutze, funktioniert.
> Laut Datenblatt ist die Spannung am Pin permanent vorhanden, was ist da
> los bzw. übersehe ich?

Arduino Sketch?
Dann nicht nur die Referenz einstellen, sondern auch mindestens ein mal 
analogRead() durchführen. Danach bleibt Aref erhalten.

Ein Miniprogramm um die Referenz messen zu können sieht also so aus:
1
void setup() 
2
{
3
  analogReference(INTERNAL);
4
  analogRead(A0);
5
}
6
7
void loop() 
8
{
9
}

von Manfred (Gast)


Lesenswert?

M. K. schrieb:
> Manfred schrieb:
>> Aber: Ich kann am Pin (20) keine Spannung messen. ...
> Einfach mal mit dem Multimeter zwischen Nano-Pin und Atmega-Pin messen
> ob da wirklich Durchgang ist. Vielleicht ists eine schlechte (bzw. nicht
> vorhandene) Lötverbindung.
Hälst Du eigentlich alle Leute hier für blöd? Pin 20 ist direkt am TQFP, 
eine fehlende Verbindung würde ich schon selbst erkennen. Na gut, ich 
werde nicht jünger, 45 Jahre Elektronik lassen mich manche Dinge 
übersehen.

=====

Arduino F. schrieb:
> Arduino Sketch?
> Dann nicht nur die Referenz einstellen, sondern auch mindestens ein mal
> analogRead() durchführen. Danach bleibt Aref erhalten.

Fanboy_ - _Danke ! Da meine Anwendung(en) unendlich langsam sind, 
nutze ich tatsächlich diese dusselige Arduino-IDE.

Ich werfe gerade nochmal das Labornetzgerät an, habe gestern meinen 
Sketch umgeschrieben, um die Analogwerte zu kalibrieren - und gucke da, 
an Pin 20 sind die 1,09 Volt zu messen! Der Wert passt aufs Millivolt 
mit dem überein, was ich gestern zurückgerechnet hatte.

Also ist die Erklärung, dass die Arduino-Umgebung den ADC erst 
einschaltet, wenn man ihn braucht? Jetzt muss ich leider gucken, ob das 
meinen Stromverbrauch erhöht, wenn ich den µC schlafen lege bzw. 
herausbekommen, wie ich den ADC ausmachen kann.

von Sebastian S. (amateur)


Lesenswert?

>Also ist die Erklärung, dass die Arduino-Umgebung den ADC erst
>einschaltet, wenn man ihn braucht? Jetzt muss ich leider gucken, ob das
>meinen Stromverbrauch erhöht, wenn ich den µC schlafen lege bzw.
>herausbekommen, wie ich den ADC ausmachen kann.
Der Start-Up Code ist genauso wichtig wie jede andere Funktion.
Der sollte ja bekannt bzw. dokumentiert sein...

von M. K. (sylaina)


Lesenswert?

Manfred schrieb:
> Hälst Du eigentlich alle Leute hier für blöd?

Nein, nur die, die mir so blöd kommen wie du. Hälst du es so abwegig 
wenn jemand vom Arduino und Pin 20 redet, dass er dann vielleicht den 
Pin 20 der Arduinos meint? Ich hatte leider nicht ins Pinout des Nano 
geschaut, Pin 20 erschien mir richtig. Ein Blick hätte mir wohl 
verraten, dass am Arduino Nano der AREF an Pin 21 liegt und du wohl das 
TQFP-Gehäuse meinst.

Manfred schrieb:
> Also ist die Erklärung, dass die Arduino-Umgebung den ADC erst
> einschaltet, wenn man ihn braucht? Jetzt muss ich leider gucken, ob das
> meinen Stromverbrauch erhöht, wenn ich den µC schlafen lege bzw.
> herausbekommen, wie ich den ADC ausmachen kann.

Ja, ein laufender ADC kann sich auch im Sleepmode bemerkbar machen. 
Welchen Sleepmode willst du denn benutzen? Beim Mode IDLE und ADC kann 
der ADC immer noch mitlaufen und muss dann von Hand abgeschaltet werden.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Hälst Du eigentlich alle Leute hier für blöd?

Das ist also dein Dank für gut gemeinte Hilfe? Schäm' Dich!

Ich hätte Dir genau die selbe Antwort (von wegen Unterbrechung) gegeben!

> nutze ich tatsächlich diese dusselige Arduino-IDE.

Kopfschüttel...

> Also ist die Erklärung, dass die Arduino-Umgebung den ADC erst
> einschaltet, wenn man ihn braucht?

Da siehst du, warum viele Entwickler das Arduino System nicht mögen. Es 
ist schlecht dokumentiert und lenkt von den Grundlagen ab. Hättest du 
den ADC selbst programmiert, dann wäre dieser Fehler gar nicht 
entstanden.

> herausbekommen, wie ich den ADC ausmachen kann.

Dafür gibt es ein Register, in dem man diverse Features deaktivieren 
kann. Ich glaube es heißt Power Control Register oder so ähnlich. Du 
wirst es sicher im Datenblatt finden.

Der Blick ins Datenblatt lohnt sich, denn wenn du das verstanden hast, 
brauchst du die Verwirrung stiftenden Arduino Libraries nicht mehr.

von Manfred (Gast)


Lesenswert?

M. K. schrieb:
> Manfred schrieb:
>> Jetzt muss ich leider gucken, ob das
>> meinen Stromverbrauch erhöht, wenn ich den µC schlafen lege bzw.
>> herausbekommen, wie ich den ADC ausmachen kann.
> Ja, ein laufender ADC kann sich auch im Sleepmode bemerkbar machen.
Das werde ich die Tage mal messen, heute habe ich mich mit der Hardware 
drumherum befasst und dicke Kabel gelötet.

> Welchen Sleepmode willst du denn benutzen? Beim Mode IDLE und ADC kann
> der ADC immer noch mitlaufen und muss dann von Hand abgeschaltet werden.
Ich gehe auf den Timer und lasse ihn alle 8s aufwachen. Ich habe vorhin 
das Include kurz angeschaut, da gibt es ADC_OFF, so dass ich einfach 
testen kann.

Das ganze Gebilde wird incl. Stromversorgung unter 10µA bleiben, mit 
Aufwachen und zyklisch Messen brauche ich übers Jahr unter 2% meiner 
Akkukapazität. Ich weiß, dass noch etwas weniger ginge - aber da passen 
mir Aufwand <-> Nutzen nicht mehr überein.

Stefan U. schrieb:
>> Hälst Du eigentlich alle Leute hier für blöd?
> Das ist also dein Dank für gut gemeinte Hilfe? Schäm' Dich!
> Ich hätte Dir genau die selbe Antwort (von wegen Unterbrechung) gegeben!
Warum? Weil Arduino im Text steht, geht man davon aus, dass der 
Fragesteller eine Verbindung nicht kontrollieren kann? Aber gut, nach 
dem, was ich im Mikrocontroller.net so zu lesen bekomme, sollte ich das 
verstehen.

Zum Glück war hier jemand, der es erklären konnte und ich das eindeutig 
nachvollziehen kann.

>> nutze ich tatsächlich diese dusselige Arduino-IDE.
> Kopfschüttel...
Danke, Reaktion gemäß Erwartung.

Ich habe vor vielen Jahren Anwendungen in Assembler geschrieben, die zum 
Teil auch zeitkritisch waren. Das, was ich bislang privat mache, hat 
genug Zeit, es in abstrahierter Form zu machen. Da komme ich mit der IDE 
zum Ziel und bin zufrieden.

Meine Lötstation für Weller-RT war 2015 mein erstes A*-Projekt, da sitzt 
ein Nano auf Lochrasterkarte. Für das Display habe ich auf eine fertige 
Library zugegriffen, den Rest komplett selbst geschrieben. Die Tage 
stundenlang mit gelötet, funktioniert bestens.

>> Also ist die Erklärung, dass die Arduino-Umgebung den ADC erst
>> einschaltet, wenn man ihn braucht?
> Da siehst du, warum viele Entwickler das Arduino System nicht mögen. Es
> ist schlecht dokumentiert und lenkt von den Grundlagen ab. Hättest du
> den ADC selbst programmiert, dann wäre dieser Fehler gar nicht
> entstanden.
Das ist zweifellos richtig, Dokumentation ist ein Fremdwort.

Im Nachgang ist auch klar, warum das am Uno scheinbar funktionierte - da 
hatte ich nämlich den A/D an, bevor ich gemessen habe.

>> herausbekommen, wie ich den ADC ausmachen kann.
> Dafür gibt es ein Register, in dem man diverse Features deaktivieren
> kann. Ich glaube es heißt Power Control Register oder so ähnlich. Du
> wirst es sicher im Datenblatt finden.
Ich habe es in der Lowpower.h gefunden.

> Der Blick ins Datenblatt lohnt sich, denn wenn du das verstanden hast,
> brauchst du die Verwirrung stiftenden Arduino Libraries nicht mehr.
Mangels kritischer Anwendungen fehlt mir die Motivation.

Was ich leider vergeblich suche, ist eine Arduino-Vorlage für Notepad++ 
oder SciTe, der Editor der IDE geht mal garnicht.

von Einhart P. (einhart)


Lesenswert?

Manfred schrieb:
> Was ich leider vergeblich suche, ist eine Arduino-Vorlage für Notepad++
> oder SciTe, der Editor der IDE geht mal garnicht.

Nimm Visual Studio und Visual Micro da macht das Editieren mehr Spaß

: Bearbeitet durch User
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.