-         

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

Thema: Drehzahlmesser

  1. #1

    Drehzahlmesser

    Anzeige

    Hallo liebe Roboterfreunde

    ich bin noch Neuling auf dem Gebiet Elektrik/Programmierung und deshalb brauche ich euren Rat.
    Vor ner Woche habe ich mir das C-Control (Version 1) und das applicationsboard (mit LCD-Display) ersteigert. Jetzt wollte ich damit einen Drehzahlmesser realisieren. Ich habe auch schon eine Skizze gemacht so wie ich mir das vorstelle.

    http://img196.imageshack.us/i/skizze001.png/


    Jetzt habe ich aber noch sehr Größe Probleme wie ich das C-Control Programmieren muss. Könnt ihr mir helfen?


    Danke schon mal im voraus
    Rene

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo Rene,

    ich seh da nur "image not found"

    grüsse,
    Hannes

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Du kannst es schon so machen wie auf der Skizze. welche Drehzahlen erwartest du. Für schnelle DZ würde ich statt dem Reed Relais einen Hallsensor nehmen. Wenn du es so anschließt musst du einen internen Pull Up einschalten. Du kannst aber auch einen externen Widerstand nehmen.

  4. #4
    Also die DZ liegen so zwischen 5000U/min und 9000U/min.

    Ich habe hier schon mal aus Codeschnipseln und den Hilfe Programmen von Conrad was zusammen gebastelt um das LCD-Display an zu steuern.
    Ich komm nur einfach nicht darauf wie ich das mit den Drehzahl pro Minute programmieren muss.

    Code:
    '********************************************************************
    '
    ' C-Control/BASIC       LCD3.BAS
    '
    ' Systemvoraussetzungen:
    '
    ' - Application Board mit angeschlossenem Display
    '
    ' Schwerpunkt:
    '
    ' - Ausgeben von Zahlenwerten am Display
    '
    '********************************************************************
    
    ' *** Daten-Definition ***
    define value word
    define output word
    
    define lcd_buf byte
    define lcd_param byte
    
    define i byte
    
    ' *** Definition LCD-Ports ***
    define lcd_port byteport[2]
    define lcd_rs port[14]
    define lcd_rw port[13]
    define lcd_e port[15]
    
    '*** ASCII-Codes ***
    define A_ &H41
    define B_ &H42
    define C_ &H43
    define D_ &H44
    define E_ &H45
    define F_ &H46
    define G_ &H47
    define H_ &H48
    define I_ &H49
    define J_ &H4A
    define K_ &H4B
    define L_ &H4C
    define M_ &H4D
    define N_ &H4E
    define O_ &H4F
    define P_ &H50
    define Q_ &H51
    define R_ &H52
    define S_ &H53
    define T_ &H54
    define U_ &H55
    define V_ &H56
    define W_ &H57
    define X_ &H58
    define Y_ &H59
    define Z_ &H5A
    
    define LEERZ &H20
    define MINUS &H2D
    define NULL &H30
    define GLEICH &H3D
    define ccc ad[7]
    '*** Programmoperationen  ***
    
      gosub LCD_INIT
      randomize timer
    
      ' Zufallszahlen ausgeben
      for i = 1 to 9999999999999999999999999999999999999
        pause 5
    
        lcd_param = 1 : gosub LCD_GOTOLINE
        
        lcd_param = D_ : gosub LCD_WRITECHAR
        lcd_param = R_ : gosub LCD_WRITECHAR
        lcd_param = E_ : gosub LCD_WRITECHAR
        lcd_param = H_ : gosub LCD_WRITECHAR
        lcd_param = Z_ : gosub LCD_WRITECHAR
        lcd_param = A_ : gosub LCD_WRITECHAR
        lcd_param = H_ : gosub LCD_WRITECHAR
        lcd_param = L_ : gosub LCD_WRITECHAR
        lcd_param = LEERZ : gosub LCD_WRITECHAR
        lcd_param = GLEICH : gosub LCD_WRITECHAR
        lcd_param = LEERZ : gosub LCD_WRITECHAR
    
        value = ccc
     
        gosub WRITEVALUE
      next
    
      end
    
    
    #WRITEVALUE
    
      output = abs(value)
    
      ' negatives Vorzeichen oder Leerzeichen
      if value < 0 then lcd_param = MINUS else lcd_param = LEERZ
      gosub LCD_WRITECHAR
    
      ' Zehntausender-Dezimalstelle oder Leerzeichen (Ausblenden fuehrender Nullen)
      if abs(value) >= 10000 then lcd_param = NULL + output/10000 else lcd_param = LEERZ
      gosub LCD_WRITECHAR
      output = output mod 10000
    
      ' Tausender-Dezimalstelle oder Leerzeichen
      if abs(value) >= 1000 then lcd_param = NULL + output/1000 else lcd_param = LEERZ
      gosub LCD_WRITECHAR
      output = output mod 1000
    
      ' Hunderter-Dezimalstelle oder Leerzeichen
      if abs(value) >= 100 then lcd_param = NULL + output/100 else lcd_param = LEERZ
      gosub LCD_WRITECHAR
      output = output mod 100
    
      ' Zehner-Dezimalstelle oder Leerzeichen
      if abs(value) >= 10 then lcd_param = NULL + output/10 else lcd_param = LEERZ
      gosub LCD_WRITECHAR
    
      ' einer Dezimalstelle oder Leerzeichen
      lcd_param = NULL + output mod 10
      gosub LCD_WRITECHAR
    return
    
    
    '*** LCD_Interface ***
    '( muss in jedes Programm mit LCD-Ausgabe eingefuegt werden)
    
    #LCD_INIT
    
    ' alle ports 0
      lcd_port = OFF
    
    ' 8-Bit-Modus aktivieren
      lcd_param=&H38 : gosub LCD_WRITECMD
    
    ' mit 8-Bit-Command in 4-Bit-Modus umschalten
      lcd_port=&B00000010
      tog lcd_e
      tog lcd_e
    
    ' ab jetzt 4-Bit-Modus
      lcd_param = &H28 : gosub LCD_WRITECMD
      lcd_param = &H0C : gosub LCD_WRITECMD
    
    ' Display loeschen
    #LCD_CLS
      lcd_param = &H02 : gosub LCD_WRITECMD
      lcd_param = &H01 : gosub LCD_WRITECMD
    return
    
    ' Zeilenwechsel
    #LCD_GOTOLINE
      if lcd_param = 1 then lcd_param = &H80
      if lcd_param = 2 then lcd_param = &HC0
      goto LCD_WRITECMD
    
    ' LCD-Kommando
    #LCD_WRITECMD
      lcd_buf = OFF
      goto LCD_WRITE
    
    ' Zeichenausgabe
    #LCD_WRITECHAR
      lcd_buf = &B00100000
    
    ' Kommando oder Zeichen an Display senden
    #LCD_WRITE
      lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
      tog lcd_e
      tog lcd_e
      lcd_port = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
      tog lcd_e
      tog lcd_e
    return

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei 9000 U/min ist das mit einen Reedschalter schon nicht mehr ganz so einfach. Pro Umdrehung sind das nur etwa 6 ms. Die Ansprechzeit und das Prellen werden auch im Bereich einiger ms liegen. Ein Hallgeber wäre da schon besser und würde das Programm auch vereinfachen.

    Die Messung könnte wie folgt aussehen:
    1) Warten auf ein steigende Flanke
    2) Timer auf Null setzen und starten
    3) etwas Warten wegen Prellen (z.B. 3 ms)
    4) Warten auf nächste steigende Flanke
    5) Timer Auslesen, Drehzahl berechnen.

  6. #6
    Ich habe mir ein Hall-Seonsor besort. Jetzt kommt das große problem mit der Programmierung. Ich Programmiere mit Basic (das von Conrad). Kann jemand ein Beispiel Programm posten? Ich würde mich wirklich sehr freuen.

    Gruß
    Rene

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Wenn du noch nicht richtig programmieren kannst würde ich zuerst einfacher anfangen. Z.B. Normale Ein- und Ausgabe, danach Interrupt,...
    Wenn du das kannst begib dich an so ein Projekt. Bei einem Drehzahlmesser brauchst du Timer, Interrupt und LCD zur Ausgabe das lernst du aber nicht inerhalb kürzester Zeit.

  8. #8
    Ist das so richtig?

    #anfang
    If Sensor = 1 then goto Start
    goto anfang

    #start
    ... <---- Ab da weiss ich nicht wie ich das machen soll



    mal ne andere Frage geht das überhaupt mit dem c-control? Ich meine der Timer arbeitet doch nur in 20ms schritten oder?

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    So ist es richtig, besser wäre es mit Interrupt. Für den Anfang zu Lernen passt das. Leider kann ich dir nicht helfen. Habe keine C Control und programmiere auch nicht in Basic

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.09.2004
    Beiträge
    264
    Ich befürchte, dass mit der C-Control überhaupt keine brauchbare Messung zu stande kommen wird. Sie ist dafür zu langsam.

    mfg

    Stefan

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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