Forum: Mikrocontroller und Digitale Elektronik Tachosignal eines Lüfters mit Mega8 in Bascom abfragen und über LCD ausgeben


von EazyEddy (Gast)


Lesenswert?

Hi,

Hatte letzte Woche das Problem mit dem Thema "Pwm über Poti mit Mega8 in 
Bascom". Dabei wurde mir hier saugut geholfen und die Regelung funtzt 
jetzt einwandfrei. Jetzt geht es um das Tacho Signal des Lüfters. Hab 
keine Ahnung wie ich da anfangen soll zu programmieren. Hab mir überlegt 
das ganze irgendwie über nen Interrupt zu machen. Das Problem ist nur, 
dass meine Portd-Pins die die interrupt Funktion haben schon für das LCD 
Display vergeben sind (war ne Grund Config von AVR!). Hab das Signal das 
vom Lüfter kommt nun auf PINC.1 (ADC) gelegt. Die Frage ist, ob auch an 
diesem Pin ein Interrupt möglich ist?

Im vorraus vielen Dank für euren Support.

MfG
Eddy

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

EazyEddy schrieb:
> Die Frage ist, ob auch an
> diesem Pin ein Interrupt möglich ist?

Neuere AVRs können Pin Change Interrupt an nahezu jedem Pin. Beim Mega8 
wirst du allerdings mit intX auskommen müssen.

Du kannst nen Timer laufen lassen und den Pin in der ISR abfragen 
lassen. Nur wird das den Controller ordentlich auslasten...

von Klaus D. (kolisson)


Lesenswert?

EazyEddy schrieb:
> Hab das Signal das
> vom Lüfter kommt nun auf PINC.1 (ADC) gelegt. Die Frage ist, ob auch an
> diesem Pin ein Interrupt möglich ist?

Da bietet es sich förmlich an den ACI (analog comparartor int) zu 
nehmen.
Den kannst du über AMUX auf einen beliebigen ADC Eingang legen.

Gruss Klaus

von Udo S. (urschmitt)


Lesenswert?

EazyEddy schrieb:
> Hatte letzte Woche das Problem mit dem Thema "Pwm über Poti mit Mega8 in
> Bascom". Dabei wurde mir hier saugut geholfen und die Regelung funtzt
> jetzt einwandfrei.

Wenn die "Regelung" funktioniert, dann erfasst du doch schon die Ist 
Drehzahl. Also nur noch ausgeben.

von EazyEddy (Gast)


Lesenswert?

Mir ist aufgefallen das ich das Signal auch auf den PinB.0 legen könnte. 
Ist der Timer/Counter 1 Input Capture Pin. Wie müsste ich daran gehen, 
wenn ich das signal darauf gebe?

von Jens (Gast)


Lesenswert?

Hallo Eddy!

Dafür brauchst Du kein Interrupt, das Tachosignal ist lang genug um es 
mit einen Digitalport zu erfassen. Du musst den Port legendlich 
verriegeln, damit High und Low erkannt wird.

LG Jens

(Beispiel: http://www.pcfilter.de/AVR-Ecke/Page15.html)

von EazyEddy (Gast)


Lesenswert?

Port verriegeln?-Sorry für die frage, aber wie geht das?

von Jens (Gast)


Lesenswert?

Hallo Eddy!

Ich kenne die Schreibweise von Bascom nicht, aber im Großen und Ganzen 
sollte der Sinn erkennbar sein.

Define Ver1 Byte
Define Zähler1 Byte

Do
   ...
   IF (PortX = 0) AND (Ver1 = 0) THEN
      Ver1 = 1
      Zähler1 = Zähler1 + 1
   ENDIF
   IF (PortX = 1) AND (Ver1 = 1) THEN
      Ver1 = 0
   ENDIF
   ...
Loop

Danach nach einer Zeit X (ich verwende 2 Sekunden) den Zähler1 auslesen, 
zurücksetzen und am Display anzeigen lassen.

LG Jens

von Karl H. (kbuchegg)


Lesenswert?

Also gilt

"Verriegeln" <==> Flanken zählen in einer bestimmten Zeit

von EazyEddy (Gast)


Lesenswert?

Jens schrieb:
> Define Ver1 Byte
>
> Define Zähler1 Byte
>
> Do
    ...
>
>    IF (PortX = 0) AND (Ver1 = 0) THEN
>
>       Ver1 = 1
>
>       Zähler1 = Zähler1 + 1
>
>    ENDIF
>
>    IF (PortX = 1) AND (Ver1 = 1) THEN
>
>       Ver1 = 0
>    ENDIF
>
>    ...
>
> Loop


Im großen und ganzen klar, aber für was steht die Variable Ver1?

von EazyEddy (Gast)


Lesenswert?

Hat einer ne Ahnung wie der Bascom Befehl für ne "Zeit warten" bzw. das 
er nen Befehl (hier Zählen) ne Zeit lang ausführt ist? Find in der 
Bascom Hilfe nix passendes-.-

von Volker S. (volkerschulz)


Lesenswert?

Jens schrieb:
> [...]
> Dafür brauchst Du kein Interrupt, das Tachosignal ist lang genug um es
> mit einen Digitalport zu erfassen. [...]

Das ist interessant. Wie lang ist denn so ein Tachosignal? Und kann man 
das wirklich so pauschal sagen?

Volker

von EazyEddy (Gast)


Lesenswert?

Mich würd des auch interessieren. Kanns mir mittlerweile ohne Interrupt 
gar nicht mehr vorstellen! Hab voll den Hänger-.-

von EazyEddy (Gast)


Lesenswert?

Jens schrieb:
> Danach nach einer Zeit X (ich verwende 2 Sekunden) den Zähler1 auslesen,
>
> zurücksetzen und am Display anzeigen lassen.

Und könnte mir bitte jemand zeigen, wie das dann in Bascom als Code 
aussehen soll?

von Volker S. (volkerschulz)


Lesenswert?

EazyEddy schrieb:
> Jens schrieb:
>> Danach nach einer Zeit X (ich verwende 2 Sekunden) den Zähler1 auslesen,
>>
>> zurücksetzen und am Display anzeigen lassen.
>
> Und könnte mir bitte jemand zeigen, wie das dann in Bascom als Code
> aussehen soll?

Das koenntest Du Dir nach den ganzen Vorschlaegen und Hinweisen doch 
nun wirklich selbst erarbeiten. Ich wuerde allerdings an Deiner Stelle 
vorher nochmal alle Beitraege verinnerlichen und mir Gedanken ueber das 
generelle Vorgehen machen. Sinnvoll auch eine kurze Berechnung ob Du bei 
der Loesung Deiner Wahl dann wirklich keine Flanke verpassen kannst (was 
natuerlich auch vom Rest Deinem Programms abhaengt).

Volker

von EazyEddy (Gast)


Lesenswert?

Naja, der Ansatz ist ja schon da, aber ich hab immer noch keinen plan 
wie der Befehl, der während dem Zählen die Zeit angibt lautet! (in 
Basic)
Statt dessen bekomme ich hier nur bilder von Schwulen Senioren. War 
wahrscheinlich eines der letzten Urlaubsfotos xD

von Karl H. (kbuchegg)


Lesenswert?

> aber ich hab immer noch keinen plan
> wie der Befehl

Genau das ist der springende Punkt.

Es gibt nicht den Befehl, den du einfach benutzt und alls funktioniert 
ganz von alleine.

Du bist scheinbar als BASCOM Verwender zu verwöhnt. Jetzt beginnt für 
dich der Ernst des Programmierer Lebens. Die Kombination von Befehlen, 
die Kombination von Techniken machts! Und in deinem Stadium ist es nicht 
wirklich ungewöhnlich, wenn das ein paar Tage dauert. Grundvoraussetzung 
ist aber, dass man sein Handwerkszeug, sprich seine Befehle kennt!

Hinweis: Dein Weg führt über Timer. Wenn du Flankenzählen probieren 
willst, dann brauchst du eine (beispielsweise) 2 Sekunden Basis. Und die 
machst du mit einem Timer. Also gilt es jetzt erst mal die Grundlagen 
von Timern zu lernen.

von Jens (Gast)


Lesenswert?

Hallo alle miteinander!

EazyEddy schrieb:

> Im großen und ganzen klar, aber für was steht die Variable Ver1?

Die Variable „Ver1“ ist die Verriegelung für den einen Port, an dem Du 
das Tachosignal angeschlossen hast. Sie wird quasi immer hinterher 
gezogen und ermöglicht Dir die IF Anweisung nur 1x aus zu führen. Das 
ist wichtig, damit die Variable „Zähler1“ auch nur eine Low-Flanke vom 
Tachosignal erfasst...

> Hat einer ne Ahnung wie der Bascom Befehl für ne "Zeit warten" bzw.
> das er nen Befehl (hier Zählen) ne Zeit lang ausführt ist?

Den Befehl für „Zeit warten“ darfst Du in Deinem gesamten Programm nicht 
verwenden. Wenn Dein Programm wartet, denn kann es logischerweise keine 
Tachosignale zählen. Hier musst Du mit einem Timer arbeiten, der nach 
einer Zeit X die Variable „Zähler1“ ausliest, zurücksetzt und 
gegebenenfalls auch noch am Display anzeigt.

Volker schrieb:

> Das ist interessant. Wie lang ist denn so ein Tachosignal?
> Und kann man das wirklich so pauschal sagen?

Die Tachosignale sind stark vom Lüfter abhängig, je kleiner der Lüfter 
desto mehr Signale prasseln rein. Da der Trend aber immer mehr zu großen 
Lüftern geht (> 80mm), kommt einen das hier sehr entgegen. Bei meinen 
140mm Lüftern gehen ca. 15 Impulse pro Sekunde bei ca. 4V ein. Bei 12V 
sind es ca. 45 Impulse pro Sekunde. Die Fehlerquote läst sich dann auch 
noch künstlich puschen, indem man z.B. nur alle 2 Sekunden den Zähler 
ausliest.

LG Jens

von MWS (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb
> Du bist scheinbar als BASCOM Verwender zu verwöhnt. Jetzt beginnt für
> dich der Ernst des Programmierer Lebens.

Im Falle keine Interrupts dazwischenspucken könnte er als einfache 
Lösung Pulsein() zur Messung der Periodenendauer verwenden.

von Karl H. (kbuchegg)


Lesenswert?

Ich würde das Zählen ehrlich gesagt mit einem externen Interrupt machen, 
den ich auf Flanke einstelle.

Bei jeder Flanke wird ein Zähler hochgezählt.
Dazu noch ein Timer, der ebenfalls regelmässig einen Interrupt auslöst.


Variablen:
**********
1
Flanken
2
Drehzahl

externer Interrupt
******************
1
Flanken = Flanken + 1

Timer Interrupt
***************
1
if 2 Sekunden sind rum
2
   Drehzahl = Flanken
3
   Flanken = 0

Hauptschleife
*************
1
do
2
  mach was anderes
3
  Drahzahl anzeigen
4
Loop

so ungefähr als genereller Plan. Aber näher will ich das jetzt nicht 
ausführen, damit CrazyEddie nicht einfach nur abschreibt sondern sich 
selbst weiterbildet.

von Volker S. (volkerschulz)


Lesenswert?

Jens schrieb:
> Volker schrieb:
>
>> Das ist interessant. Wie lang ist denn so ein Tachosignal?
>> Und kann man das wirklich so pauschal sagen?
>
> Die Tachosignale sind stark vom Lüfter abhängig, je kleiner der Lüfter
> desto mehr Signale prasseln rein. Da der Trend aber immer mehr zu großen
> Lüftern geht (> 80mm), kommt einen das hier sehr entgegen. Bei meinen
> 140mm Lüftern gehen ca. 15 Impulse pro Sekunde bei ca. 4V ein. Bei 12V
> sind es ca. 45 Impulse pro Sekunde. Die Fehlerquote läst sich dann auch
> noch künstlich puschen, indem man z.B. nur alle 2 Sekunden den Zähler
> ausliest.

Ich meinte nicht die Frequenz der Signale (die ja eher proportional zur 
Drehzahl als zur Lueftergroesse sein sollte), sondern die Laenge eines 
Signals. Deine Funktion muss ja (ungeachtet dessen, was der µC sonst 
noch erledigt) mindestens einmal innerhalb des Zeitraums aufgerufen 
werden.

Als einzige "Universalloesung" sehe ich nur einen Interrupt mit Messung 
der Periodendauer.

Volker

von Volker S. (volkerschulz)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Ich würde das Zählen ehrlich gesagt mit einem externen Interrupt machen,
> den ich auf Flanke einstelle.
>
> Bei jeder Flanke wird ein Zähler hochgezählt.
> Dazu noch ein Timer, der ebenfalls regelmässig einen Interrupt auslöst.
> [...]

Wenn wir schon externen Interrupt und Timer benutzen, fehlt zur Messung 
der Periodendauer aber auch nicht mehr viel. ;)

Und ich persoenlich haette meine Messergebnisse gerne schnell und 
akkurat anstatt verzoegert und interpoliert. Gerade auch wenn z.B. ein 
Luefterausfall erkannt werden soll.

Volker

von Karl H. (kbuchegg)


Lesenswert?

Volker Schulz schrieb:

> Ich meinte nicht die Frequenz der Signale (die ja eher proportional zur
> Drehzahl als zur Lueftergroesse sein sollte),

Nitpicking:
Ich würde mal schätzen, dass sich größere Lüfter tendentiell langsamer 
drehen.

> sondern die Laenge eines
> Signals.

Jep. Das wäre interessant. Das andere was interessant ist: muss mit 
Prellen gerechnet werden.

Beides kann ich nicht beantworten. Hab mich damit noch nie beschäftigt.

von EazyEddy (Gast)


Lesenswert?

Omfg, nach diesem Projekt werde ich höchstwahrscheinlich sowieso nichts 
mehr in Basic programmieren. Wieso macht ihrs mir nur so schwer!?

von Karl H. (kbuchegg)


Lesenswert?

Volker Schulz schrieb:

>> Bei jeder Flanke wird ein Zähler hochgezählt.
>> Dazu noch ein Timer, der ebenfalls regelmässig einen Interrupt auslöst.
>> [...]
>
> Wenn wir schon externen Interrupt und Timer benutzen, fehlt zur Messung
> der Periodendauer aber auch nicht mehr viel. ;)

Natürlich nicht.
Aber der Vorschlag, der kam, war nun mal, Pulse in einer gewissen Zeit 
zu zählen. Ausserdem schadet es Eddie sicher nicht, wenn er ein paar 
Techniken kennen lernt :-)

> Und ich persoenlich haette meine Messergebnisse gerne schnell und
> akkurat anstatt verzoegert und interpoliert. Gerade auch wenn z.B. ein
> Luefterausfall erkannt werden soll.

Schon klar. Hängt immer vom Anwendungsfall ab.
Bei der Messung der Pulslänge hast du dafür dann wieder das Problem, 
dass du eine zeitliche Obergrenze einbauen musst (keine Ahnung ob PULSIN 
das kann), sonst misst sich der wieder zu Tode.

von Karl H. (kbuchegg)


Lesenswert?

EazyEddy schrieb:
> Omfg, nach diesem Projekt werde ich höchstwahrscheinlich sowieso nichts
> mehr in Basic programmieren. Wieso macht ihrs mir nur so schwer!?

Weil es DEIN Projekt ist.
Also machst auch DU die Arbeit.

Wenn wir hier DEIN Projekt für DICH lösen sollen, dann will ich auch die 
Stunden dafür abgegolten haben. Ich muss ja schliesslich auch von etwas 
leben. Du rufst ja auch nicht beim Zahnarzt an, er soll dir haarklein 
und genau erklären, wie man eine Brücke baut. Und wenn du es dann nicht 
hinkriegst, soll er das dann unentgeltlich fertig stellen.

von EazyEddy (Gast)


Lesenswert?

Geht das hier schon mal in die richtige Richtung:

Config Timer0 = Timer , Prescale = 1024

On Ovf0 Tim0_isr

Enable Timer0
Enable Interrupts

Do
   If Portb.0 = 0 And Ver1 = 0 Then
      Ver1 = 1
      Zaehler1 = Zaehler1 + 1
   If Portb.0 = 1 And Ver1 = 1 Then
      Ver1 = 0
   End If
   End If
Loop

Tim0_isr:

Lcd Zaehler1

Return
End
???????

von Karl H. (kbuchegg)


Lesenswert?

EazyEddy schrieb:

> Tim0_isr:
>
> Lcd Zaehler1
>
> Return

Genau anders rum.

Als Faustregel:
Du packst niemals Dinge wie LCD Ausgaben oder Ausgaben über die serielle 
Schnittstelle in eine ISR. ISR sollen schnell abgearbeitet werden. 
Ausgaben dauern aber vergleichsweise lange.

Du kannst dir aber natürlich in der ISR den auszugebenden Wert zb in 
eine andere Variable umkopieren, die in der Hauptschleife ausgegeben 
wird. Genau das hab ich weiter oben in der 'Programmskizze' gemacht. 
Dadurch wird die ISR schnell abgearbeitet und trotzdem wird nur der 
letzte Messwert ausgegeben.

von MWS (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> dass du eine zeitliche Obergrenze einbauen musst (keine Ahnung ob PULSIN
> das kann),

Zitat aus der Hilfe:
> ERR variable will be set to 1 in case of a time out. A time out will
> occur after 65535 unit counts. With 10 uS units this will be after
> 655.35 mS.

von Karl H. (kbuchegg)


Lesenswert?

@MWS

OK. Danke

Können wir uns trotzdem einig werden, welche Technik Eddie vorgeschlagen 
wird und ihn dann da durchlotsen.

(Pulse zählen ist nicht auf meinem Mist gewachsen. Ich hab das Thema nur 
aufgegriffen)

von MWS (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Können wir uns trotzdem einig werden, welche Technik Eddie vorgeschlagen
> wird und ihn dann da durchlotsen.

Hatte den Eindruck, daß Eddie der typische 
Bastel-mir-was-will-aber-nix-lernen-Hauptsache-fertig Bascom-Anwender 
ist. Mit Pulsein() lässt sich die Angelegenheit problemlos und schnell 
erschlagen.

So wie ich den ADC/PWM-Code in Erinnerung hab', geht das hier mit 
Pulsein(), da keine Interrupts genutzt werden.

Ich will Dir sicher nicht den Spaß verderben, jemand etwas beibringen zu 
wollen. Nur sollte man wissen, hier geht's einfacher, und zwar viel 
einfacher.

von Karl H. (kbuchegg)


Lesenswert?

MWS schrieb:

> Ich will Dir sicher nicht den Spaß verderben, jemand etwas beibringen zu
> wollen. Nur sollte man wissen, hier geht's einfacher, und zwar viel
> einfacher.


Nö, ist kein Problem für mich.
Wir müssen uns nur einig werden, welche Messstrategie verfolgt werden 
soll. Sonst verwirren wir ihn nur mehr als notwendig.

von EazyEddy (Gast)


Lesenswert?

Danke vielmals für diese Ansage^^

von MWS (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Nö, ist kein Problem für mich.
> Wir müssen uns nur einig werden, welche Messstrategie verfolgt werden
> soll. Sonst verwirren wir ihn nur mehr als notwendig.

Gut, dann würd' ich sagen, er soll sich selbst die Richtung aussuchen. 
Die Funktion ist genannt, nun als Alternative bekannt und sollte soweit 
auch selbsterklärend sein.

von Volker S. (volkerschulz)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Volker Schulz schrieb:
>
>> Ich meinte nicht die Frequenz der Signale (die ja eher proportional zur
>> Drehzahl als zur Lueftergroesse sein sollte),
>
> Nitpicking:
> Ich würde mal schätzen, dass sich größere Lüfter tendentiell langsamer
> drehen.

Ok. Gehen wir halt davon aus, dass das (zumindest innerhalb einer 
Luefter-Gruppe wie z.B. PC-Luefter) der Fall sei und es kaum Ausnahmen 
gaebe. Ich rechne trotzdem lieber mit realen Werten anstatt mit 
Tendenzen. Sollte aber auch eigentlich nur dem TO als Info dienen, 
nachdem ich ihm zum Durchrechnen animiert habe. Nicht dass er noch 
versucht, die Lueftergroesse in eine Formel zu quetschen. ;)


>> sondern die Laenge eines
>> Signals.
>
> Jep. Das wäre interessant. Das andere was interessant ist: muss mit
> Prellen gerechnet werden.
>
> Beides kann ich nicht beantworten. Hab mich damit noch nie beschäftigt.

Ich habe gerade mal einen Tachoausgang auf dem Oszi bestaunt. Ist ein 
ziemlich perfektes Rechtecksignal mit 50% Duty-Cycle (halbe Umdrehung 
GND, halbe Umdrehung hochohmig). Die Frequenz aendert sich mit der 
Drehzahl. Die Flanken sind sauber, kein Prellen, kaum Ueberschwingen. 
Das heisst dann auch, man koennte es ganz genau und kompliziert machen 
und eine Aenderung in der Drehzahl schon nach einer halben Umdrehung 
erkennen. ;)

Habe natuerlich keine Ahnung ob das jetzt fuer alle Luefter gilt.

Hat jemand echtes Interesse an dem, was das Oszi zeigt? Dann wuerde ich 
mal ein Bild schiessen...

Volker

von EazyEddy (Gast)


Lesenswert?

Das mit dem Pulsein hört sich nicht schlecht an, aber in der Bascom 
Hilfe gibts dazu nicht mal ein example. beim pulsout ist ein example 
aufgeführt, dass folgendermaßen aussieht:

Dim A As Byte
Config Portb = Output 'PORTB all
output pins
Portb = 0 'all pins 0
Do
For A = 0 To 7
Pulseout Portb , A , 60000 'generate
pulse
Waitms 250 'wait a bit
Next
Loop 'loop for
ever

von EazyEddy (Gast)


Lesenswert?

Volker Schulz schrieb:
> Hat jemand echtes Interesse an dem, was das Oszi zeigt? Dann wuerde ich
>
> mal ein Bild schiessen...

Gerne^^

von MWS (Gast)


Lesenswert?

EazyEddy schrieb:
> aber in der Bascom
> Hilfe gibts dazu nicht mal ein example.

Doch, gibt's schon, ist nur sehr winzig, schau' genauer hin, es sind nur 
4 Zeilen.

von EazyEddy (Gast)


Lesenswert?

EazyEddy schrieb:
> Das mit dem Pulsein hört sich nicht schlecht an, aber in der Bascom
>
> Hilfe gibts dazu nicht mal ein example.

sorry, habs grad entdeckt idiot xD

Dim w As Word
pulsein w , PIND , 1 , 0 'detect time from 0 to 1
print w
End

von EazyEddy (Gast)


Lesenswert?

EazyEddy schrieb:
> sorry, habs grad entdeckt idiot xD

mit idiot meinte ich mich. nicht das das hier in den falschen hals 
gekriegt wird^^

von Volker S. (volkerschulz)


Angehängte Dateien:

Lesenswert?

EazyEddy schrieb:
> Volker Schulz schrieb:
>> Hat jemand echtes Interesse an dem, was das Oszi zeigt? Dann wuerde ich
>> mal ein Bild schiessen...
>
> Gerne^^

Siehe Anhang. X=5ms/Div; Y=2V/Div. Quizfrage an Eddy: Wie schnell dreht 
der Luefter im Moment der Aufnahme?

Volker


P.S.: Welches Bildformat muss ich eigentlich waehlen wenn es sich per 
Definition sowohl um einen Screenshot wie auch ein Foto handelt? ;)

von EazyEddy (Gast)


Lesenswert?

Volker Schulz schrieb:
> Quizfrage an Eddy: Wie schnell dreht
>
> der Luefter im Moment der Aufnahme?

ich würde auf ca. 2400 rpm tippen

von EazyEddy (Gast)


Lesenswert?

Mein Tachotestprogramm sieht bislang so aus:

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 32
$swstack = 16
$framesize = 40

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , 
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

Dim A As Byte
Config Lcd = 16 * 2
Config Portd = Output

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Dim Analogwert As Word , Pwm1 As Byte

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B 
Pwm = Clear Down , Prescale = 1
Start Timer1

Dim Ver1 As Byte
Dim Zaehler1 As Byte

Pwm1b = 0

Do
Analogwert = Getadc(0)
Analogwert = Analogwert / 204
Pwm1 = Analogwert * 51
Pwm1b = Pwm1
Loop

Dim Zaehlen As Word
Pulsein Zaehlen , Pinb , 0 , 0
Print Zaehlen

End

Bin ich damit auf dem richtigen Weg?

von MWS (Gast)


Lesenswert?

EazyEddy schrieb:
> Bin ich damit auf dem richtigen Weg?

Äh, nein. Das Pulsein() muss in die Loop, dahinter nützt's nix.

von Volker S. (volkerschulz)


Lesenswert?

EazyEddy schrieb:
> Volker Schulz schrieb:
>> Quizfrage an Eddy: Wie schnell dreht
>> der Luefter im Moment der Aufnahme?
> ich würde auf ca. 2400 rpm tippen

Du solltest nicht tippen! Wenn Du den korrekten Rechenweg aufgeschrieben 
haettest, haette ich Dir trotz des falschen Ergebnisses eventuell noch 
einen halben Punkt geben koennen... ;)

Volker

von EazyEddy (Gast)


Lesenswert?

MWS schrieb:
> Äh, nein. Das Pulsein() muss in die Loop, dahinter nützt's nix.

sorry, ich vergaß.

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Karl Heinz Buchegger schrieb:

> muss mit Prellen gerechnet werden.

Nein. Die Impulse werden elektronisch durch einen Hallsensor generiert, 
der prellt nicht.

-----------------

Anbei noch mal die Tachosignale von einem 60mm, einem 80mm und einem 
120mm PC-Lüfter. Bauartbedingt werden immer zwei Impulse pro Umdrehung 
ausgegeben (das sollte man nachher beim hochrechnen berücksichtigen).

LG Jens

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.