PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Encoder Programm erklärung



Astro
30.07.2007, 21:50
Kann mir jemand eventuell neben dem Programm ein Paar Erklärungen zu den Werten ind den Commandos schreiben das währe sehr gut das könnte mir weuiter helfen Danke für jeden Tip

Ich müsste dieses umschreibn so das es den Weg nicht misst sondern den weg durch den Encoder messen(keine msleep Programmierung) kann das ich keine unangenehmen Abweichungen beheben kann

eventuell reichen auch Erklärungen zu den Werten und Den Commands

Controller ATMEL128

'################################################# ##
'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 Drehgeber
' 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 wüber 330 Ohm
' Widerstand an Anode des Sensors. Also einfachste Beschaltung.

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

' Das Programm eigent sich somit zum Messen von Drehzahlen als
' als auch zur Überprüfung der Drehgeberfunktion. Es läßt sich
' sehr einfach zu Wegstrecken Auswertung ausbauen. Statt
' an einem Interrupt könnte man Sensor auch an einen Timereingang
' anschließen, jedoch wird dies hie rim 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

MartinITM
30.07.2007, 22:00
Hio,

evtl. solltest du deinen Code unter Basic-Programmierung (Bascom-Compiler) posten und nicht unter C :)

LG
Martin