Forum: Mikrocontroller und Digitale Elektronik Bascom Befehlszeit


von Marvin K. (Firma: hab keine) (multi_bouncer)


Lesenswert?

Guten Tag!
Ich bin mal wieder am Werk ;). Kann man in Bascom sozusagen ne IF->Then 
clause bilden bei der die Condition=1 ist wenn die geforderte Condition 
eine bestimmte Zeit erreicht hat?

Also so irgendwie?
->
If Pina.7 =1 for 100ms
Then
...
End If

Ich hoffe ihr könnt mir helfen ;).


Gruß Marvin

von Peter H. (hardwaredoc)


Lesenswert?

Hallo ;

vieleicht hilft für deine Anwendung auch der

Befehl debounce !

Gruß Peter

von Marvin K. (Firma: hab keine) (multi_bouncer)


Lesenswert?

Aujaaaaa!
Endlich funktioniert's mit dem Taster ;).
Danke! Jezt ist mir aber noch was aufgefallen.
Kann ich Portd.5 nicht als output und anschliesen als PWM-Port benutzen?
Weil mein kleines Programm soll die LED für ca. 2 sec anhalten und dann 
langsam runterdimmen..
wills aber nicht.
Könnt/est ihr/du mir da vielleicht (nochmal) helfen?? ;)

Gruß Marvin

von Hannes L. (hannes)


Lesenswert?

Marvin, wie isst man einen Elefanten?

...

von Marvin K. (Firma: hab keine) (multi_bouncer)


Lesenswert?

Naja^^ Klein machen und kochen =P

von Simon K. (simon) Benutzerseite


Lesenswert?

Hannes Lux schrieb:
> Marvin, wie isst man einen Elefanten?
>
> ...

Falschrum durch ein Fernglas gucken und dann runter damit.

von Marvin K. (Firma: hab keine) (multi_bouncer)


Lesenswert?

Und was soll mir das jetzt sagen??:?

Gruß Marvin

von Hannes L. (hannes)


Lesenswert?

Marvin K. schrieb:
> Naja^^ Klein machen und kochen =P

Richtig, in kleinen Stücken...

Also zerlege Dein Problem in kleine Stücke, die Du dann separat 
"kochst".

LED für eine bestimmte Zeit an und dabei dimmen erfordert mehrere 
Schritte.

- PWM für LED einrichten
- PWM langsam hochfahren (darin LED gemäß Tastgrad ein/aus schalten)
- Einschaltdauer einhalten (Zeitverzögerung)
- PWM langsam auf 0 herunterfahren (darin LED wieder gemäß Tastgrad
  ein/aus schalten)

Wenn der MC in der Zwischenzeit nix Anderes tun soll, dann kann man die 
einzelnen Schritte gemütlich nacheinander ausführen, der MC ist dabei 
über 98% seiner Rechenzeit damit beschäftigt, CPU-Takte zu zählen...

Sollte der Controller nebenher auch noch Tasten abfragen oder andere 
Dinge erledigen müssen, dann wird es Zeit für einen Timer-Interrupt, der 
als Zeitgeber die einzelnen (quasi nebeneinander ablaufenden) Jobs 
aufruft, von denen jeder Job immer nur einen Schritt macht und sich 
seinen Fortschritt in Zustandsvariablen merkt (Zustandsautomat, 
state-machine).

...

von Marvin K. (Firma: hab keine) (multi_bouncer)


Lesenswert?

Jaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!
Ich habs geschafft!!

Damit ihr mal seht wie umständlich ich es mache;
1
$regfile = "m32def.dat"
2
$framesize = 32
3
$swstack = 32
4
$hwstack = 32
5
$crystal = 1000000
6
7
Dim Hochdimmen As Byte
8
Dim Runterdimmen As Byte
9
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
10
Hochdimmen = 0
11
Runterdimmen = 255
12
13
'TASTER1 an PA7
14
Taster1 Alias Pina.7
15
Config Taster1 = Input
16
Porta.7 = 1                                                 'PullUp-Widerstand einschalten
17
18
19
Do
20
   Debounce Taster1 , 0 , On_taster1 , Sub
21
Loop
22
23
End
24
25
26
On_taster1:
27
Do
28
Incr Hochdimmen
29
Compare1a = Hochdimmen
30
Waitms 2
31
Loop Until Hochdimmen = 255
32
Waitms 1000
33
Do
34
Decr Runterdimmen
35
Compare1a = Runterdimmen
36
Waitms 10
37
Loop Until Runterdimmen = 0
38
39
40
Return


Danke euch!!

Gruß Marvin

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

Nur mal so als Beispiel zum Analysieren... ;-P

...

von Marvin K. (Firma: hab keine) (multi_bouncer)


Lesenswert?

Hmm schöner Code ;) werd ich mir mal genauer ansehen und vielleicht ein 
paar sachen ausbauen ;D.
Wenn ich jetzt einen Motor ansteuern will gerade z.B. einen 12 Voplt 
Lüfter der bei 12V 0,33A zieht was bräuchte ich da fürn transistor? 
Würde da n BC337 gehen?

von Helmut L. (helmi1)


Lesenswert?

>Lüfter der bei 12V 0,33A zieht was bräuchte ich da fürn transistor?
>Würde da n BC337 gehen?

Der sollte gehen.

Gruss Helmi

von Hannes L. (hannes)


Lesenswert?

Marvin K. schrieb:
> Wenn ich jetzt einen Motor ansteuern will gerade z.B. einen 12 Voplt
> Lüfter der bei 12V 0,33A zieht was bräuchte ich da fürn transistor?
> Würde da n BC337 gehen?

Für einen echten DC-Motor mit 330mA würde der schon etwas knapp werden, 
da der Motor beim Anlaufen höheren Strom ziehen kann. Da sollte ein 
LL-HexFET (z.B. IRLU024N) die bessere Lösung sein.

Stichwort Lüfter: PC-Lüfter sind keine klassischen DC-Motoren sondern 
BLDC-Motoren mit integrierter Elektronik. Sie sind daher für 
Drehzahlsteuerung per PWM (fast) ungeeignet.

...

von Marvin K. (Firma: hab keine) (multi_bouncer)


Lesenswert?

Jop ich hab da shcon n paar sachen gelesen mit den Lüftern..
Wie wärs mit so nem kleinen Modellmotor der immer z.B. in so kleinen 
Windrädchen drin ist, geht da der BC337? Dann hab ich noch n Großer 
120mm Lüfter. Der braucht bei 12V 1,3A ist aber pwm-steuerbar.
Kann man Schrittmotoren eigendlich acuh pwm steuern oder macht man das 
in der Loop in der Jede Spule an/aus geschaltet wird mit den 
zwischenzeiten?
Viele Worte.. :D

Gruß Marvin

von Helmut L. (helmi1)


Lesenswert?

>Wie wärs mit so nem kleinen Modellmotor der immer z.B. in so kleinen
>Windrädchen drin ist, geht da der BC337?

Miss doch mal die Stromaufnahme sonst kann man dazu nichts sagen.
Die Luefter mit Elektronikmotor haben auch einen Blockierschutz von 
daher duerfte die Stromaufnahme nicht allzu sehr steigen. Bei einem 
normalen Kollektormotor steigt der Strom im Blockierfall.


>Kann man Schrittmotoren eigendlich acuh pwm steuern oder macht man das
>in der Loop in der Jede Spule an/aus geschaltet wird mit den
>zwischenzeiten?

Ja kann man. Nennt sich dann Feinschrittbetrieb. So kannst du auch 
Zwischenpositionen erreichen durch unterschiedliche Stroeme in den 
Wicklungen.


Gruss Helmi

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.