Einen guten Abend wünsch ich Euch allen.
Zur Abwechslung mal was gutes: Willa hat mir mal n Tipp gegeben, wie ich die PID Werte einstellen sollte und prompt liegt der Vogel ruhig in der Luft..
Ich war meilenweit daneben:
P 80
I 130
D 45
D² 20
Das geht sehr gut jetzt.
Was anderes:
Nach der Anmerkung von einigen von euch habe ich den Code jetzt umgebaut und die automatische XY Offsetübernahme von Henk in ein Sub gepackt.
Ist bereits getestet und funktioniert:
Code:
'All this does is calling subs in a loop all the time
Do
Acc
Gyro
Mixer
Send_mots
Led
Voltage
Failsave
Speaker 'Nils-Speaker
Guiconnection
Autooffset 'Nils-XY Offset
Loop
End
'===Autooffset================================================================== 'Nils-XY Offset
Sub Autooffset
'Durch Bewegen des rechten Sticks nach oben links wird die XY Kalibierung aktiviert
If State = 0 And Sempf(rollchannel) > 20 And Sempf(nickchannel) > 20 Then
Sticksup_bo = 1 'Setzbit setzen (Dient dazu zu verhindern das der zustand springt wenn ich dies ticks lange halte
End If
'Erst wenn ich die sticks wieder loslasse und das bit gesetzt wurde, dann Kalibrierung übernehmen
If State = 0 And Sempf(rollchannel) > -10 And Sempf(rollchannel) < 10 And Sempf(nickchannel) > -10 And Sempf(nickchannel) < 10 And Sticksup_bo = 1 Then
Toggle Xy_calibration_bo 'Kalibrierung aktivieren/desaktivieren
Sticksup_bo = 0 ' Setzbit zurücksetzen
Speakeron = 1
If Xy_calibration_bo = 1 Then 'Falluntershceidung ob ein oder ausgeschaltet
Speakerduration = 100 'Nils-Speaker : jeder 100te takt wird gepiept
Silenceduration = 100 'Nils-Speaker: Dauer der Stille
Speakerbeeps = 2 'Nils-Speaker: Anzahl der Pieps 4=unendlich
Else 'Nils-Speaker: einschaltflag setzen
Speakerduration = 50 'Nils-Speaker : jeder 50te takt wird gepiept
Silenceduration = 50 'Nils-Speaker: Dauer der Stille
Speakerbeeps = 3 'Nils-Speaker: Anzahl der Pieps 4=unendlich
End If
End If
If State > 0 Then ' Acro oder Hover Mode ausgewählt
If Sempf(5) > 0 And Sempf(throttlechannel) > 50 Then Switch_validation = 1 'Wenn größer als 0 (Acro) und Gas> 50 dann Kalibrierung scharf schalten heir muss ich irgendwas einbauen damit ich nicht aus versehen was amche
If Sempf(5) < -20 And Switch_validation = 1 And Xy_calibration_bo = 1 Then 'Betriebswahl auf Standbay ohne Gas wegzunehmen > Werte werden jetzt übernommen
Xy_calibration_bo = 0
Switch_validation = 0
Modification = 1 'Es wurden werte gemessen
For I = 1 To 19 '20 mal messen und Summe bilden
Xacc_offset = Xacc_offset + Getadc(4)
Yacc_offset = Yacc_offset + Getadc(5)
Next
Xacc_offset = Xacc_offset / 20 'Mittelwert bilden
Yacc_offset = Yacc_offset / 20
Speakeron = 1 'Nils-Speaker: einschaltflag setzen
Speakerduration = 100 'Nils-Speaker : jeder 100te takt wird gepiept
Silenceduration = 100 'Nils-Speaker: Dauer der Stille
Speakerbeeps = 2 'Nils-Speaker: Anzahl der Pieps 4=unendlich
End If
End If
If Modification = 1 Then 'Gemessene Werte stehen zur verfügung
If State = 0 Then 'Betriebswahl auf Standby
If Motors_on = 0 Then 'Motoren aus
Var(23) = Xacc_offset - 384
Var(24) = Yacc_offset - 384
For I = 1 To 33
Writeeeprom Var(i) , I 'Werte ins EEPROM schreiben
Next
Do 'Force RESET. Helps to know when eeprom is modified.
Loop
End If
End If
End If
End Sub
'===GYRO=======================================================
Ich werde es heut Abend in meinen Blog laden und sage Euch dann bescheid.
Nochwas?
Ja, ich habe mir neue Motoren bestellt FC2822, die sind auf dauer billiger . Und wenn ich dann alles richtig kann dann kommen die guten Roxxys.
Darüberhinaus werde ich heut abend Mikrokopter ESCs bestellen, ich bins Leid mit diesen Überraschungsreglern.
Die Mystery Pentiums die ich jetzt habe sind ganz andere wie die die ich vorher geliehen hatte. Nomes est omen.
Oder baut mir die jemand günstig auf I²C um?
Gruß
Nils
Lesezeichen