INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Pins am Drehregler (Rotary Encoder)
28.02.2015, 13:19
Beitrag #1
Pins am Drehregler (Rotary Encoder)
Hallo,

ich habe 10 Stück dieser Drehregler bestellt und kein Datenblatt dazu, gibt es ein irgendiwe eine Standard-Pinbelegung?

Wie kann ich es ohne großen Schaden für Arduino oder Drehregler herausfinden?

Meine Idee ist diese:

[Bild: d61797-1425126238.png]

Danke für Eure Hilfe!

Gruß Alex
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.02.2015, 14:25
Beitrag #2
RE: Pins am Drehregler (Rotary Encoder)
Hi,
das ist ein Potentiometer.
Pins a und b kommen jeweils an Potential (Spannung), an C wird entsprechend abgegriffen.
Potentiometer gesammt Widerstand messen.
Tja und entsprechend an Arduino legen. INPUT (Datenblatt) 20-40 mA
Tschau
Gerd

Smile Schön dabei zu sein Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.02.2015, 19:03
Beitrag #3
RE: Pins am Drehregler (Rotary Encoder)
Hallo Gerd,

Nein es ist schon ein Drehencoder, kein Poti.

Drehencoder

Aber ich habe bei AMAZON schon gefragt und von anderen Kunden eine Antwort bekommen.

Dankeschön!

Gruss Alex
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.02.2015, 19:17 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2015 19:19 von Foto-Ralf.)
Beitrag #4
RE: Pins am Drehregler (Rotary Encoder)
Hi,

normalerweise ist B der Mittelkontakt und A und C sind die Ausgänge.

Schliesse mal Masse (GND) auf B an und von A und C jeweils eine LED mit 300 - 560 Ohm Vorwiderstand gegen VCC. Dann siehst Du die LEDs blinken. Üblicherweise sind es 4 verschiedene Zustände je Raste.

Wenn das alles so ist wie ich es beschrieben habe kannst Du statt der LED und dem Vorwiderstand direkt auf den Arduino gehen (Pullupwiderstand einschalten nicht vergessen).

Da bietet dich die Interruptverarbeitung dafür an.
Eine Variante wäre jeden der beiden Ausgänge auf einen Interrupteingang zu schalten. Programmcode kannst Du dafür aus meinem anderen Threat zum Thema Rotary Encoder entnehmen bei dem Du ja schon mitgeschrieben hast.

Eine weitere Möglichkeit wäre nur einen Interrupt-Eingang zu verwenden und damit einen zweiten für den Pushbotton (wenn dein Drehgeber einen hat, das wären dann die beiden Pins gegenüber) frei zu haben. Edit: Wenn's der aus dem Link ist, dann hat er einen Taster - wenn auch Amazon was von Schlüsselschalter schreibt ;-) ...
Ein Programmbeispiel gibt's in dem Threat "EOS Trigger Box" von Wampo. Allerdings habe ich diese Variante mit meinem (optisch gleich aussehenden Drehgeber wie deiner) noch nicht an's laufen gebracht :-( . Der Menüeintrag scrollt nur in eine Richtung und der Pushbutton-Eingang löst aus obwohl ich gar nicht gedrückt habe.

Have Fun
Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.03.2015, 10:23
Beitrag #5
RE: Pins am Drehregler (Rotary Encoder)
Hallo Ralf,

mhhhhm laut den anderen Käufern ist, ist A und B jeweils ein Kanal 90° versetzt wegen der Richtung ermitteln. Und C ist die Zuleitung C=Common.
Macht in meinen Augen auch sinn.
Vielleicht ist das der Fehler bei Dir, warum es mit der "EOS Trigger Box" bei dir nicht geht?

Leider bin ich noch nicht zum testen gekommen, ich hoffe in den nächsten Tagen kann ich die Sache mal angehen.

Die Interrupt Eingänge für A und B kann ich leider nicht nutzen, die brauche ich für den Glasmaßstab, da kommen mehr und schneller die Daten rein, die sofort verarbeitet werden sollen.
(Längenmessung und aller 5µm kommt ein High)
Ich werde den Drehregler erst einmal an normalen digitalen Eingängen testen.
Denn nur für 2 zusätzliche Eingänge einen Mega verbraten finde ich mit Kanonen auf Spatzen geschossen und nur in der letzten Not eine Lösung ;-)

Ich halte Dich auf dem laufenden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.03.2015, 11:09
Beitrag #6
RE: Pins am Drehregler (Rotary Encoder)
(02.03.2015 10:23)facebraker schrieb:  Die Interrupt Eingänge für A und B kann ich leider nicht nutzen, die brauche ich für den Glasmaßstab, da kommen mehr und schneller die Daten rein, die sofort verarbeitet werden sollen.
Es gibt da noch den "Pin Change Interrupt". Siehe z.B. hier: http://playground.arduino.cc/Main/PinChangeInterrupt. Der geht auf allen Pins.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.03.2015, 11:44
Beitrag #7
RE: Pins am Drehregler (Rotary Encoder)
Hallo Thorsten,
genialer Tipp, vielen Dank!
Wie gesagt, ich hoffe ich schaffe es die Tage eine Bsp. Schaltung aufzubauen und dann mache ich mich an das Programmieren.

Gruß Alex!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.03.2015, 13:31 (Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2015 13:34 von HaWe.)
Beitrag #8
RE: Pins am Drehregler (Rotary Encoder)
hallo,
um dich vollends zu verwirren: ich habe es so gemacht (für Lego-Encoder, die aber dem gängigen QE-Standard entsprechen):

(die Encoder-Auflösung kann hier zwischen 1/1, 1/2 oder 1/4 angepasst werden, ausgelesen wird mit rund 1 kHz Takt. Auch das kannst du aber anpassen, ich selber verwende mit einem anderen Teiler inzwischen 250µs)

Code:
/************************************************************
*
* Demo-Programm zur Auswertung eines händisch betriebenen
* Drehencoders (Quadraturencoder) mit dem Arduino im
* Timer-Interrupt mit einer Abfragefrequenz von rd. 1kHz
*
* Kann von jederman frei verwendet werden, aber bitte den
* Hinweis: "Entnommen aus http://www.meinDUINO.de" einfügen
*
************************************************************/

// An die Pins 2 und 3 ist der Encoder angeschlossen
#define encoderA 2
#define encoderB 3

// Globale Variablen zur Auswertung in der
// Interrupt-Service-Routine (ISR)
volatile int8_t altAB = 0;
volatile int encoderWert = 0;

// Die beiden Schritt-Tabellen für volle oder 1/4-Auflösung
// 1/1 Auflösung
//int8_t schrittTab[16] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};

// 1/2 Auflösung ergibt bei Lego-Motoren 1 tick pro Grad (standard wie bei Lego)
int8_t schrittTab[16] = {0, 0,0,0,1,0,0,-1, 0,0,0,1,0,0,-1,0};


// 1/4 Auflösung
//int8_t schrittTab[16] = {0,0,0,0,0,0,0,-1,0,0,0,0,0,1,0,0};


/*************************************************************
*
* Interrupt Service Routine
*
* Wird aufgerufen, wenn der entsprechende Interrupt
* ausgelöst wird
*
*************************************************************/
ISR(TIMER1_COMPA_vect) {
  altAB <<= 2;
  altAB &= B00001100;
  altAB |= (digitalRead(encoderA) << 1) | digitalRead(encoderB);
  encoderWert += schrittTab[altAB];
}


/*************************************************************
*
* void setup()
*
* Wird einmal beim Programmstart ausgeführt
*
*************************************************************/
void setup() {
  pinMode(encoderA, INPUT);
  pinMode(encoderB, INPUT);

  noInterrupts(); // Jetzt keine Interrupts
  TIMSK1 |= (1<<OCIE1A);  // Timer 1 Output Compare A Match Interrupt Enable

  TCCR1A = 0; // "Normaler" Modus

  // WGM12: CTC-Modus einschalten (Clear Timer on Compare match)
  //        Stimmen OCR1A und Timer überein, wird der Interrupt
  //        ausgelöst
  // Bit CS12 und CS10 setzen = Vorteiler: 1024
  TCCR1B = (1<<WGM12) | (1<<CS12) | (1<<CS10);

  // Frequenz = 16000000 / 1024 / 15 = rd. 1kHz Abtastfrequenz;
  // Überlauf bei 14, weil die Zählung bei 0 beginnt
  OCR1A = 14;

  interrupts(); // Interrupts wieder erlauben

  Serial.begin(115200);
}


/*************************************************************
*
* void loop()
*
* Wird immer wieder durchlaufen
*
*************************************************************/
void loop() {

  while(true) {
    Serial.println(encoderWert);
    delay(100);
  }
}

http://www.mindstormsforum.de/viewtopic....309#p65086
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Uno gehen zwei digital Pins nicht edlosijagen 15 595 07.07.2016 19:22
Letzter Beitrag: Bitklopfer
  mehr PWM Pins WIMunios 8 1.121 20.03.2016 00:19
Letzter Beitrag: hotsystems
  Welche Pins für Software Serial BennIY 1 506 27.01.2016 23:02
Letzter Beitrag: hotsystems
  Mit Rotary Encoder Tastatur simulieren? noxx 9 1.484 17.11.2015 17:18
Letzter Beitrag: Binatone
  Wie viele PINs werden für LCD 2x16 benötigt? torsten_156 4 1.341 05.02.2015 09:11
Letzter Beitrag: xuino
  Belastbarkeit des +5Volt Pins Kyrill 2 1.259 16.01.2015 06:33
Letzter Beitrag: Kyrill
  I²C Pins "verlegen" Marcel5291 2 1.225 18.11.2014 15:18
Letzter Beitrag: rkuehle
  Frage zu motorshield und PINs torsten_156 9 4.918 27.10.2014 15:53
Letzter Beitrag: torsten_156
  Arduino Due: pins mit 5V ?? pins 22-24, 50-53? HaWe 1 1.894 27.10.2014 13:19
Letzter Beitrag: Bitklopfer
  LCD Shield & 4Kanal Relais Shield gleiche Pins hannes77 3 1.676 04.06.2014 00:25
Letzter Beitrag: ArduTux

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste