Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


K
K
 
Zeile 1: Zeile 1:
Wie einfach man mit einem Drehgeber die Drehzahl messen kann zeigt diese Schaltung /dieser Quelltext. Für dieses Beispiel wurde ein Drehgeber GP1A030 mit Codescheibe verwendet. Es könnte aber genauso ein GP1A038 oder ein ähnlicher Sensor sein. In diesem Demo wird nicht die Drehrichtung ausgewertet, obwohl es mit diesen Sensor ebenfalls möglich wäre.   
+
Wie einfach man mit einem Drehgeber die Drehzahl messen kann zeigt diese Schaltung /dieser Quelltext. Für dieses Beispiel wurde ein Drehgeber GP1A030 mit Codescheibe verwendet. Es könnte aber genauso ein GP1A038 oder ein ähnlicher Sensor sein. In diesem Demo wird nicht die Drehrichtung ausgewertet, obwohl es mit diesem Sensor ebenfalls möglich wäre.   
  
  
[[Bild:drehgeber_an_rncontrol.gif|center|framed|Beispielschaltung wenn man lediglich die Drehzahl ohne Drehrichtung auswerten möchte. Als Widerstand hat sich 330 Ohm als gut erwiesen.]]
+
[[Bild:drehgeber_an_rncontrol.gif|center|framed|Beispielschaltung, wenn man lediglich die Drehzahl ohne Drehrichtung auswerten möchte. Als Widerstand hat sich 330 Ohm als gut erwiesen.]]
  
  
Zeile 11: Zeile 11:
 
'für
 
'für
 
'RoboterNetz Board RN-CONTROL ab Version 1.1
 
'RoboterNetz Board RN-CONTROL ab Version 1.1
'Das neue preiswerte Controllerboard zum experimentieren
+
'Das neue preiswerte Controllerboard zum Experimentieren
  
 
' Achtung:
 
' Achtung:
Zeile 18: Zeile 18:
 
'
 
'
 
'Aufgabe:
 
'Aufgabe:
' Dieses Testprogramm demonstriert wie man mit Drehgeber
+
' Dieses Testprogramm demonstriert wie man mit Drehgebern
 
' die Umdrehungszahl von Motoren anzeigen kann
 
' die Umdrehungszahl von Motoren anzeigen kann
 
' Als Drehgeber wird ein Sharp GP1A030 mit Codescheibe
 
' Als Drehgeber wird ein Sharp GP1A030 mit Codescheibe
Zeile 24: Zeile 24:
 
' In diesem Demo wird nicht die Drehrichtung ausgewertet, daher
 
' In diesem Demo wird nicht die Drehrichtung ausgewertet, daher
 
' wird nur ein Interrupt Port (INT0) an den Sensorausgang (VOA)
 
' wird nur ein Interrupt Port (INT0) an den Sensorausgang (VOA)
' angeschlossen. Zudem noch +5V, GND und +5V wüber 330 Ohm
+
' angeschlossen. Zudem noch +5V, GND und +5V über 330 Ohm
 
' Widerstand an Anode des Sensors. Also einfachste Beschaltung.
 
' Widerstand an Anode des Sensors. Also einfachste Beschaltung.
  
' Wenn man nun Programm startet wird jede Sekunde die Drehzahl
+
' Wenn man das Programm startet wird jede Sekunde die Drehzahl
 
' ermittelt und alle 3 Sekunden über RS232 auf einem
 
' ermittelt und alle 3 Sekunden über RS232 auf einem
 
' Terminalprogramm (oder KN-KeyLCD) ausgegeben.
 
' Terminalprogramm (oder KN-KeyLCD) ausgegeben.
  
' Das Programm eigent sich somit zum Messen von Drehzahlen als
+
' Das Programm eignet sich somit zum Messen von Drehzahlen als  
' als auch zur Überprüfung der Drehgeberfunktion. Es läßt sich
+
' auch zur Überprüfung der Drehgeberfunktion. Es läßt sich
' sehr einfach zu Wegstrecken Auswertung ausbauen. Statt
+
' sehr einfach zu Wegstrecken-Auswertung ausbauen. Statt
' an einem Interrupt könnte man Sensor auch an einen Timereingang
+
' an einem Interrupt könnte man den Sensor auch an einen Timereingang
 
' anschließen, jedoch wird dies hier im Programm nicht berücksichtigt.
 
' anschließen, jedoch wird dies hier im Programm nicht berücksichtigt.
  

Aktuelle Version vom 4. Januar 2013, 19:40 Uhr

Wie einfach man mit einem Drehgeber die Drehzahl messen kann zeigt diese Schaltung /dieser Quelltext. Für dieses Beispiel wurde ein Drehgeber GP1A030 mit Codescheibe verwendet. Es könnte aber genauso ein GP1A038 oder ein ähnlicher Sensor sein. In diesem Demo wird nicht die Drehrichtung ausgewertet, obwohl es mit diesem Sensor ebenfalls möglich wäre.


Beispielschaltung, wenn man lediglich die Drehzahl ohne Drehrichtung auswerten möchte. Als Widerstand hat sich 330 Ohm als gut erwiesen.



'###################################################
'rncontrol_drehzahl.BAS
'für
'RoboterNetz Board RN-CONTROL ab Version 1.1
'Das neue preiswerte Controllerboard zum Experimentieren

' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.7.8 getestet

'
'Aufgabe:
' Dieses Testprogramm demonstriert wie man mit Drehgebern
' die Umdrehungszahl von Motoren anzeigen kann
' Als Drehgeber wird ein Sharp GP1A030 mit Codescheibe
' verwendet (siehe http://www.robotikhardware.de Rubrik Sensoren)
' In diesem Demo wird nicht die Drehrichtung ausgewertet, daher
' wird nur ein Interrupt Port (INT0) an den Sensorausgang (VOA)
' angeschlossen. Zudem noch +5V, GND und +5V über 330 Ohm
' Widerstand an Anode des Sensors. Also einfachste Beschaltung.

' Wenn man das Programm startet wird jede Sekunde die Drehzahl
' ermittelt und alle 3 Sekunden über RS232 auf einem
' Terminalprogramm (oder KN-KeyLCD) ausgegeben.

' Das Programm eignet sich somit zum Messen von Drehzahlen als 
' auch zur Überprüfung der Drehgeberfunktion. Es läßt sich
' sehr einfach zu Wegstrecken-Auswertung ausbauen. Statt
' an einem Interrupt könnte man den Sensor auch an einen Timereingang
' anschließen, jedoch wird dies hier im Programm nicht berücksichtigt.



'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'#######################################################



$regfile = "m32def.dat"
' bei Mega 16 $regfile = "m16def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32

$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600



Config Int0 = Falling

Config Timer1 = Timer, Prescale = 256
Const Timervorgabe = 3036
Const Markierungenproscheibe = 120

Dim Zaehlerirq0 As Long
Dim Impulseprosekunde As Long
Dim Impulseprominute As Long
Dim Umdrehungenprominute As Integer

Print
Print "* RN-CONTROL 1.4 *"
Print "Drehzahl Messung"; ""



Zaehlerirq0 = 0
On Int0 Irq0
Enable Int0

On Timer1 Timer_irq
Enable Timer1

Enable Interrupts


Do
   Print
   Print "Impulse Sek: "; Impulseprosekunde
   Impulseprominute = Impulseprosekunde * 60
   Umdrehungenprominute = Impulseprominute / Markierungenproscheibe
   Print "Umdreh. Min: "; Umdrehungenprominute
   Wait 3
Loop

End




'Pro Impuls (Markierung auf Scheibe) ein Aufruf
Irq0:
 Incr Zaehlerirq0
Return


'Pro Sekunde ein Aufruf
Timer_irq:
  Timer1 = Timervorgabe
  Impulseprosekunde = Zaehlerirq0
  Zaehlerirq0 = 0
  Return

Siehe auch