-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Sensor anschließen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2010
    Beiträge
    10

    Sensor anschließen

    Anzeige

    Hallo, ich bin neu hier im Forum.

    ich habe seit fast einem Jahr einen Robby RP6 und programmiere den nach der beiliegenden Anleitung.
    Mit der Zeit wird mir das aber etwas langweilig , und so habe ich mich hier angemeldet.

    Da ich kompletter Anfänger in Allem bin und nur Grundlagen der Sprachen C und Java und PhP habe, werde ich wahrscheinlich viele Fragen stellen müssen, bevor ich mein Ziel erreiche, dem Roboter mindestens einen Ultraschall-Sensor zu vermachen.

    Zunächst hätte ich die Frage, wie ich an den Robby einen Sensor anschliesse, und softwaremässig anschliessen kann. Wenn möglich möglichst Anfängerverständlich bitte.

    Danke schon im Vorraus

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Ich bin zwar auch neu hier aber ich würde mal sagen, dass man grundsätzlich nur die ADC PINs bestücken und auswerten kann. Meineswissens sind das die einzig freien. Ansonsten musst du dir ein erweiterungs board kaufen (mega 32 ) da ht man dann noh andere anschlussmöglichkeiten.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    30
    Beiträge
    220
    wo und wie du Sensoren anschließen kannst hängt ganz vom jeweiligen sensor ab.
    diesen Ultraschallsensor http://www.shop.robotikhardware.de/s...roducts_id=168 kannst du zum beispiel direkt an SDA und SCL am I²C bus betreiben.

    mfg

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2010
    Beiträge
    10
    Danke für die schnellen Antworten.

    Ein paar Fragen habe ich aber noch:

    Das Ultraschall-Modul verwendet den I²C-Bus nur über die beiden Steckplätze?

    Das heisst, dass ich den Anschluss "Mode" nicht brauche?

    Aus welchen Registern kann ich denn dann die Entfernung "ziehen"?

    mfG time1

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Wenn man I2C mal außen vor läßt, kann man beim RP6 (Base) doch noch einiges mehr nutzen als nur die zwei freien ADC0- und ADC1-Anschlüsse. Hier mal eine kleine Zusammenstellung:

    Am XBUS-Stecker sind die digitalen Pins PC0 und PC1 (SCL+SDA, XBUS 10+12) sowie der analoge Pin PA4 (E-Int, XBUS 8) verfügbar. PC0 und PC1 sind als I2C-Vorbereitung jeweils mit einem 4k7-PullUp angeschlossen (R32+33), PA4 hat als Interrupteingang einen 10k-PullDown (R34).

    Auf der Platine im Bereich der LEDs SL1-6 befinden sich die Lötpads IO1-4, BPL und BPR. Das sind im Prinzip die LED-Anschlüsse, jeweils mit einem 2,2k Widerstand (R10-15 und einer LED (SL1-6) in Reihe gegen GND beschaltet. Bei BPL/R kommt noch der Taster mit seiner Schutzbeschaltung (R43-46) dazu. Das stört aber bei einer Verwendung als digitale Ein- oder Ausgänge nicht wirklich. Hier kann man zum Beispiel ein LCD mit 4-Bit-Schnittstelle oder Servos anschliesen:


    Etwas exotisch (,weil bisher noch nicht beschrieben,) ist die Nutzung des Batteriepin ADC7 (PA7, UBAT). Dessen Anschluss an den Akku kann man zwischen den Lötpads UB1 und UB2 (neben XBUS2) an der Leiterbahn durchtrennen und in der Platinenmitte beim Lötpad UBAT anzapfen. Dann erhält man einen vierten nutzbaren ADC-Pin mit einem 100k-PullDown (R2). Die eigentliche Funktion der Batteriespannungsmessung erhält man mit einem Jumper zwischen UB1 und UB2 zurück.

    Diese Pins habe ich bei meinem RP6 auf den USRBUS1 gelegt:
    Code:
    SL1  1  - 2  GND
    SL2  3  - 4  Vcc
    SL3  5  - 6  ADC0
    SL4  7  - 8  ADC7
    SL5  9  - 10 ADC1
    SL6  11 - 12 Vcc
    frei 13 - 14 GND
    Ziel dieser Belegung war die Nutzung aller oben beschriebenen Anschlussmöglichkeiten. An 2-4-6 und 14-12-10 kann man dann direkt analoge Sensoren wie z.B. einen Sharp anschliesen, ebenso kann man auch jeweils ein Servo einstöpseln. An den Pins 1 bis 11 schliese ich mein LCD oder meine charliegeplexten LED-Reihen an. Die drei ADCs wären auch ein guter Anschlusspunkt für einen 3er-Liniensensor.
    ([OT]Mit etwa diesem Aufbau, der wohl bei der Bee deutlich effektiver wäre, aber ohne zusätzliche Auswerteelektronik: http://www.electronicsplanet.ch/Robo...ia/olimpia.htm[/OT])

    Zum Thema USRBUS: Eine alternative Belegung zum Anschluß einer Erweiterungsplatine hat Dirk hier beschrieben:
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=32549

    Gruß

    mic

    [Edit]
    UB1 und UB2 sind natürlich neben XBUS2. Danke für die Korrektur an TrainMen :)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2010
    Beiträge
    10
    Das heisst, wenn ich jetzt einen Servo an GND und an BPL anschließe, kann ich den Servo ansteuern?

    Was müsste ich denn genau in das Programm schreiben, dass er reagiert?

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Tut mir leid, dass ich dese Frage nich beantworten kann aber vielleiht interessiert dich das ja: Du könntest je einen Motor an IT1, SCL und SAD anschließen. Ein Pol muss natürlich an der Masse liegen damit das Ganze funktioniert Dabei ist wichtig das er mit 5-8 Volts auskommt und bei belastung nicht mehr als 0,5-1A zieht. Die kannst du dann wiefolgt ansteuern:
    Code:
    #include "RP6RobotBaseLib.h"
      
    int main(void) 
    {  
       initRobotBase();  
      
       DDRA |= (E_INT1);            // IT1 als Ausgang definieren 
       DDRC |= (SCL | SDA);         // PC0 + PC1 als Ausgänge definieren 
    
       while (true) 
       { 
          PORTA |= E_INT1;         // PA4 high 
          mSleep(5000); 
          PORTA &= ~E_INT1;         // PA4 low 
    
          PORTC |= SCL;            // PC0 high 
          mSleep(5000); 
          PORTC &= ~SCL;            // PC0 low 
    
          PORTC |= SDA;            // PC1 high 
          mSleep(5000); 
          PORTC &= ~SDA;            // PC1 low 
       } 
    
       return 0; // Dieses kliene Programm steuert jeden Motor bzw. LED nacheinander 5 sek. lang an 
    }
    Nichts existiert durch sich allein!
    http://i42.tinypic.com/10pa90x.jpg

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2010
    Beiträge
    10
    Danke, das Programm funktioniert super.

    Aber kann man das auch auf andere Anschlüsse beziehen?

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Wenn du noch mehr hast. Natürlich kannst du noch die IO Ports bei den beiden Schrauben vorne an derPlatine benutzen. Habe ich aber noch nicht ausprobiert. Oder wenn ein Motor, lampe, LED usw. immer Leuchten soll kannst du die Bateriespannung an VDD (+) und GND (-) abgreifen. Die Ports kannst du meines wissens aber nicht über den Microcontroller ansteuern.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2010
    Beiträge
    10
    Ich habe mal ausprobiert, was passiert, wenn ich an IO-Ports und GND ein Servo anschliesse:

    GND & IO1 : schaltet wie SL1 (LED), d.H. ist an, wenn die LED an ist
    GND & IO2 : schaltet wie SL2 (LED)
    GND & IO3 : schaltet wie SL4 (LED)
    GND & IO3 : schaltet wie SL5 (LED)

    das müsste doch bedeuten, dass ich den Port nur in Verbindung mit den LED verwenden kann.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •