-         

Ergebnis 1 bis 4 von 4

Thema: PC nach I2C und RN-Motor will nicht.

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.02.2005
    Beiträge
    33

    PC nach I2C und RN-Motor will nicht.

    Anzeige

    PC nach I2C und RN-Motor will nicht.

    Ich verwende die I2C Version in Rev. 1.2

    PC nach I2C-Adapter:
    ---------------------------
    -Den PC nach I2C Adapter habe ich als Bausatz aufgebaut. Welchen der beiden Wannen für den I2C-Bus verwendet wird scheint egal zu sein.
    -Die Kurzschlussbrücke am Adapter habe ich gesteckt, bei nur einem I2C-Anschluss spielt das ja keine Rolle.
    -Die Wannenstecker am I2C Kabel sind so angebracht, dass PIN 1 der Adapter-Wanne an PIN 1 der Wanne am RN-Motor-Board anliegt.

    Am RN-Board
    ----------------
    -Das Board betreibe ich mit einem PC-Netzteil und nutze dessen 12V Spannung.
    Beim Einschalten des Netzteils Flackert kurz die grüne LED am Board.

    Gesetzte Jumper
    -I2C5V
    -RSMODE (waren bei Lieferung gesetzt PIN1-2 und nebenan genauso, habe ich zu Testzwecken auch mal entfernt)
    -Jumper 1 und Jumper 2 sind innen gesetzt (wo PWM steht) also für Schrittmotor

    Angeschlossener Motor (Motor ist neu, habe mehrere und mit keinem tuts)
    -------------------------------------------------------------------------------------
    Elite 127E02633
    Bipolarer Schrittmotor
    5 V Betriebsspannung und
    15 ° Schrittwinkel.
    Strangwiderstand 11,5 Ohm
    5V / 11,5 Ohm = 430mA

    Die 4 Kabel die der Motor besitzt habe ich so durchgemessen und angeschlossen, dass je ein Paar mit einem Widerstand von 11.5 Ohm, an den beiden Äußeren Schraubklemmen des Motoranschlusses liegen.


    Software:
    -----------
    Ich steuere noch Befehl für Befehl mit der Mitgelieferten Visual Basic Software I2C-Beispiel (also die Software, wo die Slave-Adresse und alle Befehle einzeln und manuell in Textfelder eingegeben werden müssen, und dann per Senden-Button an das RN-Motor-Board gesendet werden)

    SDA-Pegel und SCL-Pegel werden von der Software grün markiert.

    Der Ablauf ist folgender (die SlaveID ist immer 112)
    -I2C-Init
    -Motor einschalten = 10 10 0
    -Stromwert setzen = 10 1 0 43
    -Drehrichtung setzen = 10 4 0 0
    -Schrittgeschwindigkeit setzen = 10 8 0 9
    -Endlos drehen = 10 6 0

    Bei keinem der Befehle flackert die grüne LED, wenn ich jedoch die Slaveadresse per Befehlseingabe ändere, dann flackert die LED.

    Irgendwie weiß ich mir jetzt nichtmehr zu helfen! Wenn ich nicht weiter komme, dann muss ich noch ein ISP-Programmierkabel und die RS232-Firmware kaufen, damit ich das Board RS232 fähig mache und somit Fehlerquellen der PC nach I2C-Verbindung und der Softwareanwendung ausschließen kann.

    Vielleicht fällt ja jemandem etwas zu meinem Problem ein.

    Uli

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    23.02.2005
    Beiträge
    33
    Da fällt mir noch ein, das I2C Kabel ist ca. 1,5m Lang, daran kann es aber kaum Liegen!?

    Uli

  3. #3
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.990
    Blog-Einträge
    1
    Hallo Ulli,

    die RS232 Jumper solltest du möglichst stecken lassen, so ei bei Auslieferung. Die RS232 Schnittstelle kannst du nämlich mit PC verbinden und siehts dann nach jedem I2C-Befehl der richtig ankommt eine Quittung am Terminalprogramm. Ginge natürlich nur wenn du 2 Schnittstellen hast. Jumper kannst du aber in jedem Fall einstecken.

    Deine Befehle können so noch nicht gehen, du hast siche rüberlesen das immer 5 Byte pro Befehl gesendet werden müssen, auch wenn manchmal nicht alle Bytes gebraucht werden. Also Rest immer mit 0 füllen!

    Das Flackern -(blinken würde ich es nennen) ist ein gutes Zeichen. Es zeigt ein RESET an! Beim ändern der SLave ID wird immer automatisch ein Reset ausgeführt. Also probier es mal mit den 5er Bytefolgen. Wenn alles Protokoll stimmt und du nach jeden 5 Bytes dem Board einige ms Zeit zur Ausführung gibts, dann sollte alles bestens klappen.

    Gruß Frank

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    23.02.2005
    Beiträge
    33
    Hurra es funtioniert,

    danke Frank, es lag wirklich an den 5 Bytes! Zwar habe ich den Hinweis gelesen, aber nachdem ich in den Quellcode gesehen habe

    #######################################
    Private Sub buttSendByte_Click()
    Dim i As Integer
    buttSendByte.Enabled = False

    i2c_start
    i2c_SendByte (txtwert(0))
    For i = 1 To 5
    If txtwert(i) = "" Then Exit For
    i2c_SendByte txtwert(i)
    delay
    Next i
    i2c_stop

    ZeigePegel
    buttSendByte.Enabled = True
    End Sub
    #########################################

    war ich mir sicher, dass die Abfrage ***If txtwert(i) = "" Then Exit For*** dazu dient, freigelassene Textfelder abzufangen.
    Um solch einen Fehler zukünftig abzufangen, könnte man die Zeile abändern in:
    If txtwert(i) = "" Then txtwert(i)=0

    Uli

Berechtigungen

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