Forum

Einloggen | Registrieren | RSS  

bastelix(R)

08.05.2019,
23:34

@ HDT

Kurzzeit-Timer mit Mikrocontroller

Hallo HDT,

wollte nur kurz fragen, ob du meinen letzten Post gesehen hast:
https://www.elektronik-kompendium.de/forum/forum_entry.php?id=270511&page=0&category=all&order=time

Da du geschrieben hast, dass du Arduinos rumliegen hast. Du kannst den Code zum ausprobieren einfach auf einen Arduino laden und die Pins wie in der .ino-Datei beschrieben bestücken. Falls du damit etwas anfangen kannst kann ich dir die Anleitungen raussuchen um den Code auf einen ATTiny zu brennen.

Eine kurze Rückmeldung, auch wenn du dir mittlerweile was anderes gesucht hast, wäre nett.

bastelix(R)

04.05.2019,
00:12

@ bigdie

Kurzzeit-Timer mit Mikrocontroller

» Wie gesagt von den Teilen hab ich wenig Ahnung,
Machtnix, dafür hab ich von Elektronik wenig Ahnung :-)

» schon gar nicht, was intern an Zählern möglich ist.
Du hast z.B. beim ATTiny85 256 Byte RAM. Im Vergleich zu aktuellen PCs ist das lächerlich Wenig aber mit nem µC kann man da schon hübsch was anfangen.
Ein Zähler von 0 bis 255 braucht 1 Byte, von 0 bis 4.294.967.295 brauchst du dann "schon" 4 Byte. Also bei einem so einfachen Programm sollten Zähler nicht das Problem sein.

» Aber theoretisch braucht man für die anfangs
» gemachten Anforderungen einen digitalen Eingang und einen Ausgang. Man
» könnte doch einfach einen Taster anschließen, und wenn ich den z.B. 2min.
» festhalte, dann ist die Einschaltzeit und die Ausschaltzeit jeweils 2min.
» Ich lerne das Teil also einfach an. So brauche ich fast keine zusätzlichen
» Bauteile. Und wenn ich halt 10 solche Geräte auf jeweils 10min anlernen
» will, dann mach ich das halt mit einem normalen Zeitrelais, damit mir in
» den 10 min nicht der Daumen abfällt.:-D
Ja, das würde auch gehen. Man sollte aber dann die Einstellung im EEPROM des µC speichern (also einen verwenden der einen EEPROM hat, der erwähnte ATTiny85 hat 512Byte EEPROM). Sonst ist die Einstellung weg sobald der Strom weg ist. Ist halt eher etwas für Anwendungen wo sich die eingestellte Zeit nicht zu oft ändert, da die Schreibzyklen des EEPROMs begrenzt sind und das Einstellen doch ein gewisser Aufwand ist.

Wenn die Zeit nach Ende der Entwicklungsphase nur noch selten/garnicht geändert wird würde ich aber fast dazu tendieren einen Programmier-Header auf der Platine vorzusehen und den IC mit einem angepassten Programm für die eingestellte Zeit zu flashen. Das Programm, wie du es vorschlägst, müsste sogar in einen ATTiny25 passen (weniger RAM, weniger EEPROM, weniger Flash-Speicher, 0,21€ günstiger als der ATTiny85 bei reichelt)

Bei dem Ansatz würde ich aber vorschlagen, dass man sich nochmal überlegt ob man das wirklich mit einem µC lösen möchte. (Sag ich als Informatiker, der eh immer versucht alles mit Software zu erschlagen :D)

bigdie(R)

03.05.2019,
21:13

@ bastelix

Kurzzeit-Timer mit Mikrocontroller

» » Die Spannung passe ich der Notwendigkeit an, bis maximal 15 Volt
» möglich.
» Nur zur Sicherheit: Der ATTiny verkraftet nur 5V (5V5 absolute maximum). Du
» brauchst also für die Versorgung des µC einen Spannungswander und du musst
» das auch beim Treiber für das Relais berücksichtigen. Ich gehe schon davon
» aus, dass dir das klar ist, aber bei so kritischen Punkten spreche ich das
» lieber einmal zu oft an als einmal zu wenig.
»
» Hab da mal ein kleines Programm geschrieben und auf dem Steckbrett
» aufgebaut. Mono- oder Bi-Stabil kann man zur Laufzeit via Pin festlegen.
» Die Zeit wird via Widerstand eingestellt (1min = 1k, 5min = 2k2, 10min =
» 3k3, 15min = 4k7, 20min = 6k8, 25min = 10k ... 60min = 220k).
»
» Wenn beim Booten der zeitbestimmende Widerstand am Spannungsteiler nicht
» gesteckt ist wird als Basis-Zeiteinheit eine Sekunde, statt 60 Sekunden,
» verwendet (1s = 1k, 5s = 2k2, ...)
»
» Mit dem internen Oszillator (1MHz, 8MHz) liegt der Drift eher bei 3
» Sekunden pro Minute! Mit einem externen Quarz (16MHz, hab grad nix anderes
» passendes da) komme ich auf ca. 1 Sekunde pro 30 Minuten.
»
» Den Code und Schaltplan habe ich bei GitLab hochgeladen (wollte mir eh mal
» nen gitlab account klicken ;) )
» https://gitlab.com/Bastelix/short-time-timer/tree/master
»
» Ich habe versucht den Code auch für Einsteiger möglichst gut lesbar zu
» halten und entsprechende Kommentare zu schreiben. Das Binary passt auch auf
» einen ATTiny45 (nicht getestet!), ein ATTiny25 ist aktuell zu klein. Da
» könnte man noch ein paar Anpassungen versuchen, aber dann wird der Code
» alles andere als Einsteiger-Lesbar.
»
» Edit: Der Code kann auch auf einen ATMega328-basierten Arduino (UNO, Nano,
» ...) geladen werden, dann sieht man im Serial Monitor der Arduino-IDE ein
» paar Debug-Infos für eigenen Experimente. Ein Arduino lässt sich auch
» einfacher flashen als ein nackter ATTiny ;) /Edit
»
» Ich finde übrigens Udos Ansatz auch interessant und würde da gerne mal
» seinen Code lesen (hab noch nie was mit nem PIC gemacht) :)
Wie gesagt von den Teilen hab ich wenig Ahnung, schon gar nicht, was intern an Zählern möglich ist. Aber theoretisch braucht man für die anfangs gemachten Anforderungen einen digitalen Eingang und einen Ausgang. Man könnte doch einfach einen Taster anschließen, und wenn ich den z.B. 2min. festhalte, dann ist die Einschaltzeit und die Ausschaltzeit jeweils 2min. Ich lerne das Teil also einfach an. So brauche ich fast keine zusätzlichen Bauteile. Und wenn ich halt 10 solche Geräte auf jeweils 10min anlernen will, dann mach ich das halt mit einem normalen Zeitrelais, damit mir in den 10 min nicht der Daumen abfällt.:-D

bastelix(R)

02.05.2019,
22:49

@ bigdie

Kurzzeit-Timer mit Mikrocontroller

» Aber evtl. kann man die Firmware ja
» einfach auslesen. und in einen identischen MR wieder einspielen.
Abgesehen davon, dass es, wie Udo schon schrieb, i.d.R. nicht möglich ist, wäre das dann auch ein klarer Verstoß gegen das Urheberrecht.

Wozu der Aufwand und möglicherweise die Scherereien wenn es den Code für sowas auch als freie Software gibt? Wenn das Programm nicht ganz passt kann man den Code ja auf die eigenen Bedürfnisse anpassen (lassen).

Udo

02.05.2019,
18:14

@ bigdie

Kurzzeit-Timer mit Mikrocontroller

Nein kann man meistens nicht.
Der Controller ist meistens gegen Auslesen geschützt.

bigdie(R)

02.05.2019,
18:02

@ Udo

Kurzzeit-Timer mit Mikrocontroller

» » Unter Umständen ist es einfacher nicht alles selber zu erfinden. Ich hab
» » von Microrechnern eher auch 0-Ahnung. Aber evtl. kann man die Firmware
» ja
» » einfach auslesen. und in einen identischen MR wieder einspielen. Bei
» Pollin
» » gibt es z.B. 2 Timerbausätze von H-Tronic. Bei einem wird alles mit Dil
» » Schaltern eingestellt, beim 2. per USB. Sicher ist auf den Platinen viel
» » Zeugs drauf, was man nicht braucht, aber was hindert einen dran, die
» » platinen so zu machen wie man will, und nur die Prozessoren zu
» übernehmen
» » und evtl zu verfielfältigen.
»
» Welche Firmware ?
Das Programm, welches drauf ist, kann man von so einem Atmega doch sicher auch wieder herunter holen, und auf den Nächsten aufspielen, wenn man nichts ändern will.

Udo

02.05.2019,
14:25

@ bigdie

Kurzzeit-Timer mit Mikrocontroller

» Unter Umständen ist es einfacher nicht alles selber zu erfinden. Ich hab
» von Microrechnern eher auch 0-Ahnung. Aber evtl. kann man die Firmware ja
» einfach auslesen. und in einen identischen MR wieder einspielen. Bei Pollin
» gibt es z.B. 2 Timerbausätze von H-Tronic. Bei einem wird alles mit Dil
» Schaltern eingestellt, beim 2. per USB. Sicher ist auf den Platinen viel
» Zeugs drauf, was man nicht braucht, aber was hindert einen dran, die
» platinen so zu machen wie man will, und nur die Prozessoren zu übernehmen
» und evtl zu verfielfältigen.

Welche Firmware ?

bigdie(R)

02.05.2019,
14:23

@ HDT

Kurzzeit-Timer mit Mikrocontroller

Unter Umständen ist es einfacher nicht alles selber zu erfinden. Ich hab von Microrechnern eher auch 0-Ahnung. Aber evtl. kann man die Firmware ja einfach auslesen. und in einen identischen MR wieder einspielen. Bei Pollin gibt es z.B. 2 Timerbausätze von H-Tronic. Bei einem wird alles mit Dil Schaltern eingestellt, beim 2. per USB. Sicher ist auf den Platinen viel Zeugs drauf, was man nicht braucht, aber was hindert einen dran, die platinen so zu machen wie man will, und nur die Prozessoren zu übernehmen und evtl zu verfielfältigen.

bastelix(R)

01.05.2019,
01:19
(editiert von bastelix
am 01.05.2019 um 01:42)


@ HDT

Kurzzeit-Timer mit Mikrocontroller

» Die Spannung passe ich der Notwendigkeit an, bis maximal 15 Volt möglich.
Nur zur Sicherheit: Der ATTiny verkraftet nur 5V (5V5 absolute maximum). Du brauchst also für die Versorgung des µC einen Spannungswander und du musst das auch beim Treiber für das Relais berücksichtigen. Ich gehe schon davon aus, dass dir das klar ist, aber bei so kritischen Punkten spreche ich das lieber einmal zu oft an als einmal zu wenig.

Hab da mal ein kleines Programm geschrieben und auf dem Steckbrett aufgebaut. Mono- oder Bi-Stabil kann man zur Laufzeit via Pin festlegen. Die Zeit wird via Widerstand eingestellt (1min = 1k, 5min = 2k2, 10min = 3k3, 15min = 4k7, 20min = 6k8, 25min = 10k ... 60min = 220k).

Wenn beim Booten der zeitbestimmende Widerstand am Spannungsteiler nicht gesteckt ist wird als Basis-Zeiteinheit eine Sekunde, statt 60 Sekunden, verwendet (1s = 1k, 5s = 2k2, ...)

Mit dem internen Oszillator (1MHz, 8MHz) liegt der Drift eher bei 3 Sekunden pro Minute! Mit einem externen Quarz (16MHz, hab grad nix anderes passendes da) komme ich auf ca. 1 Sekunde pro 30 Minuten.

Den Code und Schaltplan habe ich bei GitLab hochgeladen (wollte mir eh mal nen gitlab account klicken ;) )
https://gitlab.com/Bastelix/short-time-timer/tree/master

Ich habe versucht den Code auch für Einsteiger möglichst gut lesbar zu halten und entsprechende Kommentare zu schreiben. Das Binary passt auch auf einen ATTiny45 (nicht getestet!), ein ATTiny25 ist aktuell zu klein. Da könnte man noch ein paar Anpassungen versuchen, aber dann wird der Code alles andere als Einsteiger-Lesbar.

Edit: Der Code kann auch auf einen ATMega328-basierten Arduino (UNO, Nano, ...) geladen werden, dann sieht man im Serial Monitor der Arduino-IDE ein paar Debug-Infos für eigenen Experimente. Ein Arduino lässt sich auch einfacher flashen als ein nackter ATTiny ;) /Edit

Ich finde übrigens Udos Ansatz auch interessant und würde da gerne mal seinen Code lesen (hab noch nie was mit nem PIC gemacht) :)

Udo

28.04.2019,
12:24

@ HDT

Kurzzeit-Timer mit Mikrocontroller

So könnte man es z.B aufbauen.


HDT(R)

E-Mail

28.04.2019,
11:59

@ HDT

Kurzzeit-Timer mit Mikrocontroller

Nur mal so, zur Ansicht, was auch "ohne PIC" geht. (ist mir aber zu aufwändig und zu groß)
Immerhin 66 Minuten maximal.

Udo

27.04.2019,
17:49

@ HDT

Ne..., bringt jetzt wirklich nichts mehr. :-)

Ja die gibt es immer noch.
Die meinte ich auch.

HDT(R)

E-Mail

27.04.2019,
17:05

@ bastelix

Kurzzeit-Timer mit Mikrocontroller

» Der ATTiny hat einen 10-Bit-ADC, es werden also die Spannungen zwischen 0
» und 5V (sofern du den mit 5V versorgst, weniger geht, mehr nicht) auf Werte
» zwischen 0 und 1023 abgebildet.

Die Spannung passe ich der Notwendigkeit an, bis maximal 15 Volt möglich.


Bei der Toleranz der Widerstände und
» möglicher Messfehler ergibt sich da dann eine gewisse Ungenauigkeit bei der
» Zeiteinstellung.
»
» Ich habe mal einen Spannungsteiler mit 220k und 1k - 1M (alle Widerstände
» haben 1% Toleranz) an einem Arduino Nano getestet (hat auch einen
» 10-Bit-ADC, sollte also auf den ATTiny übertragbar sein). Da gibt es bei
» der Messung, auch bei drei Messwerten mit einem Abstand von 100ms und dann
» arithmetischem Mittel, schon gelegentlich Abweichungen, z.B. 3 statt 2 bei
» 1k (beim gleichen Widerstand). Ich hab dann auch noch 300R und 10R
» versucht, dabei wurde die Genauigkeit aber nicht merklich besser. Ist wohl
» zum teil wohl auch dem Steckbrett geschuldet. Da du den
» Konfigurationswiderstand stecken möchtest wird das wohl auch auf der
» Platine nicht genauer. »

Das ist klar, was auf dem Steckboard läuft, ist auf der Platine dann nicht unbedingt das Gleiche. Eher die Ausnahme.

»
» Was ich bei dem 220k-Spannungsteiler am ADC gemessen habe ist folgendes:
» 1k = 2
» 2k = 8
» 10k = 42
» 100k = 318
» 1M = 840
» Da sieht man schon, dass die Messwerte nicht linear sind.
»



» Was noch zu beachten ist: Der interne Zeitgeber des µC läuft nach rund 47
» Tagen über, d.H. er beginnt wieder bei 0 zu zählen. Wenn der µC so lange am
» Stück laufen soll muss das im Programm berücksichtigt werden.
»

Die Gesamtlaufzeit beträgt höchsten mal 2 Stunden. In der Regel eher nur 1 Stunde.


» Ich hab nochmal kurz nachgeschaut wie genau der interne Zeitgeber ist.
» Anscheinend ist da eine Abweichung von einer Sekunde pro Stunde nicht
» unüblich. Wenn die Zeiten genau sein sollen müsste man eine RTC mit
» Uhrenquarz verwenden und vom µC auslesen lassen.
»

Um Himmelswillen... :-) Selbst wenn es 10 Sekunden pro Stunde wären... Da brauche ich keinen Extra-Uhrenquarz.


» » Für die Ansteuerung des bistabilen Relais ist nur ein Sekundenimpuls
» nötig, aber es darf auch ein
» » Dauersignal sein, dann kann ich auch "monostabile" Relais verwenden.
» Geht beides, kann man sogar beim Compilieren festlegen oder wenn man einen
» Pin übrig hat sogar zur Laufzeit. (z.B. Pin HIGH bistabiel, Pin LOW
» monostabil).

Wäre super!

HDT(R)

E-Mail

27.04.2019,
16:52

@ Udo

Ne..., bringt jetzt wirklich nichts mehr. :-)

» So funktioniert es nicht.
» Man kann natürlich mit Widerständen die Zeit einstellen, aber
» ich kann kein Programm schreiben wo ich die Widerstände nicht
» habe. Soll heisen, das ich nur ein Programm schreiben kann, wenn ich
» selber die Widerstände wähle und zusammen baue. Denn wenn ich dir das
» Programm schreibe und du die Widerstände machst, kann es sein das das
» Programm nicht läuft, weil ich die genauen Werte der Widerstände nicht
» kenne.
» Da kommt Tolleranz der Widerstände, Temperatur, und die Betriebsspannung
» spielen dabei eine wichtige rolle, damit alles zusammen läuft. Nur wenn ich
» hier alles
» selber zusammen baue, kann ich auch garantieren das alles so läuft wie
» geplant.
» Andere Möglichkeit wäre ein 12 facher Drehschalter. Mit einem anderen
» Controller
» geht das dann auch.

Udo,
das mit den Widerständen war doch nur eine Idee von mir und selbstverständlich kann ich die Werte nicht vorher bestimmen.
Ein Drehschalter ist ebenfalls akzeptabel, wenn Du das gleiche meinst, wie ich. (Siehe Abbildung. Das hab ich für mich so mal "sortiert", allerdings im Jahre 2005. Bin da also nicht mehr auf dem letzten Stand. 10 x 10 mm, ich denke, das wird so immer noch sein.)



Udo

27.04.2019,
15:33

@ Udo

Ne..., bringt jetzt wirklich nichts mehr. :-)

» So funktioniert es nicht.
» Man kann natürlich mit Widerständen die Zeit einstellen, aber
» ich kann kein Programm schreiben wo ich die Widerstände nicht
» habe. Soll heisen, das ich nur ein Programm schreiben kann, wenn ich
» selber die Widerstände wähle und zusammen baue. Denn wenn ich dir das
» Programm schreibe und du die Widerstände machst, kann es sein das das
» Programm nicht läuft, weil ich die genauen Werte der Widerstände nicht
» kenne.
» Da kommt Tolleranz der Widerstände, Temperatur, und die Betriebsspannung
» spielen dabei eine wichtige rolle, damit alles zusammen läuft. Nur wenn ich
» hier alles
» selber zusammen baue, kann ich auch garantieren das alles so läuft wie
» geplant.
» Andere Möglichkeit wäre ein 12 facher Drehschalter. Mit einem anderen
» Controller
» geht das dann auch.
Oder mit einem Taster. Dann mußt du aber immer mitzählen wie oft du gedrückt hast.
Also 1 mal drücken 5min.
2 mal drücken 10 min usw.
Und noch ein Taster zum Starten des Programms.
Oder Dip-Schalter gingen auch noch.
Vielleicht wissen andere, noch andere Lösungen.