pro bot 128 mit Raupenchassis
Hallo !
Ich bin neu hier und wollte mich und mein pro bot vorstellen.
Ich habe den pro bot auf Raupenfahrwerk umgerüstet um das geradeauslauf zu verbessern und um zu verhindern dass die Räder hängen bleiben. So kann ich beim programieren sparen dass der pro bot beim hängenbleiben erst rückwärts fahren soll und danach die Drehung. Ich muss sagen die umrüstung hat sich gelohnt, das Ding marschiert über alles hinweg, Tepichkannten und kleinere Gegenstände sind kein tema mehr. Und auch an der stelle drehen funktioniert besser da die Spurweite jetzt schmaler ist. Ich habe ein kleines video bei youtube hochgeladen was ich auf die schnelle gemacht habe:
http://www.youtube.com/watch?v=_jc-rOv6UEo
Der Chassis ist von Pololu Zumo, wo ich schon dabei war habe ich auch den Radencoder von pololu bestellt da es sich abot und auch wäre es kompliziert geworden den von der pro bot die weiterhin zu nutzen, hier der link dazu:
http://www.pololu.com/catalog/product/1217
Damit fängt mein problem auch an, ich bin Fahrzeuglackierer also kein Elektriker und habe den pro bot gekauft um hobbymässig programieren zu lernen.
Nun ich bin noch recht am anfang in sachen programieren, meine kenntnisse bestehen darin codes zu lesen, zum teil zu verstehen wie alles funktioniert und demos zu manipulieren um die Auswirkung nachvollziehen. Lange Rede kurzer Sinn ich muss nun irgendwie die Libery so ändern dass ich die pololu encoder benutzen kann. Das grösste Problem sehe ich daran dass der encoder zwei ausgänge hat auf eine seite, A und B was mich verwirrt. Ich habe den rechten geber Port A auf X3_9 also PA0 und Port B auf X3_10 PA1 angeschlossen. Die linke Seite auf X3_11 PA2 und X3_12 PA3.
Ich habe die Standard Libery angeschaut nur ich weiss nicht wie ich aus zwei signalen eins mache pro Seite. Ich hoffe das hier welche geben wird die den encoder benutzen oder welche die verstehen was ich meine. Für jede hilfe wäre ich dankbar. Dazu kommt das ich das Conrad IDE benutze in Pseudo Basic und von der rest keine ahnung habe.
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo leute!
Ich versuche jetzt seid ein paar Tagen mein encoder zum laufen zu bringen wobei ich eine Hardware seitige lösung angestrebt habe da ich noch zu wenig ahnung habe vom programmieren. ich habe T3 und T4 sowie D2 und D3 entfernt sowie die widerstände R6 und R7.ich habe dazu den Original schaltplan als Anhang hochgeladen falls es jemanden hilft. danach vcc und gnd ganz normal auf masse und 5v angeschlossen. Output habe ich auf x_9 und x_10 also an die pins wo vorher T3 und T4 waren. Nun ich habe versuche unternommen am Testprogramm werte zu erhalten aber leider tut sich nix.
'************************************************* ******************************
'Projektname: Radencoder_Check.cprj
'Benötigte Libs´s: IntFunc_lib.cc
'Routinen: RadencoderCheck.cbas
'Autor: UlliS
'Datum: 26.03.2008
'
'Funktion: Radencoder Test
' Laden Sie das Programm in den Roboter und starten Sie
' dieses mit der Taste F10 oder den kleinen Blitz in der
' Menüzeile. Schieben Sie den Robby auf einer glatten sauberen
' Oberfläche (Tisch) ein paar cm nach vorne. Die Zählimpule
' im Ausgabefenster, müssen sich gleichmässig erhöhen.
' Sollte das nicht der Fall sein, müssen Sie die Encoder
' (siehe Anleitung) leicht nachjustieren.
' Wichtig: Die Räder müssen guten Kontakt zum Boden besitzen
' und es muss gleichmäßig gerade nach vorne geschoben werden!
'
'************************************************* ******************************
#define Encoder_IR 8
Dim Text(40) As Char
Dim Encoder_left As Integer
Dim Encoder_right As Integer
'Mainprogramm
Sub main()
SPI_Disable() 'SPI "OFF"
Port_DataDirBit(Encoder_IR,1) 'Port For IR LED = Output
Port_WriteBit(Encoder_IR,PORT_OFF) 'IR Diode PORT_OFF = IR "Ein"
'Radencoder Interrupts
Irq_SetVect(INT_6,Ext_ISR_R) 'Interrupt Service Routine right encoder
Irq_SetVect(INT_7,Ext_ISR_L) 'Interrupt Service Routine left encoder
Ext_IntEnable(6,2) 'Interrupt right falling edge
Ext_IntEnable(7,2) 'Interrupt left falling edge
Do While True
Msg_WriteInt(Encoder_left)
Text = " left"
Msg_WriteText(Text)
Msg_WriteChar(13)
Msg_WriteInt(Encoder_right)
Text = " right"
Msg_WriteText(Text)
Msg_WriteChar(10)
Msg_WriteChar(13)
AbsDelay(100)
End While
End Sub
'Interrupt Service Routine "Encoder right"
Sub Ext_ISR_R()
Dim irqreq As Integer
irqreq = Irq_GetCount(INT_6) 'Interrupt Request Counter = 0
Encoder_right = Encoder_right + 1
End Sub
'Interrupt Service Routine "Encoder left"
Sub Ext_ISR_L()
Dim irqreq As Integer
irqreq = Irq_GetCount(INT_7) 'Interrupt Request Counter = 0
Encoder_left = Encoder_left + 1
End Sub
ich komme nicht weiter da ich nicht weiss ob alles richtig verlötet ist oder nicht und habe zweifel das das alles so ok ist. ich habe nach programme gesucht die ähnlich funktionieren also nicht wie bei der led steuerung blinken lassen, sondern andersrum. ich habe probleme mit den befehlen
irqreq = Irq_GetCount(INT_6)
Irq_SetVect(INT_6,Ext_ISR_R)
und finde auch nichts wo das erklärt wird da das ein conrad basic ist. ich hoffe ich bekomme einen tritt in die Richtige Richtung auch gerne anfänger Tutorial , um verständnis zu bekommen wie das ganze funktioniert . Wie gesagt mit den led-s habe ich schon kapiert , da bekommt man aber einen feedback ob man alles richtig gemacht hat oder nicht . Hier ist es genau anders rum , Signal geht rein und ich habe keine ahnung ob hardware mässig was nicht stimmt oder die programmierung falsch ist. Danke schon mal im voraus für die Hilfe.
ach ja nochwas, im Buch C-Control Pro selbstprogrammieren und in der Praksis einsetzen habe ich gelesen das der µC interrupt einggänge hat unter anderem x_9 und x_10 wo standardmässig auch die T3 und T4 waren. ich weiss auch nicht ob wichtig ist wieder die interruptpins zu benutzen da alle besetzt sind es sei den ich verwende die ports wo vorher die geber sassen.