So mein Quad macht Fortschritte.
Das Problem lag an einem Falsch montierten Propeller
so wie den aktivierten Roll Gyro reverse.
Jetzt muss ich die Akkus neu laden und die Parameter finden.
Neben bei habe ich ein kleines Motortest Programm geschrieben.
Damit kann man die Motoren jeden Motor an und aus schalten und die Drehzahl hoch und runter regeln.
Gesteuert wird über ein Terminal (HyperTerminal, Putty oder den von Bascom)
Ausgelegt ist das Prog für 4 Motoren die über I2C angesteuert werden.
Für Einsteiger vielleicht sehr hilfreich.
Gruß IngoCode:'Platine+I2c+ESC+Motor Tester by HDM 'Based on William's Thielicke Programm for Shrediquette 'Switch off position : nothing 'Switch acro position : Motors selected with roll stick 'Switch hover position : All 3 Motors 'Leds show switch position 'Values shown via Tx/Rx '===CHIP SETTINGS=== $regfile = "m328pdef.dat" ' "m168def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 38400 '--Alias's Led_1 Alias Portd.7 Led_2 Alias Portb.0 Led_3 Alias Portb.1 Led_grn Alias Portb.5 Dim I As Byte Dim A As Byte Dim Speed As Byte Dim Motor1 As Bit Dim Motor2 As Bit Dim Motor3 As Bit Dim Motor4 As Bit Declare Sub Motor_aus Declare Sub Motor1 Declare Sub Motor2 Declare Sub Motor3 Declare Sub Motor4 Declare Sub Speedhoch Declare Sub Speedrunter '===PORT SETTINGS=== Config Pind.7 = Output 'led 1 Config Pinb.0 = Output 'led 2 Config Pinb.1 = Output 'led 3 Config Pinb.5 = Output 'Arduino LED_grn Config Scl = Portd.5 'for ESCs Config Sda = Portd.4 Print "Motortest fuer Brushless Regler die über I2C angesteuert werden" Print "Tasten 1-4 Motor 1-4 an/aus ---- + und - Speed rauf und runter" 'Startwerte setzen Beginn: Speed = 10 Motor1 = 0 Motor2 = 0 Motor3 = 0 Motor4 = 0 For I = 1 To 10 Toggle Led_grn Waitms 50 Next I Gosub Status 'alle LEDs Ausschalten Reset Led_1 Reset Led_2 Reset Led_3 Reset Led_grn 'ASCII Cods für die Tasten '1 Ascii Code 49 From Serial '2 ascii Code 50 From Serial '3 ascii Code 51 From Serial '4 ascii Code 52 From Serial '+ Ascii Code 43 From Serial '- Ascii Code 45 From Serial Do 'auf Tastendruck reagieren A = Inkey() Select Case A Case 0 : 'nichts tun wenn keine Taste gedrückt wurde Case 27 : Motor_aus Case 49 : Motor1 Case 50 : Motor2 Case 51 : Motor3 Case 52 : Motor4 Case 43 : Speedhoch Case 45 : Speedrunter Case Else : Print "taste nicht unterstuezt" End Select ' Motoren Je Nach Zustand Ein Oder Ausschalten If Motor1 = 1 Then Set Led_1 I2csend &H52 , Speed Else I2csend &H52 , 0 End If If Motor2 = 1 Then I2csend &H54 , Speed Else I2csend &H54 , 0 End If If Motor3 = 1 Then I2csend &H56 , Speed Else I2csend &H56 , 0 End If If Motor4 = 1 Then I2csend &H58 , Speed Else I2csend &H58 , 0 End If Loop ' Subrotine Um Die Motoren Ein Bzw. Auszuschalten Sub Motor_aus Print "Speed auf 0!" Speed = 0 gosub STATUS End Sub Sub Motor1 Toggle Motor1 Toggle Led_1 Gosub Status End Sub Sub Motor2 Toggle Motor2 Toggle Led_2 Gosub Status End Sub Sub Motor3 Toggle Motor3 Toggle Led_3 Gosub Status End Sub Sub Motor4 Toggle Motor4 Toggle Led_grn Gosub Status End Sub Sub Speedhoch Speed = Speed + 1 If Speed > 200 Then Speed = 200 End If Gosub Status End Sub Sub Speedrunter Speed = Speed - 1 If Speed <= 0 Or Speed > 210 Then Speed = 0 End If Gosub Status End Sub Status: Print "" Print "Motro 1 = " ; Motor1 ; " Motro 2 = " ; Motor2 ; " Motro 3 = " ; Motor3 ; " Motro 4 = " ; Motor4 ; " Speed = " ; Speed Return







Zitieren


Lesezeichen