PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Conrad Quadrocopter umbauen (möglich) ?



Der Einsteiger
06.12.2013, 20:31
Hallo Leute,
ich habe mal wieder ein kleines Zwischenprojekt, da für die anderen Projekte gerade keine Teile vorhanden sind. Also habe ich mir, nachdem ich dieses Video gefunden hatte http://www.youtube.com/watch?v=ny2z6qDWxMI gedacht: Warum bau ich so etwas nicht ? Die Teile habe ich doch fast alle da...

Also habe ich mal angefangen meine Steuerung zwischen Empfänger und Summensignalwandler zu schließen und habe für die Geschwindigkeit mal ein kleines Programm geschrieben. Das hat auch wunderbar funktioniert :)


$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$swstack = 32
$framesize = 32

Config Portd.7 = Output
Config Pind.2 = Input ' Signal 1(a) vom RC-Empfänger
Config Pind.3 = Input
Config Portd.4 = Output

Config Servos = 1 , Servo1 = Portd.4 , Reload = 10

Dim Motor As Word
Dim Kanal_5 As Word

Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
Sound Portd.7 , 400 , 450

Enable Interrupts

Do
Pulsein Motor , Pind , 2 , 1
Pulsein Kanal_5 , Pind , 3 , 1

If Kanal_5 > 100 Then
Servo(1) = 70
Wait 1
Servo(1) = 100
Wait 1
Servo(1) = 130
Wait 1
End If

If Kanal_5 < 100 Then
Servo(1) = Motor
End If


Loop

End

Jetzt möchte ich allerdings auch Sensoren auswerten. Dazu möchte ich einen Infrarotsensor unten an den Q. kleben, der mir zeigt, wie hoch ich schwebe. Auch soll meine Steuerung in der Lage sein, wenn ich einen Knopf drücke, automatisch die Höhe zu halten.

Wenn das funktioniert sollen später auch noch weitere Sensoren wie Gps hinzukommen.
Hier ist mein Code mit dem der Q. automatisch die Höhe halten soll (so habe ich es mir jedenfalls gedacht)


$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$swstack = 32
$framesize = 32

Config Portd.7 = Output 'Summer
Config Pind.2 = Input 'Motor In
Config Pind.3 = Input 'Kanal 5
Config Portd.4 = Output 'Motor Out

Config Servos = 1 , Servo1 = Portd.4 , Reload = 10

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Sensor_1 Alias Getadc(0)
Dim D As Word
Dim S As Word
Dim A As Word
Dim I As Integer
Dim Durchschnitt As Word


Dim Motor As Word
Dim Kanal_5 As Word

Dim Gas As Word
Gas = 40

Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
Sound Portd.7 , 400 , 450

Enable Interrupts

Do
Pulsein Motor , Pind , 2 , 1
Pulsein Kanal_5 , Pind , 3 , 1

If Kanal_5 > 100 Then
Gosub Check_sens_1

Select Case Durchschnitt

Case Is < 20
If Gas < 140 Then
Gas = Gas + 1
Servo(1) = Gas
End If


Case Is > 30
If Gas > 50 Then
Gas = Gas - 1
Servo(1) = Gas
End If

End Select

End If

If Kanal_5 < 100 Then
Servo(1) = Motor
End If

Loop
End



Check_sens_1: 'Berechnen der Höhe in cm und Durchschnitt bilden
D = 0
Durchschnitt = 0
For I = 1 To 10
S = Sensor_1

A = S + 22
D = 5823 / A

Durchschnitt = Durchschnitt + D
Next
Durchschnitt = Durchschnitt / 10
Return

Ich würde mich über Kommentare freuen, denn ich weiß nicht ob man das überhaupt so machen kann/darf (Hardware) und ob das so einfach geht wie ich mir das gerade denke ??

Der Einsteiger