-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Problem mit Lüfter-Tachosignal ...

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121

    Problem mit Lüfter-Tachosignal ...

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo, ich möchte die Drehzahl eines 12V Lüfters anzeigen und stecke da mit der auswertung fest. Der Lüfter ist wie gesagt an 12V angeschloßen, wobei das Tachosignal mit einem 10K Pullup an den ICP-Pin des Mega16 geht.
    Mein Code ist folgender ...
    Ich beckomme bei langsam laufendem Lüfter eine Drehzahl von ca. 13000 angezeigt, die ab und an auf ca. 800 springt. Könnte mir bitte jemand helfen ?

    Code:
    Config Timer1 = Timer , Capture Edge = Falling , Noise Cancel = 1 , Prescale = 256
    On Capture1 Timer_icp
    Enable Timer1
    Enable Capture1
    Enable Interrupts
    .
    .
    .
    .
    .
    .
    .
    Timer_icp:
       Dim Icp_neu As Word , Periode As Word
       Icp_neu = Capture1
    
       If Icp_neu > Icp_alt Then
          Periode = Icp_neu - Icp_alt
       Else
          Periode = Icp_alt - Icp_neu
          Periode = 65536 - Periode
       End If
       Icp_alt = Icp_neu
    
       'Debug_lcd = Periode
    
       Fan = 1875000 / Periode
       Fan_active = 1
    Return

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Musst du nicht anstelle von
    Icp_neu = Capture1
    dies schreiben:
    Icp_neu = Timer1

    Der Timer enthält doch den Wert, den du lesen willst.

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    Das ändert auch nix......

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Hast du tatsächlich einen Lüfter mit Drehzahlsensor? Ich hab kürzlich gewaltig danebengetreten als ich angenommen hatte, dass meine Lüfter mit dritter Strippe einen Drehzahlsensor haben.
    Es war nämlich nur ein "Lüfter läuft"/"Lüfter steht"-Signal, dass sich dann in einem dauerhaften High bzw. Low-Pegel ab einer gewissen Mindestdrehzahl niedergeschlagen hat.

    mfG
    Markus

    Edit: Wenn du den Lüfter über PWM regelst und dabei die Masse ein-/ausschaltest, kannst du das Drehzahlsignal ebenfalls in die Tonne treten, nur wenn du einen High-Side Transistor/FET verwendest funktioniert die Drehzahlmessung noch.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.381
    Der Lüfter ist wie gesagt an 12V angeschloßen, wobei das Tachosignal mit einem 10K Pullup an den ICP-Pin des Mega16 geht.
    erm du meinst nen pulldown oder ? wenn da 12V in den controller reinpulsen nimmt der dir das bestimmt irgendwann sehr übel! ich würd das signal erstmal nachmessen (mit oszi wenn geht)
    Musst du nicht anstelle von
    Icp_neu = Capture1
    dies schreiben:
    Icp_neu = Timer1
    nein, wenn der ICP ne flanke detektiert, schreibt er sofort den aktuellen timerwert in das capture register, also vollkommen richtig

    wie gesagt ich würde restmal das signal überprüfen, ihc kenn das von billig-einschub-tachometern für lüfter, dass die werte manchmal heftig schwanken, liegt aber meist daran dass die das signal ungepuffert auswerten, ich würd n schmitttrigger vorschalten, so bekommste das signal schonmal auf definitiv 5V runter(n spannungsteiler birgt das risiko einer spannungsspitze) und es wird ein sauberes rechtecksignal draus!

    EDIT: ich muss glatt aml nachschauen, aber theoretisch müsste man über einen OPV auch ne gewisse potentialtrennung erreichen

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    Also der Lüfter wird wie folgt angesteuert:
    Der AVR steuert über I2C einen DAC an, der entsprechend 0-5V an einen OPV weiter gibt. Der OPV steuert einen BD135 an, der an 12V angeschloßen ist, und den Lüfter treibt. Das Tachosignal ist ein Opencollector und an den ICP-Pin des AVR angeschloßen.Der pullup geht vom Tacjosignal an +5V.
    Ab ca. 950u/min bis 1600u/min wird es richtig angezeigt. Dafor und dahinter spinnt er wieder .........

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    Die Division
    Fan = 1875000 / Periode
    hat in der ISR nichts verloren, dauert zu lange.

    Deshalb im Hauptprogramm:

    do
    if fan_aktive=1 then
    reset fan_aktive
    disable interrupts
    Fan = 1875000 / Periode 'Atomarer Zugriff auf Periode
    enable interrupts
    endif
    print fan
    loop

    Übrigens, wenn Du den Overflow-Interrupt nicht benötigts lösche bitte die Zeile

    enable Timer1

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    ich geb´s auf. Ist es möglich einfach nur zu erkennen, ob der lüfter läuft oder nicht ? Ohne Timer, einfach nur durch den Portpin ?

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Man gibt nicht auf!!! [-( [-(
    Hast du ein Datenblatt vom Lüfteroder Typenbezeichnung vom Lüfter? Dort sollte es drinnenstehen, ob du ein Frequenzsignal oder eine Stillstandsanzeige hast.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    Das ist ein ausgedienter CPU-Lüfter.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •