Go Down

Topic: Attiny85 Power Supply (Read 1 time) previous topic - next topic

UnoRookie

Hallo,
ich habe vor kurzem mit meinem Arduino den Attiny85 programmiert. Jetzt will ich den Attiny85 unabhängig von der Stromquelle (+5V) des Arduinos betreiben. Da ich kein Fan von Batterien bin, hab ich mir überlegt, ein USB-Kabel als Stromquelle zu verwenden (dies stellt 5V als Eingangsspannung zur Verfügung). Der Attiny85 hat eine Stromaufnahme von 1.8 - 5.5V.

Bevor ich allerdings meinen Attiny85 daran anschließe, wollte ich eure Meinung hören, bevor doch noch schwarzer Rauch aufsteigt :-)

Vielen Dank und Grüße,
UnoRookie

agmue

#1
Sep 05, 2017, 09:18 am Last Edit: Sep 05, 2017, 11:44 am by agmue
Der Attiny85 hat eine Stromaufnahme von 1.8 - 5.5V.
Volt sind Spannung, nicht Strom.

Die notwendige Spannung hängt vom Takt ab, den Du mit den Fuses einstellst, siehe Datenblatt. Ausgeliefert wird der ATtiny mit 8 1 MHz intern, da sind 5 V goldrichtig.

Wenn Dein "USB-Kabel" jetzt auch noch genügend Strom (in Ampere) liefert, dann sollte es funktionieren.

EDIT: Frequenz
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HotSystems

...Ausgeliefert wird der ATtiny mit 8 MHz intern, da sind 5 V goldrichtig.
Ohne Änderungen der Fuse-Bits ist der ATtiny85 bei Auslieferung auf 1MHz eingestellt.
Dieser kann dann per Fuse-Bits (aus der IDE mit Bootloader) auf 8 MHz oder auch per Anpassung des Vorteilers im Sketch änderbar.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

UnoRookie

#3
Sep 05, 2017, 10:28 am Last Edit: Sep 05, 2017, 10:33 am by UnoRookie
Hallo,

ich hab die Internal Clock bei der Arduino IDE auf 8 MHz eingestellt. Die Option Bootloader brennen hab ich nicht gebraucht, hab nur
- als Board den Attiny85 ausgewählt,
- Clock auf 8 MHz eingestellt,
- ArduinoISP upgeloaded auf den Arduino
- und anschließend nen simplen Blink-Sketch einer LED an Pin 4 des Attiny85 upgeloaded,
was auch alles funktioniert hat (bis auf die Tatsache, dass delay(100) statt delay(1000) beim Attiny85 eine Sekunde warten bedeutet :-)

Dann müssten doch die 5V passen, oder ?
Quote
Wenn Dein "USB-Kabel" jetzt auch noch genügend Strom (in Ampere) liefert, dann sollte es funktionieren.
Puh, das muss ich erst mal mit dem Voltmeter messen. Hab ein USB-A- zu USB-A Kabel abgeschnitten und die Voltzahl gemessen. Die Stromabgabe (also Ampere) hab ich noch nicht gemessen.

HotSystems

#4
Sep 05, 2017, 10:34 am Last Edit: Sep 05, 2017, 10:36 am by HotSystems
...
ich hab die Internal Clock bei der Arduino IDE auf 8 MHz eingestellt. Die Option Bootloader brennen hab ich nicht gebraucht, hab nur
- als Board den Attiny85 ausgewählt,
- Clock auf 8 MHz eingestellt,
Damit wird der interne Takt nicht geändert, nur mit den Fuse-Bits oder per Vorteiler im Sketch.

Du solltest dringend das Datenblatt lesen, damit du es auch verstehst.

Quote
- ArduinoISP upgeloaded auf den Arduino
- und anschließend nen simplen Blink-Sketch einer LED an Pin 4 des Attiny85 upgeloaded,
was auch alles funktioniert hat (bis auf die Tatsache, dass delay(100) statt delay(1000) beim Attiny85 eine Sekunde warten bedeutet :-)
Das sagt schon aus, dass deine interne Frequenz nicht stimmt.
Wenn du nicht die richtigen Fuse-Bits (per Bootloader) setzt, arbeitet der mit 1 MHz intern.

Quote
Dann müssten doch die 5V passen, oder ?Puh, das muss ich erst mal mit dem Voltmeter messen. Hab ein normales USB-A-Kabel abgeschnitten und die Voltzahl gemessen. Die Stromabgabe (also Ampere) hab ich noch nicht gemessen
Ein PC liefert am USB normalerweise 0,5 A, sollte also auch passen, wen du keine weiteren großen Verbraucher dran hast.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Doc_Arduino

Hallo,

1MHz deshalb, weil standardmäßig die Fuse DIV/8 gesetzt ist. Wer nackte µC verwendet muss sich mit der Fuse Einstellung befassen.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

agmue

Ohne Änderungen der Fuse-Bits ist der ATtiny85 bei Auslieferung auf 1MHz eingestellt.
Habe schon lange keinen neuen mehr gekauft, sind mir inzwischen zu teuer :(

Danke für die Korrektur.
Die Option Bootloader brennen hab ich nicht gebraucht, ...
In der IDE ist "Bootloader brennen" und "Fuse setzen" eine Aktion, brauchst Du doch. Je nach Installation wird ein leerer Bootloader gebrannt.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

UnoRookie

Hallo,
vielen Dank für eure zahlreichen Antworten.
Quote
In der IDE ist "Bootloader brennen" und "Fuse setzen" eine Aktion, brauchst Du doch. Je nach Installation wird ein leerer Bootloader gebrannt.
Ja, das muss ich noch machen. Die "Bootloader brennen" Aktion hat mich bisl verwirrt, da ich von dem Bootloader eines Betriebssystems ausgegangen bin.

Quote
Das sagt schon aus, dass deine interne Frequenz nicht stimmt.
Wobei das doch heißen müsste, dass die Taktfrequenz intern schon auf 8 MHz gesetzt ist, oder? Beim Arduino, der 16MHz hat, dauert ein delay(1000) eine Sekunde und beim Attiny85 mit 8MHz betrieben, dann delay(100). Müsste doch stimmen, oder ?

Doc_Arduino

Hallo,

das delay soll doch unabhängig vom µC Takt immer richtig sein. Ein delay(1000) soll demnach immer eine Sekunde sein. Egal ob 16MHz oder 8MHz. Bei dir ist schon der interne 8MHz Oszillator aktiv. Aber zusätzlich noch der Vorteiler 8. Deswegen taktet dein ATtiny real mit 1MHz statt mit 8MHz.

Laut deiner falschen Rechnung mit 8MHz müßte das delay(500) sein um auf 1s. zukommen. Ist aber alles Unfug. Ohne Fuseanpassung stimmt gar nix was machst. Geht mit der seriellen weiter.



Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Katsumi_S

Deswegen taktet dein ATtiny real mit 1MHz statt mit 8MHz.

Laut deiner falschen Rechnung mit 8MHz müßte das delay(500) sein um auf 1s. zukommen. Ist aber alles Unfug. Ohne Fuseanpassung stimmt gar nix was machst. Geht mit der seriellen weiter.
Falsch :-)

Die IDE nimmt an, 8MHz. Real: 1 MHz weil Vorteiler / 8

Wenn der Taktgeber einigermaßen genau rennt, dann sollte 1000 / 8 = 125 passen.

delay(125);  = 1 Sekunde



Gruß, Katsumi

HotSystems

Habe schon lange keinen neuen mehr gekauft, sind mir inzwischen zu teuer :(

Danke für die Korrektur.In der IDE ist "Bootloader brennen" und "Fuse setzen" eine Aktion, brauchst Du doch. Je nach Installation wird ein leerer Bootloader gebrannt.
Aber gerne doch.
Ok, der Preis ist im Verhältnis zu fertigen Pro Mini Clone recht hoch. Allerdings für kleine Projekte, wo der Platz knapp ist, sind die bisher ungeschlagen und da gebe ich das Geld gerne aus.
Mein aktuelles Projekt sind per Bewegungssensor gedimmte Led-Strips für den Kleiderschrank. Ideal für den ATtiny85.
Alles andere wäre zu groß.

@UnoRookie
Bootloader ist hier eigentlich der falsche Begriff, da tatsächlich keine Software geflasht wird, wie beim Uno, sondern nur die Fuse-Bits.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

combie

#11
Sep 05, 2017, 12:51 pm Last Edit: Sep 05, 2017, 01:29 pm by combie
Der Berechnungsfehler tritt nicht nur bei delay() auf!
Sondern auch die Baudrate, ADC , SPI und I2C Takt werden falsch berechnet.
Auch so zeitkritische Dinge wie WS2801 LEDs, der Thermosensor DS18B20, usw, werden versagen.

Und diese Probleme will man doch alle nicht!
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

UnoRookie

Puh, jetzt wird die Liste lang, also :

Nochmals meinen besonderen Dank an

- agmue
- combie
- Doc_Arduino
- HotSystems
- Katsumi_S

für eure Beiträge !!

(nach dem Alphabet geordnet  :)  )

Ich hoff ich hab jetzt keinen vergessen  :o . Falls ja, bitte bei mir beschweren.

Werd das ganze dann heute Abend mit Bootloader brennen übernehmen.

Viele Grüße an euch,
Uno_Rookie

agmue

#13
Sep 05, 2017, 02:33 pm Last Edit: Sep 05, 2017, 02:36 pm by agmue
Mein aktuelles Projekt sind per Bewegungssensor gedimmte Led-Strips für den Kleiderschrank. Ideal für den ATtiny85.
Erst wollte ich nicht glauben, daß das geht, aber ich habe es ausprobiert, es funktioniert :)

@UnoRookie
Bootloader ist hier eigentlich der falsche Begriff, da tatsächlich keine Software geflasht wird, wie beim Uno, sondern nur die Fuse-Bits.
Das kommt drauf an. Auf meinem PC mit ATTiny Core gibt es empty_all.hex (28 Bytes) und optiboot_attiny85.hex1) (7216 Bytes). Je nach Auswahl in der IDE wird der Optiboot-Bootloader oder ein "leerer"2) zusammen mit den Fuse-Bits übertragen.

-----
1) Dieser steht nun bei mir gerade bei unsupported, aber für andere ATtiny kann ich den Optiboot auswählen.

2) Irgendwas steht da drin, möglicherweise ein Sprung oder ein Sprungvektor oder die Adresse eines Sprungvektors, aber eben nicht die Funktionalität eines Bootloaders.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HotSystems

Erst wollte ich nicht glauben, daß das geht, aber ich habe es ausprobiert, es funktioniert :)
Was hast du probiert bzw. was funktioniert ?

Quote
Das kommt drauf an. Auf meinem PC mit ATTiny Core gibt es empty_all.hex (28 Bytes) und optiboot_attiny85.hex1) (7216 Bytes). Je nach Auswahl in der IDE wird der Optiboot-Bootloader oder ein "leerer"2) zusammen mit den Fuse-Bits übertragen.

-----
1) Dieser steht nun bei mir gerade bei unsupported, aber für andere ATtiny kann ich den Optiboot auswählen.

2) Irgendwas steht da drin, möglicherweise ein Sprung oder ein Sprungvektor oder die Adresse eines Sprungvektors, aber eben nicht die Funktionalität eines Bootloaders.
Ja, davon habe ich auch gelesen, aber der Standard ist wohl ohne die genannten "Funktionalitäten".
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Go Up