vielen dank radbruch
Druckbare Version
vielen dank radbruch
so lange wurde zu diesem projekt nichts mehr geschrieben lebt das projekt noch da ich es sehr interessant fand???
lg
martin
... würde mich auch interessieren.Zitat:
lebt das projekt noch
Wer hat das eigentlich nachgebaut?
Hat jemand ein gutes Programm dafür geschrieben?
Gruß Dirk
also ich habe es in allen Stufen nachgebaut ausser die letzte mit dem infrarot dies ist aber nicht so wichtig
Also nachgebaut habe ich das Projekt auch bis zur Infrarotstufe, aber um eigene Programme zu entwickeln zu können fehlen mir noch ein paar Jahre. Ich dachte auch das hier das Projekt richtig abgeht, und ich hier das eine oder andere mitnehmen kann, aber daraus wurde nichts. Jetzt liegt die Platine in der Schrottkiste und die CAM wird als Türspion benutzt.
Trainmen
ein bascom programm existiert noch nicht oder?
adc im freerun
timer (oder vlt ohne doch besser?)
und ausgabe über rs232 oder 8 leds für linien erkennung das man was sieht
Hallo
Die Umsetzung von C nach Bascom für Stufe 1 (nur Kamera und AVR) gibt's hier:
https://www.roboternetz.de/phpBB2/ze...=434274#434274
Wesentlich ist die Einstellung des ADC auf gewünschte Funktion: Freeruning mit Prescaler /2 und linksbündiges Ergebniss. Das ist allerdings schon etwas älter. Die neusten Erkenntnisse, die wir erst nach dem Start des Mitmachprojekts gewonnen haben, sind in dieser Umsetzung noch nicht berücksichtigt.
Ich habe bisher "nur" Stufe 1 nachgebaut. Das hatte ich zwar im Prinzip schon immer, neu ist jedoch der Aufbau auf der Experimentierplatine und der jumperbare Widerstand parallel zum Signal.
Gruß
mic
[Edit]
Nebenbei mal bemerkt: Die Hauptschleife der Liniensuche in der Bascom-Umsetzung ist ja echt knuffig:
Hier sieht mal wieder, wie einfach man auch mit Bascom sehr flotte Anwendungen ohne Assembler programmieren kann ;)Code:Do
' keine Störung erlauben
Disable Interrupts
' Warten auf Bildstart
Do
X = 0
While Adch > 30 ' sichtbare Zeile
Wend
While Adch < 50 ' Strahlrücklauf
Incr X
Wend
Loop Until X > 40 ' sync länger als 40
'warten auf 50ste Zeile
X = 50
While X > 0
While Adch > 30 ' sichtbare Zeile
Wend
While Adch < 50 ' Strahlrücklauf
Wend
Decr X
Wend
' Der Strich ist dunkler als 65. Wir zählen von links die Anzahl der
' Lesungen bis der Strich erkannt wird
X = 0
While Adch > 65
Incr X
Wend
' Linie gefunden
Enable Interrupts
' ermittelten Wert in Leerzeichen umrechnen und beides zum Terminal senden
Print X ;
S = Space(x)
Print S;
Print "***"
Waitms 200
Loop
[NocheinEdit]
Jetzt wäre eine Erweiterung auf eine Linienverfolgung nicht schwer, wenn man die Antriebe mit Bascom ansteuern kann. Da ich nicht weiß, ob es schon Bascom-Funktionen für den RP6 gibt, habe ich mal auf meiner Festplatte gesucht und ein undokumentiertes RP6-Programm (vom 21.8.08?) mit Motoransteuerung gefunden:
Das Programm kennt folgende Motorfunktionen:Code:$regfile = "M32def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 64
$baud = 38400
Declare Sub Rp6_vorwaerts()
Declare Sub Rp6_rueckwaerts()
Declare Sub Rp6_stop()
Declare Sub Rp6_links()
Declare Sub Rp6_rechts()
Dim Tccr1a_set As Byte
Dim Tccr1b_set As Byte
Dim Wert As Byte
Dim Zaehler As Word
Dim Zaehler1 As Word
Dim Test As Byte
Dim Address As Byte , Command As Byte
Config Rc5 = Pinb.2
Config Pinc.2 = Output
Config Pinc.3 = Output
Config Pinb.4 = Output
On Int0 Int0_int
On Int1 Int1_int
On Int2 Int2_int
Enable Interrupts
Config Int0 = Falling
Config Int1 = Falling
Enable Int0
Enable Int1
Enable Int2
Tccr1a_set = 0
Tccr1b_set = 0
Reset Tccr1a_set .wgm10
Set Tccr1a_set .wgm11
Set Tccr1a_set .com1a1
Set Tccr1a_set .com1b1
Tccr1a = Tccr1a Or Tccr1a_set
Reset Tccr1b_set .wgm12
Set Tccr1b_set .wgm13
Set Tccr1b_set .cs10
Tccr1b = Tccr1b Or Tccr1b_set
Icr1h = 0
Icr1l = 210
Set Portb.4
Wert = 0
Wait 1
Do
Waitms 500
Loop
Reset Portb.4
End
Int0_int:
Disable Int0
Enable Interrupts
Zaehler = Zaehler + 1
Enable Int0
Return
Int1_int:
Disable Int1
Enable Interrupts
Zaehler1 = Zaehler1 + 1
Enable Int1
Return
Int2_int:
Disable Int2
Enable Interrupts
Getrc5(address , Command)
If Command = 1 Then
Call Rp6_vorwaerts()
End If
If Command = 2 Then
Call Rp6_rueckwaerts()
End If
If Command = 3 Then
Call Rp6_links()
End If
If Command = 4 Then
Call Rp6_rechts()
End If
If Command = 0 Then
Call Rp6_stop()
End If
Enable Int2
Return
Sub Rp6_vorwaerts()
Call Rp6_stop()
Reset Portc.2
Reset Portc.3
For Wert = 0 To 100
Waitms 20
Pwm1a = Wert - 3
Pwm1b = Wert
Next
End Sub
Sub Rp6_rueckwaerts()
Call Rp6_stop()
Set Portc.2
Set Portc.3
For Wert = 0 To 100
Waitms 20
Pwm1a = Wert - 3
Pwm1b = Wert
Next
End Sub
Sub Rp6_links()
Call Rp6_stop()
Set Portc.2
Reset Portc.3
For Wert = 0 To 60
Waitms 20
Pwm1a = Wert
Pwm1b = Wert
Next
End Sub
Sub Rp6_rechts()
Call Rp6_stop()
Reset Portc.2
Set Portc.3
For Wert = 0 To 60
Waitms 20
Pwm1a = Wert
Pwm1b = Wert
Next
End Sub
Sub Rp6_stop()
For Test = Wert To 0 Step -1
Pwm1b = Test
Pwm1a = Test
Waitms 10
Next
Wert = 0
End Sub
Declare Sub Rp6_vorwaerts()
Declare Sub Rp6_rueckwaerts()
Declare Sub Rp6_stop()
Declare Sub Rp6_links()
Declare Sub Rp6_rechts()
Diese Funktionen kann man mit einer RC5-Fernbedienung auswählen. Woher das Programm stammt und ob es funktioniert kann ich leider nicht sagen.
Hallo
Die Umsetzung mit einem Pic im elektor-Septemberheft:
http://www.elektor.de/jahrgang/2010/....1468122.lynkx
Bild hier
(Bild von Elektor)
Das ist übrigens unsere 15€-SW-Kamera;)
Gruß
mic
mal ein anderer gedanken gang
es müsste doch auch möglich sein den hellsten punkt "rein" elektrisch zusuchen
immer den höchsten spannungswert speichern
videosignal( ohne sync signale) ---diode---kondensator---gnd
und dann die spannung vor und nach der diode mit einem komperator(meisten avrs haben ja ein comperator) vergleichen, wenn die spannung vor der diode größer ist soll ein interrupt ausgelöst werden.
die sache hat nur ein paar haken
die 0,7V flusspannung der diode also ist die spannung vor der diode fast immer größer
das eingangssignal muss relativ groß sein um den kondensator schnell genug laden zukönnen bei helligkeitsspitzen.
wie resetet man am einfachsten hinterher den speicher /kondensator
ich hoffe man kann verstehen was ich meine
@ Thomas$
so wie du das beschrieben hast. Suchst du nur mit der Kamera einen hellen Punkt kannst aber nicht bestimmen wo genau er sich befindet.
Wie beim Video Grabber müsste man in dem Koordinatensystem von 32x32 Bildpunkten die hellsten stellen suchen und somit zB. eine Led oder auch eine Kerze finden.
So kann man zB. heraus finden an der Stelle (10|13) ist ein heller Punkt und darauf entsprechend reagieren.
Was ich noch sehr interessant fände wäre am Display der M32 2 Spalten der Kamera anzuzeigen und auch nur 2 Farben also Weiß " " und Schwarz "#" und somit zum experimentieren die Situation vor der Kamera Live zu übertragen.
Leider kann ich es noch nicht selbst ausprobieren, da ich programmiertechnisch nicht der beste bin. Meine stärken liegen in der Elektronik.
Wenn jemand interesse daran hat würde ich gerne um Unterstützung bitten, was noch ganz lieb wäre wenn ihr den Programmtext gut kommentiert damit ich dort auch gut durchblicke ;)
Sonst: Ich habe jetzt neue Servos bestellt sodass ich jetzt auch eine Schwenkvorrichtung bauen kann.
@ radbruch
Habe nun auch die neue Eletor und werde mich mal ein wenig einlesen wie es dort vonsatten geht zwar ist esein PIC aber man kann bestimmt einige interessante Details finden.
Ich hoffe das dieses Projekt nicht untergeht, da ich es sehr interssant finde.
Einen schönen Sonntag noch
Martin