-         

Ergebnis 1 bis 7 von 7

Thema: C167 und Verarbeitung von TTL-Rechtecksignale

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    13.09.2006
    Beiträge
    8

    C167 und Verarbeitung von TTL-Rechtecksignale

    Anzeige

    Hallo an alle,

    kann mir jemand helfen. Ich habe einen magnetischen Inkrementalgeber der mir Rechtecksignale A /A B /B ausgibt. Kann ich diese mit meinem c167 mikrocontroller auslesen?

    Danke

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.12.2004
    Beiträge
    89
    kommt ganz darauf an wie schnell sich der inkrementalgeber maximal drehen soll. unter der rubrik ac characteristics müsstest du diese daten dann nachlesen. also wie schnell sich die signale ändern dürfen damit der c167 diese auch mitbekommt...

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    13.09.2006
    Beiträge
    8
    Aber kann er grundsätzlich das. Und wo könnte ich nachlesen wie solche C-Programme ausschauen?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.12.2004
    Beiträge
    89
    ich kann dir keine allgemeine antwort auf die frage geben, es ist auch davon anhängig um welche spannungspegel es sich bei dem inkrementalgeber handelt... und dann müsste ich noch die datenblätter vom inkrmentalgeber und vom C167 lesen und dann müsste ich mir noch gedanken darüber machen wo der inkrementalgeber eingesetzt werden soll. also wie schnell er sich drehen kann/darf. der inkrementalgeber hat selbst eine maximale grenze.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    218
    Hallo Naeel

    zunächst musst du die Pegel klären. Dann hat ein uC keine Schnittstelle für diese Art Sensor. Aber das ist kein Problem. Du brauchst grundsätzlich ein A- und ein B-Signal. (Wenn du nur die Drehzahl willst, also kein Richtungssignal reicht dir sogar das A oder das B-Signal.) Du schliesst eines der Signale an einen digitalen Port des C167, der Interrupt-fähig ist. In der ISR frägst du den jeweils anderen Pegel ab, Das sagt dir die Drehrichtung. Der Rest, also was du überhaupt brauchst, wie Drehgeschwindigkeit oder Position ist alles dein Problem, das musst du entsprechend programmieren.

    Gerhard

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    13.09.2006
    Beiträge
    8
    Vielen Dank Jaipur und Gerhard

    Also ich brauche schon eine Richtungsrekennung. Aber wieso hat man eigentlich A und dann noch /A invertiert und bei B genauso. Und welche Vorteile/Nachteile bringt mir ein sin/cos Encoder?Die Pegel sind Standard TTL 5V.

    Vielen Dank nochmal

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Softwaremässig könnte es so ähnlich aussehen:

    Code:
    #define DREH_INVALID -128
    
    char drehgeber_step (unsigned char a0, unsigned char a1)
    {
    	static const char drehgeber_trainsitions[] = 
    	{
    		 0,                       1,           -1, DREH_INVALID,
    		-1,                       0, DREH_INVALID,            1, 
    		 1,            DREH_INVALID,            0,           -1, 
    		 DREH_INVALID,           -1,            1,            0
    	};
    	
    	static unsigned char a_alt;
    	
    	unsigned char a = a_alt;
    	
    	if (a0)	a |= (1 << 2);
    	if (a1)	a |= (1 << 3);
    	
    	a_alt = a >> 2;
    	
    	return drehgeber_trainsitions[a];
    }
    Das ist so simpel, daß ich mit den Kommentar spare
    In die Funktion kommt man rein mit den beiden Werten für A (zB a0) und B (zB a1). Wenn du A und B andersrum zuordnest, bekommst du die Drehrichtung genau andersrum.

    Zu Anfang des Programms musst du die Routine einmal mit den Portwerten aufrufen, um a_alt richtig zu initialisieren (den return-Wert wirfst du weg).

    Entweder du machst das in einer ISR oder per Poll.

    Die Code ist Standard-C und nicht speziell für C16x.

    Der C16x hat doch nen Quadratur-Decoder...oder war das TriCore?
    Disclaimer: none. Sue me.

Berechtigungen

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