PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] ultraschall für cc1?



30.07.2004, 10:50
hallo
ich hab schon von allen seiten gehört, dass ultraschall und cc1 sich nicht so gut vertragen. mein problem ist es jedoch ultraschall verwenden zu müssen. die us-module von devantech kann man ja nur mithilfe einer zusätzlichen schalteung mit c-control verwenden. gibt es nirgends schon us-module, die scon ein echtes gleichspannungssignal ausgeben? das würde die sache schon erheblich vereinfachen.

als zweite möglich kommt mir noch ultraviolett-abstandshalter in frage, aber gibt es so etwas??? könnte man nicht bei den sharp-modeulen die ir-diode durch eine uv-diode austauschen???

mfg

Manf
30.07.2004, 11:19
als zweite möglich kommt mir noch ultraviolett-abstandshalter in frage, aber gibt es so etwas??? könnte man nicht bei den sharp-modeulen die ir-diode durch eine uv-diode austauschen???

Die Diode tauschen ist kein Problem
Das Problem ist wohl eher, daß der Empfänger ein IR Filter haben wird, das mit dem Empfänger als vergossene Linse zusammenhängt, allerdings
habe ich das noch nicht untersucht.
https://www.roboternetz.de/phpBB2/viewtopic.php?p=15807#15807

Matthias
30.07.2004, 12:37
Das (zimlich teure) I²C-US-Modul ist meines Erachtens das Besste und genauste.

Wieso willst du einen Sharp auf Ultraviolett umrüsten?

30.07.2004, 16:26
Hallo

"Wieso willst du einen Sharp auf Ultraviolett umrüsten?"

das problem ist,dass ich abstände messen will, aber dafür kein infrarot verwenden möchte/kann. daher muss ich irgendwelche anderen möglichkeiten finden.
über i²c wird für mich auch schwer, da schon ein kompass und ein pcf-erwiterungsbaustein dranhängen und da wirds mir dann zu kompliziert (assembler kann ich eben nur sehr schlecht).

dann bleiben mir nicht möglichkeiten übrig.

habt ihr vielleicht noh andere ideen?

gruß peter

Matthias
30.07.2004, 16:41
Hast du ein Bild von deinem Bot?Hört sich interessant an...

Die Schaltung, die man für das normale US-Modul basteln muss ist nicht sehr schwer, was anderes würde mir nicht einfallen...

zefram
30.07.2004, 16:53
Hilft das? http://www.robotmaker.de/srf04.html

30.07.2004, 19:00
ein bild gibt es noch nicht, bin erst an den ersten überlegungen.

@zefram:
da ich vier sensoren brauche(rechts, links, vorne, hinten) verbrauch ich dann 8ports an der cc1 und das ist mir zu viel!

02.08.2004, 12:05
naja, das geld ist eigentlich kein problem

@zefram
kann man hier

http://www.robotmaker.de/srf04.html

wenn man vier von diesen us-modulen und schaltungen verwendet, auch einfach für alle vier zusammen für "start" und "reset" jeweils nur einenport nehmen. Das dürfte doch auch gehenund man spart sich sechs ports ein.

BlueNature
04.08.2004, 06:25
Ich arbeite mit dem SRF08-Modul. Mit dem SRF04-Modul habe ich eine Routine geschrieben in Assembler die eben die gesamte C-Control lahmlegt während der Messung. Das SRF-08 Modul hat den Vorteil das es selbstständig arbeitet durch die integrierte Logik. Das Ganze kann man auch besser an den eigens programmierten I²C-Bus hängen. Ein alter Stand als Basis den ich aber nicht mehr nutze hab ich hier mal reinkopiert. Den hab ich mal geschrieben und hatte meines Wissens noch Fehler, aber die kann man ja selbst noch beheben ;)


Port1Data .EQU 1 ;Adresse Byteport 1 (Daten)
Port2Data .EQU 2 ;Adresse Byteport 2 (Daten)
Port1Dir .EQU 5 ;Adresse Byteport 1 (Richtung)
Port2Dir .EQU 6 ;Adresse Byteport 2 (Richtung)

SCL .EQU 0 ;Port 1 - I2C-Bus
SDA .EQU 1 ;Port 2 - I2C-Bus
Trigger .EQU 2 ;Port 3 - Ultraschall-Sonar
Echo .EQU 3 ;Port 4 - Ultraschall-Sonar
Motor3L .EQU 4 ;Port 13 - Motor 3 Linkslauf
Motor3R .EQU 5 ;Port 14 - Motor 3 Rechtslauf
Motor4L .EQU 6 ;Port 15 - Motor 4 Linkslauf
Motor4R .EQU 7 ;Port 16 - Motor 4 Rechtslauf

ii .EQU $A1 ;Byte[1]
I2C_Data .EQU $A2 ;Byte[2]
DistanzL .EQU $A5 ;Byte[5]
DistanzH .EQU $A6 ;Byte[6]
IstMotor3 .EQU $A7 ;Byte[7]
SollMotor3 .EQU $A8 ;Byte[8]
IstMotor4 .EQU $A9 ;Word[6]
SollMotor4 .EQU $AA ;Word[7]

Param0 .EQU $91 ;Übergabeparameter 0 (intern)
Param1 .EQU $92 ;Übergabeparameter 1 an Routine
Param2 .EQU $93 ;Übergabeparameter 2 an Routine
Param3 .EQU $94 ;Übergabeparameter 3 an Routine
Param4 .EQU $95 ;Übergabeparameter 4 an Routine

D0 .EQU 0 ;Bit 0
D7 .EQU 7 ;Bit 7

CCB_Get .EQU $0CB5 ;CCBASIC Get
CCB_PuWoSt .EQU $17B1 ;BeSy: Push Port auf Rechenstack

;----------------------------------------------------------------------------------------------
.ORG $0101
;----------------------------------------------------------------------------------------------

;-----------------------+----------------------------------------------------------------------
; Information zum Sonar | => @4MHz CPU-Takt : 1 Cycle = 0,5us
;-----------------------+ => eine Einheit : 18 Cycles = 9,0us
; => rechnerische Genauigkeit: 00,15cm = 1,5mm
;
; Distanz[Word] * 1716
; Formel: Entfernung[cm] = --------------------
; 2889 * fCPU[MHz]
;
; Distanz(cm) | Echo(ms) | Distanz(Word) | Kommentar:
; ------------+----------+---------------+-------------------------------
; 577,5 cm | 35,00 ms | 3889 | Kein Objekt erkannt
; 429,0 cm | 26,00 ms | 2889 | Maximale Entfernung (unsicher)
; 400,0 cm | 24,24 ms | 2694 | Im Messbereich (unsicher)
; 350,0 cm | 21,21 ms | 2357 | Im Messbereich (unsicher)
; 300,0 cm | 18,18 ms | 2020 | Maximale Entfernung (sicher)
; 250,0 cm | 15,15 ms | 1683 | Im Messbereich (sicher)
; 200,0 cm | 12,12 ms | 1349 | Im Messbereich (sicher)
; 165,0 cm | 10,00 ms | 1111 | Im Messbereich (sicher)
; 150,0 cm | 9,09 ms | 1010 | Im Messbereich (sicher)
; 100,0 cm | 6,06 ms | 673 | Im Messbereich (sicher)
; 50,0 cm | 3,03 ms | 337 | Im Messbereich (sicher)
; 16,5 cm | 1,00 ms | 111 | Im Messbereich (sicher)
; 10,0 cm | 0,61 ms | 67 | Im Messbereich (sicher)
; 3,0 cm | 0,18 ms | 20 | Im Messbereich (sicher)
; 1,6 cm | 0,10 ms | 11 | Im Messbereich (unsicher)
; 1,0 cm | 0,06 ms | 7 | Im Messbereich (unsicher)
; 0,1 cm | 0,01 ms | 1 | Minimale Entfernung (unsicher)
;
; Eventuell muß noch eine Konstante zum Messergebniss addiert oder subtrahiert werden um die
; Distanz abzugleichen. Dies erfolgt wiederum in 1,5mm-Schritten. Diese Daten sind Idealfall
;
;----------------------------------------------------------------------------------------------

Sonar: ; *** Auf eintreffendes Echo warten und messen ***
JSR GoPosMotoren ;GoSub GoPosMotoren
MesseEcho1: BRCLR Echo, Port1Data, MesseEcho1 ;If Not Echo Then GoTo Sonar
MesseEcho2: LDA #1 ;Distanz = Distanz + 1
ADD DistanzL
BCS MesseEcho3
NOP ;Zeitkorrektur um 1us
BRA MesseEcho4
MesseEcho3: INC DistanzH
MesseEcho4: BRCLR Echo, Port1Data, MesseEcho2 ;If Echo Then GoTo MesseEcho2
SonarEnde: RTS ;Zurück nach BASIC

BlueNature
04.08.2004, 06:30
naja, das geld ist eigentlich kein problem

@zefram
kann man hier

http://www.robotmaker.de/srf04.html

wenn man vier von diesen us-modulen und schaltungen verwendet, auch einfach für alle vier zusammen für "start" und "reset" jeweils nur einenport nehmen. Das dürfte doch auch gehenund man spart sich sechs ports ein.



Zum "Multiplexen" denke ich das es am einfachsten ist den Trigger auf einen OUT zu legen und die Echos entweder zu multiplexen auf einen IN oder eben vier IN's zu verwenden und per Software den entsprechenen SRF-04 auszuwerten. Ansonsten braucht man viel zu viel Platz für eine eigene Schaltung und es wäre wohl sinnvoller eine eigene Control dafür zu verwenden die nur diese Aufgabe übernimmt.

BlueNature
04.08.2004, 21:09
Ich arbeite mit dem SRF08-Modul. Mit dem SRF04-Modul habe ich eine Routine geschrieben in Assembler die eben die gesamte C-Control lahmlegt während der Messung. Das SRF-08 Modul hat den Vorteil das es selbstständig arbeitet durch die integrierte Logik. Das Ganze kann man auch besser an den eigens programmierten I²C-Bus hängen. Ein alter Stand als Basis den ich aber nicht mehr nutze hab ich hier mal reinkopiert. Den hab ich mal geschrieben und hatte meines Wissens noch Fehler, aber die kann man ja selbst noch beheben




Port1Data .EQU 1 ;Adresse Byteport 1 (Daten)
Port2Data .EQU 2 ;Adresse Byteport 2 (Daten)
Port1Dir .EQU 5 ;Adresse Byteport 1 (Richtung)
Port2Dir .EQU 6 ;Adresse Byteport 2 (Richtung)

SCL .EQU 0 ;Port 1 - I2C-Bus
SDA .EQU 1 ;Port 2 - I2C-Bus
Trigger .EQU 2 ;Port 3 - Ultraschall-Sonar
Echo .EQU 3 ;Port 4 - Ultraschall-Sonar

DistanzL .EQU $A5 ;Byte[5]
DistanzH .EQU $A6 ;Byte[6]

Param0 .EQU $91 ;Übergabeparameter 0 (intern)
Param1 .EQU $92 ;Übergabeparameter 1 an Routine

D0 .EQU 0 ;Bit 0
D7 .EQU 7 ;Bit 7

CCB_Get .EQU $0CB5 ;CCBASIC Get
CCB_PuWoSt .EQU $17B1 ;BeSy: Push Port auf Rechenstack

;----------------------------------------------------------------------------------------------
.ORG $0101
;----------------------------------------------------------------------------------------------

;-----------------------+----------------------------------------------------------------------
; Information zum Sonar | => @4MHz CPU-Takt : 1 Cycle = 0,5us
;-----------------------+ => eine Einheit : 18 Cycles = 9,0us
; => rechnerische Genauigkeit: 00,15cm = 1,5mm
;
; Distanz[Word] * 1716
; Formel: Entfernung[cm] = --------------------
; 2889 * fCPU[MHz]
;
; Distanz(cm) | Echo(ms) | Distanz(Word) | Kommentar:
; ------------+----------+---------------+-------------------------------
; 577,5 cm | 35,00 ms | 3889 | Kein Objekt erkannt
; 429,0 cm | 26,00 ms | 2889 | Maximale Entfernung (unsicher)
; 400,0 cm | 24,24 ms | 2694 | Im Messbereich (unsicher)
; 350,0 cm | 21,21 ms | 2357 | Im Messbereich (unsicher)
; 300,0 cm | 18,18 ms | 2020 | Maximale Entfernung (sicher)
; 250,0 cm | 15,15 ms | 1683 | Im Messbereich (sicher)
; 200,0 cm | 12,12 ms | 1349 | Im Messbereich (sicher)
; 165,0 cm | 10,00 ms | 1111 | Im Messbereich (sicher)
; 150,0 cm | 9,09 ms | 1010 | Im Messbereich (sicher)
; 100,0 cm | 6,06 ms | 673 | Im Messbereich (sicher)
; 50,0 cm | 3,03 ms | 337 | Im Messbereich (sicher)
; 16,5 cm | 1,00 ms | 111 | Im Messbereich (sicher)
; 10,0 cm | 0,61 ms | 67 | Im Messbereich (sicher)
; 3,0 cm | 0,18 ms | 20 | Im Messbereich (sicher)
; 1,6 cm | 0,10 ms | 11 | Im Messbereich (unsicher)
; 1,0 cm | 0,06 ms | 7 | Im Messbereich (unsicher)
; 0,1 cm | 0,01 ms | 1 | Minimale Entfernung (unsicher)
;
; Eventuell muß noch eine Konstante zum Messergebniss addiert oder subtrahiert werden um die
; Distanz abzugleichen. Dies erfolgt wiederum in 1,5mm-Schritten. Diese Daten sind Idealfall
;
;----------------------------------------------------------------------------------------------

Sonar: ; *** Auf eintreffendes Echo warten und messen ***
JSR GoPosMotoren ;GoSub GoPosMotoren
MesseEcho1: BRCLR Echo, Port1Data, MesseEcho1 ;If Not Echo Then GoTo Sonar
MesseEcho2: LDA #1 ;Distanz = Distanz + 1
ADD DistanzL
BCS MesseEcho3
NOP ;Zeitkorrektur um 1us
BRA MesseEcho4
MesseEcho3: INC DistanzH
MesseEcho4: BRCLR Echo, Port1Data, MesseEcho2 ;If Echo Then GoTo MesseEcho2
SonarEnde: RTS ;Zurück nach BASIC