Forum: Mikrocontroller und Digitale Elektronik aus Wert 1023 mach 25 Minuten BASCOM


von Nette M. (nette-mann)


Lesenswert?

Also der ADC gibt ja nen Wert von 0 - 1023 aus. Nun möchte ich daraus 
die Minuten errechnen nach einer fixen Formel. Teile ich 1023 durch 
0,682 erhalte ich 1500 Sekunde das sind durch 60 25 Minuten. Alles gut 
und schön, nur wenn z.B. der nicht 1023 ist erhalte ich auch mal 23,90 
MInuten oder so was natürlich nicht geht. Von daher wollt ich euch mal 
um Hilfe bitten

von Karsten (Gast)


Lesenswert?

Jo, ist dann halt so... Was willst Du denn genau?! Sollen die Minuten 
gerundet werden?!

von Lord Z. (lordziu)


Lesenswert?

Du meinst, dass du mit dieser "Fehlerbeschreibung" hier Hilfe bekommst?

Erklär mal, warum du einen ADC Wert in Minuten umrechnest. Ist da ne 
Analog-Uhr oder ein Kompass an deinem ADC dran, oder was? Und dass 5,5 
Minuten gleich 5 Minuten und 30 Sekunden (bezogen auf eine Uhrzeit) 
sind, muss dir wohl auch niemand erklären, oder?

von Nette M. (nette-mann)


Lesenswert?

Will aus dem ADC ne Minuten Sekunden Anzeige machen.

Je nach Poti Stellung ne andere Dauer

Im ENteffekt 0 - 25 Minuten mit Sekunden

von man oh man (Gast)


Lesenswert?

Nette Mann schrieb:
> Teile ich 1023 durch
> 0,682 erhalte ich 1500 Sekunde das sind durch 60 25 Minuten. Alles gut
> und schön, nur wenn z.B. der nicht 1023 ist erhalte ich auch mal 23,90
> MInuten oder so was natürlich nicht geht.

Willst Du uns echt weiß machen, dass Du Sekunden in Minuten nicht 
umrechnen kannst???

23,90: 0,90 Minuten gibt es das? - Ja das ist 1 Minute * 90/100 => 60 
Sekunden * 90/100 = 54 Sekunden

von Nette M. (nette-mann)


Lesenswert?

ne eben net 0,9 = 90% von einer minute

von Lord Z. (lordziu)


Lesenswert?

90% von einer Minute sind 54 s...

von man oh man (Gast)


Lesenswert?

Nette Mann schrieb:
> ne eben net 0,9 = 90% von einer minute

Wieviel Sekunden dauert denn bei dir eine halbe Minute (0,5 Minuten)?

von Helmut L. (helmi1)


Lesenswert?

90% soviel Sekunden hat ja gar keine Minute.

von Εrnst B. (ernst)


Lesenswert?

Mannomann...
Diesen Thread sollte man sich wirklich bookmarken und bei der nächsten 
"Bascom ist Blöde ... C aber auch"-Diskussion verlinken. So als Beweis 
dass es nicht an der Programmiersprache liegt (liegen muss)...

von Helmut L. (helmi1)


Lesenswert?

Du sagst es.

von holger (Gast)


Lesenswert?

>Je nach Poti Stellung ne andere Dauer
>Im ENteffekt 0 - 25 Minuten mit Sekunden

25 * 60 = 1500 Stellungen mit einem 270° Poti?
Vergiss es, so genau stellst du vieleicht mit einem
guten 10 Gang Poti ein, aber nicht mit so nem Ding von der
Stange.

von Düsentrieb (Gast)


Lesenswert?

dazu fällt mir irgendwie ein:

Die Wahrheit liegt im Auge des Betrachters ...

von Julian O. (juliano)


Lesenswert?

Wie wäre es nur in Sekunden zu arbeiten?

von didadu (Gast)


Lesenswert?

ist doch easy:

zahl/60 => minuten
zahl mod 60 => sekunden

dann einfach mal ausprobieren

von Nette M. (nette-mann)


Lesenswert?

irgendwie is der einzigste der mich einwenig versteht  didadu

kopf kratz

naja ich machs selber

von didadu (Gast)


Lesenswert?

neben dem, was ich oben sagte, musst du mit DREISATZ rechnen.

du willst 0 ... 1023 auf 0 ... 25 Minuten abbilden.

25 minuten sind 25 * 60 = 1500 sekunden.

also, zahl1 (von 0...1023) umrechnen in zahl2 (0...1500):

zahl1 / 1023 * 1500 = zahl2

diese zahl2 verarbeitest du dann weiter wie ich oben sagte.

zahl1 / 1023 gibt etwas zwischen 0 und 1
das 0 bis 1 wandelst du mit dem * 1500 auf 0 ... 1500 um.

logisch? klaro?

von didadu (Gast)


Lesenswert?

ich finde die idee cool, einfach ein poti für die einstellung zu nehmen.

andere nehmen für sowas teurere drehencoder, die kompliziert 
programmiert werden müssen, oder machen sich dafür eine komplexe menü- 
und tastensteuerung.

diese lösung ist dagegen ganz direkt und einfach und billig.

von Falk B. (falk)


Lesenswert?

@  holger (Gast)

>25 * 60 = 1500 Stellungen mit einem 270° Poti?
>Vergiss es, so genau stellst du vieleicht mit einem
>guten 10 Gang Poti ein, aber nicht mit so nem Ding von der
>Stange.

Für sowas nimmt man heute einen Drehgeber. Digital, rustikal, 
universal ;-)

MfG
Falk

von sdvyx (Gast)


Lesenswert?

>andere nehmen für sowas teurere drehencoder, die kompliziert

Naja, ab 1,50 faellt bei mir nicht unter teuer.

Gast

von didadu (Gast)


Lesenswert?

ich hab noch so 8 mark im kopf :-)

und da darf man aber dann ganz schön für kurbeln, um den skalenbereich 
ganz durchzufahren

oder man hat nur ein paar schritte

oder oder
jedenfalls nicht einfach dreh und gut ists

praktische eieruhr, mit digitaler einstellungsanzeige

von Falk B. (falk)


Lesenswert?

@  didadu (Gast)

>ich finde die idee cool, einfach ein poti für die einstellung zu nehmen.

Ja, aber nicht für 1500 Stellungen auf 270 Grad. Macht theoretisch 0,18 
Grad / Schritt. Das ist nicht wirklich paraktikabel. Vor allem wenn der 
ADC nur 10 Bit Auflösung hat . . . ;-)

>andere nehmen für sowas teurere drehencoder, die kompliziert
>programmiert werden müssen,

Kompliziert? Keine Sekunde. Siehe Artikel Drehgeber.

>diese lösung ist dagegen ganz direkt und einfach und billig.

Billig ist das richtige Wort . . .

MFG
Falk

von Helmut L. (helmi1)


Lesenswert?

didadu schrieb:
> und da darf man aber dann ganz schön für kurbeln, um den skalenbereich
> ganz durchzufahren

Nö.  Du must deine Schrittweite der Änderungsgeschwindigkeit der Impulse 
anpassen. Also wenn du schneller drehst muss du die Schrittweite grösser 
machen. So kannst du auch mit einem Drehgeber schnell grosse 
Wertebereiche durchlaufen.

von Karl H. (kbuchegg)


Lesenswert?

didadu schrieb:
> ich finde die idee cool, einfach ein poti für die einstellung zu nehmen.
>
> andere nehmen für sowas teurere drehencoder, die kompliziert
> programmiert werden müssen, oder machen sich dafür eine komplexe menü-
> und tastensteuerung.
>
> diese lösung ist dagegen ganz direkt und einfach und billig.

Bist du das erste mal vor so einem Ding sitzt und versuchst 12 Minuten 
und 23 Sekunden genau einzustellen.

Dann weißt du plötzlich, warum man dafür kein Poti nimmt :-)

von Nette M. (nette-mann)


Lesenswert?

Also nochmal:

0 - 1023 Schritte
0 - 25 Minuten

1023 ist der erste gegeben Wert

1023 geteilt durch 0,682 ergibt 1500

25 Min = 1500 sekunden

Wert gegeben 827

827 / 0,682 = 1212,61 sekunden

1200 sec = 20 Minuten

1212,61 - 1200 = 12,61

Also sind es 20 Minuten und 13 Sekunden bei dem Wert 827

glaub ich zu mindest kopf kratz

von Karl H. (kbuchegg)


Lesenswert?

Als meine Kinder in der Grundschule waren, habe ich schon Wert daruf 
gelegt, dass sie folgendes ausrechnen können.

In eine Apfelkiste passen 60 Äpfel.
Wenn du 2876 Äpfel hast, wieviele Kisten kannst du dann ganz anfüllen 
und wieviele Äpfel bleiben dir übrig.


Eine Mutter hat 60 Kinder und 278 Torten.
Wieviele Torten kriegt jedes Kind, wenn alle gleich viele bekommen, und 
wieviele bleiben übrig.


Auf einer Anzeige stehen 827 Sekunden
Wenn in 1 Minue 60 Sekunden passen, wieviele Minuten kann man dann voll 
machen und wieviele Sekunden bleiben übrig.

8-jährige können das lösen.

von didadu (Gast)


Lesenswert?

> und versuchst 12 Minuten und 23 Sekunden genau einzustellen

Und wenn der Skalenendwert größer ist als der ADC-Wertebereich, dann 
kann man noch nicht einmal alle Sekunden überhaupt treffen! Was für ein 
Drama!!

von Karl H. (kbuchegg)


Lesenswert?

didadu schrieb:
>> und versuchst 12 Minuten und 23 Sekunden genau einzustellen
>
> Und wenn der Skalenendwert größer ist als der ADC-Wertebereich, dann
> kann man noch nicht einmal alle Sekunden überhaupt treffen! Was für ein
> Drama!!

Genau
Das kommt dann nämlich auch mit dazu.
Erklär du doch mal deinem Benutzer warum er
0 3 5 8 12 15 17 21
Sekunden einstellen kann, aber zb keine 9, wo doch angeblich alles 
Vielfache von 3 sind.

von Wayne M. (vibra)


Lesenswert?

moin

eigentlich wäre es mir egal ob mein Frühstücksei 5min50sec oder 
6min10sec kocht , hauptsache ~6min

mfg

von didadu (Gast)


Lesenswert?

sekunden = ADCwert / 1023 * 1500
minuten = 0
while sekunden > 60:
  minuten += 1
  sekunden -= 60

von Nette M. (nette-mann)


Lesenswert?

so gehts auch grummel

danke

von didadu (Gast)


Lesenswert?

> 0 3 5 8 12 15 17 21

Naja, blöder ist's wohl eher, dass die Zahlenfetischisten nicht den 
psychologisch wichtigen Wert (Börsenspeak) von 3min0 oder 4min0 
einstellen können.

von Karl H. (kbuchegg)


Lesenswert?

didadu schrieb:
> sekunden = ADCwert / 1023 * 1500
> minuten = 0
> while sekunden > 60:
>   minuten += 1
>   sekunden -= 60


Das ist jetzt aber kein BASCOM, oder?

von didadu (Gast)


Lesenswert?

> so gehts auch

Ja, aber mit mod wäre doch eleganter.
Ich weiß aber nicht, wie die modulo-Funktion in Bascom heißt.
Es wäre dann sowas wie:

sekundengesamt = ADCwert / 1023 * 1500
minuten = integer(sekundengesamt / 60)
sekunden = sekundengesamt mod 60

von didadu (Gast)


Lesenswert?

> Das ist jetzt aber kein BASCOM, oder?

Sieht eher aus wie python :-)

von Karl H. (kbuchegg)


Lesenswert?

didadu schrieb:
>> so gehts auch
>
> Ja, aber mit mod wäre doch eleganter.

Im Prinzip stimme ich dir zu.
Allerdings ist die Divisions/Modulo Lösung höchst wahrscheinlich 
laufzeitmässig der Subtraktionsmethode unterlegen. Und zwar deutlich 
unterlegen.

Wenn du 8982367823923423589 Sekunden auf Minuten und Sekunden umrechnen 
müsstest (also hinreichend viele Subtraktionen hättest)  siehts anders 
aus. Aber maximal 25 Subtraktionen - das wird eng für Division / Modulo.


Wenn Laufzeitmässig keine Rolle spielt, ist Division/Modulo ok. Wenn die 
Laufzeit aber klein gehalten werden soll/muss ist es in diesem Fall 
besser zu subtrahieren.

von Nette M. (nette-mann)


Lesenswert?

iuch bleib erma bei der geteilt extra - runden fertig

von didadu (Gast)


Lesenswert?

Sehe ich im Prinzip auch so.

Wobei die Hürde meiner Lösung darin liegt, dass möglicherweise die 
Zahlentypen die Sache mit der Division und der Multiplikation 
erschweren.

Besser wäre wohl, sofern man mit Integern rechnet, zu schreiben:

1500 * ADCwert / 1023


Übrigens heißt Modulo in Python nicht mod sondern %. Ist also eine 
Fantasiesprache gewesen.

von Jan (Gast)


Lesenswert?

@Nette Mann
ohne da jetzt zu tief einsteigen zu wollen, aber die Bascom-Befehle
FUSING oder FORMAT sind nicht zufällig das was du suchst...?

von Nette M. (nette-mann)


Lesenswert?

kam ich nie zu recht weil das in der hilfe für unverständlich 
geschrieben ist

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

didadu schrieb:
>> andere nehmen für sowas teurere drehencoder, die kompliziert
> ich hab noch so 8 mark im kopf :-)
Na, wenigstens etwas ;-)

> und da darf man aber dann ganz schön für kurbeln, um den skalenbereich
> ganz durchzufahren
Sieh dir doch mal an, wie andere das machen. Sehr gut bewährt hat sich 
z.B. bei Mauszeigern eine dynamische Anpassung der Geschwindigkeit. Und 
genauso kann man das mit Drehencodern machen. Zum Beispiel so:
Langsam drehen --> Einer-Incremente (oder hier: Sekunden)
Schnell drehen --> Zehner-Incremente (oder hier: Minuten)

Und sag mir keiner, dass das kompliziert sein muß:
http://www.lothar-miller.de/s9y/categories/54-Encoder

von didadu (Gast)


Lesenswert?

> Na, wenigstens etwas ;-)

Gut, dass wenigstens ein paar intelligente Leute hier sind!

Schön gemacht, Deine Homepage!

von oldmax (Gast)


Lesenswert?

Hi
Mir ist's ehrlic gesagt egal, was mit einem Poti eingestellt werden 
soll, aber es scheint niemandem aufgefallen zu sein, das der Teiler 
falsch ist. 0-1023 sind 1024 Schritte. Ja ich weiß, ich bin pingelig und 
wenn's hier keine Rolle spielt, es gibt vielleicht mal eine Anwendung, 
wo's wichtig ist. Immer dran denken, die 0 ist auch eine Zahl. Wir 
fangen immer bei 1 an, daher zählen wir bis 1024 ! Also, der Teiler ist 
und bleibt 1024.
Klaro ?
Gruß oldmax

von Paul B. (paul_baumann)


Lesenswert?

Karl-Heinz Buchegger schrieb:
>Eine Mutter hat 60 Kinder und 278 Torten.
>Wieviele Torten kriegt jedes Kind, wenn alle gleich viele bekommen, und
>wieviele bleiben übrig.

....und dann kommen solche Themen zu Stande:
"Wie fett sind wir eigentlich?"
Beitrag "Off-Topic: Wie fett sind wir eigentlich ?"

:-)))

MfG Paul

von didadu (Gast)


Lesenswert?

> Also, der Teiler ist und bleibt 1024. Klaro ?

Nö.
Wenn ich am Ende die 1 haben will, um auf die 1500 (25 Minuten 00) zu 
kommen, geht das mit der 1024, die den Wert 0...1023 IMMER unter 1 
bringt?

von Εrnst B. (ernst)


Lesenswert?

didadu schrieb:
> geht das mit der 1024, die den Wert 0...1023 IMMER unter 1
> bringt?

Ja. Dafür wurde die Addition erfunden. +1 und gut.

von didadu (Gast)


Lesenswert?

Muss es so umständlich sein?

Und wie komme ich dann auf die 0?
(Sofern die benötigt wird, was nicht klar ist, da der OP sein Projekt 
selbst gar nicht genannt hat.)

Ich habe den Eindruck, hier besteht eine Verwechslung in Bezug auf 
offene und geschlossene Intervalle.
Und ein unreflektiertes Hinterherlaufen in vorgefertigten Bahnen.

von Εrnst B. (ernst)


Lesenswert?

didadu schrieb:
> Muss es so umständlich sein?

Wenn du keinen Wert darauf legst, dass es richtig ist, nein. Bei 10Bit 
ist der Fehler den du dir dadurch einschleppst recht gering.
Ausserdem: aus µC-Sicht ist "1023" sehr umständlich, 1024 hingegen 
einfach.

didadu schrieb:
> Und ein unreflektiertes Hinterherlaufen in vorgefertigten Bahnen.

Vielleicht hilft dir ein kleines Gedankenexperiment weiter:

Eine Spannung von 0..1024 Volt wird mit einem ADC gemessen.

Hat der ADC nur 1 Bit, sagt dieses nur "kleiner 512 Volt" oder "größer 
512 V" aus. Also: bei gesetztem Bit kann die Spannung 1024 Volt 
betragen, sie muss es aber nicht.

Hat der ADC 2 Bit, würde "11" bedeuten: "größer 786 Volt", aber nicht 
"=1024 Volt"

4 Bit .. 9 Bit analog,

Bei 10 Bit dann: "1111111111"(1023) bedeutet: die angelegte Spannung ist 
größer als 1023 Volt. Es bedeutet nicht: Die Spannung ist 1024 Volt.

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.