-
        

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

Thema: RON (Robo Nerd) - erstes Video

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.02.2008
    Ort
    Im Hegau
    Alter
    24
    Beiträge
    91

    RON (Robo Nerd) - erstes Video

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo

    nach langem Planen und tüffteln kann ich jetzt endlich mal den ersten Teil von meinem Weihnachtsprojekt vorstellen. \/
    Ein relativ kleiner Roboter der ein modulares System hat. Er benutzt das in einem anderen Theard schon vorgestellte Robo Control 168 http://www.roboternetz.de/phpBB2/zei...hlight=#476557 .

    Hier mal ein paar technische Daten:

    Größe: 140 x 140 x 180 mm (L x B x H)

    Gewicht: ca 1kg

    Stromquelle: ein 9 V Blockakku für die Elektronik und
    ein 7,2 V Racingpack für die Motoren

    Controller: ein ATMega 168 als Hauptcontroller
    ein Attiny 2313 als Motorcontroller

    Das Chassi ist komplett aus 2mm Alu gefertigt.
    Der Roboter benutzt 2 Gehackte Servos zur Vortbewegung.
    Die Mechanik ist jetzt zu 95% vollständig....es fehlen nurnoch eine Halterung für den LCD und für den Spannugswandler.
    Natürlich fehlen auch noch die Halterungen für die Sensoren.

    derzeit existiert erst ein Modul für das Mainboard: ein Motor Modul das einen Attiny2313 als Controler verbaut hat und über I2C angesprochen wird...... und genau da liegt das problem ich bekomm es irgendwie nicht hind eine I2C Slave aus dem Attiny 2313 zu machen...

    Programmiert wird komplett in Bascom...

    vieleicht könnt ihr mir dabei etwas helfen?!

    Hier aber erstmal mal ein paar Bilder:











    Ich hoffe ihr könnt mir bei meinem Programmierproblem Helfen

    Gruß Max

    P.S. Auf Anregungen und Fragen zum Projekt würde ich mich freuen

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    9volt blockbatterie für die Elektronik würd ich nicht nehmen, die ist schneller leer als nachgekauft.

    dein roboter sieht aber soweit so gut gut aus, was mir nicht so gut gefällt sind die spitzen Ecken und die einzelne hohe platiene, dich sieht so instabilt (sie bricht gleich ab, angst..) aus.

    du hast noch platz im akkufach, könntest also auch auf 8zellen akkus hochgehen, dann hast du Nennspannung von 9,6volt.
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    Hi,

    dein modularer Aufbau gefällt mir sehr gut!
    Ich bin auch einen ähnlichen Weg bei meinem Hexapod gegangen und von der Zweckmäßigkeit und Leistungsfähigkeit eines solchen Systems voll und ganz überzeugt

    Viele Grüße und noch viel Erfolg
    ikarus_177

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    Hallo,

    mir gefällt dein modularsysten selbstverständlich auch.

    ich werfe mal für dein I2C-Slave prob einen code in raum! bei fragen dazu immer raus damit!

    Code:
    '*******************************************************************************
    '  um mit dem master zu senden folgenden code benutzen
    '
    '  I2cstart
    '  i2cwbyte &H22    'slave-id
    '  I2cwbyte 1       'für motor 1
    '  I2cwbyte PWM1
    '  I2cwbyte PWM1b   'falls die pwm variable größer als ein byte ist
    '  I2cstop
    '
    '*******************************************************************************
    
    '===============================================================================
    '***| Mikrocontroller Config |**************************************************
    '===============================================================================
    
    'Microcontroller
    '================
    $regfile = "m8def.dat"
    $crystal = 16000000
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    
    'TWI
    '====
    Declare Sub Twi_init_slave
    Dim Twi_control As Byte
    Dim Twi_status As Byte
    Dim Command As Byte
    Dim Index As Byte
    Dim Newbyte As Byte
    Dim I2cbyte(10) As Byte
    Dim N As Byte
    
    Enable Interrupts
    
    
    'Init
    '=====
    For N = 1 To 10
       I2cbyte(n) = 0
    Next N
    
    Command = 0
    Index = 0
    
    Call Twi_init_slave
    
    '-------------------------------------------------------------------------------
    '***| Hauptprogramm |***********************************************************
    '-------------------------------------------------------------------------------
    Do
         Newbyte = 0
    
         'schauen ob TWINT gesetzt ist
         Twi_control = Twcr And &H80                            ' Bit7 von Controlregister
    
         If Twi_control = &H80 Then
            Twi_status = Twsr And &HF8                          ' Status
    
            'wurde ein Byte geschickt?
            If Twi_status = &H80 Or Twi_status = &H88 Then
                Command = Twdr                                  ' neue Daten merken
                Newbyte = 1                                     ' merken das ein neues Byte da ist
            End If
    
    
            'TWINT muss immer gelöscht werden, damit es auf dem Bus weiter geht
            Twcr = &B11000100                                   ' TWINT löschen, erzeugt ACK
         End If
    
         'wenn ein neues Byte gekommen ist verarbeiten
         If Newbyte <> 0 Then
    
           'Register zuordnen -> Befehl
           Select Case Command
    
                   Case 1
                   Gosub Motor1
    
                   Case 2
                   Gosub Motor2
    
                   Case 3
                   Gosub Motor3
    
    
           End Select
    
    
         End If
    
    Loop
    End
    
    
    
    
    '-------------------------------------------------------------------------------
    '***| Motor 1 |*****************************************************************
    '-------------------------------------------------------------------------------
    Motor1:
    
       Index = 1
       '1 Byte holen / gibt an wieviele bytes geholt werden sollen hier im beispiel max. 10 "i2cbyte(1 bis 10)"
       Gosub I2c_rx
    
       'PWM1 = i2cbyte(1)
    
    Return
    
    
    '-------------------------------------------------------------------------------
    '***| Motor 2 |*****************************************************************
    '-------------------------------------------------------------------------------
    Motor2:
    
       Index = 1                                                '1 Byte holen
       Gosub I2c_rx
    
       'PWM2 = i2cbyte(1)
    
    Return
    
    
    '-------------------------------------------------------------------------------
    '***| Motor 3 |*****************************************************************
    '-------------------------------------------------------------------------------
    Motor3:
    
       Index = 1                                                '1 Byte holen
       Gosub I2c_rx
    
       'PWM3 = i2cbyte(1)
    
    Return
    
    
    
    '-------------------------------------------------------------------------------
    '***| I2C-BUS Daten Empfangsroutinen |******************************************
    '-------------------------------------------------------------------------------
    I2c_rx:
    
     For N = 1 To Index
     'erstes Byte empfangen
     Newbyte = 0
     Do
    
        Twi_control = Twcr And &H80
    
        If Twi_control = &H80 Then
            Twi_status = Twsr And &HF8
    
            If Twi_status = &H80 Or Twi_status = &H88 Then
                I2cbyte(n) = Twdr
                Newbyte = 2
            End If
    
            Twcr = &B11000100
        End If
    
        If Newbyte = 2 Then Exit Do
    
     Loop
    
     Next N
    
    Return
    
    '-------------------------------------------------------------------------------
    '***| I2C-BUS Daten Senderoutinen |******************************************
    '-------------------------------------------------------------------------------
    I2c_tx:
    
    For N = 1 To Index
     'erstes Byte empfangen
     Newbyte = 0
     Do
    
        Twi_control = Twcr And &H80
    
        If Twi_control = &H80 Then
            Twi_status = Twsr And &HF8
    
            If Twi_status = &HA8 Or Twi_status = &HB8 Then
                Twdr = I2cbyte(n)
                Newbyte = 2
            End If
    
            Twcr = &B11000100
        End If
    
        If Newbyte = 2 Then Exit Do
    
     Loop
    
    Next N
    
    Return
    
    '-------------------------------------------------------------------------------
    '***| TWI: Slavekonfiguration |*************************************************
    '-------------------------------------------------------------------------------
    
    Sub Twi_init_slave
        Twsr = 0                                                ' status und Prescaler auf 0
        Twdr = &HFF                                             ' default
        Twar = &H22                                             ' Slaveadresse setzen  I2C-RX-Adr:Hex22
        Twcr = &B01000100                                       ' TWI aktivieren, ACK einschalten
    End Sub

    achso ich würde die kanten tatsächlich noch abrunden oder irgendwei schützen. das gibt in möbel oder ähnliches ganz hässliche macken wenn das teil da reinfährt.
    schöne grüße, Bammel

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.02.2008
    Ort
    Im Hegau
    Alter
    24
    Beiträge
    91
    Hallo

    Ich Danke euch schonmal für die schnellen antworten

    also das mit dem 9V Blockakku lasse ich ersteimal so ich werde dann später jedoch auch zu anderen Stromquellen umsteigen.

    danke für das mit den Ecken (hab garnicmehr dran gedacht. Ich setz mich natürlich sofort an die feile und mach noch die Rundungen rein.

    Zitat Zitat von ikarus_177
    Ich bin auch einen ähnlichen Weg bei meinem Hexapod gegangen und von der Zweckmäßigkeit und Leistungsfähigkeit eines solchen Systems voll und ganz überzeugt
    Ja der Roboter ist vorallem ein Forschungsprojekt für mich um mit Bussystemen, Sensoren und Co etwas herumzuexperimentieren das wird dann alles in verbesserter form auch in einem Hexabot Enden

    Danke Bammel für die schnelle Hilfe...hab schon die ersten Fragen dazu
    1. muss man nicht erst noch die verwendeten Pins für I2C einstellen??
    2. Du hast einen Code für TWI = Hardware I2C oder??? gepostet
    kann man den dann auch für software I2C verwenden
    (attiny2313 hat soweit ich weiß kein hardware i2c)

    Gruß Max

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von asurofreak.
    Registriert seit
    29.06.2009
    Ort
    Landkreis Vechta
    Alter
    20
    Beiträge
    332

    Re: Mein Ferienroboter ist(fast) fertig! - [I2C Slave nur wi

    Zitat Zitat von Max Hinze
    P.S. Auf Anregungen und Fragen zum Projekt würde ich mich freuen
    na klar, z.b. frontscheinwerfer würd ich als anregung vorschlagen, oder ein robo-arm mit ein paar Servos draufsetzen...
    ich hab auch ein projekt mit gehackten servos, scheinen bei dir auch die rs-2 dinger zu sein
    hier der link zu meinem bot: http://www.roboternetz.de/phpBB2/viewtopic.php?t=51736 (ps. die bilder, wo der Ploro dann schon besser aussieht sind auf seite 3)

    wirklich super projekt! wünsch dir viel erfolg!

    MfG
    wieder hier

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    08.02.2008
    Ort
    Im Hegau
    Alter
    24
    Beiträge
    91
    danke für die Anregungen asurofreak.
    die idee zur LED beleuchtung(Frontscheinwerfer) find ich eig ganz gut aber ich fänd irgenwie ne Unterbodenbeleuchtung besser oder beides zusammen
    Fürn Arm ist fast zuwenig platz aber en Greifer wär cool
    ja hab deinen Roboter schon gesehen...für dein Alter wirklich ne Top Leistung
    siht super aus.


    Gruß Max

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    Zitat Zitat von Max Hinze
    Danke Bammel für die schnelle Hilfe...hab schon die ersten Fragen dazu
    1. muss man nicht erst noch die verwendeten Pins für I2C einstellen??
    2. Du hast einen Code für TWI = Hardware I2C oder??? gepostet
    kann man den dann auch für software I2C verwenden
    (attiny2313 hat soweit ich weiß kein hardware i2c)
    2. Ja ist Hardware TWI / I2C
    1. Man muss ide pins nicht konfigurieren da sie ja in der hardware exestieren. nun ich kenn mich mit den tiny's nicht aus. wenn der kein hardware TWI hat muss das natürlich softwareseitig geschehen was wiederum mehr rechenzeit in anspruch nimmt.

    dazu kann ich dir leider nciht weiter helfen. nur evtl. das RN-Wiki nahe legen. da solltest du bestimmt was finden.

    Gruß, Bammel

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    08.02.2008
    Ort
    Im Hegau
    Alter
    24
    Beiträge
    91
    ok danke trozdem Bammel...

    dann werde ich mich wohl erstmal von I2C trennen da es mit der aktuellen Harware des Motormoduls nicht möglich ist ... glaube ich.

    ich werde die platine jetzt einwenig umlöten und versuch es dann ersteinmal irgendwie mit dem UART die motoren seriell anzusteuern...
    für später muss ich dann das Motormodul nochmal neu entwickeln...


    Gruß max

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    08.02.2008
    Ort
    Im Hegau
    Alter
    24
    Beiträge
    91
    Hallo da bin ich wieder,
    hab jetzt das motormodul mal kurz umgelötet...und schon das nächste problem.

    Ich hab mal einen einfachen code geschrieben bei dem die led über den hauptcontroller über UART ein und ausgeschalten werden soll...

    die Led wird auch eingeschalten nur nichtmehr ausgeschalten....sie leuchten dann dauer ich weiß auch nichtehr weiter. Hab schon ander baud raten versucht-----> und hat auch nicht funktioniert.

    Hier mal der Code für den Hauptcontroller

    Code:
    $regfile = "m168def.dat"
    $crystal = 16000000
    $baud = 9600
    
    
    Do
    
    Print 0
    Wait 1
    Print 1
    Wait 1
    
    Loop
    End
    und hier für den attiny 2313
    Code:
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    $baud = 9600
    
    Config Portd.2 = Output
    Led Alias Portd.2
    
    Echo Off
    
    Dim X As Byte
    
    Do
    
    Input X
    
    If X = 1 Then
    Led = 1
    Elseif X = 0 Then
    Led = 0
    End If
    
    
    Loop
    End
    ich hoffe ihr könnt mir irgendwie helfen

    Gruß Max

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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