-         

Ergebnis 1 bis 7 von 7

Thema: Wegstrecke mit CNY36 messen

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467

    Wegstrecke mit CNY36 messen

    Anzeige

    Hallo,
    ich habe mir bei Reichert die Gabellichtschranke CNY36 gekauft. Die habe ich so auf meine Platine gelötet, dass die Gabel über eines der drei Zahnräder geht. Das Zahnrad hat an einer Stelle ein Loch, sodass ich, wenn das Loch zwischen der Schranke ist, ein Aussignal habe.
    Ich habe als Programm zum Messen mal das aus dem Wissensbereich für den Sharp GP1A030 umgeschrieben, also sie Schritte auf eins gestellt (ich weiß nicht, ob das so geht).
    Aber ich habe kein ordentliches Ergebnis bekommen.
    Hat vieleicht jemand eine Idee, wie das gehen könnte oder hat jemand einen Quellcode oder so.
    Ich würde mich über jede Hilfe freuen.

    jon

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Ich habe nochmal etwas experimentiert und habe dann dieses Programm herausbekommen:


    $regfile = "m32def.dat"
    $crystal = 1000000
    $baud = 1200

    Dim Umdr As Integer

    Config Portd.7 = Output
    Config Pinc.0 = Input
    Portc.0 = 1

    Do
    If Pinc.0 = 1 Then
    Portd.7 = 1
    Umdr = Umdr + 1
    Print "Umdrehungen: " ; Umdr
    Else
    Portd.7 = 0
    End If
    Loop

    End


    Das Programm zählt zu der Variable Umdr +1 dazu, wenn das Loch zwischen der schranke ist.
    Jetzt ist mein Problem, dass, wenn das Rad langsam ist, so lange das Loch zwischen der Schranke ist, dass es so lange +1 rechnet.
    Wie kann ich das umgehen?
    Gibte es eine Befehl, der sagt, dass er so lange warten soll, bis das Signal wieder an ist und dann erst zu Do springt?

    Für den Anfang wäre das so erst mal in Ordnung. Ich kann halt wärenddessen nichts anderes machen.

    Trotzdem wäre es sehr schön, wenn noch jemand eine Idee hätte.
    Ich würde mich sehr freuen, da ich fast schon am verzweifeln bin.
    Kaum funktioniert mal die Elektronik bekomme ich kein ordentliches Programm hin!!

    Also ganz habe ich die Hoffnung noch nicht aufgegeben!!

    jon

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Folgende Lösungansätze:
    [list=1][*]du missbraucht einen Timer als Zähler.
    Im Klartext: der Zähler zählt immer dann eins weiter, wenn er eine fallende oder steigende Flanke entdeckt. (Infos dazu im Datenblatt -> Timer -> Clock Sources)
    Die bisherigen Umdrehungen stehen damit im TCNT? Register. Vom Prinzip her musst du dort nur noch den Überlauf abfangen und kannst die Umdrehungen überall wenn du sie gerade brauchst abrufen.
    [*]Du nutzt einen Interupt um die Umdrehungen zu zählen.
    Prinzip: INT0 oder INT 1 auf eine fallende oder steigende Flanke konfigurieren und in der ISR die Umdrehungen um 1 erhöhen.
    Auch hier kannst du die aktuellen Umdrehungen überall abrufen.

    Der Vorteil beider Lösungen:
    Sie laufen so nebenbei und kosten nur ein minimum an Rechenzeit.

    Ich hoffe dir damit geholfen zu haben.

    Grüße,

    da Hanni.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Danke für die Antwort!!
    Von den beiden Lösungen gefällt mir am besten die zweite.
    Nur irgendwie kann ich mir das als Programm nicht so wirklich vorstellen. Vor allem habe ich das mit dem Programmieren der ISR nicht so ganz verstanden (da habe ich im Internet nur was Theoretischen gefunden).
    Von daher die Frage:
    Hast du einen Quellcode oder so??
    Wäre auf jedenfall sehr schön.

    jon

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Naja, nen Quellcode könnt ich sicherlich schreiben, nur wäre der dann nicht in Basic .... (sondern in Assembler).
    Daher dürfte dir das eher weniger etwas bringen.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Da kannst du ja wohl nichts machen. Schadeeee!
    Machtnichts.
    Aber vielleicht kann jemand mir einen Quellqode oder so zu Verfügung stellen. Ich bin mir ziemlich sicher, dass ich das verstehe, wenn ich es mal als Programm sehen würde.
    Wie gesagt, wäre schön.

    jon

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Ich habe mitlerweile eine Lösung gefunfen.
    Ich habe einen Timer missbraucht und dann aus einem Buch ein Programm so umgeschrieben, das es jetzt endlich geht.
    Danke für die Hilfe Hanni, sonst wäre ich nicht auf diese Idee gekommen.

    jon

Berechtigungen

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