Dein Auto sieht doch schonmal gut aus.
Mit dem kannst du noch ne ganze Menge anstellen. Wenn du die Motorplatine (die ist gut, hab ich auch, im Segway) hochkant stellst hast du noch ne Menge Platz.
Allerdings: was macht der Clip für den 9V-Block da?
Dein Auto sieht doch schonmal gut aus.
Mit dem kannst du noch ne ganze Menge anstellen. Wenn du die Motorplatine (die ist gut, hab ich auch, im Segway) hochkant stellst hast du noch ne Menge Platz.
Allerdings: was macht der Clip für den 9V-Block da?
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Jeb, da schließe ich Momentan meinen Akku dran an(mit 2 Krokoklemmen)...ist nen alter Bohrmaschinenakku, sie an sich kaputt und dann dachte ich mir benutz ich den doch weiterdie sind aber schwer/groß--> und nen Platz für die habe ich auch noch nicht gefunden.
Gute Idee, die Motorplatine hochkant zustellen. Bin ich noch nicht selbst drauf gekommen. Werde ich gleich umsetzen
Ja vorne sollen noch US-Sensoren hin, sowie nach hinten(und noch so was mir einfällt, wie das LCD...), aber wenn ich den US-Sensor gerade vor die Wand halte kommen zig verschiedene Messungen raus. Habe ich mim Beispiel Sketch versucht das der mir die Entfernung aufm Seriell Monitor ausgibt. Aber die weichen so stark ab, das der Bot gar nicht erst losfahren wolltehabe sogar längere Wartezeiten zwischen Messungen gesetzt hat nix gebracht....
das ist der Code:
den hatte ich dann so umgeändert, dass ich da eine If reingepackt habe, die den Motor auf 0 PWM setzen soll wenn das Hindernis 20 cm vor ihm ist, else dann mit PWM von30 fahren...der ist dann ruckelig gefahren, weil es so große Abweichungen gab...und irgendwann ganz stehen geblieben, dabei war die Wand noch nen Meter entfernt.Code:int TriggerPin = 12; // Digital 12 -> hc-sr04 Trigger int EchoPin = 10; // Digital 13 -> hc-sr04 Echo // hc-sr04 Vcc -> 5V, GNG -> GND void setup() { Serial.begin(9600); } void loop() { // establish variables for duration of the ping, // and the distance result in inches and centimeters: long duration, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(TriggerPin, OUTPUT); digitalWrite(TriggerPin, LOW); delayMicroseconds(2); digitalWrite(TriggerPin, HIGH); delayMicroseconds(10); digitalWrite(TriggerPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(EchoPin, INPUT); duration = pulseIn(EchoPin, HIGH); // convert the time into a distance cm = microsecondsToCentimeters(duration); if (cm <= 500) { Serial.print(cm); Serial.println("cm"); delay(100); } else Serial.println("Ungueltige Messung ! Entfernung groesser als 5 Meter !!!"); delay(100); } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. // The ping travels out and back, so to find the distance of the // object we take half of the distance travelled. return microseconds / 29 / 2; }
Morgen setze ich mich mal nochmal hin und versuche es nochmal![]()
Heute ist zu schönes Wetter um vorm Schreibtisch/PC zuhängen und zu Programmierenaber hochkant werde ich die Platine heute noch stellen
![]()
HC-SR 04?
Wünsch ich dir Glück-ich hab die auch am Monster und oberhalb von ca. 1.20m sind die unbrauchbar. Nix mit 4m.
Die escheint es zuminest in zwei sehr verschiedenen qualitäten zu geben.
Dein Programm da ist bissel Murks: finde mal raus, was bei dem pulseIn passiert, wenn kein Hindernis im Erfassungsbereich ist....steht in der Arduino-Referenz.
Ansonsten gäbs da jede Menge mögliche Störquellen. Mal ehrlich: brauchst du es Zentimetergenau?
Ich würd da einfach mit bissel Unschärfe arbeiten, ungefähr so:
messe 3x und rechne den Durchschnitt aus
-wenn der Durchschnitt deutlich unter 20cm liegt, dann unternimm was, ansonsten
-fahr fröhlich weiter.
Sinngemäss. Du kannst auch die Entfernungswerte (bissel vermitteln, sonst stellt sich einer zu Tode) direkt aufs Tempo geben, indem du Entfernung auf PWM mapst. Das ergibt hübsche softe Abbremsmanöver.
Musst halt sinnvolle Wertebereiche benutzen.
Und: fährt das Teil bei PWM=30 echt schon?
Beim Segway drehen sich die Räder (im Leerlauf) erst ab PWM 20 ungefähr überhaupt. Alles darunter wird praktisch gar nicht benutzt, weil sich da nix tut (ausrollen würd er wahrscheinlich, aber erklär das mal der Regelung).
Ruckeliges Fahrverhalten kann auch daher rühren, dass der Motor _manchmal_ anläuft-und manchmal eben nicht, weils zu wenig Power gibt.
Die Platine hochkant obendrauf zu montieren solltest du nur als Anregung verstehen, ich könnt mir vorstellen, dass die auch seitlich zwischen den Räder (auch aufrecht) nen guten Platz hätte. Raus willst mit dem kleinen Auto ja sowieso nich, oder?
Das solltest du dir angewöhnen, sowas auch bisschen zu planen, spätestens wenn du mal nen E-Kompass benutzen willst, wirst du das schätzen lernen. Mein Monster hat einen drauf, nur 15-20 cm von einem der Fahrmotoren entfernt (weil er unbedingt mit unter die Karosserie sollte),das klappt dann nur, wenn man ein paar Sachen richtig macht.
Auch andere Komponenten stören sich mitunter-das sind dann immer diese Fehler, wo man echt Nerven lässt, weils eigentlich funktionieren müsste, aber es trotzdem nicht tut.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Ja ist nen hc-sr04
Ich hatte jetzt mal auf dem Seriell Monitor ausgegeben, was der hc-sr04 ausspuckt, nach dem PulseIn wenn nix im Erfassungsbereich ist...sieht so aus:
4714
0
0
0
0
0
17188
17084
17207
17108
0
17122
17084
17108
17084
1718317108
17110
17083
17084
17140
17134
17207
17159
17086
17066
17084
17084
17183
17084
17090
1720717108
17108
17108
17090
17108
17084
17108
17183
17110
17134
17084
17207
17086
17107
17231
1710817188
17083
17084
17107
17134
17113
17206
17059
17180
17081
17156
17083
17158
17083
17107
17180
Die ersten 6 Messungen wurden recht langsam ausgeführt und dann ging es Schlag auf Schlag und die 17... ratterten nur so runter
Ne cm genau brauche ich es auf keinen Fall...soll ja erstmal vor nem Hindernis stehen bleiben und hinterher ausweichen.
Ich probiere es mal wie du gesagt hast mit deinem Lösungsvorschlag mit dem 3 x Messen und dann Durchschnitt![]()
Ja das mit der Platzierung habe ich auch eher so gesehen![]()
Da wird sich schon ein Plätzchen finden![]()
Ne raus werde ich mit dem nicht gehen.
Du hast nicht nachgelesen.
PulseIn wartet (WARTET!) bis was passiert.
Wenn nun (weil die Entfernung grösser ist) nichts passiert, wartet PulseIn ziemlich lange. Das bremst dir das gesamte Programm aus!
Kannst du aber recht einfach beheben (und damit auch noch die US-sensoren entschieden schneller machen, wenn du die volle Reichweite gar nicht brauchst). Lies die Referenz mal, da steht wie...
Dreimal messen ist für ne vernünftige Vermittlung zu wenig. Ich hatte das nur vorgeschlagen, weil US generell etwas lahmarschig ist. Würd ich beim Monster zehnmal messen, ist das Ding durch die Mauer schon durch ehe der Rechner sicher wär: da ist was im Wege.
Und: man kann das filtern noch viel weiter treiben. Z.b indem unglaubwürdige Resultate gleich ausgesondert werden:
Messung 1: 3.80m
Messung 2: 0.20m
Messung 3: 3.30m
Hier vermittle ich gar nich erst- der mittlere Wert fliegt direkt raus, und es wird nen neuer geholt. Da kann man sogar noch die aktuelle Geschwindigkeit reinnehmen, und feststellen ob es nen starres oder bewegliches Hindernis ist- und verschieden drauf reagieren. Das klappt aber nur, wenn man die Zeit wirklich hat.
Es ist immer wieder spannend, wie sich die ganzen Theorien in der Praxis in nichts auflösen, weils so einfach eben doch nicht funktioniert. Mir macht das mit den meisten Spass.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
du kannst aber pulsein auch in der wartezeit begrenzen.
das leben ist hart, aber wir müssen da durch.
Lesezeichen