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.
da wird mir aber immernur 0 angezeigt.
kann ich den dafür eigentlich verwenden?
braucht ihr bilder von dem encoder?
beste grüße matze
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.
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
Post a Comment