Hallo zusammen,
ich bin nun schon einige Zeit auf der Suche nach der Konstellation wie
im Betreff geschrieben. Ich habe diverse Seiten im Netz gelesen und auch
hier im Forum. Z.B:
Beitrag "Atmega 328p: LowPower Library bei 1Mhz intern und 8Mhz extern"
oder
Beitrag "Warum Uhrenquarz 32,768 kHz?"
oder
Beitrag "Mit Uhrenquarz Takt vorgeben"
Zu meinem Ziel bin ich bisher nicht gekommen. Kurz warum ich das machen
möchte.
Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen. Daher
liegt der Bereich der Batterien zwischen 1,8 V und 3,6 V. Um das machen
zu können muss der Mega ja, laut Datenblatt, auf 1 Mhz laufen.
Warum der 32khz Quarz? Der soll zu der Konstellation gut passen, genauer
sein als der interne Taktgeber und auch noch recht stromsparend sein.
Der interne Taktgeber schwankt wohl relativ stark mit fallender
Spannung.
Ich stehe etwas auf dem Schlauch wenn es um die Fuses und die Bootloader
geht.
Ich habe mir schon auf der Seite http://www.engbedded.com/fusecalc/ das
ganze angeschaut was die Fuses betrifft.
Was genau bedeutet das "1K" bzw. "32K" bei
"Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 1K CK/14 CK + 65
ms; [CKSEL=0100 SUT=10] "
bzw.
"Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 32K CK/14 CK + 65
ms; [CKSEL=0100 SUT=10]".
Welches davon wäre dann das richtige? Steht das 32K für die 32K der
Quarzes?
High (D9)- und Extendet(FF) Fuse bleiben ja immer gleich. Also betrifft
es nur den Low-Fuse ob 64 oder 65.
Wo bekomme ich dann einen passenden Bootloader dafür her, oder wie kann
man sich selber einen erstellen? Und warum sieht man in manchen
Bootloadern das dort auch noch einmal du Fuses gesetzt sind.
Sorry wenn ich hier so auf dem Schlauch stehe, aber so ganz klick will
es noch nicht machen. Ich würde mich echt freuen wenn Ihr mir hier
helfen könntet.
Danke euch schonmal.
Robert B. schrieb:> Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen. Daher> liegt der Bereich der Batterien zwischen 1,8 V und 3,6 V. Um das machen> zu können muss der Mega ja, laut Datenblatt, auf 1 Mhz laufen.> Warum der 32khz Quarz? Der soll zu der Konstellation gut passen, genauer> sein als der interne Taktgeber und auch noch recht stromsparend sein.
Du möchtest aus 32kHz 1MHz erzeugen?
Robert B. schrieb:> Hallo zusammen,>> [...]> Was genau bedeutet das "1K" bzw. "32K" bei> "Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 1K CK/14 CK + 65> ms; [CKSEL=0100 SUT=10] ">> bzw.>> "Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 32K CK/14 CK + 65> ms; [CKSEL=0100 SUT=10]".> Welches davon wäre dann das richtige? Steht das 32K für die 32K der> Quarzes?
Das steht im Datenblatt ab Seite 24.
"Start-up time" ist die Startzeit jeweils nach
"PWRDWN" -> "Abschaltung"
"RESET" -> "Reset".
Es ist eigentlich deutlich erklärt, dass die verschiedenen
Taktquellenvarianten und Stromversorgungen jeweils verschiedene Zeiten
benötigen um den AVR sicher zu starten.
"CK" ist, - dass geht aus dem Kontext hervor -, die Einheit der Anzahl
der Taktzyklen. Also eine Zeitangabe.
> [...]> Wo bekomme ich dann einen passenden Bootloader dafür her,
Z.B. aus dem Internet.
> oder wie kann> man sich selber einen erstellen?
Man tippt ein Programm ein.
Ein Bootloader besteht im wesentlichen aus zwei Teilen: 1. Der
Kommunikation mit z.B. einem PC über eine Schnittstelle. 2. Dem
Speichern der empfangenen Daten im Flash-Speicher.
Dazu kommen evtl.: Absicherung der Kommunikation gegen Fehler.
Dekompression der Daten. Entschlüsselung der Daten. Verifikation der
Daten. Authentifizierung.
> Und warum sieht man in manchen> Bootloadern das dort auch noch einmal du Fuses gesetzt sind.
Das sieht man dort nicht. :-) OK. Wo sieht man das?
> [...]
> Warum der 32khz Quarz?
Frage das denjenigen, der in der Schaltung den 32 kHz Quarz eingeplant
hat. Du kannst ihn jedenfalls nicht nutzen, um die CPU mit mehr als 32
kHz zu takten.
Habe ich das richtig verstanden - der interne RC-Oszillator soll per
OSCCAL mit Hilfe des 32 KiHz-Quarzoszillators justiert werden? Ist
machbar, vielleicht lässt sich sogar etwas (Halb-)Fertiges hier im Forum
finden, ich glaube, c-hater hatte mal so etwas vorgestellt.
Ja, ist von c-hater, und damit, wie zu erwarten, in Assembler. Wirkt,
auf den ersten Blick, sehr aufwändig gemacht:
Beitrag "OSCCAL beim Tiny25/45/85"
Scheint universell zu sein, da hier auf den ATtiny85 bezogen.
Danke euch erstmal für die bisherigen Antworten.
@Georg M.
Nein. Du hast meinen Text ja sogar zietiert und da steht es drin.
> Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen. Daher> liegt der Bereich der Batterien zwischen 1,8 V und 3,6 V. Um das machen> zu können muss der Mega ja, laut Datenblatt, auf 1 Mhz laufen.
...das möchte ich.
Das mit dem 32khz Quarz habe ich nur ein paar mal im Netz aufgeschnappt
nur leider wurde nie beschrieben wie es geht. Ich wunderte mich auch wie
das gehen soll. Ich kann mir auch maximal vorstellen den internen
oszillator mit hilfe des 32khz externen immer "auf Kurs" zu halten damit
dieser genauer läuft. So wie es S. Landolt auch vermutet.
Durch diesen Ideenanstoß bin ich bei erneuter suche auf folgenden
Beitrag gestoßen:
https://www.mikrocontroller.net/articles/Sleep_Mode#Quarzgenaue_Zeitbasis
Das müsste das ganze ja in etwas wiederspiegeln. Wenn ich das richtig
verstehe wird der Timer2 des Mega durch den 32khz Quarz asynchron
getaktet und ist für die Zeit verantwortlich wo der Arduino schläft.
Z.B. für die 8 Sekunden die meiner immer schläft.
Habe ich das so korrekt verstanden?
@Theor
> Z.B. aus dem Internet.
Ja danke... wenn ich da das passende gefunden hätte und ich mir 100%
sicher wäre hätte ich hier nicht gefragt ;) Anstelle von "aus dem
Internet" wäre ein Link toll wenn es so einfach ist. Mit einer kleinen
Antwort warum z.B. der Bootloader des Links dafür geeignet ist.
> Man tippt ein Programm ein.>> Ein Bootloader besteht im wesentlichen aus zwei Teilen: 1. Der> Kommunikation mit z.B. einem PC über eine Schnittstelle. 2. Dem> Speichern der empfangenen Daten im Flash-Speicher.> Dazu kommen evtl.: Absicherung der Kommunikation gegen Fehler.> Dekompression der Daten. Entschlüsselung der Daten. Verifikation der> Daten. Authentifizierung.
Man tippt ein Programm ein? Ich kann ein Programm starten und es
benutzen aber ein Programm eintippen? Meinst du Code in ein Programm
eingeben? Wenn ja welches Programm wäre das? Ggf. sind die Infos auch
überflüssig wenn es schon fertige Bootload gibt. Ich will das Rad nicht
neu erfinden. Nur bin ich in der Thematik nicht geübt und lerne noch.
Die Beschreibung was ein Bootloader ist/macht finde ich schonmal sehr
hilfreich. Danke.
> Das sieht man dort nicht. :-) OK. Wo sieht man das?
Ich habe mich hier etwas vertan und meinte eigentlich die Board.txt und
die einstellungen für den Bootloader entsprechend für den Chip
Z.B.:
optiboot28.menu.cpu.atmega328p=ATmega328p
optiboot28.menu.cpu.atmega328p.upload.maximum_size=32256
optiboot28.menu.cpu.atmega328p.upload.maximum_data_size=2048
-> optiboot28.menu.cpu.atmega328p.bootloader.high_fuses=0xDE
-> optiboot28.menu.cpu.atmega328p.bootloader.extended_fuses=0xFD
->
optiboot28.menu.cpu.atmega328p.bootloader.file=optiboot/optiboot_atmega3
28.hex
optiboot28.menu.cpu.atmega328p.build.mcu=atmega328p
Robert B. schrieb:> das möchte ich
Was genau möchtest Du eigentlich tun?
Robert B. schrieb:> Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen.
Und wozu genau? Was bezweckst Du damit?
Robert B. schrieb:> ich bin nun schon einige Zeit auf der Suche nach der Konstellation wie> im Betreff geschrieben.
Deinem Betreff ist zu entnehmen, dass du einen 32 kHz Uhrenquarz besitzt
(exakt 32768 Hz) und einen 1mHz Takt, also 0,001 Hz benötigst
(das Einheitenzeichen der Einheit Hertz für die Frequenz schreibt sich
mit großem "H").
Also zurück zu deinem Problem. Du kannst einfach einen Teiler 1:2^15
verwenden (ergibt 1Hz) und noch drei Teiler 1:10 nachschalten. Ein 1:10
Teiler wiederum setzen sich meist aus einem 1:5 und einem 1:2 Teiler
zusammen. Wenn du als letztes in der Kette einen 1:2 setzt, ist das
Ausgangssigal symmetrisch, was oft wünschenswert ist.
Hugo H. schrieb:> Und wozu genau? Was bezweckst Du damit?
Es ist kein Geheimnis was ich baue, aber ich wüsste nicht was der Rest
meines Projektes mit diesem Teilproblem zu tun hat. Außer evtl. diesen
Beitrag aufzublähen und vom Kern den ich behandelt haben möchte
abzuweichen.
Sollte es doch einen Grund geben euch Dinge mitzuteilen werde ich das
gern tun.
S. Landolt schrieb:> Also, fertige Bootloader gibt es einige, s. Unterforum 'Projekte &> Code'. In Kombination mit diesem 32 KiHz-Quarz-Abgleich aber vermutlich> nicht.
Ja :( leider.
s.c.n.r. schrieb:> Deinem Betreff ist zu entnehmen, dass du einen 32 kHz Uhrenquarz besitzt> (exakt 32768 Hz) und einen 1mHz Takt, also 0,001 Hz benötigst
Je genau 32768 Hz oder 32,768 kHz oder im englischen 32.768 kHz ;)
Meinst du mit 0,001 Hz den 1mHz? Also wenn mich nicht alles täuscht sind
1 mHz = 1.000.000 Hz (Punkte hier als Tausendertrennzeichen für bessere
Lesbarkeit). Korregiert mich bitte wenn das falsch ist. Oder was genau
meinst du mit 0,001 Hz?
s.c.n.r. schrieb:> Also zurück zu deinem Problem. Du kannst einfach einen Teiler 1:2^15> verwenden (ergibt 1Hz) und noch drei Teiler 1:10 nachschalten. Ein 1:10> Teiler wiederum setzen sich meist aus einem 1:5 und einem 1:2 Teiler> zusammen. Wenn du als letztes in der Kette einen 1:2 setzt, ist das> Ausgangssigal symmetrisch, was oft wünschenswert ist.
Bitte verzei mit meine absolute Unwissenheit. Das verstehe ich nicht.
2^15 sind ja 32.768 kommt mir bekannt vor vom Quarz. Was genau meinst du
mit den Teilern? "Einfach verwenden" glaub ich dir aufs Wort. Alles ist
einfach wenn man weiß wie es geht. Nur ich stehe hier voll auf dem
Schlauch. Wo genau muss ich diese Teiler denn setzen?
Wenn es einen Link gibt wo ich mir dazu was durchlesen kann wäre ich
sehr dankbar.
Symmetrisch klingt gut. Irgendwie nach Einklang.
Ich komme nicht aus der Mikrotechnik oder irgend einem anderen
elektrotechnischen Beruf der damit was anfangen könnte. Ich mache das
aus Hobby. Deswegen auch an alle anderen die hier gern helfen möchte.
Habt nachsehen wenn mir nicht alles auf anhieb klar ist. Ich bin aber
bereit zu lernen :D
Robert B. schrieb:> Es ist kein Geheimnis was ich baue, aber ich wüsste nicht was der Rest> meines Projektes mit diesem Teilproblem zu tun hat.
Ich auch nicht - viel Spaß noch.
Robert B. schrieb:> Meinst du mit 0,001 Hz den 1mHz? Also wenn mich nicht alles täuscht sind> 1 mHz = 1.000.000 Hz
1 mHz heißt ein MILLI-Hertz. Du meinst wohl 1MHz - also 1 MEGA-Hertz
> Ja :( leider.
Nun ja, dann muss man es eben selbst machen (und anschließend als
Projekt hier vorstellen, im besten Fall). Der ATmega328 hat als
boot-size bis zu 2048 Worte, das sollte also keine Beschränkung
darstellen.
Falls aber hierfür die Kenntnisse fehlen, stellt sich durchaus die
Frage nach dem Gesamtprojekt. Es sei denn natürlich, es findet sich in
dieser unsäglichen Krise jemand, der das maßgeschneidert anfertigt und
unter 'Langeweile-totschlagen mit Erkenntnisgewinn' verbucht.
Robert B. schrieb:> Ich stehe etwas auf dem Schlauch wenn es um die Fuses und die Bootloader> geht.> Ich habe mir schon auf der Seite http://www.engbedded.com/fusecalc/ das> ganze angeschaut was die Fuses betrifft.
Mein Rat:
Lass die Fuses auf Werkseinstellung.
Dann bisste schon mal auf 1MHz internem Takt.
Wenne keine Schnittstelle wie Serial, Onwire usw nutzt, dann muss auch
nichts kalibriert werden.
SPI und I2C sind sehr geduldig, was den Takt angeht, also viel
problemloser.
Auf den Bootloader verzichte ich bei solchen Konfigurationen
Eben auch um die Kalibrierung einzusparen.
Rate ich dir auch.
Für ein genaues Zeitraster dann den Uhrenquarz an Timer2 verwenden.
Da muss auch nix mit den Fuses gemacht werden.
Stefan S. schrieb:> Robert B. schrieb:>> Meinst du mit 0,001 Hz den 1mHz? Also wenn mich nicht alles täuscht sind>> 1 mHz = 1.000.000 Hz>> 1 mHz heißt ein MILLI-Hertz. Du meinst wohl 1MHz - also 1 MEGA-Hertz
Stimmt, da ist es wieder mit den großen und kleinen Buchstaben. Jetzt
bin ich aber noch mehr verwirrt warum Milliherz?
S. Landolt schrieb:>> Ja :( leider.> Nun ja, dann muss man es eben selbst machen (und anschließend als> Projekt hier vorstellen, im besten Fall). Der ATmega328 hat als> boot-size bis zu 2048 Worte, das sollte also keine Beschränkung> darstellen.> Falls aber hierfür die Kenntnisse fehlen, stellt sich durchaus die> Frage nach dem Gesamtprojekt. Es sei denn natürlich, es findet sich in> dieser unsäglichen Krise jemand, der das maßgeschneidert anfertigt und> unter 'Langeweile-totschlagen mit Erkenntnisgewinn' verbucht.
Also Erfahrung fehlt hier alle mal bei mir. Je nachdem wie schwer es zu
erlernen ist würde ich mir das aneignen wenn es gute Quellen gibt. Wenn
das jedoch so komplex ist und man dort ebenfalls viel Zeit investieren
muss würde ich gern auf a) hilfe zurückgreifen, oder b) etwas Fertiges
nehmen.
Arduino Fanboy D. schrieb:> Mein Rat:> Lass die Fuses auf Werkseinstellung.> Dann bisste schon mal auf 1MHz internem Takt.
Hmm aktuell läuft er auf 16 MHz. Zumindest würde ich das mal stark
vermuten ohne genau nachzuschauen, da ich einen 16MHz Quarz dran habe.
Bootloader ist der von der Arduino Software drauf für den Uno.
>> Wenne keine Schnittstelle wie Serial, Onwire usw nutzt, dann muss auch> nichts kalibriert werden.> SPI und I2C sind sehr geduldig, was den Takt angeht, also viel> problemloser.
Ich würde ungern auf solche Dinge verzichten. Ich habe damit Nodes
gebaut die diverse aufgaben haben. Temperatur+Luftfeuchtigkeit in
Räumen, Tür- und Fensterkontakte, Gragentüröffner, Helligkeit über einen
einfachen Fotowiderstand, usw.
> Auf den Bootloader verzichte ich bei solchen Konfigurationen> Eben auch um die Kalibrierung einzusparen.> Rate ich dir auch.
Meine Platinen haben leider nur eine FTDI Schnittstelle und keine SPI.
Klar könnte ich bei einem Update dann den Chip runterpulen und anderswoh
bestücken. Ist aber nicht so komfortabel.
> Für ein genaues Zeitraster dann den Uhrenquarz an Timer2 verwenden.> Da muss auch nix mit den Fuses gemacht werden.
Einfach den 32 kHz Quarz anschließen ohne was anzupassen? Ich vermute
man muss dann auf Timer2 umstellen im Code oder?
Robert B. schrieb:> Einfach den 32 kHz Quarz anschließen ohne was anzupassen?
Natürlich!
Robert B. schrieb:> Ich vermute> man muss dann auf Timer2 umstellen im Code oder?
Dein Arduino millis() arbeitet dann weiter mit Timer0.
Und ja, wenn du das auf den Timer2 umbauen willst, dann darfst du in den
Arduino Core eingreifen.
Robert B. schrieb:> Meine Platinen haben leider nur eine FTDI Schnittstelle und keine SPI.
Tja..
Dann wirst du dir einen kalibrierenden Bootloader bauen dürfen.
Tipp:
Der original Bootloader QuellCode wird mit der Arduino IDE ausgeliefert.
Arduino Fanboy D. schrieb:> Tja..> Dann wirst du dir einen kalibrierenden Bootloader bauen dürfen.
Nein - er wird mal erklären dürfen, was er eigentlich erreichen will.
Will er aber nicht - also interessant.
S. Landolt schrieb:> Ja, ist von c-hater, und damit, wie zu erwarten, in Assembler. Wirkt,> auf den ersten Blick, sehr aufwändig gemacht:> Beitrag "OSCCAL beim Tiny25/45/85"> Scheint universell zu sein, da hier auf den ATtiny85 bezogen.
Und für diesen Anwendungsfall ist er ziemlich ungeeignet.
Es ging dabei um ein "ziemlich" anderes Problem, nämlich: Justiere den
internen RC-Oszillator anhand eines extern über irgendeinen Pin
eingespeisten Taktsignals. Nicht darum, ihn anhand eines von Timer2
gelieferten Signals zu justieren.
Das ist schon deshalb selbstverständlich, weil die mit dem Code
addressierten Tinys natürlich weder Timer2 noch einen daran
angeflanschten Uhrenquarz haben, bzw. haben können, das können nur die
Megas...
Allerdings sind natürlich weite Teile des Codes recht problemlos auch
für diesen Anwendungsfall verwendbar. Und ich habe natürlich auch
fertigen Code für die Anwendung auf diesen Fall...
> Allerdings sind natürlich weite Teile des Codes recht> problemlos auch für diesen Anwendungsfall verwendbar.
Genauso schien es mir auf den ersten Blick - auch auf den zweiten.
> Und ich habe natürlich auch fertigen Code für die Anwendung> auf diesen Fall...
Und worauf warten Sie? Nur zu, hier gibt es mindestens einen
Interessierten.
PS:
> ... Tinys natürlich weder Timer2 noch einen daran> angeflanschten Uhrenquarz
Eben dies meinte ich mit dem Satz
>> Scheint universell zu sein, da hier auf den ATtiny85 bezogen.
S. Landolt schrieb:> Und worauf warten Sie? Nur zu, hier gibt es mindestens einen> Interessierten.
Uuuuhhhh... da kennt jemand C-hater noch nicht! xD
Ich hol schonmal das Popcorn :-)
Zum eigentlichen Problem:
Warum fragen alle: "Was willst du eigentlich erreichen?" Diese Frage hat
einen, dir wahrscheinlich noch nicht so klaren, guten Grund. Ich schätze
mal 90% der Fragen, welche hier gestellt werden, haben ein Ziel vor
Augen und einen sich selbst fest auferlegten Weg zu eben jenem.
Aaaaaber, man kann Rom auch über viele Wege erreichen. Und deshalb die
Frage nach dem Ziel deines Projektes. Ist ein solch extremer Takt dann
überhaupt nötig? Und wenn "Ja" warum dann genau 1Mhz? Soll es eine
Uhrenanwendung sein, warum dann nicht die 32Khz als Takt nutzen (denn
genau dafür ist sie da).
Für welche Anwendung bedarf es also einen selbstkalibrierenden Takt?
Gerade wenn dann noch "Arduino" ins Spiel kommt wird das dann alles sehr
suspekt.
S. Landolt schrieb:> Au contraire! Wir kennen uns seit über einem Jahrzehnt. Und rein> fachlich schätze ich ihn sehr.
Je vous demande mille fois pardon! Danke für die Aufklärung, dann wird
er ja sicherlich den Satz verzeihen :-) Wie ich auch schon mehrfach über
ihn äußerte: Fachlich ein Genie - Menschlich... naja. :-D
S. Landolt schrieb:> Und worauf warten Sie? Nur zu, hier gibt es mindestens /einen/> Interessierten.
Who is it?
Der TO wohl nicht, der kann mit Assemblercode offensichtlich ungefähr
genau soviel anfangen wie meine Katze.
Und für Leute, die Assembler können, sollte es kein Problem sein, den
Code selber entsprechend anzupassen.
> Who is it?
Ich bin das.
Ich schaue gerne in Assemblerprogramme von fähigen Leuten, man lernt
meist etwas dabei. Und ja, ich habe selbst schon so etwas geschrieben,
aber zum Vorstellen reicht es wohl nicht.
Wenn Sie aber nicht wollen, auch recht. Langeweile habe ich nicht, diese
C-Krise trifft mich kaum, "tangiert mich nur peripher", hätten wir
früher gesagt.
Rene K. schrieb:> Wie ich auch schon mehrfach über> ihn äußerte: Fachlich ein Genie
Nein, ich betone jederzeit: nur guter Handwerker. Einer der einfach
weiß, was er tut, weil er seinen Job beherrscht.
Genies sind eine ganz andere Klasse. Klar: ich wäre auch gerne eins.
Aber ich weiß: das bin ich nicht und werde ich auch nicht mehr werden,
dazu bin ich einfach schon zu alt, mein Denken ist viel zu sehr auf
eingefahrene Bahnen fixiert, um noch irgendwas Geniales hervorbringen zu
können.
Nicht ganz so schlimm, wenn man sich vor Augen hält, daß auch die
meisten echten Genies wie z.B. Einstein nach ihren verrückten, aber
wegweisenden Ideen eigentlich nur noch Mittelmaß produziert haben.
Sprich: wirkliche Genies müssen jung sein (oder zumindest jung
anfangen). Das sagt die Geschichte der Genies.
Allerdings: Es genügt nicht, nur jung zu sein, man muß auch ein Gehirn
haben und dieses nicht nur dafür einsetzen, wie man das Date mit
GretchenModermöse kriegt...
Das richtet sich vor allem an den akademischen Nachwuchs...
c-hater schrieb:> Allerdings: Es genügt nicht, nur jung zu sein, man muß auch ein Gehirn> haben und dieses nicht nur dafür einsetzen, wie man das Date mit> GretchenModermöse kriegt...
Es genügt nicht, keine Gedanken zu haben, man muss auch unfähig sein,
sie auszudrücken.
Thomas E. schrieb:> Hättest du den von vornherein selbst gefunden, hättest du dir diesen> Thread sparen und uns das Geschwätz von einigen Leuten hier ersparen> können.
Das stimmt. Wie aber so oft ist es manchmal so das einem das passende
Wort fehlt nachdem man suchen muss. Timer2 oder Asynchron Mode wärem mir
nie eingefallen.
Damit Onkel Hugo heute abend, vor neugier, nicht zur Ruhe kommt sage ich
gern was ich vor habe. Wie ich schon schrieb habe ich damit verschieden
"Nodes" gebaut. Die Nodes haben diverse Senoren verbaut. Halt immer nach
Bedarf. Teilweise aber auch mehrere auf einer Platine. Sowohl die
Funkmodule, sowohl auch die ganzen Senoren, arbeiten in einem Bereich
von 1,7 bis 3,6 Volt. Das fand ich allein deswegen schon gut weil das
zufällig 2xAA, 2xAAA oder eine Knopfzelle sind. So komme ich ohne
Spannungswandler etc aus. Ich habe aktuell einen "schlafverbrauch" von
4,7 Mikroampere. Somit halten alle Versionen zumindest 2 Jahre und
länger.
Da ich diese Platine jederzeit mit anderen Sensoren bestücken möchte
will ich mir alle Schnittstellen offen halten. Serial, Onwire, I2C und
was es noch so gibt.
Nun hatte ich bei einigen Sensoren die unter 3,1 Volt gefallen sind das
Problem das sie angefangen haben zu spinnen. Daraufhin hatte ich
nachgeforscht und im Datenblatt des Megas die Tabelle gesehen mit den
MHz zur Spannnung. Ich dann direkt etwas überrascht das es überhaupt mit
der Konstellation funktioniert hat. Zumindest wenn ich davon ausgehe das
der Mega mit 16 MHz läuft.
Da ich das ganze als Hobby betreibe, keineerleit sonstige Erfahrung mit
Technik in der Art habe, fehlt mir das entsprechende Fachwissen worüber
sich hier einige ergötzen mögen. Zum glück gibts auch andere die doch
helfen möchten.
Assembler ... ja hatte ich auch ein Semester vor 15 Jahren.
Die Nodes schicken dann halt Ihre Daten über ein Funkmodul an ein
Gateway und daran hängt eine Datenbank zur weiterverarbeitung.
So und wenn ich nun dem Sleepmodus über den internen RC-Oszillator
laufen lasse komme ich irgendwie nicht auf einen Schlaf-Modus Strom von
4,7 Mikroampere sondern mehr. Das ist irgendwie doof wenn man es mit
Batterien betreibt. Wenn ich aber einen 16 MHz Quarz nehme komme ich da
auf den genannten Wert.
Ich möchte doch an meinem Projekt nichts ändern außer den Mega im
Spannungsbereich von 1,7 - 3,6 Volt stabil laufen haben ohne den
Stromverbrauch zu erhöhen. Wenn der Strom noch weniger wird bin ich
nicht böse drum. Darum verstehe ich nicht ganz warum das "drum herum"
wichtig ist. Da ich aber nur Leihe bin wird es mir nun sicher jemand
sagen.
Hi
>Darum verstehe ich nicht ganz warum das "drum herum">wichtig ist.
Weil du in deiner Ahnungslosigkeit schon vieles falsch gemacht hast.
> Da ich aber nur Leihe bin wird es mir nun sicher jemand>sagen.
Pfandleihe oder was?
MfG Spess
Ok. Danke an die die es probiert haben mir zu helfen. Das Forum ist hier
von Pros für Pros. Sorry das ich versucht habe Spas an der Materie zu
finden. Aber hier will, bis auf einer, wohl niemand helfen und lieber
Anfänger auslachen, beleidigen oder auf Lappalien rumreiten um sich zu
profilieren.
Viel Spaß euch ;)
@ TO
Ich denke, es könnte Dir von Nutzen sein, welche Motive ein Teil der
Menschen in diesem Forum hat. Ich rede hier von dem Teil, der Erfahrung
und Wissen hat und der eine einigermaßen hilfsbereite Einstellung hat.
Diese Menschen haben irgendwann begonnen, sich aus reiner Faszination
für das Thema Technik zu interessieren. Sie haben über lange Zeiten,
über Jahre hinweg, Tage und Nächte lang Anstrengungen unternommen zu
verstehen wie etwas funktioniert, warum es so und nicht anders gemacht
wurde, wie die Dinge korrekt heissen, wie die Mathematik dahinter
aussieht, welche handwerklichen Fähigkeiten dazu gehören und sie haben
das Alles praktisch durchgeführt, gelesen, gelötet, diskutiert, haben
Fehler gemacht und sind an mancher Stelle zeitweise gescheitert. Kurz:
Sie haben Leidenschaft für das Thema entwickelt, haben auf Anderes
verzichtet, Frustrationen ausgehalten, in vielen Fällen
Persönlichkeitsentwicklungen durchgemacht, wie das bei jeder ernsthaften
Beschäftigung mit irgendeiner Kunst der Fall ist.
Ich rate Dir, darüber mal ernsthaft und lang nachzudenken und auch mal
zu betrachten, mit welchem Thema Du Dich wirklich ernsthaft und sogar
leidenschaftlich beschäftigt hast und was Du dabei mit Dir und Anderen
erlebt hast.
Sehr interessant könnte für Dich auch die Netiquette
https://www.mikrocontroller.net/articles/Netiquette sein und ich möchte
Dir besonders auf den dort verlinkten Artikel
https://tty1.net/smart-questions_de.html empfehlen. Dort sind an einigen
Stellen die Haltungen der oben von mir erwähnten Menschen erklärt.
Dann schaue Dir nochmal Deine Motive und die Art und Weise an, die Frage
zu stellen, die Du hier gestellt hast. Vielleicht gehst Du dann die
Sache auf neue Weise an, angefangen mit eigenen Anstrengungen.
Okay, es wird also eine Sensor Node. Wobei 4,7µA schon sehr sportlich
sind. Aber okay... man muss sich Ziele setzen.
Welche Interaktion nutzt du um die µC aus dem Tiefschlaf zu wecken? Die
Erfahrung die du gesammelt hast, das der µC mehr Strom verbraucht wenn
der interne OSZ läuft ist richtig. Logisch, denn diese bedarf ja auch
Strom (die externe im übrigen auch!).
Aber muss diese wirklich nachkalibriert werden? Ich denke nicht. Das
einzigste Zeitkritische was ich lese ist die serielle Schnittstelle,
diese ist aber robuster als du eventuell denkst.
Mein Vorschlag: nutze einen externe RTC - Vorteil: du hast eine
Zeitbasis, du hast eine Möglichkeit zu bestimmten Zeiten den µC aus dem
Tiefschlaf zu holen und in den meisten Fällen direkt einen 32Khz sowie
einen 1Hz Ausgang. Als auch das sie für extrem niedrigen Energiebedarf
ausgelegt sind.
Wenn es ja Nodes sind - willst du sie über Funk / Wlan kommunizieren
lassen? Das wird dann in deinem System der größte Stromfresser werden.
Rene K. schrieb:> Okay, es wird also eine Sensor Node. Wobei 4,7µA schon sehr sportlich> sind. Aber okay... man muss sich Ziele setzen.
Das habe ich aktuell schon erreicht. Ich meine natürlich in der zeit woe
der Mega nicht aktiv ist. Aktuell sind es immer 8 Sekunden. Per Software
läuft ein Zähler der das ganze dann auf 5 Minuten verlängert und dann
die anderen Teile wie Sensoren oder das Funkmodul wieder aktiviert und
sendet.
Oder meinste du mit der neuen Konfiguration?
> Welche Interaktion nutzt du um die µC aus dem Tiefschlaf zu wecken? Die> Erfahrung die du gesammelt hast, das der µC mehr Strom verbraucht wenn> der interne OSZ läuft ist richtig. Logisch, denn diese bedarf ja auch> Strom (die externe im übrigen auch!).>> Aber muss diese wirklich nachkalibriert werden? Ich denke nicht. Das> einzigste Zeitkritische was ich lese ist die serielle Schnittstelle,> diese ist aber robuster als du eventuell denkst.>> Mein Vorschlag: nutze einen externe RTC - Vorteil: du hast eine> Zeitbasis, du hast eine Möglichkeit zu bestimmten Zeiten den µC aus dem> Tiefschlaf zu holen und in den meisten Fällen direkt einen 32Khz sowie> einen 1Hz Ausgang. Als auch das sie für extrem niedrigen Energiebedarf> ausgelegt sind.>
Hatte ich auch schon überlegt und nachgeschaut. Dann kann man sich
glaube auch das mit den 8 Sekundenschritten sparen und gleich eine Zeit
vorgeben wann alles aufwachen soll. Dachte nur es geht sicher auch ohne.
>> Wenn es ja Nodes sind - willst du sie über Funk / Wlan kommunizieren> lassen? Das wird dann in deinem System der größte Stromfresser werden.
Da hast du recht. Das Funkmodul RFM69CW braucht definitiv am meisten
Strom. Ist aber nur ganz kurz aktiv.
Ich schau mir die weiter oben verlinkten Beiträge über Ostern mal an und
werde damit etwas rumprobieren.
Rene K. schrieb:> Mein Vorschlag: nutze einen externe RTC - Vorteil: du hast eine> Zeitbasis, du hast eine Möglichkeit zu bestimmten Zeiten den µC aus dem> Tiefschlaf zu holen und in den meisten Fällen direkt einen 32Khz sowie> einen 1Hz Ausgang. Als auch das sie für extrem niedrigen Energiebedarf> ausgelegt sind.
Hallo Rene.
Danke nochmal für deine vorherige Antwort. Ich bin nun dazu hingerissen
evtl. wirklich eine RTC zu verbauen. Gefunden habe ich z.B. die DS1308.
Diese soll, laut Usern im Internet, aber sehr ungenau gehen. Also mehrer
Sekunden am Tag. Es ist bei mir nich so zeitkritisch, aber schön wäre es
trotdem wenn es nicht so ungenau wäre.
Darauf hin schrieben einig die DS3231 und DS3232 sind viel genauer.
Leider arbeiten die aber nur zwischen 2.3 V und 5.5 V und nicht wie die
DS1308 zwischen 1.7 V und 5.5 V.
Ich hoffe es ist nich unverschämt diese bitte zu äußern. Hättest du ggf.
eine low Current RTC mit guter Genauigkeit in diesem Spannungsbereich
die du mir empfehlen kannst?
Der DS1308 Chip an sich ist nicht schlecht, aber die Hersteller der
Module setzen billigste Bauteile (meist auch Fälschungen vom Chip) ein
und missachten grundlegende Layout Regeln. Das zusammen macht sie so
ungenau.
Pardon, das war ein Irrtum: zwar steht da "Supply Voltage 2.0 ... 5.5
V", einige Zeilen tiefer aber "Power-Fail Voltage 2.45 ... 2.70 V"; und
tatsächlich, unter zweieinhalb Volt läuft das Ding hier nicht an.
Wobei übrigens der erwähnte DS3231 eine 'VPF' im selben Bereich
aufweist lt. Datenblatt.
S. Landolt schrieb:> Pardon, das war ein Irrtum: zwar steht da "Supply Voltage 2.0 ... 5.5> V", einige Zeilen tiefer aber "Power-Fail Voltage 2.45 ... 2.70 V"; und> tatsächlich, unter zweieinhalb Volt läuft das Ding hier nicht an.
Dafür läuft er über 5,5 Volt an -und zwar blau
?