- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 16

Thema: Gp1a038 Rncontrol Rnkeylcd

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.12.2007
    Beiträge
    19

    Gp1a038 Rncontrol Rnkeylcd


    Hallo

    Ich möchte hier noch einmal das Thema Gabellichtschranke mit Codescheibe aufgreifen und die Probleme die ich damit habe. Weiter unten ist das Programm ( Musterprogramm geändert für I2C Bus zur Anzeige auf RNkeylcd), die Schaltung und der Aufbau abgebildet.
    Ich nutze folgende Hardware..

    RNControl 1.4 + Rnkeylcd + GP1A038RBK ( Conrad 185377) + Codescheibe 120 Striche.(robotikhardware.de)
    - die gelieferte Gabellichtschranke von robotikhardware.de habe ich beim experimentieren durchgeschossen, deshalb die von Conrad, die Probleme waren aber dieselben.

    Der Motor dreht bei ca. 60 Umdrehungen pro Minuten. Die angezeigten Werte schwanken von 55 bis 67 von absoluten Ausreißern mal abgesehen. Wenn ich die Motorwelle leicht anhebe ( ca. 1 mm) steigen die Werte ( 100 -150), drückt ich die Welle nach unten sinken die Werte ( 5 – 20). Bei Erschütterungen oder Lageänderungen Schwanken die Werte. Bei abdunkeln des Sensors steigen die Werte meißt. Wenn ich die Codescheibe entferne und eine Checkkarte durchschiebe werden Werte von 1 bis 3 angezeigt. Manchmal auch beim rausziehen. Wenn ich PortD.2 kurz auf Masse lege werden Werte bis 800 „IMPUSE PRO SECUNDE „ angezeigt und beim öffnen wieder.

    Nur noch mal zur Funktion, damit ich nicht auf dem Holzweg bin.
    Beispiel:
    Codescheibe dreht--> schwarzer Stich dunkelt erste Fotodiode ab --> VoA geht auf Low --> Interrupt Int0 wird ausgelößt --> schwarzer Stich verlässt erste Fotodiode --> VoA geht auf high --> nächster schwarzer Stich dunkelt erste Fotodiode ab --> VoA geht auf low --> Interrupt Int0 wird ausgelößt ……usw. oder hat die zweite Fotodiode in dieser Beschaltung auch noch eine Funktion.

    Bleibt nur noch die Frage, was kann die Messergebnisse verbessern ?

    - Codescheibe genauer ausrichten
    - Vorwiderstand Leuchdiode ändern
    - anderes Meßprinzip nutzen

    Andreas

    Code:
    '##########################################################################
    'Drehzahlabfrage1.BAS
    '
    'Test  19.06.08
    '##########################################################################`
    
    ' ---------------  RN-Control Anweisungen   -------------------
    
    $regfile = "m32def.dat"
    $hwstack = 128
    $framesize = 128
    $swstack = 128
    $crystal = 16000000       'Quarzfrequenz
    $baud = 9600
    
    ' ---------------  RN-Control Hardwareconfiguration  ----------
    Config Scl = Portc.0       'Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    Config Int0 = Falling       ' Interupt0 für fallend Flanke def.
    Config Timer1 = Timer , Prescale = 256       ' Vorteiler vom Timer1 wird auf 256 gestellt
    
    ' ---------------------  Variablendeklaration  ----------------
    
    Dim Impulseprominute As Long
    Dim Impulseprosekunde As Integer
    Dim K As Integer
    Dim Le As Byte
    Dim Rnkeylcd_befehl As String * 4
    Dim Text As String * 80
    Dim Umdrehungenprominute As Integer
    Dim Zaehlerirq0 As Integer
    
    ' ---------------------  Konstantendeklarationn  --------------
    
    Const Markierungenproscheibe = 120       'Scheibe für GP1A038 hat 120 Markierungen
    Const Rnkeylcd_slaveid_write = &H40       'I2C SlaveAdresse
    Const Rnkeylcd_slaveid_read = &H41
    Const Timervorgabe = 3036       'Timervoreinstellung um bei Vorteiler 256 und Takt 16 MHz
    
    'Config Pind.2 = Input       'Für Tastenabfrage
    Portd.2 = 1       'Pullup Widerstand ein
    
    
    ' -------------------- I2cbus init ----------------------------
    
    Wait 1       'Warte bis LCD bereit
    I2cinit       'I2C bus init
    
    ' ---------------------- Routinendeklaration ------------------
    
    Declare Sub Rnkeylcd_cursorpos(byval Spalte As Byte , Byval Zeile As Byte)
    Declare Sub Rnkeylcd_lcd_ausgabe()
    Declare Sub Rnkeylcd_lcd_licht_ein_aus()
    Declare Sub Rnkeylcd_scanmodus(byval Ein As Byte)       'Tastenscanmodus ein und ausschalten
    Declare Function Rnkeylcd_getscan() As Word
    
    
    ' ---------------------- Hauptprogramm ------------------------
    
    Zaehlerirq0 = 0       'Zähler für Striche auf der Codescheibe auf 0
    On Int0 Irq0       ' bei INTO Routine Irg0 aufrufen
    Enable Int0       'Interupt INT0 einschalten
    
    On Timer1 Timer_irq       ' wenn Timer1 interrupt auslöst Routine Timer_irq aufrufen
    Enable Timer1       'Timer1 ein
    
    Enable Interrupts       ' alle Interrupts einschalten
    
     Do
       Text = "    "
       Rnkeylcd_cursorpos 16 , 1
       Rnkeylcd_lcd_ausgabe       ' Anzeige Löschen
       Rnkeylcd_cursorpos 16 , 2
       Rnkeylcd_lcd_ausgabe       ' Anzeige Löschen
       Text = "Impulse Sek: " + Str(impulseprosekunde)
       Rnkeylcd_cursorpos 4 , 1
       Rnkeylcd_lcd_ausgabe
       Impulseprominute = Impulseprosekunde * 60
       Umdrehungenprominute = Impulseprominute / Markierungenproscheibe
       Text = "Umdreh. Min: " + Str(umdrehungenprominute)
       Rnkeylcd_cursorpos 4 , 2
       Rnkeylcd_lcd_ausgabe
    
       For K = 0 To 30
         Waitms 30
       Next K
     Loop
    
    End
    
    ' ----------------------------------------------------------------------------
    
    Sub Rnkeylcd_lcd_ausgabe()
      Le = Len(text)
      I2csend Rnkeylcd_slaveid_write , Text , Le
    End Sub
    
    Sub Rnkeylcd_cursorpos(byval Spalte As Byte , Byval Zeile As Bit Byte)       ' Cursor auf Pos
      Rnkeylcd_befehl = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
      I2csend Rnkeylcd_slaveid_write , Rnkeylcd_befehl , 4
    End Sub
    
    ' ---------------------- Interruptroutinen -------------------------------
    
    Irq0:       'Pro Impuls (Markierung auf Scheibe) ein Aufruf
     Incr Zaehlerirq0
    Return
    
    Timer_irq:       'Pro Sekunde ein Aufruf
      Timer1 = Timervorgabe
      Impulseprosekunde = Zaehlerirq0
      Zaehlerirq0 = 0
    Return
    
    'programmlänge 1728 dec
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken motor_u_gp1a038.jpg   gp1a038rkb_schaltung_.jpg  

Berechtigungen

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

12V Akku bauen