-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: nocheinmal Drehzahlmessung

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.12.2004
    Ort
    Ulm
    Alter
    30
    Beiträge
    136

    nocheinmal Drehzahlmessung

    Anzeige

    Hallo,

    wie schon in einem anderen Beitrag weiter unten erwähnt möchte ich gerne mit einem CNY70 die Drehzahl einer Welle erfassen und diese auf einem LCD ausgeben.

    Dazu habe ich jetzt folgendes Programm geschrieben:

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    Dim Zaehlerstand As Byte
    Dim A As Integer
    Dim Drehzahl As Integer
    Const Timervorgabe = 61936                                  
    Config Timer1 = Timer , Prescale = 1024
    Enable Interrupts
    Config Int0 = Falling
    Enable Int0
    On Int0 Zaehlen
    On Timer1 Mytimer
    Timer1 = Timervorgabe
    Enable Timer1
    
    
    Do
    Config Lcd = 16 * 2
    Cls
    Lcd Drehzahl
    
    
    End
    
    Loop
    
    Zaehlen:
    Zaehlerstand = Zaehlerstand + 1
    
    
    Mytimer:
    A = Zaehlerstand
    Drehzahl = A * 60
    Print Drehzahl
    Timer1 = Timervorgabe
    Zaehlerstand = 0
    Return
    
    End
    Ich möchte also mit dem Timer1 die Impulse pro Sekunde zählen. Statt dem CNY70 verwende ich zum testen nur einen Taster der Pb.0 (int0) auf 0V zieht.
    Allerdings scheint sich in den Code noch irgendein Fehler eingeschlichen zu haben, weil sich auf dem Display nichts tut.

    Ich würde mich freuen wenn jemand den Code überfliegen könnte.

    Florian

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    "Zaehlen:" hat keinen return ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.12.2004
    Ort
    Ulm
    Alter
    30
    Beiträge
    136
    das hab ich doch glatt übersehen. War aber scheinbar nicht der einzige Fehler, es tut sich genauso wenig.
    Am Display liegt es sicher nicht, die Ansteuerung funktioniert soweit.
    Trotzdem Danke für den Hinweis

    edit: Habe jetzt selbst noch einen kleinen Fehler gefunden, der aber scheinbar immer noch nicht der letzte war. Das End mitten in der Do Loop Schleife war natürlich fehl am Platze.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.12.2004
    Ort
    Ulm
    Alter
    30
    Beiträge
    136
    könnte es sein, dass mit der Reihenfolge am Anfanf des Programms etwas nicht stimmt? Muss ich den int0 (pb.0) als Eingang definieren?
    Ich hab keine Ahnung mehr was sonst noch falsch sein könnte.

    mfg

    Florian

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Wenn ich nicht irre, fehlt

    START TIMER1
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.12.2004
    Ort
    Ulm
    Alter
    30
    Beiträge
    136
    also mein Code sieht jetzt so aus:

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    Dim Zaehlerstand As Byte
    Dim A As Integer
    Dim Drehzahl As Integer                                   
    Const Timervorgabe = 61936
    Config Timer1 = Timer , Prescale = 1024
    Enable Interrupts
    Config Int0 = Falling
    Enable Int0
    On Int0 Zaehlen
    On Timer1 Mytimer
    Timer1 = Timervorgabe
    Enable Timer1
    Start Timer1
    
    
    Do
    Config Lcd = 16 * 2
    Cls
    Lcd Drehzahl
    Waitms 100
    Loop
    
    Zaehlen:
    Zaehlerstand = Zaehlerstand + 1
    Return
    
    Mytimer:
    A = Zaehlerstand
    Drehzahl = A * 60
    Print Drehzahl
    Timer1 = Timervorgabe
    Zaehlerstand = 0
    Return
    
    End
    Aber funktionieren tut das ganze noch nicht.

    Hat noch jemand eine Idee?

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ehm, du meinst, der Timer1 springt nicht an oder zählt er nix ?
    In der DO-Schleife solltest du nicht config LCD machen (einmal vorher reicht.
    der Print bei mytimer sollte doch zu Terminal ? Hat der eine Baud-angabe ? ( $BAUD=nnnn )
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.12.2004
    Ort
    Ulm
    Alter
    30
    Beiträge
    136
    das Print in mytimer war überflüssig. Ich habs rausgemacht. Config lcd hab ich vor die Do Loop Schleife gemacht.

    Ich weiss nicht ob der Timer nicht anspringt oder es am Zählen liegt. Wenn ich das Programm simuliere und auf int0 klicke, diesen also auslöse, sehe ich an den ganze Variablen keine Änderung. Ich habe ja den int0 auf die fallenden Flanken angesetzt. Kann es sein, dass das Simulieren deshalb nicht funktioniert?

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Na ja, um das zu wissen, mach den LCD Drehzahl in die Timer-Routine.
    Zählt er nicht, müßt er ja wenigstens "Drehzahl=0" sagen
    Dann mach umgekehrt in die INT0-Routine einen LCD "aua".
    So läßt sich rauskriegen, geht und was NICHT.
    Ich sag ehrlich, ich kann am Programm so nix böses sehen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Noch eine Frage: Die Timereinstellungen: welche Zeit willst du haben ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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