Rotary Encoder

Hi,

bin auf der Suche nach einem Rotary Encoder für meine Cablecam, die per rc gesteuert wird, den ich mit aufs seil setzen kann und mir die Wegstrecke mit einem Rad abtastet.
Eingelesen werden soll es auf einem UNO, Micro, oder MKR1000, halt ein Teil, das mir ein paar Interrupt fähigen Eingänge zu Verfügung stellt.

2 Stück für Encoder oder?
1 Stück für PPW Signal Ausgang zum Motor Controller
3 Stück für PWM Eingang von RC-Empfänger

Kann mir jemand einen Empfehlen (evtl. mit passender Bibliothek ), der mir auf ein paar Zentimeter genau, die Auflösung gibt, damit ich auf 200m rauf und runterzählen kann.

Danke im Voraus für eine erste Hilfe.

Hallo,
jeder Sensor, Schalter und Poti der eine 360° Drehung kann, kann auch Länge ausmessen.
Kommt auf den ø Deiner Abtastscheibe an der Achse an.

“2 Stück für Encoder oder?
1 Stück für PPW Signal Ausgang zum Motor Controller
3 Stück für PWM Eingang von RC-Empfänger”

was soll das sein.
hier kanste anfangen zu üben
Nehme erst einmal einen ECHTEN Uno, damit kommt jeder klar.
Gruß und Spaß
Andreas

Danke Andreas,

aber da muss ich Dir wiedersprechen,
es ist eben nicht jeder Poti dafür geeignet, da der Poti ja so ca. 2000 U/min aushalten sollte.
Deshalb meine Frage, hat jemand einen Link für einen „Rotary Encoder“ mit entsprechenden Eigenschaften und der problemlos mit dem Board anzusprechen ist.

Micro oder MKRR1000 ist deswegen angedacht, da ich PPM Signale und dieEncoder Signale eben via Interrupt einlesen möchte. Wie eben auch in deinem Link beschrieben

Eben so:

//Pin belegung für UNO

#define encoder0PinA  2  
#define encoder0PinB  3

volatile unsigned int encoder0Pos = 0;

void setup() { 


 pinMode(encoder0PinA, INPUT); 
 digitalWrite(encoder0PinA, HIGH);       // turn on pull-up resistor
 pinMode(encoder0PinB, INPUT); 
 digitalWrite(encoder0PinB, HIGH);       // turn on pull-up resistor

 attachInterrupt(0, doEncoder, CHANGE);  // encoder pin on interrupt 0 - pin 2
 Serial.begin (9600);
 Serial.println("start");                // a personal quirk

} 

void loop(){
// do some stuff here - the joy of interrupts is that they take care of themselves
}

void doEncoder() {
 /* If pinA and pinB are both high or both low, it is spinning
  * forward. If they're different, it's going backward.
  *
  * For more information on speeding up this process, see
  * [Reference/PortManipulation], specifically the PIND register.
  */
 if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {
   encoder0Pos++;
 } else {
   encoder0Pos--;
 }

 Serial.println (encoder0Pos, DEC);
}

/* See this expanded function to get a better understanding of the
* meanings of the four possible (pinA, pinB) value pairs:
*/
void doEncoder_Expanded(){
 if (digitalRead(encoder0PinA) == HIGH) {   // found a low-to-high on channel A
   if (digitalRead(encoder0PinB) == LOW) {  // check channel B to see which way
                                            // encoder is turning
     encoder0Pos = encoder0Pos - 1;         // CCW
   } 
   else {
     encoder0Pos = encoder0Pos + 1;         // CW
   }
 }
 else                                        // found a high-to-low on channel A
 { 
   if (digitalRead(encoder0PinB) == LOW) {   // check channel B to see which way
                                             // encoder is turning  
     encoder0Pos = encoder0Pos + 1;          // CW
   } 
   else {
     encoder0Pos = encoder0Pos - 1;          // CCW
   }

 }
 Serial.println (encoder0Pos, DEC);          // debug - remember to comment out
                                             // before final program run
 // you don't want serial slowing down your program if not needed
}

Hallo,
bis zu dieser Information
“da der Poti ja so ca. 2000 U/min aushalten sollte.”
funktioniert der Poti einwandfrei, nach der Information nicht mehr.

Du solltest also erst einmal mit allen technischen Begebenheiten rüberkommen, bevor- Du Fragen nach
bestimmter Hardware stellst.

“2000 U/min”
Dafür brauchst Du Drehwinkelgeber aus der Industrie- fangen so bei 60€ an.
Sketch bitte in CodeTag´s (Editor </>)
Gruß und Spaß
Andreas