- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: RN-Motor läuft nur manchmal

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2005
    Alter
    39
    Beiträge
    17

    RN-Motor läuft nur manchmal

    Anzeige

    Praxistest und DIY Projekte
    Hallo erstmal

    Mein RN-Motor Board wo ich über I2C anspreche zeigt irgendwie ein komische verhalten und zwar wir senden die Befehle an das Board und alles funktioniert bis auf die Bewegung der Schrittmotoren die funktionieren nur jedes 3. 4. oder 5. mal nach dem der Befehl gesendet wurde.

    Hier ist mal der Code:
    Code:
    Const Befehl_maxstrom = 1
    Const Befehl_referenzspannung = 2
    Const Befehl_stop = 3
    Const Befehl_drehrichtung = 4
    Const Befehl_schrittanzahl_drehen = 5
    Const Befehl_endlos_drehen = 6
    Const Befehl_einzigen_schritt = 7
    Const Befehl_geschwindigkeit = 8
    Const Befehl_ausschalten = 9
    Const Befehl_einschalten = 10
    Const Befehl_konfiguration_zeigen = 11
    Const Befehl_sleep_modus = 12
    Const Befehl_motor_selektieren = 13
    Const Befehl_schrittmotormodus = 14
    
    Const Motor_links = 0
     Const Motor_rechts = 1
    
    Const I2crnmotorslaveadr = &H56                             'I2C SlaveAdresse von RN-Motor Erweiterung
    Const I2crnmotorsreadlaveadr = &H57                         'I2C SlaveAdresse von RN-Motor Erweiterung
    'Achtung, wenn das Motor-Board überhaupt nicht reagiert, dann könnte dieses eine andere Slave
    'Adresse besitzen. Im Zweifel schließen Sie das Motorboard an die RS232 vom PC an und
    'drücken Sie die RESET-Taste am Motorboard.Dann kann die Slave ID über ein
    'Terminalprogramm angezeigt werden
    
    Dim I2cdaten(6) As Byte                                     'Array um Befehlsfolge auszunehmen
    Dim Befehl As Byte
    
    
    Enable Interrupts                                           'Interrupts global zulassen
    
    
    $crystal = 8000000
    $baud = 2400
    
    Config Scl = Portc.5                                        'Ports fuer IIC-Bus
    Config Sda = Portc.4
    Config Pind.2 = Output
    Portd 0.2 = 0
    Wait 1                                                      'Kurz warten damit RN-Motor sich initialisieren kann
    Portd 0.2 = 1
    Wait 1
    Main:
    Print "Starte"
      I2cinit
    
      'Motorstrom auf 200mA begrenzen
       I2cdaten(1) = 10                                         'Kennung muss bei RN-Motor immer 10 sein
       I2cdaten(2) = Befehl_maxstrom                            'Befehlscode
       I2cdaten(3) = Motor_rechts                               '1 Parameter
       I2cdaten(4) = 200 / 10                                   '2 Parameter (hier Milliampere /10 in diesem Fall wird 200mA eingestellt)
       I2csend I2crnmotorslaveadr, I2cdaten(1), 5               'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
                I2cstop
    
    I2cdaten(1) = 10                                            'Kennung muss bei RN-Motor immer 10 sein
    I2cdaten(2) = 8                                             'Befehlscode
    I2cdaten(3) = 2                                             '1 Parameter
    I2cdaten(4) = 9                                             '2 Parameter
    I2csend &H56, I2cdaten(1), 5                                'Befehl wird gesendet
                       I2cstop
    
      'Motor einschalten
      I2cdaten(1) = 10                                          'Kennung muss bei RN-Motor immer 10 sein
      I2cdaten(2) = Befehl_einschalten                          'Befehlscode
      I2cdaten(3) = Motor_rechts                                '1 Parameter
      I2csend I2crnmotorslaveadr, I2cdaten(1), 5                'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
                              I2cstop
    
    
    
    
                Do
    Print "1 für drehen"
    Input "Befehl :" , Befehl
    If Befehl = 1 Then
         Print "drehe"
    
    
      I2cdaten(1) = 10                                          'Kennung muss bei RN-Motor immer 10 sein
      I2cdaten(2) = Befehl_schrittanzahl_drehen                 'Befehlscode
      I2cdaten(3) = Motor_rechts                                '1 Parameter
      I2cdaten(4) = 50
      I2csend I2crnmotorslaveadr, I2cdaten(1), 5                'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
                                     I2cstop
    
      End If
    
    
    Wait 4
    Loop
    
    End
    Ist teilweise aus dem Beispiel übernommen.
    Bin für jede Hilfe dankbar [-o< [-o< [-o< [-o<
    Wenn Baumeister Gebäude bauten, so wie Bill Gates Programme macht, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören \/

    Gruß ISI

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Hallo ISI05,
    muß du die I2C Routine nicht mit "I2Cstart" starten.
    Oder habe ich da was überlesen?
    Warum hast du die Baudrate nur 2400 anstatt 9600 - sollte doch bei 8MHz kein Problem sein.
    ### Silvio ###

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2005
    Alter
    39
    Beiträge
    17
    Ich habe das mit I2Cstart inzwischen wieder drinstehen, es tritt aber immer noch das gleiche Problem auf. Das mit der Baudrate ist eigentlich auch kein problem. Weiß auch nich was mich da geritten hat
    Wenn Baumeister Gebäude bauten, so wie Bill Gates Programme macht, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören \/

    Gruß ISI

  4. #4
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    DU musst die neuste Bascom Version nutzen. Zudem sollte man die Befehle nicht zu schnell hintereinander senden, eventuell ist der letzte noch nicht abgearbeitet. Mach mal probehalber hinter i2csend waitms 4

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2005
    Alter
    39
    Beiträge
    17
    mit der neusten Bascom version hats funktioniert.
    Danke für die hilfreichen tipps
    Wenn Baumeister Gebäude bauten, so wie Bill Gates Programme macht, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören \/

    Gruß ISI

Berechtigungen

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

Labornetzteil AliExpress