Hi!
Ich habe mir hier in Ddorf bei Conrad diesen (http://www.conrad.de/ce/ProductDeta...tm_content=dl_article&utm_campaign=g_shopping) 11€ Ultraschall Bausatz gekauft. Nach dem Aufbau hat das Ding auch funktioniert - die 80 cm kommen über Steinfußboden ungefähr hin, über Teppich ca. Kniehöhe - naja, ist eben billo. Das Teil hat noch einen Relaisausgang mit gemessenen ca. 6,X V bei ca. 12V Eingangsspannung. Der Plan: Das Ding mit fest eingestellter Höhe an die Multiwii flanschen. Probleme 1: Das Teil elektrisch kompatibel machen 2
rogrammieren lernen ....
Zu1: (Bild)
a) Der Bausatz braucht 9-12V, in meinem Copter liegen 12,6V an - ok, 2 Dioden 1N4001 in Reihe zur Spannungsreduktion.
b) Der Promini verkraftet nur 5V an den Eingängen die gemessenen 6,x V sind zuviel - ok, Spannungsteiler mit 2x10Kohm gebaut.
c) Anschluss an die Multiwii: Da ich die Batterieüberwachung der Multiwii nicht nutze, nehme ich A3 ("V_BATPIN")
So, alles verkabelt und Testprogramm geschrieben:
Funktioniert! Über die Konsole werden mir Werte zwischen 45 und 600 (1=0,0048V;0,2-2,88V). Die Werte korrelieren eigentlich nicht mit einer realen Entfernung. Ich entscheide mich für den Wert "200" als Schwellenwert, als Signal für:"Achtung der Boden kommt".
So jetzt gehts an den Multiwii Code. Was soll überhaupt passieren?
1. Ich will die Sache zuschaltbar haben
2. Wenn es überhaupt funktioniert, dann sowieso nur bei relativ grader Fluglage, also Level (ACC) Modus. Also Aktivierung zusammen mit dem Levelmode, wenn alles schief läuft, kann ich immer noch schnell auf den Acromodus(Gyro) zurückschalten.
3. Der Copter soll nur Höhe machen, wenn ich auch Gas gebe. D.h. Start im Levelmode darf kein Raketenstart sein (mein erster Test sah so aus....) und wenn ich landen will, soll ich nicht vom Boden abgestossen werden. OK mein Schwebegas liegt laut GUI irgendwo bei 1400 d.h. dass sollte ich als Referenz verwenden. Gebe ich mehr Gas will ich fliegen, gebe ich weniger will ich landen.
Ich bin aktuell bei diesem (dreckigen) Code, der im Wohnzimmer schon echt gut funktioniert:
In der Codezeile mbmsonothr=mbmsonothr+1 erhöhe ich den Throttlewert nur um 1 pro Prozessordurchlauf - passt für das Wohnzimmer gut.
Die "1400" könnte man natürlich noch durch ein def.h "sonoschwebegas" und die "1" durch "sonogasinkrement" ersetzten.
Soweit der Stand der 11€ Billiglösung. Ich bin richtig gespannt, was draussen passiert - v.a wenn ich den Baro in Bodennähe noch dazu schalte.....
LG
Rob
Ich habe mir hier in Ddorf bei Conrad diesen (http://www.conrad.de/ce/ProductDeta...tm_content=dl_article&utm_campaign=g_shopping) 11€ Ultraschall Bausatz gekauft. Nach dem Aufbau hat das Ding auch funktioniert - die 80 cm kommen über Steinfußboden ungefähr hin, über Teppich ca. Kniehöhe - naja, ist eben billo. Das Teil hat noch einen Relaisausgang mit gemessenen ca. 6,X V bei ca. 12V Eingangsspannung. Der Plan: Das Ding mit fest eingestellter Höhe an die Multiwii flanschen. Probleme 1: Das Teil elektrisch kompatibel machen 2
Zu1: (Bild)
a) Der Bausatz braucht 9-12V, in meinem Copter liegen 12,6V an - ok, 2 Dioden 1N4001 in Reihe zur Spannungsreduktion.
b) Der Promini verkraftet nur 5V an den Eingängen die gemessenen 6,x V sind zuviel - ok, Spannungsteiler mit 2x10Kohm gebaut.
c) Anschluss an die Multiwii: Da ich die Batterieüberwachung der Multiwii nicht nutze, nehme ich A3 ("V_BATPIN")
So, alles verkabelt und Testprogramm geschrieben:
Code:
int a3wert=0;
void setup()
{
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
Serial.begin(9600);
Serial.println("Jetzt gehts los");
}
void loop()
{
a3wert=analogRead(A3);
Serial.print("Der Wert ist: ");
Serial.println(a3wert);
if(a3wert>=200)
{
digitalWrite(13,HIGH);
}
else
{
digitalWrite(13,LOW);
}
}
So jetzt gehts an den Multiwii Code. Was soll überhaupt passieren?
1. Ich will die Sache zuschaltbar haben
2. Wenn es überhaupt funktioniert, dann sowieso nur bei relativ grader Fluglage, also Level (ACC) Modus. Also Aktivierung zusammen mit dem Levelmode, wenn alles schief läuft, kann ich immer noch schnell auf den Acromodus(Gyro) zurückschalten.
3. Der Copter soll nur Höhe machen, wenn ich auch Gas gebe. D.h. Start im Levelmode darf kein Raketenstart sein (mein erster Test sah so aus....) und wenn ich landen will, soll ich nicht vom Boden abgestossen werden. OK mein Schwebegas liegt laut GUI irgendwo bei 1400 d.h. dass sollte ich als Referenz verwenden. Gebe ich mehr Gas will ich fliegen, gebe ich weniger will ich landen.
Ich bin aktuell bei diesem (dreckigen) Code, der im Wohnzimmer schon echt gut funktioniert:
Code:
In der MultiWii_dev_20120504.ino habe ich folgendes geändert:
Am Anfang:
....
int mbmsono=0;
int mbmsonothr=0;
....
Gegen Ende in der Mainloop, vor dem PID Kontroller:
...
mbmsono=analogRead(V_BATPIN);
if(mbmsono > 200 && accMode == 1 && rcCommand[THROTTLE] > 1400 && mbmsonothr==0)
{
mbmsonothr=rcCommand[THROTTLE]; //Initialisiere Throttlecounter
}
if (mbmsono > 200 && accMode == 1 && rcCommand[THROTTLE] > 1400 && !mbmsonothr==0)
{
mbmsonothr=mbmsonothr+1;
rcCommand[THROTTLE]=mbmsonothr;
}
if (mbmsono < 200 && !mbmsonothr==0)
{
mbmsonothr=0;
}
....
Die "1400" könnte man natürlich noch durch ein def.h "sonoschwebegas" und die "1" durch "sonogasinkrement" ersetzten.
Soweit der Stand der 11€ Billiglösung. Ich bin richtig gespannt, was draussen passiert - v.a wenn ich den Baro in Bodennähe noch dazu schalte.....
LG
Rob
Anhänge
-
24,9 KB Aufrufe: 32
-
147,2 KB Aufrufe: 37
Zuletzt bearbeitet: