Pages: 1 2 [3]   Go Down
Author Topic: Magnetische Encoder auswerten  (Read 3562 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja das tue ich ja,
doch ich habe Probleme das LCD-Display anzusprechen, das zeigt in dieser Konfiguration nur einen schwarzen Balken statt zweiZeilen a 16 Zeichen. Irgend etwas ist dort im argen. Muss ich in der LCD-Bibliothek etwas umstellen?

Gruß
DrFlopp
Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1125
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

kann ich mit nicht so ganz erklären. Mit:
Code:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
deklarierst du ja die Pins an denen das LCD hängt ich hatte kein Problem mit "versetzten" der Pins ist vielleicht ein Dreher an bestimmten Pins vorhanden?
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Dani,
manchmal sitzt der Fehler am Lötkolben, ich hatte R/W nicht auf Masse sondern auf einen Pin gelegt. Jetzt funktioniert die Ausgabe des Encoders auf dem LCD. Ich wundere mich aber immer noch über den Unterschied zwischen "Wert++" und "++Wert". Ist irgend wie verblüffend.
Vielen Dank für Deine Hilfe
DrFlopp
Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1125
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mal ein kleiner Wink. Schaue mal in de REference und schon versteht man alles smiley-wink smiley-wink
http://arduino.cc/en/Reference/Increment

Mit Wert++ manipulierte ich einen Wert der main Loop also +1 bzw -1 wobei die Variable Wert sich nur jeweils um auf -1 bzw +1 ändert. Wenn du ++Wert schreibst wird jedemal die Variable Wert um 1 LSB incrementiert bei --Wert halt decrementiert (geiles DENGLISCH). Aufpassen bei z.b. bei int 32.767 +1=-32.768
« Last Edit: June 25, 2011, 04:54:48 am by volvodani » Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Zusammen,
dank Danis Hilfe habe ich jetzt einen recht schlanken Code, der die Encoderposition auf dem LCD ausgibt.
Mich interessiert jetzt aber auch die Geschwindigkeit.
Um das LCD nicht zu überfordern, sollte es nur ca. alle 5-10 sec. aktualisiert werden.  Gibt es dafür eine brauchbare standard Routine?

Gruß DrFlopp

* Encodertest.pde (1.2 KB - downloaded 4 times.)
Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1125
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ist doch nur einfache Mathematik.
sagen wir mal 100/Imp pro Umdrehung des Encoder

Du misst sagen wir mal wie viele Impulse pro 1/2Sekunde gezählt werden (z.B. Mittelwert von 2 Sekunden damit ausreißer nihct alles versauen).

U/min= Imp*2:50*60


         
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,
ich habe das mit dem Anhängen von Code noch immer nicht durch schaut. Ich hoffe Ihr könnt trotz dem meinem Code lesen. Ich stelle mir das ganze wie Folgt vor:

void loop()
{
  i=++i;
  if (i=10000)
  {
  lcd.setCursor(0, 0);
  lcd.print("Position");
  lcd.setCursor(0, 1);
  lcd.print(Wert);
 
  lcd.setCursor(10, 0);
  lcd.print("Speed");
  lcd.setCursor(10, 1);
  lcd.print(Velosity);
  i=0;
  }
  Velosity = ( v2-Wert)/(T2-T1);
  v2=Wert;
  T1=T2;
}

void CHAInt (){
  T2 = millis();
  int Aread=0;
  int Bread=0;
  Aread=digitalRead(A);
  Bread=digitalRead(B);
  if (Aread==HIGH && Bread==LOW||Aread==LOW && Bread==HIGH){
    ++Wert;
   
  }
  if (Aread==LOW && Bread==LOW ||Aread==HIGH&& Bread==HIGH){
    --Wert;
  }
}
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,
der Code funktioniert jetzt schon mal ganz ordentlich, doch ich habe jetzt das Problem, dass nach einigen Minuten Programm laufzeit das Display nur noch Balken und Fragezeichen aus gibt. Kann es ein Problem mit den Datentypen für die Zeit sein? Wie könnte man das geschickt umgehen?
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oh,
es schein ein Wackelkontakt in meiner fliegenden Verdratung zu sein
Logged

Pages: 1 2 [3]   Go Up
Jump to: