Magnetic Encoder auslesen


hallo alle zusammen.
ich habe hier ein problem. ich habe einen dc motor wo hinten dran ein magnetic encoder drauf ist.
jetzt hatte ich versucht ihn mit dem code auszulesen.
der motor hat 6 adern, wovon eine gelb (1) ist und der rest ist weiss.
die gelbe und die daneben (2) ist plus und minus vom motor.
denke das die andren 4 adern vom encoder sind.

code: [select]

/*
pay attention interrupt pin,please check microcontroller use.
http://arduino.cc/en/reference/attachinterrupt
*/
 
//the sample code driving 1 way motor encoder
const byte encoder0pina = 2;//a pin -> interrupt pin 2
const byte encoder0pinb = 4;//b pin -> digital pin 4
byte encoder0pinalast;
int duration;//the number of pulses
boolean direction;//the rotation direction
   
   
void setup()

  serial.begin(57600);//initialize serial port
  encoderinit();//initialize module
}
   
void loop()
{
  serial.print("pulse:");
  serial.println(duration);
  duration = 0;
  delay(100);
}
   
void encoderinit()
{
  direction = true;//default -> forward 
  pinmode(encoder0pinb,input); 
  attachinterrupt(0, wheelspeed, change);//int.0
}
   
void wheelspeed()
{
  int lstate = digitalread(encoder0pina);
  if((encoder0pinalast == low) && lstate==high)
  {
    int val = digitalread(encoder0pinb);
    if(val == low && direction)
    {
      direction = false; //reverse
    }
    else if(val == high && !direction)
    {
      direction = true;  //forward
    }
  }
  encoder0pinalast = lstate;
   
  if(!direction)  duration++;
  else  duration--;
}

da wird mir aber immernur 0 angezeigt.
kann ich den dafür eigentlich verwenden?
braucht ihr bilder von dem encoder?

beste grüße matze

der typ des encoders wäre nett.


der code wird generell falsch sein, aber interrupts sind für gar nicht nicht gut. das kann man locker mit pollen machen.

am besten geht es über einen timer-interrupt. dieser code ist für den fall dass das ein ganz normaler drehencoder ist mit zwei phasenverschobenen signalen:
http://www.meinduino.de/arduino-grundlagen/2014/09/20/drehencoder1.html
http://www.meinduino.de/arduino-grundlagen/2014/09/21/drehencoder2.html

teil 1 beschreibt die theorie und hat einen einfachen code wo in loop() abgefragt wird. in teil 2 ist dann der bessere code.


Arduino Forum > International > Deutsch (Moderator: uwefed) > Magnetic Encoder auslesen


arduino

Comments

Popular posts from this blog

invalid use of void expresion in FlexiTimer2 library

error: a function-definition is not allowed here before '{' token

LED Strip Code