Erledigt Fragen zur Eingangsspannung ATtiny

Das Gerät misst über den Vcc Pin, mit welcher Spannung die Schaltung, bzw. der µC läuft und stellt dann die Spannung, mit der programmiert wird, entsprechend ein. Somit wäre es möglich, einen µC auch innerhalb einer Schaltung zu programmieren, die beispielsweise mit 2,5V läuft und deren Bauteile nicht mehr als diese Spannung vertragen. Würde dort mit 5V programmiert, würden die Bauteile beschädigt. Habe ich das richtig verstanden?

Ja das hast du so richtig verstanden. :)
Der Programmierer passt die Pegel seiner Programmierschnittstelle der Betriebsspannung des Zielsystems an.

Dirk :ciao:
 
Ja, alles soweit richtig :)
Außerdem haben die AVRs noch Schutzdioden drin, eine Überspannung an den I/O Pins könnte somit die Betriebsspannung mit erhöhen.
 
Da diese Frage auch eigentlich noch ganz gut zum Thema passt, mache ich dafür keinen neuen Thread auf.

Kann der ATtiny85 seine eigene Spannungsversorgung überwachen?
Er soll mit 3,3V laufen und sowohl auf Unter- als auch auf Überspannung reagieren. Hierzu würde ich die Versorgungsspannung über einen Spannungsteiler auf Pin7 (ADC1) legen. Bei 5,5V soll dort rund 1V anliegen und er soll den anliegenden Wert mit der internen Referenzspannung von 1.1V vergleichen. Am I/O Pin5 (PB0/AREF) habe ich, weil alle anderen I/O belegt sind, einen Taster mit 10K PullUp auf die Versorgungsspannung angschlossen. Wäre eine Änderung der Spannung an AREF in meinem genannten Anwendungsfall ein Problem oder kann ich das so belassen?
 
So mache ich das auch meißtens, klappt ganz gut.
Spannungsteiler und ADC mit interner Referenz (1,1V) laufen lassen, Sollwert auf 1,0V einstellen. Wobei ich als Spannungsteiler meißt nen Spindeltrimmer nutze (ja ich bin bequem ^^).

Aber Vorsicht wenn du den AREF als IO benutzt. Das kann nicht jeder AVR. Musste im Datenblatt nachschauen ob das geht oder ob die Referenzspannung dort anliegt (um mit nem Kondensator gepuffert zu werden). Den Tiny85 kenne ich persönlich jetzt nicht.
Aber bei 2,54V Referenz gibt es einen "Disconnected" Mode. Vielleicht kann @LotadaC dazu aber mehr sagen.

PullUps brauchst du idR noch nicht mal, die hat der AVR schon intern ;)
 
Zuletzt bearbeitet:
Musste im Datenblatt nachschauen ob das geht oder ob die Referenzspannung dort anliegt (um mit nem Kondensator gepuffert zu werden). Den Tiny85 kenne ich persönlich jetzt nicht.
Aber bei 2,54V Referenz gibt es einen "Disconnected" Mode.
Hmm... erstens wärens 2,56V, und zweitens:
The voltage reference for the ADC may be selected by writing to the REFS[2:0] bits in ADMUX. The VCC supply, the AREF pin or an internal 1.1V / 2.56V voltage reference may be selected as the ADC voltage reference. Optionally the internal 2.56V voltage reference may be decoupled by an external capacitor at the AREF pin to improve noise immunity.
Klingt eher danach, daß nur bei 2,56V ein externer Abblockkerko eingesetzt werden kann (mit entsprechend gewählten REFS-Bits...
Im Zweifelsfall (ich hätte die Zweifel) einfach mal REFS[2..0] auf &B010 setzen und am Pin nachmessen - wenn da 1V1 anliegen gehört 'n Kerko drann...

P.S.: Wenn's nur eine Grenze wäre, könnte man auch den AC nutzen. Der reagiert i.a. schneller

Und ich werf mal die BOD rein, fall ein Reset beim Spannungseinbruch reichen würde. Ob ein solcher für den letzten Reset verantwortlich war, kann man das BORF-Bit im MCUSR fragen
 
Zuletzt bearbeitet:
Hmm... erstens wärens 2,56V, und zweitens:
Ups, Macht der Gewohnheit.
Klingt eher danach, daß nur bei 2,56V ein externer Abblockkerko eingesetzt werden kann (mit entsprechend gewählten REFS-Bits...
Im Zweifelsfall (ich hätte die Zweifel) einfach mal REFS[2..0] auf &B010 setzen und am Pin nachmessen - wenn da 1V1 anliegen gehört 'n Kerko drann...
Kann, aber nicht muss. Bei 2.54V ist der Pin laut Datenblatt disconnected (nachmessen würd ich trotzdem!). Aber das würde min. 3V VCC voraussetzen.
 
Hattest Du falschrum verstanden: bei der 2V56-Referenz gibts optional 'ne Einstellung mit Entkopplung durch einen externen Kerko, und eben die ohne...
Aber es ging ja um die interne Bandgap (die zB auch der AC nutzt), und die hat nur eine Einstellung. Da steht nicht bei, ab mit oder ohne Kerko. Mein Zitat würde ich als "ohne" interpretieren, wär mir aber auch nicht sicher...
 
Ganz genau das meinte ich ja :)
Die 2V56 kann man umstellen (mit oder ohne C am AREF). Bei den anderen steht nichts. Oder ich habs überlesen. Lieber nachmessen (Ohne Taster und Pullup dran!)
Aber wenn es das selbe Projekt ist fallen die Referenzspannungen 2V56 eh flach wenn die Betriebsspannung unter 3V fällt.
 
Ich habe eine Testschaltung aufgebaut, bei der an den Tiny keine weiteren Komponenten angeschlossen sind. Mit dem nachfolgenden Sketch wird der über den Spannungsteiler gemessene Wert korrekt im seriellen Monitor der Arduino IDE angezeigt. Aber natürlich ändert der sich in keiner Weise, wenn sich die Gesamtspannung ändert. Der Tiny hängt ja an der selben Versorgungsspannung, die er überwachen soll. Wie löst man dieses Problem?



CodeBox C
#include <SoftwareSerial.h>

const int cnPortAnalogIn  = A1;  // Dies ist der analoge Eingang

SoftwareSerial mySerial(99, 4);

//------------------------------------------------------------------------------------------------------------------

void setup()
{
 
  mySerial.begin  (9600);
  mySerial.println ("Vcc Check");
  pinMode (3, OUTPUT);
}

void loop()
{
  int nAnalogValue = analogRead (cnPortAnalogIn);
  mySerial.println  (nAnalogValue);
  digitalWrite(3,HIGH); // visuelle Kontrolle
  delay(10);
  digitalWrite(3,LOW);
  delay(500);
  }
 
Danke für den Link. Das wusste ich nicht. Ich dachte er würde per Default die interne nehmen.
Bin jetzt nicht mehr daheim, kann es daher nicht testen. Wäre es richtig in void setup folgende Zeile einzufügen oder muss ich noch mehr ergänzen?

analogReference(INTERNAL);
 
Sollte so richtig sein, ja.
Aber garantieren kann ich es nicht, ich kann weder C noch kenne ich die Arduino IDE :)
 
Und welche von den drei möglichen internals schaltet der dann konkret? Deine verlinkte Seite bezieht sich ja eigentlich nur auf ein paar Megas.
Eigentlich könnte man die REFS-Bits ja auch selbst festlegen (geht in BASCOM, geht in C, sicher auch in Luna, dann sollte Arduino-IDE keine Ausnahme sein... oder?)
Die Frage ist nur, wie sauber "analogRead()" umgesetzt ist (REFS[2:0] liegen im ADMUX, wo auch der ADC-Kanal festgelegt wird (also beim zuweisen des "cnPortAnalogIn"). Wenn das ordentlich RMW (read modify write) geschieht, geht das - wenn analogRead() hingegen Deine extra geänderten REFS-Bits wieder manipuliert (der könnte sich ja auch im Hintergrund 'ne Maske für die REFS-Bits fstlegen - default mit &B000 für Vcc, "analogReference()" weist der dann aus irgend'ner Tabelle was anderes zu, und bei jedem Schreibzugriff auf ADMUX wird die MAske dann mitangewendet... könnte...)
Hochsprachen eben...
 
:offtopic:

@LotadaC
In Luna kannst du, ähnlich wie in Bascom alles konfigurieren. Aber es gibt auch die Holzhammermethode.
AVR.RegisterName = ...
AVR.RegisterName.BitName = ...
AVR.RegisterName.BitNummer = ...
 
Eine kurze Erfolgsmeldung:

analogReference(INTERNAL);

Das funktioniert nun genau so, wie ich es benötige. Verändert sich die Versorgungsspannung des Tiny, dann wird dies im seriellen Monitor angezeigt.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)