Bascom Befehlszeit

OP (Firma: hab keine) #1466696
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
OP (Firma: hab keine) #1466779
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
#1466831
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).

...
OP (Firma: hab keine) #1466852
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
#1466873
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.

...
OP (Firma: hab keine) #1466885
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
#1466892
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren