PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rasenrobo mit Induktionsschleife, Schaltbilder, Hallsensor



Seiten : 1 [2]

homedom
18.02.2008, 20:31
Hi,
So,ich hab heut mal den 2. Schleifensensor aufgebaut, funktioniert auch soweit. Den Mähmotor hab ich auch schon 0,5/1Std laufen lassen, ohne Probleme. Die restlichen beiden Schleifensensoren kommen morgen dran. Meine nächsten Probleme liegen dann in der Hinderniserkennung. Wie habt ihr das gelöst? Optische Sensoren (IR/US) sind mir zu teuer und ich bräucht für die Fläche auch n paar. Also bleibt nur ne Art Stoßsensor. Ich dachte an ne Plexiglasplatte, die mit Tastern verbunden ist..
Dann fehlen nurnoch Regen/Temperatur sensor und die Software, welche aber nicht das große Problem darstellen wird..

gruß, homedom

EDIT:
So heut hab ich alle Sensoren für die Induktionsschleife fertig gebaut. Doch als ich es testen wollte gab es eine kleine Überraschung: 2 Sensoren zeigen Innen 4V und außen 0V, 2 jedoch zeigen Innen 0V und Außen 4V??? Was ist da schief gelaufen? Der Aufbau ist bei allen identisch. Ich hab die genau nach der Wikischaltung gebaut.. Kann mir einer sagen was falsch ist?
EDIT2:
Das Problem hab ich nun gelöst. Die Polung der Spulen ist auch entscheidend. auch wie die Schleife verlegt ist. Das hatte ich vorher nicht gewusst. Wär vlt praktisch wenn das noch einer in die Wiki schreiben könnt.

MichaelM
19.02.2008, 20:43
Die Polung der Spulen ist auch entscheidend. auch wie die Schleife verlegt ist. Das hatte ich vorher nicht gewusst. Wär vlt praktisch wenn das noch einer in die Wiki schreiben könnt.

Hallo,
soeben geschehen.
Gruß,
Michael

homedom
22.02.2008, 15:49
Hi,
heut bin ich n bissl am programmiern, aber irgwie will mein AVR die Sensoren nicht als an erkennen.. Ich mess 3,6V.. ist das schon TLL Pegel? Woran kann das liegen dass ich nicht, wie in der wiki beschrieben, 4V messe?
Edit: Ich hab gesehn, dass in der Wiki bei dem Widerstand zwischen der Spule 47k steht.. Ich hab 4,7k gelesen.. Liegt es daran?
Edit: Ich hab ihn mal durch 22k erstzt, aber es gibt kein Unterschied.. Ich mess am ausgang immer noch 3,6V..

gruß, homedom

MichaelM
22.02.2008, 16:44
Hallo,
die 4V sind nur ein Anhaltswert. Bei TTL-Eingängen werden 2V als High und 0,8V als Low erkannt, bei CMOS-Eingängen sind es 3,33V für High bzw. 1,67V für Low. Im Datenblatt stehen die genauen Werte für den verwendeten µC (Stichwort: DC-Charakteristics). Der Widerstand an der Spule bedämpft allenfalls das Signal von der Spule und setzt die Empfindlichkeit herab, die Ausgangsspannung wird aber nicht beeinflusst.
Gruß,
Michael

homedom
22.02.2008, 22:46
Hi,
es geht wirklich.. Problem war nur, dass der Int0 Eingang/Ausgang kaputt is?!.. Ka warum.. Ich hab jetzt mal n bissl getestet und gemerkt, dass die Sensoren wirklich sehr empfindlich auf die Kabelverlegung reagieren. Auch direkt über den Antriebmotoren gehts nicht. Aber ich denke dass ist in den Griff zu bekommen... Ansonsten funktioniert alles bisher einwandfrei.
Nochmal meine Frage zu eurer Kollisionserkennung.. Wie habt ihr das gelöst?

gruß, homedom

MichaelM
23.02.2008, 19:51
Hallo,
ganz simpel: noch garnicht ;-)
Spaß beiseite, bei mir werden es ein paar Taster (8?) in einer Höhe von ca. 6 bis 15cm. Die Haube ist starr. Das niedrigste was es bei uns gibt ist die Komposttonne und da passt er drunter durch. Auch die niedrige Treppenstufe des Wintergartens ist 9cm hoch und wird damit erkannt. Wahrscheinlich gibt es wie bei meinem Holzfahrzeug auch Schläche zur Dämpfung, die haben sich bewährt. Später rüste ich vielleicht noch einen Ultraschallsensor nach vorne nach, um die Geschwindigkeit frühzeitig zu reduzieren. Ein Encoder am Vorderrad wäre auch noch sinnvoll damit er sich nicht festfährt. Bei uns ist die Wiese momentan schön aufgeweicht, ideal für eine Testfahrt morgen.
Gruß,
Michael

homedom
10.05.2008, 13:59
Hallo,
da ja jetzt wieder super Wetter ist, muss der Rasenmäher nun mal zum Einsatz kommen. Ich hab mal wieder weiter gebastelt und hab jetzt ein problem mit den Induktionsschleifensensoren. Alles andere funktioniert. Das Problem ist, dass die Sensoren erst in einem Abstand von 30cm zum Kabel ansprechen. Also wenn sie 40cm vom kabel entfernt sind, kommen 0V, wenn sie 30cm entfernt sind 4V. Nur bei einem klappt das besser, aber alle sind baugleich. Woran kann das liegen? kann mir da jmd helfen? Ich hab darauf geachtet, dass sie von Motor und den Stromkabeln nicht gestört werden.

danke, homedom

Richard
02.06.2008, 18:58
Hallo,
da ja jetzt wieder super Wetter ist, muss der Rasenmäher nun mal zum Einsatz kommen. Ich hab mal wieder weiter gebastelt und hab jetzt ein problem mit den Induktionsschleifensensoren.

Moin moin,

Auch ich habe keine Lust hinter dem Mäher herzulaufen, geschweige denn auch noch zu schieben. :-)

Dieser Thread ist recht aufschlußreich iund ich bin schon seit quasie einige Jahre an KnoffHoff "aufsammeln", soll der Rasen in sieser Zeit halt wachsen wie er es gerne möchte, irgendwann kommt ein Rasenmähbot und macht ihn alle.

Ich habe mir sehr viel Gedanken über die Navigation gemacht, etliches gelesen und jaaaa taugt zumindndest mit Normalverdiener Gehalt alles NIX. Bei einer Inducktionsschleife stört mich dann das eher planlose herummirren des Bots, irgendwie ist das nicht Roboterschick. :-)

In einem älteren Post hatte da mal jemand ne tolle (?) Idee, oder war das eher eher als Witz gedacht? RFID Chip`s mit einer Handsämaschine oder ein "Locheisen" in den Rasen einbringen....Das artet zwar (einmalig) in echte Arbeit aus, aber danach sollte der Rasenäherbot sehr sauber seinen Kurs halten können und diese Cip`s werden ja täglich günstiger im Angebot. Mein Prototyp wird allerdings als Stützrad einen Ball haben, recht hart und möglicht mit Noppen oder ähnlich was denselben am durchdrehen hindern soll. Der wird dann mittels Andruckrolle und Walsen in der Art einer Mausekugel die Rollen treiben. Etwas am rande, wo dann auch keine Verschmotzungsgefahr besteht tasten zwei Lasermeuse dann die Rollen ab.

Mein Ziehl beim Mähen ist halt "richtig" Mähen, also einmal schön gerade senkrecht zur Rasenfäche und bin nächsten Mähen schön Qer zur Rasenfläche. Klar, es soll dann auch ein so genannter Balken b.z.e auch Rollen Mähwerk sein, das schneidet das Gras und kloppt es nicht kaqputt.

Vorteil dabei, es sieht gut aus und es geht weniger "Blut/Saft/Wassert" aus der Pflanze verlohren.

Nette Räder mit "eingebauten Motor und Bremse und Elecktronik" habe ich bei

http://www.heinzmann.de/index.php?option=com_content&task=view&id=31&Itemid=129&lang=de

Gefunden, fragt sich nur ob ich mir diese edlen Teile auch leisten kann, ich werde dort Morgen einmal anrufen.

Ansonsten ist so eine Inducktonsschleife eine sichere und halbwegs einfache Lösung und kann sogar genau das was ich mir unter Rasenmähen vorstelle! Nur der "Erstaufwand ist dann etwas höher. Zwei Schleifen, eine Hochkant zum Rsen, eine Qwer zun Rasen und in "plotter= Mäherblatt" Breite"ordentlich" verlegt.....DAS kostet Schweiß!!!

Ich bin also noch ein wenig weit von der echten Hartenware entfehrnt

Druß Richard

Baunix
03.08.2008, 17:01
Hi,

ich wollte mir so ein rasenmäherroboter auch anlegen und fragen ob jemand schon fertige pläne dafür hat.

Gruß dominik

MichaelM
04.08.2008, 21:00
Hallo,
ich habe seit Langem wieder mal weitergebaut. Die Drehgeber in meinen Motoren scheinen recht vielversprechend zu sein, die endgültige Auswertung und die Drehzahlregelung sind aber noch nicht fertig.
Siehe auch hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=379927&highlight=#379927
Ich habe momentan kein TTL-Flipflop, evtl. werde ich mir aber mit einem PIC12 oder PIC16 behelfen.
Gruß,
Michael

homedom
18.08.2008, 18:50
Hi,
So, ich möcht dann mal wieder ein kleines Update meiner Bastelei machen. Ich hab es nun endlich geschafft alle Innudktionssensoren samt Schleife zum laufen zu bekommen. Jetzt bin ich an der Software und hab schon einiges hinbekommen. Mein Problem ist noch, dass die hinteren Sensoren stark durch den Anlauf der Antriebsmotoren gestört werden. Das will ich per Software komprimieren.. Ansonsten läuft alles ganz gut, ich sitz grad hier und schau ihm zu^^.. Ich will ihn jetzt mal ne Weile laufen lassen um die Temperaturen der Treiber zu prüfen.. Ein kleines Video hab ich auch schon:
http://www.youtube.com/watch?v=SUlVE2YryxQ
Auf meiner Seite gibts auch noch ein paar Infos und Bilder: www.dominik-hufnagel.de

gruß, homedom

Enigma1
28.08.2008, 15:37
@Richard

Klar, es soll dann auch ein so genannter Balken b.z.e auch Rollen Mähwerk sein, das schneidet das Gras und kloppt es nicht kaputt.

Ich habe mein erstes Modell auch mit einem Spindelmähwerk ausgestattet, eben aus den von Dir genannten Vorteilen.

Den Vorteilen stehen aber krasse Nachteile gegenüber.
Als erstes ist da z.B. die hohe Empfindlichkeit der Spindel gegen Fremdkörper zu nennen. Gelangt einmal ein harter Fremdkörper ins Mähwerk, dann tut es einen enormen Schlag und die Spindel ist meistens verzogen. Die Spindel ist da recht empfindlich.

Als nächstes ist die Geräuschentwicklung zu nennen.
Entgegen meiner ersten Vorstellung das ein Spindelmähwerk auch dann sauber schneidet, wenn sich Spndel und Untermesser noch nicht berühren, zeigte die Praxis ein anderes Bild. Das Mähwerk muss für einen sauberen Schnitt so eingestellt werden das Spindel und Untermesser einander gerade berühren. Das widerum erzeugt eine enorme Geräuschkulisse die für einen Rasenrobby absolut nicht akzeptabel ist.

Drittens hat ein Spindelmähwerk eine enorme kinetische Energie durch die grosse rotierende Masse. Ein Finger wird da nicht nur verletzt sondern sauber abgetrennt wenn jemand versehentlich hinein fasst.

Das waren die wichtigsten Gründe die gegen die Spindel sprechen.

Das mit dem abnehmen der Raddrehzahl an einem nicht angetriebenen Rad wird meiner Meinung nach auch nicht funktionieren, alleine schon weil das Rad auf geschnittenen, ungeschnittenen oder nassen Rasen eine deutlich andere Wegstrecke aufnehmen wird.

Richard
28.08.2008, 17:30
@Richard

Ich habe mein erstes Modell auch mit einem Spindelmähwerk ausgestattet, eben aus den von Dir genannten Vorteilen.

Den Vorteilen stehen aber krasse Nachteile gegenüber.
Als erstes ist da z.B. die hohe Empfindlichkeit der Spindel gegen Fremdkörper zu nennen. Gelangt einmal ein harter Fremdkörper ins Mähwerk, dann tut es einen enormen Schlag und die Spindel ist meistens verzogen. Die Spindel ist da recht empfindlich.

Ja, mein Motorspindelmäher hat dafür eine "Schlagkupplung", wird
die Spindel blockiert gerät die dadurch in den Leerlauf.

Als nächstes ist die Geräuschentwicklung zu nennen.

Ich würde dann die Spinel mit nen eigenen E-Motor antreiben und
diesen bei schlagartig ansteigenden Stromverbrauch stoppen. Na
die Geröuschentwicklung ist zwar nicht zu leugnen aber wenn ich
mein Höhrgerät abschalte stört mich das nicht. :-) Leiser als die
Motormäher der Nachbarn währe es allemal. Hier mähen quasie alle
mit Verbrennungsmotor, 7500 m² Wald/Wiesen Grundstück sind nur
mit 20 Kabeltrommeln für nen E-Mäher zu erreichen. Die 7500 m²
dürfen hier nur mit Genemigung halbiert werden, oder da darf nicht
einmal ne Hundehütte drauf gebaut werden.

Da ich seit Jahren nicht mehr mähe, brauche ich VOR den Robomäher
erst einmal nen Bergepanzer....

Gruß Richard


Drittens hat ein Spindelmähwerk eine enorme kinetische Energie durch die grosse rotierende Masse. Ein Finger wird da nicht nur verletzt sondern sauber abgetrennt wenn jemand versehentlich hinein fasst.

Das waren die wichtigsten Gründe die gegen die Spindel sprechen.

Das mit dem abnehmen der Raddrehzahl an einem nicht angetriebenen Rad wird meiner Meinung nach auch nicht funktionieren, alleine schon weil das Rad auf geschnittenen, ungeschnittenen oder nassen Rasen eine deutlich andere Wegstrecke aufnehmen wird.

Richard
28.08.2008, 17:50
Hallo,
ich habe seit Langem wieder mal weitergebaut. Die Drehgeber in meinen Motoren scheinen recht vielversprechend zu sein, die endgültige Auswertung und die Drehzahlregelung sind aber noch nicht fertig.
Siehe auch hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=379927&highlight=#379927
Ich habe momentan kein TTL-Flipflop, evtl. werde ich mir aber mit einem PIC12 oder PIC16 behelfen.
Gruß,
Michael

Moin moin,

Professionelle Grehgeber haben die Lichtschranken oder die Hallsensoren
um 45 Grad Versetzt angeortnet. Aber so das wenn der eine auf
den Zahn steht, der Andere auf ner Lücke steht. In der einen Richtung
kommt immer 10 10 10 in der Anderen Richtung kommt immer 01 01
01, die Frequenz bleibt dabei Drehzahlabhängig gleich.

Zwei einzelne Sensoren oder ne kleine runde Platiene auf Der Achse,
währen da möglicherweise brauchbarer. :-)

Gruß Richard

MichaelM
31.08.2008, 19:40
Hallo,
auf der Platine befinden sich zwei Gabellichtschranken, und zwar im Abstand von 1,75-facher Teilung der Scheibe. Dadurch bekommt man das gleiche Signal wie bei den Drehencodern, nämlich zwei um 90° phasenverschobene Rechteckspannungen. Dadurch kann man die Richtung sehr einfach feststellen.
Die Geber sind mittlerweile eingebaut und bewähren sich bestens. Die Auswertung beider Geber besorgt ein PIC16F628-04 (war das einzig Greifbare). Als Drehzahlregler fungieren zwei PI-Regler.
Gruß,
Michael

H.A.R.R.Y.
10.08.2009, 06:39
Hi,

im RN-Wissen http://www.rn-wissen.de/index.php/Begrenzungsschleife_-_Induktionsschleife gibt es den dezenten Hinweis, daß die (Invers-)Diode des MOSFET als Freilaufdiode fungiert.

Nach meinem bescheidenen Verständnis wird aber beim Abschalten des Spulenstromes ein positiver Spannungspuls auf das Drain des MOSFET induziert. Seine Inversdiode wird hier ganz bestimmt NICHT den Stromfluß übernehmen. Somit bleibt eigentlich nur irgendein Durchbruch der Drain-Source-Strecke als Option für den Stromabbau in der Spule. Solche Betriebsarten können den MOSFET zerstören.

Mein Vorschlag ist daher eine Suppressor-Diode (so etwas wie P6KE-... / siehe Reichelt) die knapp unterhalb der maximalen U_DS dimensioniert ist parallel zum MOSFET. Eine entsprechende Zenerdiode ist nicht ratsam, da diese Teile recht lange Schaltzeiten haben und sich dadurch die Induktionsspannung verringert.

Eine Bitte noch - ergänzen des Textes im RN-Wissen um folgenden Sachverhalt:
Wie beschrieben kommt es auf die Flankensteilheit der Impulse an. Die klassische Freilaufdiode hat einen relativ langsamen Stromabbau zur Folge, da sie nur etwa 0,7V Spannungsabfall aufweist. Die gezeigte Schaltung liefert einen erheblich schnelleren Stromabbau (und damit eine höhere Induktionsspannung), da die volle Durchbruchspannung des MOSFET (bzw. Suppressor-Diode) wirksam ist.

Gruß H.A.R.R.Y.

MichaelM
10.08.2009, 20:35
Hallo,
von Inversdiode steht auch nichts in dem Artikel, dort steht lediglich "...Hierfür reicht in der Regel die im MOSFET bereits eingebaute Diode.". Diese Diode ist keine "normale" Diode, sondern ein Z-Diode, deren Anode an Source und die Kathode mit Drain verbunden ist. Diese Diode ergibt sich bei einem Mosfet zwangsläufig, bei allen "modernen" Mosfets hat man dieses Schmankerl auch gleich (etwa) so stark wie den Mosfet selbst ausgelegt. Diese Typen schimpfen sich dann Avalance-Proof, im Datenblatt stehen die entsprechenden Werte. Die in der Spule gespeicherte Energie wird an dieser Z-Diode in Wärme umgesetzt und heizt das Bauteil auf. Der entscheidende Punkt ist nun die Leistung im Impuls so klein zu halten, dass der Chip nicht schmilzt und im Mittel so klein, dass das Bauteil nicht überhitzt. Bei unseren Aufbauten wird der Mosfet nicht über etwa 50°C warm (ohne Kühlblech), also keine Gefahr.
Gruß,
Michael

Besserwessi
10.08.2009, 21:16
Es ist ziehmlich gewagt, für die Eigenschaft Avalance-Proof die "Diode" im Mosfet verantwortlich zu machen. Die Diode ist ein Teil des MOSFETS und kein extra Teil. Es ist also der MOSFET als ganzes der die Induktionsspannung begrenzt und die Pulsenergie Aufnehmen kann. In gewisser Weise hat der MOSFET damit schon die Funktion einer Suppressordiode, nur halt ohne die recht große Kapazität die solche Suppressordioden üblicherweise haben.

So sehr wichtig ist die Flankensteikheit nicht. Eine Relaisspule als Empfänger kann duch den Eisenkern gar nicht so schnell auf ein sich änderndes Feld reagieren. Wenn es zu schnell geht, sorgen Wirbelströme im Eisen dafür das der Puls ohnehin auf Größenordnungsmäßig 0.1 ms gedehnt wird. Idealerweise sollte das Umschalten auch etwa so lange dauern, um möglicht wenig Funkstörungen zu produzieren. Allerdings vergrößert das die Verlustleistung am MOSFET etwas.
Je nach Induktivität und Widerstand der Spule kann dann auch die Freilaufdiode wieder Sinnvoll werden.

H.A.R.R.Y.
11.08.2009, 06:36
Ist durchaus richtig von Zener-Diode zu reden - bei einigen Datenblättern ist die Inversdiode als Zenerdiode dargestellt. Aber das Symbol hat nichts damit zu tun, daß da eine extra Z-Diode "dazugegeben" wurde. Da hat Bersserwessi schon recht. Genauer gesagt sind es parasitäre Strukturen des MOSFETs, die diese normalerweise unerwünschte Funktion darstellen.

Der entscheidende Punkt dürfte sein, daß die im Spulenfeld eingespeicherte Energie nicht ausreicht den MOSFET zu zerstören. Den Strom führt er auch im Abschaltfall sicher. Sicherlich wird die Impulsenergie an der durchbrechenden Strecke verheizt und erwärmt den Chip. Noch kritischer ist aber die Spannungsspitze und der steile Gradient. Leistungs-MOSFETS für primärseitige Schaltnetzteilanwendungen sind hier sicher angebracht, oder?

Mal was anderes zum Thema Spannungsspitzen:
Wie sieht es mit Blitzeinschlägen in der Nähe der Schleife aus? Überlebt das der Impulsgenerator? Gibt es da Erfahrungswerte?

Gruß H.A.R.R.Y.

MichaelM
11.08.2009, 15:46
Hallo,
natürlich ist die Diode kein extra Bauteil im Mosfet, ich schrieb ja, dass man sie durch die Chipstruktur quasi "geschenkt" bekommt.

Mit Blitzeinschlägen hatte ich bisher noch keine negativen Erfahrungen, d. h. ich warte noch auf den ersten Ausfall. Bisher gab es bei uns schon mehrere Gewitter. Ich ziehe aber vorsorglich immer den Netzstecker des Ladegeräts aus der Steckdose, um Einkopplungen ins Hausnetz zu vermeiden. Wenn das Ladegerät und der Schleifengenerator kaputt gehen ist das nicht so schlimm, aber um alle anderen Geräte im Haus wäre es schade. Außerdem parkt der Rasenmäher nicht in der Ladestation (ist auch ein Diebstahlproblem), sondern in der Garage. Wenn ein Blitz nur wenige Meter neben der Schleife einschlägt wird die Schleife nebst Elektronik wahrscheinlich hinüber sein. Interessant wäre jetzt die Definition von "[...] nur wenige Meter [...]"...

Gruß,
Michael

Besserwessi
11.08.2009, 16:40
Wenn der Blitz in etwa 10-100 m Umkreis einschlägt hat man vermutlich schon duch die Elektrische Kopplung Probleme und dafür ist es auch sinnvoll den Stecker zu ziehen. Bei einem Einschlag bis etwa 1 km, oder auch nur einem Wolke-Wolke Blitz in der direkten Umgebeung besteht die Gefahr das die Sendespule sich eine hohe Induktionsspannung einfängt und den Generator zerstört.
So oft kommt das aber nicht vor, und da man die Schaltung ja kennt sollte die Reperatur auch nicht so schlimm sein. Sockel für die ICs sollte bei solchen Schaltungen ohnehin selbstverständlich sein.

Richard
11.08.2009, 18:49
Moin moin.

Ich habe zwei echte Blitzeinschläge kennengelernt, den einen
sogar aus ca. 25 m Entferhrnung bei offener Terrrassentür
bewundern dürfen.

Dort war ein Blitz in einen Baum eingeschlagen und dann
unten vom Baum in einen Betonzaunpfahl (mit Eisenbewährung
drinne) gewechselt. Neben dem Zaunpfahl verliefen unterirdisch
die Sromversorgungsleitungen einiger Häuser.

Vom Zaunpfahl sind nur die Bewärungseisen geblieben, der Beton
war wech...Die Stromversorgung natürlich auch.

Im 2. Fall Biltz > Baum > Hauswand. Das war ein Bankfialneubau
mit noch nicht voll ausgetrockneten Wänden......Da hat es um die
Stomleitungen herum den Putz von den Wänden geholt. Alle
Leitungen, Steckdosen u.s.w. lagen im Umkreis von ca. 40 cm frei.
Da IBM die AKT`s, Kassen und EDV genau wie wier die
Sicherheitstechnik am Tag vorher dem Kunden übergeben hatten
war das ein sehr schwarzer Tag für die Versicherung.

Wenn so ein Blitz unmittelbar in so eine Inducktionsschleife
schlägt, gräbt der dieselbe extrem schnell aus!

Das wird auch ähnlich technisch genutzt, wenn Erdkabel eine
Beschädigung haben und der genaue Ort nicht geortet werden
kann. Ordentlich Spannung auf die Leitung und die Gehwegplatten
über dem Erdschluss fliegen gut einen 1/2 m hoch. :-) Durfte ich mal bewundern, viel Graben um ne neue Muffe zu setzen, mußten die
Männer nicht mehr!

Gruß Richard

Besserwessi
11.08.2009, 20:01
Fehler in Kabeln lassen sich recht gut lokalisieren. Wenns nicht zu lang ist, über die Kapazität: Wenn man das Kabel nicht kennt, sind 100 pF je Meter ein überraschend guter Wert.
Alternativ, vor allem für längere Kabel geht das auch über die Laufzeit von Reflexionen einen HF Signals. Da kann man sogar schon Fehler Erkennen die sonst noch nicht stören.

sigo
11.08.2009, 20:08
Joah, für die Laufzeitmessung reicht ein normaler Rechteck- oder Impulsgenerator plus 2-Kanal-Oszi schon aus.

Sigo

Richard
12.08.2009, 05:52
Moin moin,

So ein Gerät haben wir in der 4ma, damit machen wir
das Kabel Aufmaß.

Beide Arten eignen sich allerdings besser zur Kablelängen
Messung. Das Kabel müßte an der Schadensstelle also
idialerweise voll durchtrennt sein. Bei einen z.B. Riss und
Fehlerstrom durch Feuchtigkeit wird das schwieriger. Da
ist es oft besser das Kabel an der Schadensstelle durch
Überspannung voll zu kappen und danach die Länge bis
zum "Bruch" zu messen.

Gruß Richard

stripmower
20.11.2009, 11:16
ich hab mch mal durch den thread hier gewühlt und bin begeistert, wie zuverlässig eure induktionsschleife funktioniert.

ich habe eine frage an euch, die an verschiedenen stellen immer wieder auftaucht, die ich mir aber nicht erklären kann:

welche rolle spielt die hangneigung für die funktion einer induktionschleife?

lassen sich auch flächen mit annähernd 100% steigung mit einer iduktionschleife begrenzen?

viele grüße
dude

Christian H
25.05.2010, 08:27
Hallo an alle Roboterbastler, mit einem speziellen Gruß an die Rasenmähroboterbauer,

nach längerer Abstinenz mit eigenen Beiträgen (ich schau aber fast täglich ins Forum) möchte ich mal meinen Rasenrobo wieder vorführen. Er ist noch immer, etwa 1 mal pro Woche, im Einsatz, dann natürlich ohne Telemetrie. Für das Video wollte ich aber nicht auf die Telemetrie verzichten.

http://www.youtube.com/watch?v=rW3eaOzx1Oc

Die aufgezeichnete Strecke basiert nur auf Odometrie. Die Bahn des Rasenrobo driftet deshalb nach einiger Zeit aus dem Bild. Die Positionsbestimmung mit Ultraschall ist mir auf Dauer zu aufwendig, war zu Beginn aber eine schöne Spielerei. Hierüber findet sich einiges in dem thread
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=49174&highlight=
screenshot2.jpg zeigt die Bahn des Rasenrobo mit US-Lokalisation.



Viele Grüße

Chrisitian

Christian H
08.05.2011, 21:10
Hallo
vor Kurzem habe ich meinen Rasenrobo nach der Winterpause wieder in Betrieb genommen und gebe deshalb mal eine kurze Statusmeldung ab. Den Akku und beide Motoren habe ich ausgetausch. Einer der Motoren (RB35) ist zum Schluss heiß gelaufen. Den Betrieb mit 12 Zellen hat er mir nach 3 Jahren übel genommen. Die neuen Motoren sind 540er mit 810:1 Untersetzung (Conrad). Die haben allerdings mehr Strom gezogen als die RB35 weshalb der Motortreiben von dem RN-Board gegrillt wurde. Nach Austausch vom Motortreiber und Anpassen der PWM im Programm verrichtet der Rasenrobo wieder seine Gartenarbeit wie gewohnt. Mit den neuen Akkus werkelt er 1 Stunde und 50 min.
Zur Ortung des Rasenrobo habe ich schon diverse Versuch mit US und IR gemacht. War alles nicht so der Hit. Deshalb ein neuer Versuch mit Bilderkennung: Der Rasenrobo hat eine rote Markierung bekommen. Die webcam ist am Fenster im 2. Stock befestigt und erfaßt leider nicht den ganzen Garten. Das Programm ist mit VB6 geschrieben. Das Bild hat eine Matrix von 320 x 160. Die Auswertung pro Bild dauert nur 0,05 sec. Grob gesagt wird ein Fleck mit dem höchsten Rotanteil gesucht. Zum Ausschluss falscher Messungen werden nur Werte akzeptiert falls 10 aufeinanderfolgende Messungen alle unmittelbar benachbart sind.

Nach etwa 10 Minuten:
http://www.rasenrobo.de/rasenrobo1.jpg

Nach etwa 1 Stunde:
http://www.rasenrobo.de/rasenrobo2.jpg
Die Aufnahmen stammen von heute Abend. Zum Schluss ist´s zu Dunkel geworden. Immer wenn der Robo ausserhalb vom Bild ist, werden gelegentlich rote Punkte markiert die nicht zum Robo gehören. Deshalb die grünen Flecken im Teich (die Goldfische) oder in der Ecke rechts oben.

Das Programm für Interessierte (insb. VB6-Nostalgiker):


Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Dim fs
Dim rot As Integer, grün As Integer, blau As Integer, farbealt, rotalt As Byte, grünalt As Byte, blaualt As Byte
Dim starti, startj, endi, endj, am As String, amh As String, j As Integer, jj As Long
Dim ErgebnisIR As Long, a As Picture, b As Picture, c As Picture, groesse As RECT
Dim pointert As Long, smax As Integer, xmax As Integer, ymax As Integer, xmaxalt As Integer, ymaxalt As Integer, mousex As Integer, mousey As Integer, Letztesx(10), Letztesy(10), letzter
Dim Bmp As strucBITMAP ' Struktur für die Bitmap-Rahmenangaben ' des geladenen Bildes
Dim gSafearray As strucSAFEARRAY
Dim Pic() As Integer, i As Integer, k As Integer, ii As Integer, kk As Integer
Private Declare Function VarPtrArray Lib "msvbvm60.dll" _
Alias "VarPtr" ( _
Ptr() As Any) As Long
Private Declare Function GetObject Lib "gdi32" _
Alias "GetObjectA" ( _
ByVal hObject As Long, _
ByVal nCount As Long, _
lpObject As Any) As Long
' Informationsblock der Array-Dimensionierung bei VB6
Private Type strucSAFEARRAY
Dimensionen As Integer ' Zahl der Array-Dimensionen
Features As Integer ' spezielle Array-Eigenschaften
Elemente As Long ' Angabe zum einz. Arrayfeld
Locks As Long ' Sperrvermerke
DatenZeiger As Long ' Zeiger: Speicher-Start der Arraydaten
Elements1 As Long ' Anzahl Elemente in 1.Dimension
lBound1 As Long ' Arrayuntergrenze 1. Dimension
Elements2 As Long ' s.o.
lBound2 As Long
End Type
Private Type strucBITMAP
Type As Long
PixelWidth As Long ' Bildbreite (Pixel)
PixelHeight As Long ' Bildhöhe (Pixel)
BytesWidth As Long ' Breite (in Byte; bei 24 Bit-Bitmap 3 Byte/Pixel)
Planes As Integer
BitsPerPixel As Integer ' Prog unterstützt nur 24 Bits/Pixe
BitZeiger As Long ' Zeiger auf die Bilddaten
End Type
Private Sub Command1_Click()
xmaxalt = 0: ymaxalt = 0
If Command1.Caption = "Start" Then
Command1.Caption = "Stop": Open "C:\efilm\roboter2.dat" For Append As #1: Print #1, Command1.Caption
Else
Command1.Caption = "Start": Close #1
End If
End Sub
Private Sub Form_Load()
Set fs = CreateObject("Scripting.FileSystemObject")
On Error Resume Next 'Don't stop execution, continue on next line
' WebBrowser1.Navigate2 "http:\\www.t-online.de"
WebBrowser1.Navigate2 "http://192.168.1.20/img/main.cgi?next_file=main.htm"
If Err.Number <> 0 Then MsgBox "Error :" & Err.Description 'Display error message
Timer1.Interval = 50: Timer1.Enabled = True
Picture1.Visible = False
End Sub
Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
mousex = x: mousey = Y
End Sub
Private Sub Timer1_Timer()

Bildanalyse
End Sub
Sub Bildanalyse()
t = Timer
ErgebnisIR = FindWindow(0&, "Form1")
DoEvents: ' On Error Resume Next
Set a = CaptureWindow(ErgebnisIR, False, 5, 25, 500, 330)
SavePicture a, "C:\zwischen.bmp": Set a = LoadPicture("C:\zwischen.bmp")
If Command1.Caption = "Start" Then Set Picture2.Picture = a ' Clipboard.GetData(2) ' b
Call GetObject(a, Len(Bmp), Bmp)
With gSafearray
.Elemente = 2 'für integer
.Dimensionen = 2 ' 2-dimensionales Array
.lBound1 = 0
.Elements1 = Bmp.PixelHeight ' Bildhöhe in Pixel
.lBound2 = 0
.Elements2 = Bmp.BytesWidth / 2 ' Bildbreite in Byte !!!
.DatenZeiger = Bmp.BitZeiger ' Zeiger auf die Bilddaten
End With
' Overlay-Array für Bildzugriff
Call CopyMemory(ByVal VarPtrArray(Pic), VarPtr(gSafearray), 4)

Dim S1(600, 600) As Integer, s2(600, 600) As Integer, S3(600, 600) As Integer, S4(600, 600) As Integer, S5(600, 600) As Integer
smax = 0
On Error Resume Next
For k = 0 To UBound(Pic, 2): For i = 0 To UBound(Pic, 1)
rot = Int(Pic(i, k) / &H400): blau = Pic(i, k) And &H1F: grün = Int(Pic(i, k) / &H20) And &H1F
If mousex = i And mousey = UBound(Pic, 2) - k Then
Text1.Text = mousex & vbTab & mousey: Text3.Text = rot: Text4.Text = blau: Text5.Text = grün
End If
If rot <= blau + 2 Or rot <= grün + 2 Then
S5(i, k) = 0
Else
S5(i, k) = rot - (blau + grün) / 2
End If
Next i: Next k
For k = 0 To UBound(Pic, 2): For i = 0 To UBound(Pic, 1)
If S5(i, k) > 0 Then
S1(i, k) = S5(i, k) + (S1(i - 1, k) + S1(i, k - 1)) / 9 * 4
ii = UBound(Pic, 1) - i: kk = UBound(Pic, 2) - k:
s2(ii, kk) = S5(ii, kk) + (s2(ii + 1, kk) + s2(ii, kk + 1)) / 9 * 4
S3(i, kk) = S5(i, kk) + (S3(i - 1, kk) + S3(i, kk + 1)) / 9 * 4
S4(ii, k) = S5(ii, k) + (S4(ii + 1, k) + S4(ii, k - 1)) / 9 * 4
End If
Next i: Next k
For k = 0 To UBound(Pic, 2): For i = 0 To UBound(Pic, 1)
If S5(i, k) > 0 Then
S1(i, k) = S1(i, k) + s2(i, k) + S3(i, k) + S4(i, k)
If smax < S1(i, k) Then smax = S1(i, k): xmax = i: ymax = k
End If
Next i: Next k
ymax = UBound(Pic, 2) - ymax
Text2 = Timer - t & vbTab & xmax & vbTab & ymax: Text2.Refresh
Call CopyMemory(ByVal VarPtrArray(Pic), 0&, 4)
Picture2.FillColor = vbGreen: Picture2.FillStyle = vbFSSolid
Picture2.Circle (xmax, ymax), 1, vbGreen
letzter = letzter + 1: letzter = letzter Mod 10
Letztesx(letzter) = xmax: Letztesy(letzter) = ymax:
For i = 1 To 9: deltax = Abs(Letztesx(i) - Letztesx(0)): deltay = Abs(Letztesy(i) - Letztesy(0))
If deltax > 25 Or deltay > 25 Then i = 25:
Next
If i < 20 And xmaxalt > 0 And ymaxalt > 0 And Command1.Caption = "Stop" Then
Picture2.Line (xmax, ymax)-(xmaxalt, ymaxalt), vbGreen
Print #1, xmax, ymax
End If
If xmax > 0 And ymax > 0 Then xmaxalt = xmax: ymaxalt = ymax
End Sub



So, jetzt gut Nacht
Christian

Christian H
08.05.2011, 21:25
Zu dem Programm gehört noch ein
Modul1 Bildschirmanalyse


Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags_ As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const conHwndTopmost = -1: Const conHwndNoTopmost = -2: Const conSwpNoActivate = &H30: Const conSwpShowWindow = &H40
Dim flag, lParam, s As String, erg As String, f
Public hwnd2, s2, zeiger
Public Const SW_SHOWNORMAL = 1, SW_SHOWMAXIMIZED = 3
Dim namealt, efilmPatientenID As String
Const WM_CLOSE = &H10
Const WM_MBUTTONDBLCLK = &H209
Const WM_ACTIVATE = &H6
Const WM_DDE_FIRST = &H3E0
Const WM_DDE_TERMINATE = (WM_DDE_FIRST + 1)
Const WM_DESTROY = &H2
Const WM_MBUTTONDOWN = &H207
Const WM_MBUTTONUP = &H208
Public Const WM_QUIT = &H12
Public Const WM_QUERYOPEN = &H13
Public Const WM_QUERYENDSESSION = &H11


Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long
'Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_MOVE = &H1
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_RIGHTDOWN = &H8
Public Const MOUSEEVENTF_RIGHTUP = &H10
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20
Public Const MOUSEEVENTF_MIDDLEUP = &H40
Public Const MOUSEEVENTF_WHEEL = &H800
Public Const MOUSEEVENTF_ABSOLUTE = &H8000
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

' This module contains several routines for capturing windows into a
' picture. All the routines work on both 16 and 32 bit Windows
' platforms.
' The routines also have palette support.
'
' CreateBitmapPicture - Creates a picture object from a bitmap and
' palette.
' CaptureWindow - Captures any window given a window handle.
' CaptureActiveWindow - Captures the active window on the desktop.
' CaptureForm - Captures the entire form.
' CaptureClient - Captures the client area of a form.
' CaptureScreen - Captures the entire screen.
' PrintPictureToFitPage - prints any picture as big as possible on
' the page.
'
' NOTES
' - No error trapping is included in these routines.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''


Option Explicit
Option Base 0
Private Type PALETTEENTRY
peRed As Byte
peGreen As Byte
peBlue As Byte
peFlags As Byte
End Type
Private Type LOGPALETTE
palVersion As Integer
palNumEntries As Integer
palPalEntry(255) As PALETTEENTRY ' Enough for 256 colors.
End Type
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
#If Win32 Then
Private Const RASTERCAPS As Long = 38
Private Const RC_PALETTE As Long = &H100
Private Const SIZEPALETTE As Long = 104
'
' Private Type RECT
' Left As Long
' Top As Long
' Right As Long
' Bottom As Long
' End Type
Private Declare Function CreateCompatibleDC Lib "gdi32" ( _
ByVal hDC As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" ( _
ByVal hDC As Long, ByVal nWidth As Long, _
ByVal nHeight As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" ( _
ByVal hDC As Long, ByVal iCapabilitiy As Long) As Long
Private Declare Function GetSystemPaletteEntries Lib "gdi32" ( _
ByVal hDC As Long, ByVal wStartIndex As Long, _
ByVal wNumEntries As Long, lpPaletteEntries As PALETTEENTRY) _
As Long
Private Declare Function CreatePalette Lib "gdi32" ( _
lpLogPalette As LOGPALETTE) As Long
Private Declare Function SelectObject Lib "gdi32" ( _
ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Function BitBlt Lib "gdi32" ( _
ByVal hDCDest As Long, ByVal XDest As Long, _
ByVal YDest As Long, ByVal nWidth As Long, _
ByVal nHeight As Long, ByVal hDCSrc As Long, _
ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) _
As Long
Private Declare Function DeleteDC Lib "gdi32" ( _
ByVal hDC As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () _
As Long
Private Declare Function SelectPalette Lib "gdi32" ( _
ByVal hDC As Long, ByVal hPalette As Long, _
ByVal bForceBackground As Long) As Long
Private Declare Function RealizePalette Lib "gdi32" ( _
ByVal hDC As Long) As Long
Private Declare Function GetWindowDC Lib "user32" ( _
ByVal hwnd As Long) As Long
Private Declare Function GetDC Lib "user32" ( _
ByVal hwnd As Long) As Long
' Private Declare Function GetWindowRect Lib "user32" ( _
' ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function ReleaseDC Lib "user32" ( _
ByVal hwnd As Long, ByVal hDC As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Type PicBmp
Size As Long
Type As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type
Private Declare Function OleCreatePictureIndirect _
Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
#ElseIf Win16 Then
Private Const RASTERCAPS As Integer = 38
Private Const RC_PALETTE As Integer = &H100
Private Const SIZEPALETTE As Integer = 104
Private Type RECT
Left As Integer
Top As Integer
Right As Integer
Bottom As Integer
End Type
Private Declare Function CreateCompatibleDC Lib "GDI" ( _
ByVal hDC As Integer) As Integer
Private Declare Function CreateCompatibleBitmap Lib "GDI" ( _
ByVal hDC As Integer, ByVal nWidth As Integer, _
ByVal nHeight As Integer) As Integer
Private Declare Function GetDeviceCaps Lib "GDI" ( _
ByVal hDC As Integer, ByVal iCapabilitiy As Integer) As Integer
Private Declare Function GetSystemPaletteEntries Lib "GDI" ( _
ByVal hDC As Integer, ByVal wStartIndex As Integer, _
ByVal wNumEntries As Integer, _
lpPaletteEntries As PALETTEENTRY) As Integer
Private Declare Function CreatePalette Lib "GDI" ( _
lpLogPalette As LOGPALETTE) As Integer
Private Declare Function SelectObject Lib "GDI" ( _
ByVal hDC As Integer, ByVal hObject As Integer) As Integer
Private Declare Function BitBlt Lib "GDI" ( _
ByVal hDCDest As Integer, ByVal XDest As Integer, _
ByVal YDest As Integer, ByVal nWidth As Integer, _
ByVal nHeight As Integer, ByVal hDCSrc As Integer, _
ByVal XSrc As Integer, ByVal YSrc As Integer, _
ByVal dwRop As Long) As Integer
Private Declare Function DeleteDC Lib "GDI" ( _
ByVal hDC As Integer) As Integer
Private Declare Function GetForegroundWindow Lib "USER" _
Alias "GetActiveWindow" () As Integer
Private Declare Function SelectPalette Lib "USER" ( _
ByVal hDC As Integer, ByVal hPalette As Integer, ByVal _
bForceBackground As Integer) As Integer
Private Declare Function RealizePalette Lib "USER" ( _
ByVal hDC As Integer) As Integer
Private Declare Function GetWindowDC Lib "USER" ( _
ByVal hwnd As Integer) As Integer
Private Declare Function GetDC Lib "USER" ( _
ByVal hwnd As Integer) As Integer
Private Declare Function GetWindowRect Lib "USER" ( _
ByVal hwnd As Integer, lpRect As RECT) As Integer
Private Declare Function ReleaseDC Lib "USER" ( _
ByVal hwnd As Integer, ByVal hDC As Integer) As Integer
Private Declare Function GetDesktopWindow Lib "USER" () As Integer
Private Type PicBmp
Size As Integer
Type As Integer
hBmp As Integer
hPal As Integer
Reserved As Integer
End Type
Private Declare Function OleCreatePictureIndirect _
Lib "oc25.dll" (PictDesc As PicBmp, RefIID As GUID, _
ByVal fPictureOwnsHandle As Integer, IPic As IPicture) _
As Integer
#End If
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
' CreateBitmapPicture
' - Creates a bitmap type Picture object from a bitmap and
' palette.
'
' hBmp
' - Handle to a bitmap.
'
' hPal
' - Handle to a Palette.
' - Can be null if the bitmap doesn't use a palette.
'
' Returns
' - Returns a Picture object containing the bitmap.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
#If Win32 Then
Public Function CreateBitmapPicture(ByVal hBmp As Long, _
ByVal hPal As Long) As Picture
Dim r As Long
#ElseIf Win16 Then
Public Function CreateBitmapPicture(ByVal hBmp As Integer, _
ByVal hPal As Integer) As Picture
Dim r As Integer
#End If
Dim Pic As PicBmp
' IPicture requires a reference to "Standard OLE Types."
Dim IPic As IPicture
Dim IID_IDispatch As GUID
' Fill in with IDispatch Interface ID.
With IID_IDispatch
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With
' Fill Pic with necessary parts.
With Pic
.Size = Len(Pic) ' Length of structure.
.Type = vbPicTypeBitmap ' Type of Picture (bitmap).
.hBmp = hBmp ' Handle to bitmap.
.hPal = hPal ' Handle to palette (may be null).
End With
' Create Picture object.
r = OleCreatePictureIndirect(Pic, IID_IDispatch, 1, IPic)
' Return the new Picture object.
Set CreateBitmapPicture = IPic
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
' CaptureWindow
' - Captures any portion of a window.
'
' hWndSrc
' - Handle to the window to be captured.
'
' Client
' - If True CaptureWindow captures from the client area of the
' window.
' - If False CaptureWindow captures from the entire window.
'
' LeftSrc, TopSrc, WidthSrc, HeightSrc
' - Specify the portion of the window to capture.
' - Dimensions need to be specified in pixels.
'
' Returns
' - Returns a Picture object containing a bitmap of the specified
' portion of the window that was captured.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
''''''
'
#If Win32 Then
Public Function CaptureWindow(ByVal hWndSrc As Long, _
ByVal Client As Boolean, ByVal LeftSrc As Long, _
ByVal TopSrc As Long, ByVal WidthSrc As Long, _
ByVal HeightSrc As Long) As Picture
Dim hDCMemory As Long
Dim hBmp As Long
Dim hBmpPrev As Long
Dim r As Long
Dim hDCSrc As Long
Dim hPal As Long
Dim hPalPrev As Long
Dim RasterCapsScrn As Long
Dim HasPaletteScrn As Long
Dim PaletteSizeScrn As Long
#ElseIf Win16 Then
Public Function CaptureWindow(ByVal hWndSrc As Integer, _
ByVal Client As Boolean, ByVal LeftSrc As Integer, _
ByVal TopSrc As Integer, ByVal WidthSrc As Long, _
ByVal HeightSrc As Long) As Picture
Dim hDCMemory As Integer
Dim hBmp As Integer
Dim hBmpPrev As Integer
Dim r As Integer
Dim hDCSrc As Integer
Dim hPal As Integer
Dim hPalPrev As Integer
Dim RasterCapsScrn As Integer
Dim HasPaletteScrn As Integer
Dim PaletteSizeScrn As Integer
#End If
Dim LogPal As LOGPALETTE
' Depending on the value of Client get the proper device context.
If Client Then
hDCSrc = GetDC(hWndSrc) ' Get device context for client area.
Else
hDCSrc = GetWindowDC(hWndSrc) ' Get device context for entire
' window.
End If
' Create a memory device context for the copy process.
hDCMemory = CreateCompatibleDC(hDCSrc)
' Create a bitmap and place it in the memory DC.
hBmp = CreateCompatibleBitmap(hDCSrc, WidthSrc, HeightSrc)
hBmpPrev = SelectObject(hDCMemory, hBmp)
' Get screen properties.
RasterCapsScrn = GetDeviceCaps(hDCSrc, RASTERCAPS) ' Raster
' capabilities.
HasPaletteScrn = RasterCapsScrn And RC_PALETTE ' Palette
' support.
PaletteSizeScrn = GetDeviceCaps(hDCSrc, SIZEPALETTE) ' Size of
' palette.
' If the screen has a palette make a copy and realize it.
If HasPaletteScrn And (PaletteSizeScrn = 256) Then
' Create a copy of the system palette.
LogPal.palVersion = &H300
LogPal.palNumEntries = 256
r = GetSystemPaletteEntries(hDCSrc, 0, 256, _
LogPal.palPalEntry(0))
hPal = CreatePalette(LogPal)
' Select the new palette into the memory DC and realize it.
hPalPrev = SelectPalette(hDCMemory, hPal, 0)
r = RealizePalette(hDCMemory)
End If
' Copy the on-screen image into the memory DC.
r = BitBlt(hDCMemory, 0, 0, WidthSrc, HeightSrc, hDCSrc, _
LeftSrc, TopSrc, vbSrcCopy)
' Remove the new copy of the on-screen image.
hBmp = SelectObject(hDCMemory, hBmpPrev)
' If the screen has a palette get back the palette that was
' selected in previously.
If HasPaletteScrn And (PaletteSizeScrn = 256) Then
hPal = SelectPalette(hDCMemory, hPalPrev, 0)
End If
zeiger = hBmpPrev
' Release the device context resources back to the system.
r = DeleteDC(hDCMemory)
r = ReleaseDC(hWndSrc, hDCSrc)
' Call CreateBitmapPicture to create a picture object from the
' bitmap and palette handles. Then return the resulting picture
' object.
Set CaptureWindow = CreateBitmapPicture(hBmp, hPal)
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
' CaptureScreen
' - Captures the entire screen.
'
' Returns
' - Returns a Picture object containing a bitmap of the screen.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
Public Function CaptureScreen() As Picture
#If Win32 Then
Dim hWndScreen As Long
#ElseIf Win16 Then
Dim hWndScreen As Integer
#End If
' Get a handle to the desktop window.
hWndScreen = GetDesktopWindow()
' Call CaptureWindow to capture the entire desktop give the handle
' and return the resulting Picture object.
Set CaptureScreen = CaptureWindow(hWndScreen, False, 0, 0, _
Screen.Width \ Screen.TwipsPerPixelX, _
Screen.Height \ Screen.TwipsPerPixelY)
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
' CaptureForm
' - Captures an entire form including title bar and border.
'
' frmSrc
' - The Form object to capture.
'
' Returns
' - Returns a Picture object containing a bitmap of the entire
' form.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
Public Function CaptureForm(frmSrc As Form) As Picture
' Call CaptureWindow to capture the entire form given its window
' handle and then return the resulting Picture object.
Set CaptureForm = CaptureWindow(frmSrc.hwnd, False, 0, 0, _
frmSrc.ScaleX(frmSrc.Width, vbTwips, vbPixels), _
frmSrc.ScaleY(frmSrc.Height, vbTwips, vbPixels))
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
' CaptureClient
' - Captures the client area of a form.
'
' frmSrc
' - The Form object to capture.
'
' Returns
' - Returns a Picture object containing a bitmap of the form's
' client area.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
Public Function CaptureClient(frmSrc As Form) As Picture
' Call CaptureWindow to capture the client area of the form given
' its window handle and return the resulting Picture object.
Set CaptureClient = CaptureWindow(frmSrc.hwnd, True, 0, 0, _
frmSrc.ScaleX(frmSrc.ScaleWidth, frmSrc.ScaleMode, vbPixels), _
frmSrc.ScaleY(frmSrc.ScaleHeight, frmSrc.ScaleMode, vbPixels))
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
' CaptureActiveWindow
' - Captures the currently active window on the screen.
'
' Returns
' - Returns a Picture object containing a bitmap of the active
' window.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
Public Function CaptureActiveWindow(ErgebnisIR As Long) As Picture
#If Win32 Then
Dim hWndActive As Long
Dim r As Long
#ElseIf Win16 Then
Dim hWndActive As Integer
Dim r As Integer
#End If
Dim RectActive As RECT
' Get a handle to the active/foreground window.
' oder handle = übergebener Parameter
hWndActive = GetForegroundWindow()
hWndActive = ErgebnisIR
' Get the dimensions of the window.
r = GetWindowRect(hWndActive, RectActive)
' Call CaptureWindow to capture the active window given its
' handle and return the Resulting Picture object.
Set CaptureActiveWindow = CaptureWindow(hWndActive, False, 0, 0, _
RectActive.Right - RectActive.Left, _
RectActive.Bottom - RectActive.Top)
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
' PrintPictureToFitPage
' - Prints a Picture object as big as possible.
'
' Prn
' - Destination Printer object.
'
' Pic
' - Source Picture object.
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
'
Public Sub PrintPictureToFitPage(Prn As Printer, Pic As Picture)
Const vbHiMetric As Integer = 8
Dim PicRatio As Double
Dim PrnWidth As Double
Dim PrnHeight As Double
Dim PrnRatio As Double
Dim PrnPicWidth As Double
Dim PrnPicHeight As Double
' Determine if picture should be printed in landscape or portrait
' and set the orientation.
If Pic.Height >= Pic.Width Then
Prn.Orientation = vbPRORPortrait ' Taller than wide.
Else
Prn.Orientation = vbPRORLandscape ' Wider than tall.
End If
' Calculate device independent Width-to-Height ratio for picture.
PicRatio = Pic.Width / Pic.Height
' Calculate the dimentions of the printable area in HiMetric.
PrnWidth = Prn.ScaleX(Prn.ScaleWidth, Prn.ScaleMode, vbHiMetric)
PrnHeight = Prn.ScaleY(Prn.ScaleHeight, Prn.ScaleMode, vbHiMetric)
' Calculate device independent Width to Height ratio for printer.
PrnRatio = PrnWidth / PrnHeight
' Scale the output to the printable area.
If PicRatio >= PrnRatio Then
' Scale picture to fit full width of printable area.
PrnPicWidth = Prn.ScaleX(PrnWidth, vbHiMetric, Prn.ScaleMode)
PrnPicHeight = Prn.ScaleY(PrnWidth / PicRatio, vbHiMetric, _
Prn.ScaleMode)
Else
' Scale picture to fit full height of printable area.
PrnPicHeight = Prn.ScaleY(PrnHeight, vbHiMetric, Prn.ScaleMode)
PrnPicWidth = Prn.ScaleX(PrnHeight * PicRatio, vbHiMetric, _
Prn.ScaleMode)
End If
' Print the picture using the PaintPicture method.
Prn.PaintPicture Pic, 0, 0, PrnPicWidth, PrnPicHeight
End Sub
'--------------------------------------------------------------------



Function EnumWndProc(ByVal hwnd As Long, lParam As Long) As Long
s = WindowTextFromWnd(hwnd)
If InStr(1, s, flag) > 0 Then
hwnd2 = hwnd
s2 = s
EnumWndProc = False
End If
EnumWndProc = True
End Function
Function schach(flag1)
Dim t
flag = flag1
On Error Resume Next
f = EnumWindows(AddressOf EnumWndProc, 5)
t = Timer: Do: DoEvents: Loop Until Timer > t + 0.5
schach = s2
End Function
Function WindowTextFromWnd(ByVal hwnd As Long) As String
Dim c As Integer
c = GetWindowTextLength(hwnd)
If c <= 0 Then Exit Function
s = String$(c, 0): c = GetWindowText(hwnd, s, c + 1)
WindowTextFromWnd = s
End Function


Christian H

homedom
16.05.2011, 22:23
Hallo,
auch ich bin seit langer Zeit mal wieder etwas an meinem Rasenmäher gesessen. Leider fehlt jedoch größtenteils die Zeit dafür. Zu deinem Ansatz wollte ich sagen, dass mir diese Idee letztlich auch durch den Kopf gegangen ist. Jedoch war mein Problem zum einen, dass eine Kamera nicht alle Bereiche abdeckt (mit mehreren wird das ganze sehr komplex) und zum anderen auch, dass durch die Perspektive der Kamera eine eindeutige Lokalisation schwierig ist. Meine Anliegen war nicht die Induktionsschleife zu ersetzen, sondern das Mähen effizienter zu gestalten. Was ich jedoch anders machen würde wäre, nicht eine farbliche Markierung, sondern eine Infrarotmarkierung zu verwenden. Mit zusätzlichem IR-Filter an der Kamera denke ich dass sich hier eine höhere Genauigkeit und niedrigere Störanfälligkeit erreichen lässt. Auch wenn die Umsetzung für mich im Moment zeitlich nicht machbar ist, werde ich dein Projekt mit Spannung verfolgen.

Gruß, homedom

Richard
17.05.2011, 06:25
Hallo,
auch ich bin seit langer Zeit mal wieder etwas an meinem Rasenmäher gesessen. Leider fehlt jedoch größtenteils die Zeit dafür. Zu deinem Ansatz wollte ich sagen, dass mir diese Idee letztlich auch durch den Kopf gegangen ist. Jedoch war mein Problem zum einen, dass eine Kamera nicht alle Bereiche abdeckt (mit mehreren wird das ganze sehr komplex) und zum anderen auch, dass durch die Perspektive der Kamera eine eindeutige Lokalisation schwierig ist. Meine Anliegen war nicht die Induktionsschleife zu ersetzen, sondern das Mähen effizienter zu gestalten. Was ich jedoch anders machen würde wäre, nicht eine farbliche Markierung, sondern eine Infrarotmarkierung zu verwenden. Mit zusätzlichem IR-Filter an der Kamera denke ich dass sich hier eine höhere Genauigkeit und niedrigere Störanfälligkeit erreichen lässt. Auch wenn die Umsetzung für mich im Moment zeitlich nicht machbar ist, werde ich dein Projekt mit Spannung verfolgen.

Gruß, homedom

Der erfassungs Bereich lässt sich mit einem super Weitwinkel erweitern, das verzerrte Bild kann per Software gerade "gerechnet" werden. Ich selber kann das leider nicht, aber die Jungs aus der Robo Fußball liega sehr gut da könnt ihr einmal Google an schmeißen. :-)

http://www.uni-koblenz.de/~maas/public/finalReport.pdf

Gruß Richard

Patzbo
17.05.2011, 21:52
was haltet ihr davon ?

http://a3.sphotos.ak.fbcdn.net/hphotos-ak-snc6/226362_210924972275195_100000730821422_674971_5671 055_n.jpg

http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=190534542687

homedom
24.05.2011, 19:35
Hallo patzbo, was sollen wir wovon halten? Von der Garage?!

Also heut wars bei mir mal wieder soweit, ich hab mal etwas weiter gebastelt an meinem Rasenmäher.
Leider ist mir schnell klar geworden, dass ich ein Problem mit der Abschirmung des Mähmotors habe.
Wenn dieser aus ist, springen alle Sensoren so an wie sie sollen. Sobald ich ihn aber anschalte, melden die
Sensoren nur noch, dass sich der Roboter außerhalb der Schleife befände auch wenn dies nicht der fall ist.
Hat da jemand eine Idee, wie sich das verhindern lässt? Habe mir schon die Vorschläge im Wissensbereich
durchgelesen, aber MU-Folie ist mir zu teuer und der Rest lässt sich nicht so einfach realisieren. Da ich noch
einen alten brushless Flugmotor habe werde ich den morgen mal ausprobieren. Weiß allerdings noch nicht ob
der stark genug ist, denn mit 3cm Durchmesser ist er sehr klein. Außerdem ziehen die ja bekanntlich eine Menge
Strom. Habt ihr noch eine andere Alternative?

gruß homedom

meddie
31.05.2011, 14:27
Was haltet ihr eigentlich davon eine Festplatte als Mähmotor herzunemmen? Ich habe heute bei Youtube ein Video angesehen. Der hat das so gemacht und es sieht sehr vielversprechend aus.

maxes
29.08.2011, 17:02
Hi,
vielen Dank erst mal für dieses super Forum. Es hat mir schon sehr oft weiter geholfen. Leider bin ich elektrotechnisch nicht so ganz so gut unterwegs, deshalb entschuldigt mein Unwissen.
Ich suche nach einer möglichst einfachen Möglichkeit ausschließlich einem Draht entlang zu fahren. Der Draht soll dauerhaft in der Erde vergraben werden. Das Ziel soll sein vordefinierte Reihen (durch den verlegten Draht) ab zu fahren vom Start bis zum Ziel.
* Welche Art von Sensor / Schleife verwende ich da am Besten?
* Wie lange kann der Draht maximal sein. In meinen Fall bräuchte ich schon mehrere (2-3) KM.
* Braucht man unbedingt ein Netzteil oder schaffen das auch Accus?
* Welche Art von Draht wird verlegt? Ist es ein einfacher Draht oder muss es ein doppelter Draht sein?
Hier noch eine kleine Zeichnung damit ihr besser versteht was ich meine:
19824
Vielen Dank für eure Hilfe.
Markus

Christian H
15.08.2012, 19:40
Hallo,

seit 2007 ist meine rasenrobo nun im Einsatz. Als letztes habe ich nochmal die Aufzeichnung seiner Route mit einer wlan-Camera verbessert. Anbei 3 Screenshots von heute nachmittag. Der erste kurz nach dem Start, der zweite nach getaner Arbeit, 1h und 45 min später. Das 3. Bild ist ein Ausschnitt kurz nach dem Start. Die Erkennung des rasenrobos ist ziemlich robust, z.B. sowohl im Schatten als auch direkten Sonnenschein. Programmiert ist die Bildverarbeitung mit Visual Basic 6. Rechts ist auf dem Screenshot das Programm mit dem die Telemetrie-Daten vom rasenrobo angezeigt werden (Spannung, Motorstrom, Drehzahl vom Rasenmähermotor, die 4 Schleifensensoren, Kurs, Kurssoll, Uhrzeit und graphisch die Fahrstecke vom rasenobo nach Odometrie(leider mit Drift)). Der rasenrobo wendet an der Begrenzungsschleife im wesentlichen nach dem Zufallsprinzip. Es ist aber auch möglich ihm ein bestimmtes Kurssoll vom Computer aus vorzugeben.

Für den den´s interessiert, der Code für die Auswertung der wlan-Camera. Das wesentliche findet sich in der Sub Bildanalyse:



Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type

Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Dim PicBits() As Byte, PicInfo As BITMAP, PicBits2() As Byte
Dim Cnt As Long, BytesPerLine As Long
Dim x As Long, Y As Long, M1 As Long
Dim rot As Integer, grün As Integer, blau As Integer, rotalt As Integer, grünalt As Integer, blaualt As Integer
Dim ErgebnisIR As Long
Dim smax As Integer, xmax As Integer, ymax As Integer, smin As Integer, xmin As Integer, ymin As Integer, xminalt As Integer, yminalt As Integer, xmaxalt As Integer, ymaxalt As Integer, mousex As Integer, mousey As Integer, xmitalt As Integer, ymitalt As Integer
Dim Pic(600, 600) As Integer, picalt(600, 600) As Integer, i As Integer, k As Integer, ii As Integer, kk As Integer
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

Private Sub Command1_Click()
Picture2.Cls
End Sub

Private Sub Command2_Click()
SavePicture Picture3.Image, "C:\efilm\picture" + Str(Int(Timer)) + ".bmp"
End Sub

Private Sub Command3_Click()
On Error Resume Next
Close #1: Open "C:\efilm\roboter2.txt" For Input As #2:
Do
Input #2, A$: i1 = InStr(A$, vbTab): xmit = Left(A$, i1 - 1): ymit = Mid(A$, i1 + 1)
If i1 > 0 And xmit > 0 And ymit > 0 Then
If Abs(ymit - ymitalt) < 10 And Abs(xmit - xmitalt) < 10 Then
Picture2.Circle (xmit, ymit), 1, vbGreen
Picture2.Line (xmit, ymit)-(xmitalt, ymitalt), vbGreen
End If: xmitalt = xmit: ymitalt = ymit
End If
Loop Until EOF(2): Close #2: Open "C:\efilm\roboter2.txt" For Append As #1: Print #1, "Start" & Date
End Sub

Private Sub Command4_Click()
If MsgBox("Löschen?", vbOKCance) = vbOK Then Close: Kill ("C:\efilm\roboter2.txt")
Open "C:\efilm\roboter2.txt" For Append As #1: Print #1, "Start" & Date
End Sub

Private Sub Form_Load()
Set fs = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
'WebBrowser1.Navigate2 "http:\\www.t-online.de"
WebBrowser1.Navigate2 "http://192.168.1.20/img/main.cgi?next_file=main.htm"
GetObject Picture1.Image, Len(PicInfo), PicInfo
BytesPerLine = (PicInfo.bmWidth * 2 + 3) And &HFFFFFFFC
ReDim PicBits(1 To BytesPerLine * PicInfo.bmHeight) As Byte
ReDim PicBits2(1 To UBound(PicBits)) As Byte
Picture2.FillColor = vbGreen: Picture2.FillStyle = vbFSSolid
Open "C:\efilm\roboter2.txt" For Append As #1: Print #1, "Start" & Date
If Err.Number <> 0 Then MsgBox "Error :" & Err.Description 'Display error message
Timer1.Interval = 200: Timer1.Enabled = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub

Private Sub Picture3_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
mousex = x: mousey = Y
End Sub

Private Sub Timer1_Timer()
Bildanalyse
End Sub

Sub Bildanalyse()
t = Timer: DoEvents
ErgebnisIR = FindWindow(0&, "Form2")
Set Picture1.Picture = CaptureWindow(ErgebnisIR, False, 5, 25, 500, 330)
GetBitmapBits Picture1.Image, UBound(PicBits), PicBits(1)
Dim S1(600, 600) As Integer, s2(600, 600) As Integer, S3(600, 600) As Integer, S4(600, 600) As Integer, S5(600, 600) As Integer
smax = 0: xmax = 1: ymax = 1: smin = 0: xmin = 1: ymin = 1: xmit = -1: ymit = -1
On Error Resume Next

For k = 0 To PicInfo.bmHeight - 1: For i = 0 To (PicInfo.bmWidth - 1)
blau = PicBits((k * (PicInfo.bmWidth) + i) * 2 + 1) And 31 ' 1+2+4+8+16
rot = Int(PicBits((k * (PicInfo.bmWidth) + i) * 2 + 2) / 8) '128+64+32+16+8
grün = (PicBits((k * (PicInfo.bmWidth) + i) * 2 + 2) And 7) * 4 + Int(PicBits((k * (PicInfo.bmWidth) + i) * 2 + 1) / 64) '1+2+4+128+64
rotalt = Int(picalt(i, k) / &H400): grünalt = Int(picalt(i, k) / &H20) And &H1F: blaualt = picalt(i, k) And &H1F
picalt(i, k) = rot * &H400 + grün * &H20 + blau
If mousex = i And mousey = k Then Text1.Text = mousex & " " & mousey: Text3.Text = rot: Text4.Text = blau: Text5.Text = grün
S5(i, k) = 3 * blau - (rot + grün) - 3 * blaualt + (rotalt + grünalt)
Next i: Next k

For k = 0 To PicInfo.bmHeight - 1: For i = 0 To (PicInfo.bmWidth - 1)
If S5(i, k) <> 0 Then S1(i, k) = S5(i, k) + (S1(i - 1, k) + S1(i, k - 1)) / 9 * 4
ii = PicInfo.bmWidth - i - 1: kk = PicInfo.bmHeight - k - 1:
If S5(ii, kk) <> 0 Then s2(ii, kk) = S5(ii, kk) + (s2(ii + 1, kk) + s2(ii, kk + 1)) / 9 * 4
Next i: Next k

For k = 0 To PicInfo.bmHeight - 1: For i = 0 To (PicInfo.bmWidth - 1)
S1(i, k) = S1(i, k) + s2(i, k)
If smax < S1(i, k) Then smax = S1(i, k): xmax = i: ymax = k
If smin > S1(i, k) Then smin = S1(i, k): xmin = i: ymin = k
Next i: Next k
If smax < 25 Then xmax = -100: ymax = -300
If smin > -25 Then xmin = -200: ymin = -400

If Abs(ymax - ymin) < 30 And Abs(xmax - xmin) < 30 Then
ymit = (ymax + ymin) / 2: xmit = (xmax + xmin) / 2
x = 0: Y = 0: M1 = 0
For i = xmit - 15 To xmit + 15: For k = ymit - 15 To ymit + 15
x = x + i * CLng(Abs(S1(i, k))): Y = Y + k * CLng(Abs(S1(i, k)))
M1 = M1 + CLng(Abs(S1(i, k)))
Next: Next: xmit = CInt(x / M1): ymit = CInt(Y / M1)
xx4:
End If

Text2 = xmax & " " & ymax & " " & xmit & " " & ymit & " " & smax & " " & smin: Text2.Refresh
If Abs(ymit - ymitalt) < 10 And Abs(xmit - xmitalt) < 10 Then
Picture2.Circle (xmit, ymit), 1, vbGreen
Picture2.Line (xmit, ymit)-(xmitalt, ymitalt), vbGreen
If xmit > 0 And ymit > 0 Then Print #1, xmit & vbTab & ymit
End If: xmitalt = xmit: ymitalt = ymit

GetBitmapBits Picture2.Image, UBound(PicBits2), PicBits2(1)
For Cnt = 1 To UBound(PicBits)
If PicBits2(Cnt) = 7 Or PicBits2(Cnt) = 224 Then PicBits(Cnt) = PicBits2(Cnt)
Next
SetBitmapBits Picture3.Image, UBound(PicBits), PicBits(1): Picture3.Refresh
End Sub



So viel für heute

Beste Grüße

Christian H

Christian H
23.08.2012, 09:07
Hallo!
ich möchte demnächst die Antriebsmotoren des rasenrobo durch brushless ersetzen. Der 2twichtigste Grund für einen selbstgebauten rasenmähroboter ist ja, dass man immer was zum rumschrauben hat. Bei Hobbyking habe ich bestellt:
2x #TR_B25A/3731 TURNIGY Basic 25A v3.1 Speed Controller = $31.72
2x #TR2217/16/5690 Turnigy 2217 16turn 1050kv 23A Outrunner = $30.76
3x #E3.17-0.5-10T/11210 Pinion Gear 3.17mm/0.5M 10T (1pc) = $2.97 (Motorritzel)

Ich hoffe, dass die Motoren an die Getriebe vom RB35 passen. Die Motoren sind für 10 Zellen. Der rasenrobo werkelt mit 12 Zellen. Ich denke aber das passt, da ich den Motoren ja nicht die volle Leistung abverlangen muss. Bzgl. der Qualität der Motoren bin ich mir nicht sicher. Ist nicht mal angegeben ob Neodym-Magnete verbaut sind. Mit 60 €uronen für 2 Motoren mit Regler habe ich aber zumindest nicht zu viel in den Sand gesetzt. Denkt Ihr das könnte was werden??

Grüße

Christian H

Schwimmi
26.08.2012, 17:41
Hallo zusammen,

ich starte ebenfalls gerade ein Robomäher Projekt. Als "Nicht-Elektroniker" stellt die Induktionsschleife nach eigener Einschätzung die größte Herausforderung dar. Deshalb habe ich mir vorgenommen diese zuerst herzustellen und mich erst dann dem Roboter zu widmen.

Als ersten Schritt habe ich eine Stückliste auf "Conrad.de" auf Basis von Christian H.'s Schaltplan (http://www.rn-wissen.de/index.php/Begrenzungsschleife_-_Induktionsschleife) zusammengestellt. Allein das hat schon eine Weile gedauert ;-).

Die Stückliste findet Ihr hier : http://MA-Industrie.de/StuecklisteInduktion.jpg

Wie ist Eure Meinung ?

Klebwax
26.08.2012, 18:28
Als ersten Schritt habe ich eine Stückliste auf "Conrad.de" auf Basis von Christian H.'s Schaltplan (http://www.rn-wissen.de/index.php/Begrenzungsschleife_-_Induktionsschleife) zusammengestellt. Allein das hat schon eine Weile gedauert ;-).

Wie ist Eure Meinung ?

Willst du wirklich einen Widerstand 470 Ohm etc. kaufen? Dann kneifst du ihn zu kurz ab oder machst einen Fehler und er brennt durch, und mußt nochmal bestellen. Kauf besser ein ganzes Sortiment, kostet zwar am Anfang mehr, aber du kannst dann auch mal den Wert ändern und hast für das nächste Projekt schon die Widerstände da. Von allen Halbleitern würde ich immer mindestens einen mehr kaufen, sonst ist beim Entwickeln Frust garantiert.

MfG Klebwax

Christian H
26.08.2012, 18:28
Hallo Schwimmi,

habe die Liste überflogen. Das wird schon passen. Allerdings hätte ich bei einigen Teilen mehr bestellt. Z.n. von den Wiederständen ein ganzes Sortiment. Die kann man immer wieder gebrauchen und kosten nicht die Welt. Dann hätte ich Teile für zumindest 2 Sensoren (einen vorne und einen hinten) bestellt. Als erstes würde ich an Deiner Stelle die Schaltung für den Sender aufbauen und als Schleife mehrere Meter Draht verlegen. Als Stomquelle für den Sender verwende ich ein (kurzschlussfestes) Notebook-Netzteil. Zum Testen brauchst Du nur die aus dem Relais ausgebaute Spule mit einem 0815 Minikopfhörer verbinden. Wenn´s knackt funktioniert der schon mal. Laß wieder von Dir hören, wenn Du am experimentieren bist.

Gruß

Christian H

Schwimmi
02.09.2012, 12:04
Vielen Dank für die Tipps. Ich habe das verregnete Wochenende genutzt um den Induktionsgenerator aufzubauen.
Bisher ist nix abgeraucht :-) :

23159

Anschluss1 (ganz oben) = +5V
Anschluss2 = nicht belegt
Anschluss3 = GND
Anschluss4 = +20V
Anschluss3 = Schleife
Anschluss4 (ganz unten) = Schleife

Leider habe ich beim Ausbau der Spule aus dem Relais die Spule beschädigt und kann den Trick mit dem Kopfhörer zumindest dieses Wochenende nicht ausprobieren.

Alles was mit meinem digitalen Voltmeter möglich war habe ich durchgemessen. Auf der Schleife kriege ich aber keinerlei Werte angezeigt.
Ich habe irgendwo aufgeschnappt, dass das normal ist weil die Impulse für ein digitales Voltmeter zu kurz sind.

Nun habe ich noch ein paar Fragen an die Profi's :

1. Auf dem Schaltplan sind zwei Stromversorgungen eingezeichnet. 20V für die Spule und 12V für die Steuerung.
Der NE555 benötigt aber nur 5V. Ich habe daher ein 5V Netzteil verwendet. Ist das in Ordnung ?

2. Habt Ihr noch weitere Tipps wie ich die Funktion der Schleife mit "Hausmitteln" feststellen kann ?

3. Kennt jemand sonstige Bezugsquellen für die Detektorspule damit man ich mir den Ausbau sparen kann ?

Viele Grüße,

Schwimmi

Christian H
03.09.2012, 19:00
Hallo,

zu 1: Für den IRF 3205 ist im Datenblatt ein Gate Threshold Volatege von 2 bis 4 V angegeben. Insofer sollte ein 5V Netzteil für den NE 555 o.k. sein. Andererseits verträgt der NE555 ja bis zu 15 V. Damit wären ein Betrieb mit nur einem gemeinsamen 12V- Netzteil für NE555 und Begrenzungsschleife auch möglich.

2. Alles mit 5 V betreiben und Kopfhörer direkt oder über eine Widerstand an die Anschlüsse für die Begrenzungsschleife oder auch an den R1 halten.

3. Für die Detektorpule habe ich immer welche aus einem Relais ausgebaut. Im Prinzip tut´s wohl jeder Elektromagnet.

Grüße

Christian

Klebwax
04.09.2012, 00:07
zu 1: Für den IRF 3205 ist im Datenblatt ein Gate Threshold Volatege von 2 bis 4 V angegeben. Insofer sollte ein 5V Netzteil für den NE 555 o.k. sein. Andererseits verträgt der NE555 ja bis zu 15 V. Damit wären ein Betrieb mit nur einem gemeinsamen 12V- Netzteil für NE555 und Begrenzungsschleife auch möglich.
Das mit den 5V ist eng. Gate Threshold Voltage heißt, unter dieser Spannung leitet er nicht, als Strom sind da 250µA angegeben. Wenn dann der 555 nicht ganz auf 5V kommt, kann es sein, daß nichts geht. Ohne Kontrolle mit einem Scope kann man dann garnichts sagen. Ich würde einfach alles mit 15V aus einem Universal-Notebooknetzteil (besser Labornetzteil) machen.



3. Für die Detektorpule habe ich immer welche aus einem Relais ausgebaut. Im Prinzip tut´s wohl jeder Elektromagnet

Irgendwelche Spulen mit offenem Kern hat man doch immer in der Grabbelkiste, da muß man doch nicht ein funktionierendes Relais schlachten.

MfG Klebwax

P.S. (einfache) Labornetzteile sind in der Bucht kaum teurer als Notebooknetzteile, haben einstellbare Spannung und Strombegrenzung und auch noch eingebaute Anzeigen.

Christian H
09.09.2012, 19:30
Hallo,

die Ortung des rasenrobo mit einer Wlan-Camera (Wireless-G, Linksys) funktioniert ganz ordentlich. Heute habe ich noch eine Koordinatentransformation des Bildes einprogrammiert. Dadurch wird das schräg von oben aufgenommene Bild so entzerrt, dass sich hieraus die wahren x- und y- Koordinaten ergeben. Anbei ein paar Bilder vom Computer. Oben links, das Camerabild. Darunter das korrigierte Bild. Dass die Korrdinatentransformation korrekt ist erkennt man z.B. daran, dass der rasenrobo an jedem Ort gleich groß ist und der Abstand der Ortungspunkte (jede Sekunde einer) überall etwa gleich groß ist.

Der rasenrobo arbeitet etwa 1 3/4 Stunden mit einer Akkuladung (2 Jahre alt). Demnächst versuche ich noch die Ortung des rasenrobo mit den Odometriedaten (rechts, rote Linie) zu kombinieren. Die Fahrt des rasenrobo ist im Moment relativ grob. D.h. der Kurs wird erst korrigiert, wenn die Abweichung größer als 15 Grad ist. Sobald die Kurskorrektur genauer erfolgt, könnte ich dem rasenrobo seine Bahn vorgeben und den Rasen systematisch mähen. Mal sehen ob das wesentlich effizienter ist als das Zufallsprinzip.

Übrigens, die neuen von Hobbyking georderten Motoren sind z.Zt. auf dem Zollamt in Garching. Ich muß die tatsächlich persönlich abholen, sonst gehen die in 2 Wochen zurück. Ein Manko der neuen Motoren ist mir jetzt erst aufgefallen. Es sind Außenläufer. Da ist zu befürchten, dass die Schleifensensoren gestört werden. Mal sehen.

Bis demnächst

Christian

steollia
16.09.2012, 16:44
sehr gelungen!! glückwunsch! ;)

Christian H
22.09.2012, 21:16
Hallo,

@steollia: Danke für die Blumen!

Der Versuch den Antrieb auf einen Billig-brushless-Motor von hobbyking (2x #TR2217/16/5690 Turnigy 2217 16turn 1050kv 23A Outrunner = $30.76) umzustellen ist ein Flop gewesen.

Der Anbau der Getriebe aus RB35 mit Untersetzungen von 300:1 oder 600:1 hat zwar gut funktioniert. Da das Motorritzel relativ lang ist, hat´s 2 Muttern als Abstandshalter gebraucht. Die Verbindung war aber trotzdem stabil.

Der neue Motor zieht mit einem 600:1 Getriebe, wenn ich ihn auf die gleiche Geschwindigkeit wie bisher (etwa 30/min) einstelle, bereits etwa 0,8 Ampere. Die Motoren die ich jetzt im rasenrobo eingebaut habe (Getriebemotor vom Conrad 810:1 4,5 bis 15V 540er Motor), ziehen dagegen nur 0,4 A. Verwende ich den neuen Motor mit einem 300:1 Getriebe zieht er im Leerlauf zwar nur 0,4 A, geht aber deutlich mit der Drehzahl nach unten wenn ich ihn abbremse, bzw. braucht dann wieder entsprechend mehr Strom.

War leider also nix. Will aber nicht heißen, dass mit guten brushless-Motoren, oder einer besseren Abstimmung zwischen Motorgröße und Getriebe eine Verbesserung doch möglich wären. Habt Ihr einen Vorschlag für einen Antrieb?

Habe dann noch interessehalber alte RB35-Motoren mit 600:1 Getriebe getestet. Der Stromverbrauch war ganz unterschiedlich, minimal bei nur 0,05A. Unter Last ist er auf etwa 0,4 A hochgegangen. Also auch nicht schlecht.


Bis demnächst

Christian

Christian H
07.10.2012, 10:58
Hallo zusammen,

also in der letzten Woche habe ich versucht meinem rasenrobo beizubringen, nicht nach dem Zufallsprinzip, sondern systematisch, erst am Rand entlang zu mähen und sich anschließend spiralförmig in die Mitte zu arbeiten. Muß sagen, is bei Weitem nicht so einfach wie man denken möchte. Den vorderen rechten Sensor habe ich etwas schräg gestellt, da meine Begrenzungsschleife an der Hecke relativ weit aussen verlegt ist und er deswegen in der Hecke hängen bliebe. Im wesentlichen hat man mit der Begrenzungsschleife nur die Info drinnen oder draussen. Auf ebenen Gelände steuert er ja ganz brav an der Begrenzungsschleife lang, wird´s aber uneben zockelt er, wie nach 2 Maß Bier, in Schlangenlinie der Begrenzungsschleife entlang und setzt auch hin und wieder zurück, wenn er zu weit vom Weg abkommt.

Meine ursprüngliche Idee war, ihn, nachdem er den Rand abgetastet hat, eine Spurbreite neben dem bereits gefahrenen Weg zu steuern. Die Erfassung der Position funktioniert ja mit der Camera bereits relativ gut. Das Computerprogramm hierfür war in einer Nacht fertig und in der Simulation funktionierte auch alles ganz toll. Da in der Realität der abgefahrene Rand aber bereits eher einer Wellenline als Geraden gleicht, torkelt er natürlich bei der nächsten Runde nur um so doller durch die Gegend und nuckelt mir nur unnötig den Akku leer. So wird das also nix.

Gestern habe ich mir dann überlegt ihm nur Wegpunkte vorzugeben, die er der Reihe nach in gerader Linie ansteuert. Auf dem Camerabild (korrigiert zu einer Ansicht von oben) gebe ich per Mausclick die Umrandung ein. Das Computerprogramm errechnet dann die weiteren Wegpunkte für die Spirale nach innen. Der Sollkurs für den rasenrobo wird laufend aus der Position des rasenrobo und dem nächsten Zielpunkt berechneten und per easyradio dem rasenrobo vorgegeben. Erhält er keinen Sollkurs vorgegeben, fährt er einfach wie bisher nach dem Zufallsprinzip.

Anbei 2 Fotos von der per mausclicks eingegebenen Begrenzung und den dann per Computer berechneten weiteren Wegpunkten.

Ausprobiert hab ich´s bei dem Mistwetter noch nicht, bin aber ganz zuversichtlich dass es halbwegs funktioniert.

Servus, bis bald

Christian

Bernd_Stein
08.10.2012, 19:00
Hallo zusammen,

also in der letzten Woche habe ich versucht meinem rasenrobo beizubringen, nicht nach dem Zufallsprinzip, sondern systematisch, erst am Rand entlang zu mähen und sich anschließend spiralförmig in die Mitte zu arbeiten. Muß sagen, is bei Weitem nicht so einfach wie man denken möchte.

Dieses Projekt hört sich vielversprechend an. Ich hoffe Du gibst nicht vorzeitig auf. Für freie Flächen ist dies sicherlich die effektivste Methode die ich bisher nur von den Ambrogio RMRs her kenne. Ich wollte immer den RoboMow RL500 dahin bekommen das er das tut was Du jetzt vor hast. Wollte dafür jedoch die vorhandene Elektronik nutzen. Deshalb bin ich sehr gespannt wie es bei Dir weitergeht.

Bernd_Stein

Christian H
13.10.2012, 12:11
Hallo,

habe heute den rasenrobo testweise über einen kurzen Pacours geschickt. Wollte erst mal sehen wie weit er denn von der Strecke abweicht. Denke das ist gar nicht so schlecht. Die graue Linie ist die vorgegebene Strecke. Die rote Linie die aufgezeichnete Wegstrecke. Der Startpunkt war links unten. Nach dem letzten Wegpunkt ist er noch etwas im Zufallsmodus weitergefahren. Das gezackelte kommt durch kleine Fehler in der Positionsbestimmung zustande. Der rasenrobo fährt die Strecke relativ gleichmäßig, ohne große Korrekturen ab, was den Stromverbrauch niedrig hält. Auch in den Ecke ist es nicht so, dass er groß hin und her wackelt oder zurücksetzt wie man´s vielleicht anhand der roten Linie denken könnte, sondern er richtet sich nach dem neuen Ziel aus und hält darauf zu.

Das ganze sieht vielleicht nach großen Aufwand aus, ist es aber nicht. Die Camera ist eh fest installiert und meist an. Das easyradio ist auch immer am PC angesteckt. Ergo brauche ich nur die beiden Programme am PC starten, mit einem Click die Wegstrecke auswählen (nachdem ich schon mal mehrere konstruiert habe) und los geht´s. Natürlich ist der Garten nicht groß. Bei einer größeren Fläche würde es etwas anders aussehen. Den ganzen Garten muss die Camera aber auch nicht abdecken. Strecken außerhalb fährt er nach Odometrie und sobald er wieder ins Blickfeld der Camera kommt, positioniert er sich wieder neu.

Nu, hat zumindest Spaß gemacht das so weit zum Laufen zu bekommen. Für den Rasen reicht´s eigentlich den robo 1 oder 2 mal in der Woche nur auszusetzen und fertig.

Die Regelung funtkioniert bis jetzt mit einem P und kleinen I-Anteil. Hab da noch nicht´s optimiert. Könnte man vielleicht noch was rausholen. Andererseits führen zu viele schnelle Korrekturen zu höherem Stromverbrauch, da plötzliche Kursänderungen immer wieder durch Bodenunebenheiten zustande kommen. Da ist eine grobe Führung letztlich wohl effektiver. Demnächst gebe ich ihm noch einen Kurs vor der fast den ganzen Garten abdeckt. Und dann bin ich mal gespannt wie viel Zeit er dafür bracht. Bis jetzt werkelt er per Zufallsprinzip mit einer Akkuladung 1 3/4 Stunden und grast den Rasen weitgehend ab. Das gilt´s zu übertreffen.


Servus, bis demnächst

Christian

Torino
29.10.2012, 11:25
Vielen Dank für die Tipps. Ich habe das verregnete Wochenende genutzt um den Induktionsgenerator aufzubauen.
Bisher ist nix abgeraucht :-) :

23159

Anschluss1 (ganz oben) = +5V
Anschluss2 = nicht belegt
Anschluss3 = GND
Anschluss4 = +20V
Anschluss3 = Schleife
Anschluss4 (ganz unten) = Schleife

Leider habe ich beim Ausbau der Spule aus dem Relais die Spule beschädigt und kann den Trick mit dem Kopfhörer zumindest dieses Wochenende nicht ausprobieren.

Alles was mit meinem digitalen Voltmeter möglich war habe ich durchgemessen. Auf der Schleife kriege ich aber keinerlei Werte angezeigt.
Ich habe irgendwo aufgeschnappt, dass das normal ist weil die Impulse für ein digitales Voltmeter zu kurz sind.

Nun habe ich noch ein paar Fragen an die Profi's :

1. Auf dem Schaltplan sind zwei Stromversorgungen eingezeichnet. 20V für die Spule und 12V für die Steuerung.
Der NE555 benötigt aber nur 5V. Ich habe daher ein 5V Netzteil verwendet. Ist das in Ordnung ?

2. Habt Ihr noch weitere Tipps wie ich die Funktion der Schleife mit "Hausmitteln" feststellen kann ?

3. Kennt jemand sonstige Bezugsquellen für die Detektorspule damit man ich mir den Ausbau sparen kann ?

Viele Grüße,

Schwimmi

hallo ,

erstmals danke an Christian H für diesen Thread ! echt super :)


nun meine Frage : ich will diesen Induktionsgenerator und den Sensor von Christan H ebenfalls nachbauen, jedoch ist mir die Stromversorgung noch recht unklar.. :(

kannst du mal die einzelnen Anschlüsse genau erklären ?

für was man die braucht und vielleicht noch fotos machen wo die anschlüsse hingehen ..

ich habe nur das Wort Netzteil aufgeschnappt, aber kann mir dass nicht so vorstellen ..

was mach ich den mit den sogenannten "Schleifen" Anschlüssen ?


bin noch recht neu in dem Gebiet, von daher bitte ich um etwas verständnis :)

danke !

Christian H
29.10.2012, 20:35
Für die Schaltung mußt Du Dich nach dem Schaltplan im RN-Wissen (Begrenzungsschleife) richten. Wie von Klebwax oben bereits beschrieben, kannst Du einfach die ganze Schaltung mit 15 Volt betreiben. D.h. die 5V und 20V Anschlüsse (oder K1 und K2 im Schaltbild RN_Wissen) zusammenlegen. Irgendwoher muss der Saft für die Schaltung kommen. Und dafür kann man z.B. ein Notebook-Netzteil nehmen. - vom Netzteil kommt also an GND und + vom Netzteil an 5V und 20V . An die Schleifen-Anschlüsse kommen die Enden von einem ganz laaaaaangen Kabel, das um das Gebiet gelegt wird, in dem sich Dein Roboter aufhalten soll. Der Sensor meldet dann ob er sich innerhalb oder außerhalb der Schleife befindet.


Nach dem gestrigen Schneefall ist´s erst mal mit Fahrten im Freien vorbei (außer man hätte einen ferngesteuerten, besser autarken Schneeräumroboter mit Videokamera und Scheinwerfer für Nachtfahrten und 4Radantrieb und Reifen mit Schneeketten und hydraulisch bewegter Schneeschaufel oder -fräse und roten Rundumwarnlicht und alles wasserdicht:-k:Strahl)

Beste Grüße

Christian

meddie
30.10.2012, 07:37
(außer man hätte einen ferngesteuerten, besser autarken Schneeräumroboter mit Videokamera und Scheinwerfer für Nachtfahrten und 4Radantrieb und Reifen mit Schneeketten und hydraulisch bewegter Schneeschaufel oder -fräse und roten Rundumwarnlicht und alles wasserdicht:-k:Strahl)


Ja das ist mein Favorit:

https://www.youtube.com/watch?v=tPg1ZMiC9pA

Torino
30.10.2012, 11:06
hallo Christian !

danke erstmals für deine schnelle Antwort :)

da dies jetzt teil meiner Diplomarbeit ist , ist dieser Thread ein "Goldgriff" für mich..


nur mal zum Verständnis :

der Induktionsgenerator liegt irgendwo in einer Ecke am Boden (mal angenommen) und versorgt die Induktionsschleife.

Der Induktionsgenerator selber wird aber von einem Notebook-Netzteil versorgt , oder?

D.h. Netzteil ist an Steckdose angeschlossen und wie funktioniert das genau mit den Anschlüssen ? wie hast du das Kabel verändern müssen ?

sorry , aber ich blicke die Versorgung grad gar nicht durch :(

an K5 kommt GND dran und was meinst du mit "die 5V und 20V Anschlüsse (oder K1 und K2 im Schaltbild RN_Wissen) zusammenlegen. " ??

könntest du mir das bitte vielleicht anhand von ein paar Bildern zeigen wie das bei dir aussieht der Induktionsgenerator mit den Anschlüssen ?


wie bereits erwähnt ist es ein "Teil" (ca. 1/5) meiner Diplomarbeit :)


zur Bestellliste :

wir haben beim Induktionsgenerator Widerstände in der Höhe von 24 , 120 , 330k Ohm , aber "Schwimmi" (Beitrag zweihundertachtundachtzig) hat diese nicht in seiner Stückliste drin , sondern irgendwelche anderen Widerstände in der Höhe von 12 , 22 und 3.3k Ohm , wieso ?


danke , Torino ..

Christian H
30.10.2012, 20:26
der Induktionsgenerator liegt irgendwo in einer Ecke am Boden (mal angenommen) und versorgt die Induktionsschleife. : korrekt


Der Induktionsgenerator selber wird aber von einem Notebook-Netzteil versorgt: korrekt


D.h. Netzteil ist an Steckdose angeschlossen und wie funktioniert das genau mit den Anschlüssen ? wie hast du das Kabel verändern müssen ? sorry , aber ich blicke die Versorgung grad gar nicht durch :(?
Man nehme eine Zange und schneide den Stecker der sonst zum Notebook führt ab (nicht den Stecker für die Steckdose!:strom). Dann entferne man über etwa 2cm die Isolierung am Kabelende und legt dadurch viele Adern frei die sich zu zwei Drähte verdrillen und verlöten lassen. Diese Dräht jetzt schön auseinanderhalten, sonst gibt´s einen Kurzen :feuer). Jetzt bitte mit einem Voltmeter + und - Pol bestimmen (Stecker in Steckdose nicht vergessen!).



an K5 kommt GND dran? : korrekt GND = - Pol


und was meinst du mit "die 5V und 20V Anschlüsse (oder K1 und K2 im Schaltbild RN_Wissen) zusammenlegen. " ???: zusammenklemmen oder zusammenlöten. + Pol vom Netzgerät damit verbinden/verlöten


wir haben beim Induktionsgenerator Widerstände in der Höhe von 24 , 120 , 330k Ohm , aber "Schwimmi" (Beitrag zweihundertachtundachtzig) hat diese nicht in seiner Stückliste drin , sondern irgendwelche anderen Widerstände in der Höhe von 12 , 22 und 3.3k Ohm , wieso ?: uff. Da müßtset Du den Schwimmi fragen. Ich sehe in der Bauanleitung 24 Ohm, 100 Ohm, 120 Ohm, 10 kOhm und 330 kOhm Widerstände. Daran würde ich mich erst mal halten. Das geht aber sicher auch mit etwas anderen Werten.

Am besten ist´s nicht so viel nachzudenken sondern einfach loszubasteln. Und von allen Bauteilen immer gleich mehrere kaufen. Könnte ja auch mal was kaputt gehen. Solange Du das Kabel zum Netzstecker nicht kappst, kann nichts schlimmes pasieren.

Toi, toi, toi

Christian H

dg9bbq
05.11.2012, 17:49
Hallo RasenRobo Gemeinde,

vielen Dank an alle die hier schon so viele intressante Artikel eingestellt haben. Ich habe auch mit dem Bau eines Mäh-Robi's angefangen.

Funktioniert auch schon fast gut. Auch Dank des Forums.
Ein Problem, mit dem ich mich schon etwas länger Beschäftige, ist das "entlangfahren an der Induktionsschleife" .
Habe die Schleifenerkennung ala RN-Wissen eingebaut.
Bei einem Abstand der Sensoren von ca. 35cm "wackelt" der Robi doch ziemlich hin und her. Wie habt ihr das gelöst??

Ich habe einen interessanten Beitrag gefunden.
http://www.philohome.com/sensors/filoguide.htm

Könnte man die beiden Generatoren irgendwie verheiraten und in der Mitte des Robi's einen zweiten Empfänger für die Wegabtastung einbauen??


Gruß Peter

Christian H
05.11.2012, 20:41
Hallo dg9bbq,

hab ja auch schon mal probiert entlang der Schleife zu fahren. Für mich war das schnelle Ansprechen des Sensors das kleinere Problem. Klar, je weiter weg man von der Schleife ist, desto größer ist der Bereich in dem er von außen auf innen und umgekeht umschaltet. Das sind aber nur cm. Kann mir eigentlich nicht vorstellen, dass der Sensor von Philohome diesbzgl besser ist. Bei einem Abstand von 35 cm zur Schleife hat der sicher auch Unsicherheiten. Wie hoch ist denn die Taktfrequenz Deiner Schleife? Bei mir sind´s 0,2 sec.. Das ist mir schnell genug. Dass mein rasenrobo entlang der Schleife wackelt, liegt eher daran dass die Motoren träge und nicht immer gleich auf Änderungen der PWM reagieren. Auf Rasen geht´s durch die Unebenheiten nochmal deutlich schlechter als indoor. Habe allerdings auch nicht viel mit PID-Regler probiert. Für das wackeln ist ja nicht nur der Sensor, sondern die gesamte Regelstrecke bis zu den Motoren verantwortlich.

Habe eben noch mal Deinen Bericht gelesen. Dachte erst 35 cm wären der Abstand vom Sensor zur Schleife. Aber das ist wohl der Abstand zwischen 2 Sensoren vorne am Mäh-Robi. Zum Fahren entlang der Schleife nehme ich nur einen Sensor, Variante2 nach RN-Wissen. Da kann man die Signalstärke im Programm mit auswerten. Etwa 0 über der Schleife, positiv innen, negativ außen.

Viele im Forum wären sicher, wie ich, an Bildern von Deinem Mäh-Robi interessiert.

@meddie: Das ist sicherlich der Traum vieler im Forum. Einfach saustark.

Beste Grüße

Christian

dg9bbq
06.11.2012, 12:40
Habe eben noch mal Deinen Bericht gelesen. Dachte erst 35 cm wären der Abstand vom Sensor zur Schleife. Aber das ist wohl der Abstand zwischen 2 Sensoren vorne am Mäh-Robi. Zum Fahren entlang der Schleife nehme ich nur einen Sensor, Variante2 nach RN-Wissen. Da kann man die Signalstärke im Programm mit auswerten. Etwa 0 über der Schleife, positiv innen, negativ außen.


Hallo Christian,

vielen Dank für deine schnelle Antwort. Damit hast Du mir wohl den entscheidenden Hinweis gegeben.

Mein Mäh-Robi ist noch im "Entwicklungsstadium", Bilder werde ich in den nächsten Tagen einstellen.

Gruß Peter

damfino
07.11.2012, 18:46
Hi,
es geht auch mit einem Sensor nach Variante 1 entlang der Schleife zu fahren. Ist so gelöst dass außerhalb der Schleife der äußere Fahrmotor schneller als der andere dreht, wenn innerhalb dann umgekehrt. So fährt der Robi relativ sauber und gerade, man muss durch Versuche herausfinden welcher Drehzahlunterschied ideal ist. Der zweite Sensor wird benutzt um enge Kurven in der Begrenzung zu erkennen, dann wird der innere Motor gestoppt. Der Robi fährt in diesem Modus nur im Uhrzeigersinn und muss hier nur Rechtskurven erkennen.
LG!

Christian H
24.04.2013, 19:18
Hallo zusammen,

jetzt schwärmen sie wieder aus, die gefräßigen Roboterschafe. Rasenrobo ist wieder mit dabei. Als Neuerung hat er ein RN-XV WiFly spendiert bekommen, das das EasyRadio ersetzt. Funktioniert prima, erspart mir das anstöpseln vom EasyRadio am Rechner. Bis jetzt kein einziger Aussetzer in der Funkverbindung.

Zum Testen hab ich das Programm etwas abgeändert und neu geladen. Plötzlich drehen die Motoren, obwohl sie zum Testen abgeschaltet sein sollten. Erst dachte ich der Motortreiber hat den Geist aufgegeben und spinnt. Hat einige Zeit gedauert, bis ich raus hatte, dass es ein Softwarefehler war. Habe im Winter meine UraltVersion von Bascom auf die 2.0.7.6. geupdatet. Zwischenzeitlich wurde für Compare A Pwm Clear Up mit Clear Down vertauscht! Echt gemein!


Beste Grüße

Christian

hsiegel
11.05.2013, 13:00
Hallo,
als Bastel & Elektronik-(Wieder-)-Einsteiger und Rasenmähgeplagter verfolge ich diesen Thread mit regem Interesse und möchte so bald wie möglich meine ersten Experimente dazu starten. Arduino, Motorshield etc. liegen inzwischen bereit, und derzeit stelle ich die Teileliste für Sender und Empfänger der Induktionsschleife zusammen. Dabei ist mir aufgefallen, dass bisher wohl hauptsächlich Relaisspulen für den Sensor genommen werden. Dabei ist mir unklar, worauf es dabei ankommt und ob man diese Spulen nicht - wie bei http://www.philohome.com/sensors/filoguide.htm - durch eine Induktivität von z.B. Fastron für wenige Cents ersetzen kann.
Beim Sender habe ich zudem ein wenig Sorge, Funkstörungen beim Nachbarn zu verursachen, oder ist das unbegründet und kann ausgeschlossen werden?
Vielen Dank an dieser Stelle allen, die in diesem Thread ihr Wissen teilen.
Grüße,
Harry

Christian H
12.05.2013, 11:45
Hallo Harry,

ich habe ganz zu Beginn mal einen Sensor mit einer Induktivität von etwa 330 uH ausprobiert und es hat nicht ausreichend funktioniert. Deshalb bin ich auf die Relaisspule gekommen. Die haben deutlich höhere Induktivität. Natürlich ginge auch jede andere Spule mit vergleichbarer Windungszahl und Kern. Auch wenn man eine Induktivität als Elektromagnet verwendet, merkt man, dass die deutlich schwächer sind als übliche Elektromagnete oder Relaisspulen. Vielleicht klappt´s aber wenn man eine Induktivität von zig mH verwendet.

Der Legosensor hat eine wesentlich andere Funktion als die Sensoren beim Rasenmäher. Die Rasenmähersensoren liefern immer ein Signal, auch in der Mitte der Schleife, also mit einem Abstand von z.B. 20 m zur Schleife. Der Legosensor dient dagegen nur dazu, entlang der Schleife zu fahren, da ist der Abstand vielleicht maximal 5 cm.

Beste Grüße und viel Erfolg

Christian

Bernd_Stein
13.05.2013, 17:50
Hallo Harry,

....
Vielleicht klappt´s aber wenn man eine Induktivität von zig mH verwendet.


Christian

Hallo zusammen,

auch ich beobachte diesen Thread, weil ich denke der Ansatz mit der Webcam ist das wohl zur Zeit beste System um einen Rasenmähroboter ( RMR ) effektiv bzw. systematisch seine Arbeit verrichten zu lassen. Warum da noch kein kommerzieller Hersteller drauf gekommen ist, ist mir ein Rätsel.

Da ich gerne meinen in die Jahre gekommenen RoboMow RL500 daraufhin umrüsten möchte, wäre es schön wenn ich einige Dinge einfach übernehmen könnte. Deshalb möchte ich hiermit darauf hinweisen das dieser Induktivitäten mit 100mH dafür nutzt
( siehe Fotos ) und diese stehende Festinduktivität mit der Bauform 11P so ca. 50 Cent pro Stück kostet.

Zugehörigen Schaltplanausschnitt evtl. morgen.

2546525466

Bernd_Stein

jguethe
13.05.2013, 19:35
lese immer noch mit, habe meinen RasenRobo völlig neu aufgebaut; mit starken Motoren, Akku 25.2 V 10Ah.Zur Induktionsschleife / Generator: Für Neulinge empfehle ich meine Version mit LED-Anzeige. Ich wollte hier den Eagle-Schaltplan einstellen, weiß aber im Moment nicht wie das geht. Ich habe dazu auch ein Platinenlayout
erstellt, dieses jedoch mit SprintOut. Die Störungen durch die Motoren habe ich seit dieser Saison in den Griff bekommen. Meine Lösung ist zwar nicht elegant, dafür aber wirksam. Meine grosse Schleife ist ca 130 m lang,
besteht aus 4mm Kupferlitze und wird mit einem Netzteil 24 V, 20 A !! versorgt (das alte Netzzeit 36 V 12 A reichte nicht).

Sorry, ich habe hier Schwierigkeiten mit dem Editor; mein Beitrag sollte noch gar nicht raus.

Den Sensor-Schaltplan habe ich als Bild-Datei (png). Es gelingt mir aber nicht diesen hier einzustellen. Mit "Grafik einfügen" schaffe ich es nicht. Ich brauche da Nachhilfe.

@ChristianH.
Neue BASCOM-Version
Bin auch auf die neue BASCOM-Version hereingefallen (PWM / Wirkung von Clear Down und Up vertauscht). Ich begann schon an mir zu zweifeln und habe nach einem Heimplatz gesucht!

Regelung Mähmotor Torcman / mit Jeti Spin 75
Seit dieser Saison nutze ich den Heli-Modus 5 (=Jeti regelt die Drehzahl, Timing mit Jeti-Box auf 24 Grad eingestellt). Die Regelung ist sensationell gut. Siehe (und höre) auch Video. Ob hohes Gras
oder schon abgemäht; rpm des Mähmotors ist nahezu ohne Verzögerung extrem stabil. rpm ist bei mir 3000 - 3300.

Für weitere Infos stehe ich gern zur Verfügung.

Gruss an alle Rasenmäherfreunde


Edit: Tippfehler etc. beseitigt.





http://youtu.be/izjtcX_WZ2s

damfino
13.05.2013, 19:41
Warum da noch kein kommerzieller Hersteller drauf gekommen ist, ist mir ein Rätsel.
Naja, kommt auf den Garten an, ich würde mindestens 4 Webcams brauchen um den Garten halbwegs abzudecken, und die Genauigkeit in >20m Entfernung wird nicht überragend sein.

@ ChristianH: Kannst Du den Code für den Webcam etwas kommentieren? Ich kann von VB grade mal etwas VBA für Makros, und erkenne hier nicht wo genau der Roboter im Bild erkannt wird. Danke!

LG!

Christian H
14.05.2013, 10:10
Hallo,
@Bernd_Stein: Dann wird´s wohl auch mit der Induktivität funktionieren. Werd´s mal ausprobieren, wenn ich mal wieder eine Bestellung habe. Wäre natürlich einfacher (aber warum einfach, wenn´s auch kompliziert geht :=)

@damfino: Die Videoüberwachung der Rasenrobo sehe ich eher als Spielerei. Kommerzielle Hersteller brauchen ja eine universell einsetzbare, robuste Technik und da ist die Schleife überlegen. Habe mir übrigens letzte Woche eine 2. Webcam zugelegt. Von ELV die EDIMAX IP Kamera IC-3115W für 49,95 Euro. Für das Geld super. Auflösung bis 1280 x 960 Pixel bei 30 Bilder/s und weiter 75 ° Blickwinkel. Einfach ins Netzwerk einzubinden. Eigentlich nur für Indoor, hab sie jetzt aber außen angebracht. Hat den Hagel von Sonntag überstanden. Bin jetzt von VB6 endlich auf VB.NET umgestiegen. Die Bildverarbeitung ist damit deutlich einfacher und eleganter.

Muß jetzt leider weiter meine Brötchen verdienen. Werde aber morgen oder übermorgen etwas von dem Programm reinstellen

Viele Grüße

Christian

hsiegel
14.05.2013, 17:53
Hallo Christian,
ich habe mir mal 4 Induktivitäten bestellt mit unterschiedlichen µH-Werten und ein Industrierelais dazu, mal schauen, was besser läuft. Melde mich, wenn ich das habe und Zeit finde, es zu löten + zu testen.

Christian H
14.05.2013, 20:18
Hallo jguethe,

schön mal wieder etwas von Dir zu lesen. Habe jetzt erst das Video ganz angesehen. Deiner fetzt ja ordentlich durch die Gegend. Scheint alles sehr robust und zuverlässig zu funktionieren. Wie lange hält der Akku durch? Du hast je wohl ein etwas größeres Grundstück, schaft Dein Rasenrob das weitgehend in einem Durchgang? Der Torcman (350?) ist ja sicher nicht unterdimensioniert. Drehteller und Klingen hast Du wohl von einem Händler, richtig? Der Schaltplan und Dein Trick bzgl. der Motorstörungen wären natürlich interessant. Mit Antwort-Erweitert, Anhänge verwalten, Datei auswählen, hochladen, sollte es eigentlich funktionieren.

Viele Grüße

Christian

jguethe
14.05.2013, 22:43
Hi Christian,
danke für den Hinweis zum Hochladen von Anhängen; jetzt habe ich es begriffen.

Jetzt bin ich aber schon wieder frustriert. Ich hatte eine längere Antwort formuliert, mit 2 Anhängen.
Als ich es absenden wollte, war ich nicht mehr eingeloggt; nach dem Wiedereinloggen war mein Geschreibsel weg.

Ich wiederhole das morgen noch einmal in Ruhe.

Nur den Sensorschaltplan hänge ich schon mal an.
Der Empfangsteil mit den 2 OP-Verstärkern geht auf MichaelM zurück (weiter oben in diesem Thread und RN-Wissen). Den Hexinverter 4096 habe ich aus 2 Gründen hinzugefügt
Das RC-Glied R9/C2 kann man jetzt am Ausgang des 2 Inverters positionieren; damit ist es absolut entkoppelt von der Empfangsschaltung. Die restllichen Inverter dienen bei mir lediglich als Treiber für eine
Power-LED. Diese blinkt mit der Frequenz des Schleifensignals (bei mir 5 Hz); im praktischen Betrieb ist das ein netter Gag in der Dämmerung (20mA-LED, weiß-blau), hat aber auch eine Kontrollfunktion.
Besonders in der "Entwicklungsphase" kann man damit den Sensor und die Poti-Einstellung ideal testen (5-Volt-Akku-Pack und Sensorspule anschließen und dann damit ins Gelände). Aber um es deutlich zu sagen:
Für die Sensor-Funktion selbst ist der 4069 nicht erforderlich. R9/C2 müssen dann nur an den Ausgang des 2.OP angeschlossen werden.

vg
Jguethe

Christian H
14.05.2013, 22:56
Hallo jguethe,

der Beitrag ist wahrscheinlich nicht komplett weg, sondern sollte sich, wenn man anfängt eine neue Antwort zu schreiben, mit der Funktion "gespeicherten Text wiederherstellen", wiederherstellen lassen.

Christian

Bernd_Stein
15.05.2013, 10:37
...
Meine grosse Schleife ist ca 130 m lang, besteht aus 4mm Kupferlitze und wird mit einem Netzteil 24 V, 20 A !! versorgt (das alte Netzzeit 36 V 12 A reichte nicht).


Ich habe gerade meine größte Schleife grob per Schritte gemessen, sie ist etwas über 50m mit Klingeldraht ( Durchmesser 0,8mm ) verlegt. Ich halte 480W für sehr sehr sehr sehr viel Leistung für diese Aufgabe. Mein kommerzieller Begrenzungsdrahtsignalgeber arbeitet umgebaut mit vier Akku-Mignonzellen in Serie ( 4,8Volt ), die schon sehr verbraucht sind. Das heißt sie besitzen einen hohen Innenwiderstand und können dementsprechend keinen hohen Strom liefern. Mehr zu diesen Thema hier :

http://ocfnash.wordpress.com/2010/06/26/discman-powered-mower/

Und nun zum Schaltplan der vom RoboMow RL550 stammt. Die Kondensatoren haben keine Werte, da die Sache wahrscheinlich von einem Franzosen per " reverse engineering " erstellt wurde. Man kann ihn jedoch auch käuflich bei Manual Fox erwerben.

25490


Die EAGLE 6.1.0 Light Pläne ( Schaltplan + Layout ) habe ich als XYZ.rar Datei angefügt, aber ich glaube das funktioniert nicht,
da dieses Forum anscheinend auf XYZ.zip besteht. Würde diese auch gerne ungezipt also ungepackt hier hochladen, weiß aber leider nicht wie es gehen soll.


Bernd_Stein

- - - Aktualisiert - - -


Hallo Christian,
ich habe mir mal 4 Induktivitäten bestellt mit unterschiedlichen µH-Werten und ein Industrierelais dazu, mal schauen, was besser läuft. Melde mich, wenn ich das habe und Zeit finde, es zu löten + zu testen.

Threads nicht aufmerksam genug gelesen ?
Mit 330µH funktionierte es nicht ausreichend.
Millihenry ( mH ) ist um den Faktor 1000 mal größer als Mikrohenry ( µH ). Also unter 100mH würde ich da gar nicht herumexperimentieren. Und ca. 50 Cent sind doch bestimmt günstiger als der Preis für ein Relais auch die Platzersparnis sollte man nicht vergessen oder die Arbeit, falls man versucht die Spule von den übrigen Relaisteilen zu trennen.


Bernd_Stein

Christian H
15.05.2013, 11:43
Hallo Bernd_Stein,

sehr, sehr interessanter Artikel. Ich denke mir das Funktionsprinzip ist folgendes: Durch den Phasensprung in der Mitte der Sinuswelle, hat man einen definierten Zeitpunkt in dem Signal. Geht man z.b. x ganze Phasen nach vorne erhält man eine positive oder negative Halbwelle je nachdem ob der Sensor innerhalb oder außerhalb der Schleife ist. Der Zeitpunkt des Phasenwechsels müßte dabei ganz genau bestimmt werden, was ich mir andererseit schwer vorstelle, aber wie soll´s denn sonst funktionieren.

Beste Grüße

Christian

damfino
15.05.2013, 12:05
Hallo jguethe,


Meine grosse Schleife ist ca 130 m lang, besteht aus 4mm Kupferlitze und wird mit einem Netzteil 24 V, 20 A !! versorgt (das alte Netzzeit 36 V 12 A reichte nicht).

Als Vergleich: ich habe den Schleifensender + Empfänger von ChristianH nachgebaut, Schleife ist ~250m lang, größter Abstand zur Schleife sind 12m, versorgt wird der Schleifensender mit einem Eco Friendly Schaltnetzteil 12V/1500mA.

LG!

jguethe
15.05.2013, 12:19
Hallo zusammen

In Ergänzung meiner unvollständigen Vorstellung der aktuellen Version meines Rasen-Roboters liefere ich nun folgende Details nach:
Fahrmotoren: EMG 49 mit integrierten Drehgeber(robotikhardware.de)
Mähmotor: Torcman 430 Serie 20 (brushless-Aussenläufer) mit Jeti-Controller Spin 75
Mähteller: kommerziell von Husquarna
Räder: Durchmesser ca. 21 cm aus 6mm-Acrylglas, Eigenproduktion
Basisgestell: Acrylglas 6mm, Abmessungen: 450 mm x 320 mm (L x B)
Sensoren: vorne links und rechts je eine Sensor-Spule (ex 24V-Relais, 900 r) sowie je 1 Bumper
Gewicht: mit Akku ca. 15 kg
Akku: LiFePo 7s, 10Ah (Akkupack aus Headway-Einzelzellen selbst zusammengestellt)
Laufzeit: ca. 4,5 Std
Akku-Ladezeit: ca. 1,5 Std bei 5,2A max.

Nachdem ich etwa 15-20 Motoren vom Typ RB35 vernichtet habe, weil diese im oberen Grenzbereich betrieben wurden und die Regelung deshalb auch nur unvollkommen funktionierte habe ich mich für eine Radikallösung entschieden.

Für die Steuerung des Mähmotors und der Fahrmotoren verwende ich als Basis jeweils eine Platine vom Typ RN-AVR-Universal (robotikhartdware.de). Diese Platine eignet sich ideal für eigene Entwicklungen, da überflüssiger Schnickschnack fehlt. Sämtliche Anschlüsse sind verpolungssichere Steckanschlüsse, wobei die Versorgungsspannung in Hochstromtechnik ausgeführt ist.

Die Platinen werden auf dem Chassis senkrecht in Platinenhalterungen eingeführt, können also sehr schnell ausgewechselt werden. Inzwischen habe ich jede dieser Platinen 2-fach.

Folgende Einzelheiten sollten erwähnt werden:
Antriebsplatine:
In der Mitte Processor und zugehörige Bauteile (Beschreibung siehe robotikhardware.de), oben habe ich die Anschlüsse für Drehgeber und Sensoren montiert. Auf der linken Seite habe ich einen 5-V-Regeler montiert. Es ist aber noch viel Platz für Ergänzungen.
Auf der rechten einen freien Fläche ist Platz für meinen elektronischen Leistungsschalter (saunten) und die beiden Motortreiber (High-Power Motortreiber 36V/9A ex robotikhardware.de), sowie Stecker/Buchsen für Stromversorgung und Motoranschlüsse.

Platine für Mähmotor
Stromversorgung über Hochstromstecker, ebenfalls ein elektronischer Schalter , Jeti-Controller auf Freifläche der Platine so befestigt, dass möglichst kurze Verbindungen für die Leistungs-Kabel entstehen

Akku-Überwachung:
Da ich nichts Passendes gefunden habe, habe ich einen Akkuwächter selbst gebaut. Die Fachleute mögen über meine Schaltung vielleicht die Stirn runzeln; aber siefunktioniert. Den unteren Schwellwert habe ich etwa bei 22,4 V (durchschnittliche je Zelle 3,2 V) eingestellt. Inzwischen gibt es sogar ein Platinen-Layout (Bastler-Version, keine Profi-Version). Die Platine ist am Akkupack dort montiert, wo der Platz für die 8. Zelle wäre.

Elektronischer Schalter für hohe Ströme
Anfänglich hatte ich normale Klein-Leistungsschalter, später Schalter aus dem Kfz-Bereich eingesetzt. Alle „klebten“ nach kurzer Zeit. Die Einschalt-/Ausschalt-Funkenüberschläge im brushless-Bereich haben jeden von mir probierten Schalter geschafft. SS-Relais waren auch nicht ideal (teuer und hoher Spannungsabfall). Da ich nichts Kommerzielles gefunden habe, habe ich meinen Schalter selber gebaut. Das ist der rechte Teil im Akku-Wächter. Jetzt kann ich alle Ein/Ausschalter beliebig positionieren, da ich jetzt nur ein Kleinsignale mechanisch schalte (Masseverbindung wird hergestellt). Der Spannungsabfall am Mosfet ist vernachlässigbar gering.

Sensoren / Störung durch die Motoren
Ich habe 2 Rasenflächen zu versorgen, eine hat ca. 150 qm, die andere ca.. 450 qm, der Schleifendraht der letzteren ist etwa 120-130 m lang.
Auf der kleinen Fläche hatte ich bisher kaum Störungen . Auf der großen Schleife hatte ich bis zur letzten Saison jedoch immer wieder Probleme, obwohl die Motoren durch einige Lagen Mu-Metall abgeschirmt waren. Im 2012 habe ich dann einen neuen Schleifendraht mit 4qmm Querschnitt verlegt und ein Netzteil 36-39V/ 12A für den Schleifengenerator eingesetzt. Es gab eine gewisse Verbesserung aber keine absolut befriedigende.
Seit Anfang dieser Saison setze ich ein Netzteil mit 24 V / 20 A ein. Seitdem läuft der Mäher absolut störungsfrei.

Bilder von meinen beiden Hauptplatinen muss ich erst noch "verkleinern"; sie folgen später. Edit: nun sind sie doch da !

@zu Damfino
das ist erstaunlich, mich würden aber auch die sonstigen Rahmenbedingungen interessieren (Motoren, wie weit sind die Sensoren davon entfernt usw).

gruss an alle
jguethe

damfino
15.05.2013, 14:35
Hallo jguethe,

die Sensoren sind ca 23cm vom Mähmotor (45W DC) entfernt, und ca 35cm von den Fahrmotoren (je 8W DC). Die Bodenplatte aber ist aus Alu, wovon einzelne Aluleisten genügen um das Schleifensignal zu stören. So musste ich einiges Alu im Bereich der Sensoren wieder entfernen. Die Sensoren sind unter der Bodenplatte angeordnet, ca 7cm über dem Boden/Wiese.
Wie halten die Motoren? Mein Robi hat nur das halbe Gewicht, die Getriebe halten 1.2Nm Dauer und 3.6Nm Kurzzeitig aus, und haben jetzt nach 2 Saisonen Probleme. Die EMG49 sind belastbarer? Ich habe schon mal andere Motoren vorgehalten, mit 2.5Nm Dauer und 7.5Nm Kurzzeitig.

Mit den Headways hatte/habe ich Probleme, letzten September waren nach 3 Wochen Pause 2 von 4 Zellen tot :(

LG!

hsiegel
15.05.2013, 16:04
Threads nicht aufmerksam genug gelesen ?
Mit 330µH funktionierte es nicht ausreichend.
Millihenry ( mH ) ist um den Faktor 1000 mal größer als Mikrohenry ( µH ). Also unter 100mH würde ich da gar nicht herumexperimentieren.
Darum habe ich ja auch Induktivitäten ab 1000µH aufwärts bestellt ;)
Aber Du hast tatsächlich recht, ich habe bei meiner Bestellung zwar Dein obiges Posting wahrgenommen und mich bestätigt gefühlt, aber die 100mH Induktivität ist nun irgendwie doch nicht auf die Liste gekommen. Dumm, weil schon abgeschickt... Kommt dann mit der nächsten Bestellung.

Grüße,
Harry

jguethe
15.05.2013, 19:29
Hallo Damfino,
bei mir sind die Abstände zu den Spulen nahezu identisch. Meine Bodenplatte ist aus 6mm Plexiglas, die Seitewände, Rückwand und Frontplatte sind aus 1mm-Alu.
Meine Sensorspulen habe ich jeweils vorne links und vorne rechts von aussen auf die Alu-Frontplatte geklebt. Ich hatte erst Bedenken, aber es funktioniert problemlos.
Wenn Alu unter dem Sensor liegt, hatte ich auch Probleme.

Die EMG49 Motoren sind reichlich dimensioniert. Sie laufen seit Mitte 2012 und machen einen hervorragenden Eindruck. Auch das Getriebe scheint solide zu ein. Schon die 8mm-Achse verleiht das Gefühl der
Robusheit. Kann natürlich auch täuschen. Robotikhardware gibt ein Drehmoment von 16kg/cm (160Ncm) an. Das ist sicher der Wert am Getriebeausgang. Damit könnte mein Robbi auch senkrecht klettern. Weitere Motordaten + Datenblatt bei robotikhardware.de

Mein selbstgestricktes Akkupack hat bisher mindestens 150 Ladezyklen überstanden; einen nennenswerten Leistungseinbruch kann ich bisher nicht feststellen. Irgendwann will ich auch eine Ladestation bauen; dafür suche ich eine geeignete Schaltung. Ich würde ja gern meinen kommerziellen iCharger 1010B dafür umfunktionieren. Aber dafür müsste man einige Tastendrücke per Programm simulieren. Ich habe keine Ahnung, ob so etwas Aussicht auf Erfolg hat.

Die Betriebsdaten Deiner Schleife finde ich im Vergleich zu meinen sensationell. Die etwas andere Decodierung des Signals in der Version von ChristianH erklärt so grosse Unterschiede m.E. nicht. Ich werde das aber einmal nachbauen.

gruss
jguethe

jguethe
15.05.2013, 21:51
Hallo Damfino,

mir scheint, Du hast im nachhinein Deine Entfernungsangaben (Abstand Sensorren / Motoren) korrigiert.
Bei mir sind die Werte wie folgt:
Sensoren - Mähmotor 19 cm
Sensoren - Fahrmotor 30 cm.

Meines Erachtens gilt, dass der Störpegel mit dem Quadrat der Entfernung abnimmt, d.h. hier spielen schon wenige cm eine große Rolle. Das bestätigen auch meine Tests mit einem Osci (Spule an Tastkopf und damit versucht, die optimale Position zu finden). Ich bin ziemlich sicher, dass ich mit Deinen Abständen weniger Probleme gehabe hätte. 12 V / 1500 mA sind aber immer noch bemerkenswert.

vg
jguethe

damfino
15.05.2013, 22:20
Hallo jguethe,
ja, die ersten Werte waren geschätzt, dann habe ich am Mäher nachgemessen und ausgebessert.
Die Sensoren waren schon mal 5cm näher an den Motoren, damit am Rand so weit wie möglich gemäht wird. Aber nachdem die Aluprofile (oberhalb der Sensoren) den Empfang störten, zB wurde die Schleife nur erkannt wenn diese parallel zum nächsten Aluprofil war, habe ich alles Alu vor den Vorderrädern durch Kunststoff ersetzt und die Sensoren so weit wie möglich vom restlichen Fahrgestell entfernt. Die Motoren waren dabei kein Thema, der Empfang war ohne diese schon weg.
So gesehen ist ein Aufbau aus Metall ein Problem für die Sensoren und sollte vermieden werden.

Etwas was aber nicht ging war in meiner ersten Mäher-Version ein hinterer Sensor optimistisch direkt neben den Fahrmotoren...

LG!

jguethe
15.05.2013, 22:53
@Bernd-Stein

Hi,
ich sehe erst jetzt Deine Anmerkung zu meiner Leistungsverschwendung.
Hierzu nun meine Anmerkung: Deine Empfangstechnik beruht auf einem völlig anderen Prinzip. Wenn ich es richtig sehe, wird die - zugegeben- sehr geringe Leistung dauernd abgefordert.
Bei "meinem" Konzept bitte beachten: Impulsbetrieb! Duty-Cycle bei mir 5ms an, 195ms aus = 2,5 %; im Mittel sind es dann rechnerisch 12 W. Das ist immer noch viel, aber hört sich doch schon ganz anders an.

vg
jguethe

BenniX
16.05.2013, 06:47
Hallo zusammen!

Ich lese sehr interessiert die Artikel zur Induktionsschleife und zum Sensor. Das Projekt ist auch schon am laufen. Leider finde ich nirgendwo eine Stückliste für Sender und Empfänger. Oder gibt es die bausätze auch schon irgenwo fertig?

Beste Grüße
Ben

Bernd_Stein
16.05.2013, 10:02
...
Ich denke mir das Funktionsprinzip ist folgendes: Durch den Phasensprung in der Mitte der Sinuswelle, hat man einen definierten Zeitpunkt in dem Signal. Geht man z.b. x ganze Phasen nach vorne erhält man eine positive oder negative Halbwelle je nachdem ob der Sensor innerhalb oder außerhalb der Schleife ist. Der Zeitpunkt des Phasenwechsels müßte dabei ganz genau bestimmt werden, was ich mir andererseit schwer vorstelle, aber wie soll´s denn sonst funktionieren.

Zu aller erst : " Im Posting #320 ist der PDF-Schaltplan unvollständig ". Bei dem Schaltplan des Begrenzungsdrahtsignalaufnehmers fehlt die Ansteuerung der ICs 4 und 5 ( 4051 ). Außerdem geht es noch weiter mit Verstärkerstufen. Ich vermute Patte 4 de U453 wird gleich sein mit Patte de U454. Da es hierzu kein Schaltplan gibt.
Hier mal die Schaltpläne des oder der Franzosen :

25506 25507

Thema : " Funktionsprinzip des Begrenzungsdrahtsignalgebers von FriendlyRobotics "

Ehrlich gesagt, weiß ich nicht wie das Funktionsprinzip ist. Die Seite ist in englisch und meine Englischkenntnisse reichen da nicht aus. Und meine Elektronikkenntnisse reichen auch nicht um aus den aufgenommen Signalverläufen zu erkennen was das Prinzip ist.
Und wo ich mich gerade mit den Schaltplänen des Begrenzungsdrahtsignalaufnehmers befasse, merke ich das ich auch noch mal das Thema Operationsverstärkerschaltungen ganz nötig habe.

Das entlangfahren am Begrenzungsdraht macht der RoboMow RL500 sehr gut. Auch 90° Kurven meistert er perfekt ( obwohl davon - glaube ich - abgeraten wird ). Er fährt wirklich schnurstracks gerade dem Begrezungsdraht nach. Wenn man sich anhand der Schaltpläne bzw. der aufgenommen Signale den Aufwand ansieht, scheint eine vernünftige Fahrt entlang des Bergrenzungsdraht nur mit soch einem Aufwand möglich. Natürlich spielt auch die Reglung der Antriebsmotoren dabei eine wesentliche Rolle.


Thema : " WebCam "

Der Thread ist nun schon sehr lang, aber das ist doch der Thread wo per Software bzw. Visualisierung das Mähfeld in kleine Quadrate aufgeteilt wurde um zu sehen wo der RMR bereits gemäht hat oder ?

Gerade die Mähstrategie ist ja der ganze Knackpunkt bei den RMR. Der Bosch INDEGO, RoboMow RS630 und all die anderen aktuellen RMR die zur Zeit wie Pilze aus dem Boden schießen, haben für mich immer noch kein vernüftiges Mähkonzept. Der INGEGO hörte sich von der Mähstrategie sehr viel versprechend an, aber in der Realität mäht er nicht so systematisch wie in den Animationsfilmen dargestellt.

Mit der WebCam in Kombination mit anderen Orientierungshilfen scheint ein sehr effizientes Mähen möglich.
Die anderen Kombinationen die mir spontan einfallen wären der Bergrenzungsdraht selber, Odometrie und ein Kompass.
Die WebCam könnte grob feststellen im welchem Quadranten sich der RMR befindet, mittels Begrenzungsdrahtsignalstärke wäre es möglich den Abstand bis zu diesem im Zentimeterbereich zu bestimmen und per Kompass und Odometrie könnte man gezielt den RMR zu einem Quadranten fahren lassen wo noch gemäht werden muß.
Die Mährstrategie stelle ich mir so vor, das erstmal entlang des Begrenzungsdraht gemäht wird. Jedes abbiegen stellt einen besonderen Punkt dar. Also so eine Art " Leuchtturm ", dessen Koordinaten als Bezungspunkt dienen kann. Nun wird beim erneuten erreichen des ersten Leuchtturms , die Schleife mit halber Mähbreite enger bzw. mit einem größeren Abstand zum Begrenzungsdraht gefahren. Also ein spiralförmiges Mähen von Außen nach innen. Auch feste Gegenstände gegen die der RMR stößt könnten als Leuchturm dienen. Mittels WebCam weiß man wieder in welchem Quadranten sich der RMR befindet und der feste Gegenstand bietet wieder die Möglichkeit einen Fixpunkt innerhalb dieses Quadtranten zu bestimmen. Dieser befindet sich ja wieder in einem bestimmten Winkel und Abstand zu einem anderen Fixpunkt ( Leuchturm ). Um so mehr Fixpunkte um so besser die Orientierung des RMR.


Bernd_Stein

Christian H
16.05.2013, 15:11
Hallo,

in dem Beitrag wird auch nicht erklärt wie die Unterscheidung innen/außen zustandekommt. Er beschreibt das Signal, erklärt letztlich aber auch nicht die Funktion. Meine Frage wäre diesbezügl, ob der RoboMow RL500 absolut feststellen kann, ob er sich innen oder außen befindet denn nur den Wechsel innen nach außen (oder außen nach innen) zu detektieren, ist natürlich wesentlich einfacher. Sprich, stellt man den RoboMow RL 500 außerhalb der Schleife auf und startet ihn dann, denkt er dann dass er innen ist??

Webcam: der Thread mit den kleinen Quadraten war ein anderer. Hoffentlich komme ich am Wochenende dazu nochmal einen Beitrag zum webcam-Theam zu machen

Muß jetzt wieder meine Brötchen verdienen. Viele Grüße

Christian

Bernd_Stein
17.05.2013, 12:46
...
Meine Frage wäre diesbezügl, ob der RoboMow RL500 absolut feststellen kann, ob er sich innen oder außen befindet denn nur den Wechsel innen nach außen (oder außen nach innen) zu detektieren, ist natürlich wesentlich einfacher. Sprich, stellt man den RoboMow RL 500 außerhalb der Schleife auf und startet ihn dann, denkt er dann dass er innen ist??

Habe die Wetterlage genutzt um dies zur überprüfen.

Vorab : Im 90° Winkel und größer darf der Begrenzungsdraht verlegt werden, nur nicht kleiner.

Also, lasse ich den RMR außerhalb seiner Schleife auf diese zufahren, positioniert er sich so das er diese im Uhrzeigersinn abfährt. D.h. richte ich ihn außerhalb seiner Schleife so aus, das er gegen den Uhrzeigersinn fahren müsste, korriert er sich so lange bis er seine Fahrtrichtung im Uhrzeigersinn ausgerichtet hat.

Innerhalb seiner Schleife macht er alles um gegen den Uhrzeigersinn zu fahren.
Setz man den RMR zu nahe an den Begrenzungsdraht, so gibt er dies als Fehlermeldung an und rührt sich nicht.

Somit würde ich mal behaupten, er erkennt definitiv ob er sich außerhalb oder innerhalb der Schleife befindet, nachdem er eine Richtung eingeschlagen hat. Er besitzt vier Sensoren ( Festinduktivitäten ). Vorne Links, Vorne Rechts, Hinten Links, Hinten Rechts.

Was zufällig aufgefallen ist, ist das es an einigen Stellen ein Problem mit dem Abstand zum Rand hin gibt, wenn er - ich sage mal - verkehrt herum fährt. Da ich wie in der Bedienungsanleitung vorgegeben, den RMR immer innerhalb der Schleife positioniert habe und dementsprechend dieser gegen den Uhrzeigersinn gefahren ist und ich den Begrenzungsdraht so nah wie möglich am Zaun verlegt bzw. korriert habe bis dies so genau wie möglich passte. Dies bedeutet das er nicht oder nicht immer genau mittig auf dem Begrenzungsdraht fährt. Ich meine dies auch zu Anfang beim verlegen des B-Drahtes so beobachtet zu haben, das der RMR nahe am Begrenzungsdrahtsignalgeber mittig über diesen fuhr und weiter entfernt stark aussermittig.


Bernd_Stein

Christian H
19.05.2013, 08:15
Hallo,

noch mal zur Wahl vom Netzteil, insb. an jguethe, dass das 36 V 12 A nicht ausreichend sein sollte und das 24 V 20 A Netzteil besser wäre. Das kommt mir sonderbar vor. Nimmt man den Aufbau aus rn-wissen wird ein 1mF Kondensator über einen Widerstand von 23 Ohm geladen. Bei einer Puls-Frequenz von 5 Hz wird der Kondensator für etwa 2 ms an die Schleife, sagen wir mal von 3 Ohm, gelegt. Dann fließt in der Schleife kurzzeitig ein Strom von etwa 10A. Im Schnitt macht das bei dem Pulsverhältnis von 1:100 einen Strom von 100 mA. Was wiederum einer mittleren Leistung von etwa 3 bis 4 W entspricht. Zum Aufladens des Kondesators fließen wegen des 23 Ohm Widerstandes maximal 1 bis 2 A, wobei der Kondensator bereits nach 20 ms fast voll geladen ist. 36V 12 A sollten insofern sogar günstiger sein als 24 V 20 A. Eigentlich könnte sogar ein kleineres 5V-Neztteil reichen, wenn man über einen DC-DC step up Konverter (z.B. den Max643) den Kondensator auflädt.

Ein besonders hoher Verbrauch ist das somit nicht. Der Stromverbrauch der Anlage für den RoboMow ist offensichtlich besser. Die Umsetzung aber doch komplizierter. (Der Trick ist wohl, in der Sinusschwingung zu detektieren ob die letzte Halbwelle unmittelbar vor dem Phasenwechsel positiv oder negativ ist).


Mit freundlichen Grüßen

Christian

jguethe
19.05.2013, 10:01
Hallo Christian,
in meiner Schaltung liegt ein Widerstand R von 1,1 Ohm in Reihe mit C von 10000µF (=10 mF). Bei meinem Puls-Verhältnis von 5ms AN / 195ms AUS sollte C in der Pause (195ms) immer wieder so gut wie voll aufgeladen werden. Die Zeitkonstante von R/C ist deutlich geringer als 195ms. Die Schleife wird über R aus dem Netzteil u n d gleichzeitig ohne Vorwiderstand aus C gespeist. Der Schleifenwiderstand selbst dürfte deutlich unter 1 OHM liegen. Wenn ich mein Meßgerät anlege, erhalte ich nicht einmal ein eindeutiges Ergebnis. Wenn ich insgesamgt mit 1,5 OHm rechne (Vorwiderstand + Schleifenwiderstand), beträgt I bei dem 24V/20A-Netzteil rechnerisch 16A. Bei meinem "alten Netzteil "lieferte" nur das ohmsche Gesetz rechnerisch 24A, das Netzteil konnte jedoch nur 12A. Aber jenseits aller Theorie steht fest, dass ich mit dem neuen Netzteil keine Probleme mehr habe. Der Strom-Impuls ist deutlich größer geworden.

Zum Torcman-Motor / Jeti-Contoller
Was sagst Du denn zu meiner Ansteuerung im geregelten Heli-Modus. Ich hatte es früher nicht gewagt, diesen Modus einzustellen, weil dann das Timing 0 Grad beträgt. Torcman empfiehlt ja 24 Grad. Nun habe ich es einfach gemacht und es funktioniert ganz toll. Über die Jeti-Box kann man das Timing dann doch wieder auf 24 Grad setzen. Ich habe bisher keinen Unterschied feststellen können (ob 0 oder 24 Grad Timing).

gruss
jguethe

Christian H
19.05.2013, 11:02
Hallo jguethe,

na Hauptsache es funktioniert. Durch den geringen Vorwiderstand ist die Zeitkonstante ja nur um 10 ms. Der mittlere Stromverbrauch wird dadurch auch nur bei 1 A sein. Durch das kräftige Netzteil bricht die Spannung nicht ein. Es gibt halt unterschiedliche Anforderungen je nach Länge der Schleife. Schade ist nur, dass man extra ein so starkes Netzteil braucht.

Die Ansteuerung mit Heli-Modus ist natürlich clever. Bei meinem Regler habe ich zu Beginn die PWM-Frequenz nach oben stellen müssen, da der Motor ansonsten einen unangenehmen hohen Summton von sich gegeben hat. Zum Geschwindigkeitsregel habe ich einen dunklen Streifen auf der Glocke und den optischen Sensor CNY70. Darauf kannst Du dann wohl verzichten. Heli-Modus kann ich bei meinem leider nicht einstellen.

Viele Grüße

Christian

Christian H
20.05.2013, 19:45
Hallo,

vor einiger Zeit ist noch mal nach Bildverarbeitung/webcam gefragt worden. Da ich vor Kurzem von VB6 auf vb.net umgestiegen bin, stelle ich hier noch mal meine Erfahrungen und Codeschnipsel zusammen. Vielleicht ist es ja dem einen oder anderen hilfreich Als erstes ein kurzes Video, vom Monitor mitgeschnitten:


http://youtu.be/eJAyPo1QApY

Die webcam ist im 2.Stockwerk angebracht. Die Videoüberwachung besteht im wesentlichen aus:
1. Erstellen von bitmaps aus dem laufenden mjpg-stream
2. Korrektur der schrägen, verzerrten Bildern in eine Aufsicht von oben
3. Objekterkennung des Rasenrobo
4. Steuerung des Rasenrobo entlang eines vorgezeichneten Kurses

Für Objekterkennung könnte man auch OpenCV einsetzen. Ginge sicher flotter, wollte mir aber mal alles zu Fuß erarbeiten. Aforge habe ich kurz angetestet. Nachdem es eine gefühlte Ewigkeit dauerte, bis der live-stream auf dem Monitor war, habe ich auch das gelassen und alles nur mit vb.net Bordmittel programmiert.

zu 1.: Habe eine Klassenbibliothek "streamtoimage.dll" gestrickt (in OpenCV gibt´s dafür sicher fertige .dll):

Imports System.Drawing, System.Drawing.ImagingImports System.Net, System.IO
Imports System.Net.Sockets
Public Class Streamtoimage
Shared img As Bitmap, flag As Integer = 0, flag2 As Integer = 0
Shared flag3 As Integer = 0, z As Integer = 0, z5 As String, ii As Integer = 0
Shared tcpclient As TcpClient
Shared enc As System.Text.Encoding = System.Text.Encoding.Default
Shared st As String
Shared buffer5(400000) As Byte, buffer6(200000) As Byte, remotehost2 As String = "", schnipsel2 As String = ""
Shared WithEvents t1 As Timers.Timer

Public Shared Function zeit()
Return z
End Function

Public Shared Sub starten()
If flag3 = 1 Then Exit Sub
flag3 = 1 : ii = 0 : flag = 0 : flag2 = -200
tcpclient = New Net.Sockets.TcpClient()
tcpclient.ReceiveBufferSize = 100000
tcpclient.Client.Connect(remotehost2, 80)
st = "GET /" + schnipsel2 + " HTTP/1.1" + vbCrLf + "Host: 192.168.1.15" + vbCrLf + "Connection: keep-alive" + vbCrLf + vbCrLf ' + "Referer: http://" + "192.168.1.35/live.asp?r=20121005" + vbCrLf + vbCrLf
tcpclient.Client.Send(enc.GetBytes(st))
t1 = New Timers.Timer : t1.Interval = 30 : t1.Enabled = True
flag3 = 0
End Sub

Public Shared Function streamtoimage(ByVal remoteHost As String, ByVal schnipsel As String)
remoteHost2 = remoteHost : schnipsel2 = schnipsel
If IsNothing(tcpclient) = True Then starten()
If tcpclient.Connected = False Then starten()
Return (img)
End Function

Protected Overrides Sub Finalize()
t1.Enabled = False
tcpclient.Close()
MyBase.Finalize()
End Sub

Private Shared Sub t1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles t1.Elapsed
If flag > 0 Then Exit Sub
flag = 1 : flag2 = flag2 + 1 : If flag2 = 50 Then starten()
Dim data As String, i As Integer = 0, iii As Integer
Dim länge As Integer, anf As Integer
If tcpclient.Client.Available > 0 Then
i = tcpclient.Client.Receive(buffer6)
If ii + i >= 400000 Then ii = 0
Array.Copy(buffer6, 0, buffer5, ii, i) : ii = ii + i
data = enc.GetString(buffer5, 0, ii)
iii = InStr(data, "Content-Length")
If iii > 0 And ii > iii + 50 Then
länge = (Val(Trim(Mid(data, iii + 15, 7))))
anf = InStr(iii + 18, data, vbCrLf + vbCrLf)
If anf + 3 + länge <= ii Then
Array.Copy(buffer5, anf + 3, buffer6, 0, länge)
img = Bitmap.FromStream(New MemoryStream(buffer6))
z = Now.Second * 1000 + Now.Millisecond
ii = 0 : flag2 = 0
End If
End If
End If
flag = 0
End Sub
End Class




Aus dem Programm können dann laufend mit img=streamtoimage("IPwebcam","Anfrage") Bilder aus dem web-stream geladen werden. Tricky ist der Ausdruck für "Anfrage". Der ist von der webcam abhängig und z.B. für meine Edimax IC-3115W: snapshot.cgi Gibt man z.B. im webbrowser
http://IPwebcam/snapshot.cgi (http://192.168.1.35/snapshot.cgi)
ein, kommt sofort der livestream. Für andere webcam läßt sich der Ausdruck aus dem Quellcode rausfischen.

2. das image packt man in ein array (buffer1):


Dim bd1 As BitmapData
Dim rect As New Rectangle(0, 0, img.Width, img.Height)
bd1 = img.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb)
dim max as integer = bd1.Stride * bd1.Height - 1
dim buffer1(max) as integer
Copy(bd1.Scan0, buffer1, 0, max) : img.UnlockBits(bd1)


dann verschiebt man die Pixel im Array buffer um eine Aufsicht von oben zu erhalten. Stichwort Koordinatentransformation,Projektion



matrix()
.
.
.
For i = 1 To max : Bildneu(i) = buffer1(matrixxy(i)) : Next
.
.
.
Sub matrix()
Dim x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer
Dim a As Integer, b As Integer, f As Single, yschräge As Integer
a = 1400 : b = 800 : yschräge = 70
For k = 0 To img.Height - 1 : For i = 0 To img.Width - 1
x1 = img.Height - k : y1 = i - yschräge * (x1 / img.Height) '- d
f = (a * b - x1 * a - y1 * b) : If f < 1 Then f = 1
f = a * b / f
y1 = (f * y1 * 0.5) : x1 = (f * x1 * 0.5)
x1 = img.Height - x1
if x1 >= 0 And y1 >= 0 And x1 < img.Height And y1 < img.Width Then
For a1 = 0 To 2 : For a2 = 0 To 2 : For a3 = 0 To 2
y2 = y1 + a1 : x2 = x1 + a2
If k*stride + i*3 + a3 <= max And x2*stride + y2*3 + a3 <= max Then
matrixxy(x2 * stride + y2 * 3 + a3) = k * stride + i * 3 + a3
End If
Next : Next : Next
End If
Next i : Next k
End Sub


Die Unterseite des Videobildes kann man bereits durch Ausrichten der webcam parallel zur x-Achse einstellen. Dann sind noch 3 Parameter einzustellen, die man am besten durch probieren ermittelt. Mit yschräge wird die y-Achse senkrecht zu x-Achse ausgerichtet. a und b entsprechen dem Abstand der Fluchtpunkte (Horizont) in x und y Richtung vom Nullpunkt.

3. Erkennung des rasenrobo: Der Robo hat einen roten Fleck. Grob gesagt wird zu jedem Pixel der Wert 3 * rot - blau - grün bestimmt. Dann bestimmt man die größte positive und negative Änderung dieses Parameters von einem Bild zum nächsten und mittelt noch über mehrere benachbarte Pixel. Wer´s genauer wissen will, muss sich leider durch folgenden Code arbeiten:


schritt=2 ' um´s etwas zu beschleunigen

For k = 0 To img.Height - 1 Step schritt
For i = 0 To (img.Width - 1) Step schritt
blau = Bildneu(k * stride + i * 3)
grün = Bildneu(k * stride + i * 3 + 1)
rot = Bildneu(k * stride + i * 3 + 2)
blaualt = Bildalt(k * stride + i * 3)
grünalt = Bildalt(k * stride + i * 3 + 1)
rotalt = Bildalt(k * stride + i * 3 + 2)
S5(i, k) = 3 * rot - blau - grün - 3 * rotalt + blaualt + grünalt
Next i : Next k

Bildneu.CopyTo(Bildalt, 0)

'als nächstes Mittelung mit benachbarten Pixel
For k = 1 To img.Height - 1 Step schritt
For i = 1 To (img.Width - 1) Step schritt
If S5(i, k) <> 0 Then
S1(i, k) = S5(i, k) + (S1(i - 1, k) + S1(i, k - 1)) / 9 * 4
Endif
ii = img.Width - i - schritt : kk = img.Height - k - schritt
If S5(ii, kk) <> 0 Then
S2(ii, kk) = S5(ii, kk) + (s2(ii + 1, kk) + s2(ii, kk + 1)) / 9 * 4
endif
Next i : Next k

' Maximum- und Minimumwerte suchen
For k = 0 To img.Height - 1 Step schritt
For i = 0 To (img.Width - 1) Step schritt
S1(i, k) = S1(i, k) + s2(i, k)
If smax < S1(i, k) Then smax = S1(i, k) : xmax = i : ymax = k
If smin > S1(i, k) Then smin = S1(i, k) : xmin = i : ymin = k
Next i : Next k
If smax < 200 Then xmax = -100 : ymax = -300 'nichts gefunden
If smin > -200 Then xmin = -200 : ymin = -400 'nichts gefunden


xmit = 0 : ymit = 0
' nur wenn max und min nahe beieinander liegen auswerten
' Mittelpunkt zwischen Maximum und Minimum ermitteln (Schwerpunkt)
If abs(ymax - ymin) < 40 And abs(xmax - xmin) < 40 Then
ymit = (ymax + ymin) / 2 : xmit = (xmax + xmin) / 2
If ymit Mod 2 = 1 Then ymit = ymit + 1
If xmit Mod 2 = 1 Then xmit = xmit + 1
x = 0 : y = 0 : m1 = 0
For i = xmit - 30 To xmit + 30 Step schritt
For k = ymit - 30 To ymit + 30 Step schritt
If i > 0 And k > 0 Then
x = x+i*abs(S1(i, k)): y = y+k*abs(S1(i, k)): m = m+abs(S1(i, k))
End If
Next : Next
xmit = x / m : ymit = y / m
End If


xmit und ymit sind dann die gesuchten Koordinaten. Anschließend kann man noch evtl. Ausreißer von xmit und ymit verwerfen. Die Werte machen ja keine großen Sprünge.

Dann braucht man noch etwas an Krimskrams für ne GUI drumrum. Uff, das war´s dann. Von denen die sich mit Objekterkennung auskennen, hätte ich natürlich gerne gewußt, ob´s z.B. mit OpenCV wesentlich besser und einfacher geht.

Beste Grüße

Christian

damfino
23.05.2013, 11:34
Danke für die Info über die Bilderkennung. Jetzt muss ich noch ein Tutorial für vb.net für dummies suchen :-)
Wäre ein rotes Licht nicht einfacher/zuverlässiger zu erkennen?

LG!

Bernd_Stein
23.05.2013, 19:30
...
Webcam: der Thread mit den kleinen Quadraten war ein anderer.

Ja, jetzt fällt es mir auch wieder ein.

Das ist das Projekt von Damfino.

https://www.roboternetz.de/community/threads/37582-Rasenm%C3%A4her-mit-Navigation-neu-mit-A*-Wegfindung!/page23?p=464466&viewfull=1#post464466

Hoffe ihr tut euch mal zusammen und bastelt aus euren beiden Projekten ein gemeinsames.


Bernd_Stein

Christian H
23.05.2013, 20:50
Hallo,


an damfino. Könnte man mal ausprobieren. Denke aber nicht, dass es besser geht. So funktioniert´s tasächlich relativ zuverlässig auch bei Sonne mit und ohne Schatten. Zumindest bei Sonnenschein wird eine Lampe doch von der Umgebung überstrahlt. Außerdem nuckelt die den Akku schneller leer. Zu vb.net: Einfach mal Visual Studio Express 2012 installieren und ausprobieren. Ein Tutorial ist mit dabei. Erst mal mit einfachen Windows Applikationen anfangen. Mir macht´s Spaß. Hat einen gewissen Suchtfaktor. Bei Fragen kannst mir auch eine PN schicken. So ganz einfach ist´s mit dem kompletten Programm zur Bilderkennung auch wieder nicht. Visual Basic ist für mich einfacher als C++. In der Performance gibt´s da keine Unterschiede mehr. Die ganze Struktur von Visual Basic ist wie die von C++.


Christian

damfino
23.05.2013, 21:34
Hallo Christian,
Heute habe ich das Visual Studio schon mal installiert, werde es in den nächsten Tagen mal genauer ansehen. Wollte schon länger mal Windows Applikationen programmieren können, das gibt einmal einen Anlass dazu. Alte Webcam liegt auch herum und wartet auf Verwendung.
Meine Vorkenntnisse sind halt mager, Basic am C64, Pascal unter Dos, C kurz im Studium angerissen und erst die letzten 2 Jahre beim Rasenmäher so halbwegs reingekämpft.

@Bernd_Stein: Auch wenn man diese Projekte zusammen legt, wird das kein universelles System werden dass jeder sofort anwenden kann. Die Karte ist manuell erstellt, eine selbstlernende Karte müsste zB erkennen wann Hindernisse eine geschlossene Fläche bilden. Jede Webcam muss ausgerichtet werden, die dort errechneten Koordinaten müssen mit der Karte im Roboter zusammen passen.
Was mich immer wieder erstaunt ist, dass die Karte die gemähten Flächen recht exakt erfasst, dh die Grasinseln passen gut mit den weissen Flecken auf der Karte überein. Und das obwohl das GPS mal auf 2m, mal auf nur 10m genau ist.

LG!

Bernd_Stein
25.05.2013, 11:38
...
@Bernd_Stein: Auch wenn man diese Projekte zusammen legt, wird das kein universelles System werden dass jeder sofort anwenden kann.
...


Noch nicht ;-)

Dies ist natürlich der Wunsch der Meisten die hier mitlesen, wie auch meiner. Das Zusammenlegen beider Projekte ergibt jedoch ziemlich genau das was ich mir unter einer " effektiven Mähstrategie " vorstelle.

Schön das es schon mal einen Austausch zwischen Euch beiden gibt und Du an der WebCam-Sache interessiert bist. Ich hoffe es kommt etwas dabei raus, das man als " Bastler " nachbauen und seinen eigenen Erfordernissen anpassen kann. Damit meine ich das alle Quellen ( Software, Hardware ) vollständig und frei zugänglich sind. Das dies jedoch auch immer mit Arbeit, Fragen und eigenen Bemühungen verbunden ist, sehe ich bei jedem Projekt das ich nachbaue. Die wenigsten passen genau so wie man es haben möchte und deshalb ist man meistens gezwungen Anpassungen vorzunehmen, die jedoch meistens scheitern, da einem das Verständnis bei den Details in einem Projekt fehlt.


Bernd_Stein

ozett
30.05.2013, 18:51
Hallo,
beim Vorschlag der Threadzusammenlegung und Nachlesen über die Laserrotation kam mir die Idee, ob nicht eine Kamera-Rotation die Lösung sein könnte?
Wenn an vier Ecken (einigen Stellen) farblich markierte Stäbe als Leuchttürme stünden, dann müsste man einen Berecnungsweg finden, über die Winkel der Kamerarotation bei Erfassung eines Leuchtturmes die aktuelle Position x/y zu bestimmen. Vielleicht ein Weg zur "eefektiven Mähstrategie"?

gruss, ozett

ozett
02.06.2013, 22:39
Hallo Christian,
ich sehe mir einige robomäher an, finde deine erfahrungen aber schon ziemlich weit.
(robo2 mow, http://www.robotshop.se/micro/wwwrc/indext.htm, tom's chassis hier, Damfino und jguerthe hier ...)
ich komm aber mit nachdenken nicht dahinter, warum die räder einfache plexi-scheiben sind. fehlt da nicht etwas "grip" ... wohl nicht, sonst wären sie anders, oder?

gruss,
ozett

Christian H
03.06.2013, 07:32
Guten Morgen,

die prinzipelle Überlegung ist ja, ob man besser schmale oder breite Räder nimmt. Physikalisch betrachtet ist die Vorwärtskraft, die man erreicht, von der Reifenbreite unabhängig, da mit schmäleren Reifen zwar die Auflagefläche abnimmt, der Druck aber steigt. Anders ausgedrückt: Die mögliche Vorwärtskraft ist Reibungskoeffizienz * Gewicht des Robos. Trotzdem haben schmale Räder auf Rasen den Vorteil, dass sie weiter einsinken und dadurch mehr grip haben. Mit sehr breiten Reifen "schwimmt" der Robo auf dem Gras. Ich bin´s deshalb mit schmalen Plexischeiben angegangen, die allein durch meine bescheidenen Fertigungsmethoden rauh sind. Ggf. hätte ich Kerben in die Räder gemacht. Das hat´s dann aber gar nicht gebraucht.

Grüße

Christian

naneona
03.06.2013, 12:34
... Ich hoffe es kommt etwas dabei raus, das man als " Bastler " nachbauen und seinen eigenen Erfordernissen anpassen kann. Damit meine ich das alle Quellen ( Software, Hardware ) vollständig und frei zugänglich sind. Das dies jedoch auch immer mit Arbeit, Fragen und eigenen Bemühungen verbunden ist, sehe ich bei jedem Projekt das ich nachbaue. Die wenigsten passen genau so wie man es haben möchte und deshalb ist man meistens gezwungen Anpassungen vorzunehmen, die jedoch meistens scheitern, da einem das Verständnis bei den Details in einem Projekt fehlt.

Bernd_Stein

Das Problem habe ich auch, ich finde Projekte, Detaillösungen ... wo man mit den Ohren schlackert und toll ausruft.
Selbst wenn einige Sachen erklärt sind, ist das doch meistens nichts für einen Bastler zum nachbauen.
Deswegen versuche ich möglichst viele Interessierte zusammen zu bekommen um ein System auf die Beine zu stellen, wo jeder an die Hardware kommt und für individuelle Lösungen einen Detaillierte Beschreibung zu finden ist.
FORUM (http://www.insaneo.selfhost.bz/index.php/forum/herr-lass-es-hirn-regnen)
Auf die Plattform wurde sich schon geeinigt. (arduino mega 2560)
Die Treiber für die Antriebsmotoren sind auch gefunden.
Ziel ist es am Ende eine Liste für die Hardware zu haben und eine passende Software mit einigen Variationen, für verschiedene Modelle.
Dazu eine gute Anleitung, die es jedem Hobbylöter ermöglicht das ganze nach zubauen.
Wenn alles klappt kann ein Tianchen, Rotenbach (oder wie auch immer) Besitzer, b.z.w. Chassis Selbstbauer für runde 50 € eine gut durchdachte Steuerung für sein Mäher bekommen.
Wer mitmachen will ist herzlich Eingeladen.
Alles was wir dort erarbeiten steht jedem frei zur Verfügung. Das heißt jeder der sich einbringt kann die Ergebnisse/das Projekt bei sich, hier oder wo auch immer nutzen und auch veröffentlichen.
Nur eine Kommerzielle Nutzung ist nicht erlaubt.
Seit Jahren gibt es immer wieder Ansätze, Einzellösungen usw, es muss doch möglich sein Endlich eine Modularsystem für Mähroboter auf die Beine zu stellen das am Ende auch eine leicht nachvollziehbare Lösung ergibt.
Ich freue mich sehr Alexander von Grauonline (http://grauonline.de/wordpress/?page_id=78) überzeugen konnte und hoffe auch hier auf interessierte zu stoßen.

ozett
03.06.2013, 21:57
die idee ist gut, aber in diesem thread vielleicht nicht richtig.
dein forum ist auch ein wenig.. naja, wenn ich auf die aussagen der homepage gucke...: "Kein Plan, Zugriffe: 12 , ... noch eine Seite die, die Welt nicht braucht über Rasenroboter, Milwaukee Stahl, Hertha und Modellbau."
schöne idee, die china-plattform für 600 EUR zu kaufen, und ne eigene intelligenz zu bauen. aber die meisten chassis sind noch etwas günstiger, und ich halte den raspberry-pi (easy wlan, etc...) für eine gute plattform für die steuerung ....
wie man hier sieht, reicht wenig plexi für das chassis und viel intelligenz für die steuerung ... OT, langsam ...

Bernd_Stein
13.06.2013, 08:05
...
schöne idee, die china-plattform für 600 EUR zu kaufen, und ne eigene intelligenz zu bauen.

Für den Preis kann man dies nicht behaupten. Lese :

https://www.roboternetz.de/community/threads/49659-Tianchen-GC-158-Erfahrungen-was-JP-Rasenm%C3%A4her-Roboter/page17?p=577759&viewfull=1#post577759

Aber ich denke genug davon. Wir kapern nämlich gerade diesen Thread :(.



Bernd_Stein

jguethe
13.06.2013, 15:22
13.06.2013 weitere Bilder vom Chassis eingestellz; jguethe

naneona
13.06.2013, 17:22
Für den Preis kann man dies nicht behaupten. Lese :

https://www.roboternetz.de/community/threads/49659-Tianchen-GC-158-Erfahrungen-was-JP-Rasenm%C3%A4her-Roboter/page17?p=577759&viewfull=1#post577759

Aber ich denke genug davon. Wir kapern nämlich gerade diesen Thread :(.

Bernd_Stein

Nochmal zum besseren Verständnis, die Software (inklusive Steuer Hardware) die wir DORT (http://www.insaneo.selfhost.bz/index.php/forum/ardunio-mower) auf die Beine Stellen sind nicht für einen bestimmten Typ Roboter gedacht.
Ob man ein gebrauchtes Markengerät, Selbstbau Chassis oder Billiger China Mower nimmt ist gelinde gesagt Sch... Egal.
Das einzige um was es dort geht, ist eine Steuerung auf die Beine zu stellen, die jeder nutzen und auch nachbauen kann.
Das ganze wird am Anfang recht einfach sein aber laufen.
Eine erste (vor) Version ist schon aufgetaucht (noch ohne Schleifensensoren)
Das ist mehr als das, was ich sonst so finde, mir (und vielen anderen) nützen keine Threads die sich über Jahre hinziehen und die tollsten Dinge in Aussicht stellen. Ich wollte etwas das auch zu einem Greifbaren Ergebnis führt und da sind wir auf dem besten Weg.

@jguethe
was hast Du für Motoren genommen? (Antrieb/Mähmotor)

jguethe
13.06.2013, 21:22
@naneona
Antrieb: EMG49 mit integriertem Drehgeber (robotikhardware.de)
Mähmotor: Brushless-Typ 430er Serie 20 Pro 14 von Torcmann, mit 28 Windungen (Sonderanfertigung)
angesteuert von handelsüblichem Controller Jeti Spin 75; dieser wird bei mir prinzipiell im Modus 5 (geregelter Heli-Modus)
betrieben. Ergebnis: Extrem gute Regelung, hohes Drehmoment.

gruss
jguethe

ozett
15.06.2013, 16:02
@jguethe: danke für die fotos.
mein startschuss für den robo fällt mit der aussicht auf eine praktikable induktionsschleife. muss ca. 500m kabel legen. ich habe interessiert die details der fehlersuche mitgelesen. alles sehr hilfreich. hier wird ja jetzt gerade auch probiert. (http://www.insaneo.selfhost.bz/index.php/forum/ardunio-mower/22-sensoren?start=20#102)sehr gut.
dabei fällt mit an deinen fotos die vertikale stellung der spulen auf. ist das richtig? muss die spule nicht längs liegen, d.h. die längsachse der spule parallel zur längsachse des kabels liegen.
auf deinen fotos sieht es so aus, als ob die spule hochkant, also 90° grad gewinkelt zu einem erdkabel liegt. gibts dafür einen grund?

gruss
ozett

Christian H
15.06.2013, 17:23
@ozett.

Da ich gerade mitgelesen habe, versuche ich mal zu antworten. Daß die Spule senkrecht steht, ist schon richtig. Kannst Dir ja die Begrenzungsschleife als eine Windung einer riesigen Spule vorstellen. Und die Windungen der Empfängerspule sind dann parallel hierzu wenn sie senkrecht steht. Die megnetischen Feldlinien laufen dann von oben nach unten durch beide Spulen hindurch. Dadurch bekommt man auch ein Signal, wenn man in der Mitte der Begrenzungsschleife steht. Das Signal ist knapp vor dem Begrenzungsdraht sehr stark, genau über dem Begrenzungsdraht 0, knapp dahinter wieder sehr stark aber mit umgekehrter Polarität.

Tatsächlich 500 m Kabel, das würde ja für ein Grundstück von etwa 100 x 100 m also 10000 qm reichen. Respekt.

Viele Grüße und viel Erfolg

Christian H

Besserwessi
15.06.2013, 17:24
Die Spule mit der Achse Vertikal ist bei der normalen Induktionsschleife schon richtig: das zu gemessene Feld ist die Vertikale Komponente, denn die ändert sich beim Übergang von innen nach außen.

Das Feld um das Kabel verschwindet in Richtung des Kabels aus Symmetriegründen gerade. die Achse in der Spule in die Richtung wäre also genau falsch. Mit 2 Horizontal ausgerichteten Spulen könnte man ggf. auch den Rand erkennen, allerdings weiß man da nicht ob man gerade drinnen oder draußen ist, sondern nur ab der Rand eher links oder rechts ist, sofern man im Feld ist. Die Auswertung mit 2 horizontalen Spulen ist auch etwas komplizierter und natürlich anders als mit der einen vertikalen Spule.

ozett
16.06.2013, 16:01
@christianH: die länge ist natürlich überschlagen. aber ich habe bei der installation des sabo mobo bei meinem onkel gesehen, dass man für ca. 60x20m eta 1/4 mehr kabellänge benötigt. wegen der ein- und ausgrenzungen. so habe ich meine länge überschlagsweise inklusive der ein- und ausgrenzungen ermittelt. eigenltich müsst man 40x60m, aber auch mind. zwei rückführungen berücksichtigen. kaum eine rasenfläche ist wirklich nur rechteckig. so komme ich klein gerechnet auf ca. 350m. vermutlich aber eher 400. ob das problemlos mit einem selbstbau generator geht? schön wäre dann auch ein weg, den robot an den induktionsschleifen zur homebase zu führen. ich denke im augenblick bei insaneo mit...

@ besserwessi: ok, spulenachse vertikal, also die spulenwindungen als zusätzliche windungen zu der "einen induktionswindung". aber was machen die chinesen mit dieser anordnung hier (http://grauonline.de/wordpress/?page_id=151http://). diese anordnung als kreuzspulenpaar ist mir dann immer noch nicht richtig klar.

Christian H
16.06.2013, 20:01
Die chinesische Anordnung arbeitet anders. Sie erkennt die Begrenzungschleife daran, dass die induzierte Spannung maximal ist. Der Nachteil ist halt, dass man in der Mitte der Schleife wahrscheinlich gar kein Signal hat. D.h. der Roboter muß also auch bei fehlendem Signal weiterarbeiten und würde demzufolge auch bei einem Ausfall der Begrenzungsschleife munter weiterfahren. Hat man einen Teich im Garten, ist dieses Verfahren also etwas riskant. Vorteil ist wahrscheinlich, dass man an der Schleife einfach nur eine Wechselspannung anlegen muß. Bei dieser Methode kann auch nicht zwischen innerhalb und außerhalb der Schleife unterschieden werden. Der Vorteil ist wohl, dass das Verfahren auch bei einer sehr großen Begrenzungsschleife funktionieren wird, man detektiert ja nur das Signal in unmittelbar Nachbarschaft der Schleife. Ich würde das so zumindest interpretieren, ohne mich groß mit der chinesischen Variante beschäftigt zu haben. Welche Methode man wählt, hängt also von den Anforderungen ab (großer Garten, Sicherheitsaspekt, z.B. Teich)

Viele Grüße

Christian

ozett
16.06.2013, 22:26
wenn das hier stimmt (http://insaneo.selfhost.bz/insaneo/index.php/forum/ardunio-mower/22-sensoren?limitstart=0&start=20#59), dann sendet ein 433mhz signal dem robo zusätzlich, dass die schleife ok/unterbrochen ist. damit er stehenbleibt brauchts dann wohl diese kombination. bleibt, dass er so dann innen und aussen immer noch nicht unterscheiden kann.

bin noch auf der suche (http://insaneo.selfhost.bz/insaneo/index.php/forum/ardunio-mower/22-sensoren?start=20#118), ob das _spike_ verfahren auch ohne riesen-fummelei mit 400m kabel geht. oder wenn man es aufteilt, ob und wie ärgerliche störungen kämen ...

Christian H
17.06.2013, 07:43
@ ozett,

habe eben gelesen, dass Du Dich fragst wieso ich vier Spulen auf meinen Robo habe. Der Grund ist nur immer sicher zu erkennen, dass der robo die Schleife erreicht hat, egal in welchem Winkel er an die Schleife ranfährt, von vorne oder von hinten. Ist nur weil ich keine Lust habe den robo aus dem Teich zu fischen.

Christian

ozett
17.06.2013, 09:31
danke für die antwort.
bin kurz davor, mir auch eine schleife zu bauen. wenn ich das nur richtig verstanden habe (http://www.insaneo.selfhost.bz/index.php/forum/ardunio-mower/22-sensoren?start=20#124), um einigemassen die steuerung beienflussen zu könnnen. hast du denn vier mal hochstehende spulen verbaut? oder kreuzspulenpaare? gibts vielleicht sogar ein aktuelles foto? gibts vielleicht auch noch mehr codeschnipsel zur vierfachen auswertung, als hier am anfang des threads?

danke und gruss,
ozett

Christian H
17.06.2013, 10:56
Hallo,

Bilder gibts auf Seite 14 und 31

https://www.roboternetz.de/community/threads/17785-Rasenrobo-mit-Induktionsschleife-Schaltbilder-Hallsensor/page14
https://www.roboternetz.de/community/threads/17785-Rasenrobo-mit-Induktionsschleife-Schaltbilder-Hallsensor/page31

Die Sensoren sind noch immer die selben. Hochstehende Spule. Codeschnitzel kann ich wohl erst am Mittwoch raussuchen. Ansonsten habe ich den rasenrobo vereinfacht. Nur noch ein Akku mit 12 Zellen, die 5 V für den MC über einen Schaltregler. 3 Bumper (vorne, rechts und links), Kompass, WiFly statt easy-radio, ein Sensor (magnetisch) am Vorderrad rechts für Odometrie, ein Sensor(optisch) für den Rasenmähermotor.

Keine sharp-, US- oder sonstige Sensoren. Kein Display.

Christian

ozett
18.06.2013, 11:28
hat jemand einen stromsensor verbaut? um zu messen, ob der mäh- oder fahrmotor mehr leistung anfordert und um dann darauf zu reagieren?
der sabo macht eine kreisfahrt, sobald er "dicken graswuchs" erkennt. d.h. vermutlich, wenn der mähmotor mehr kraft braucht.
müsste man auch für die fahrmotoren so machen, wenn der robo sich festfährt, oder?

gruss, ozett

ozett
18.06.2013, 21:52
bin jetzt kurz vor einem teilekauf, da habe ich mir die motoren und berechnung der notwenigen kraft (https://www.roboternetz.de/phpBB2/motordrehmoment.php?)nochmal angesehen.
die 385er von damfino und robitobi mit etwa 200:1 scheinen ok (wo kauft ihr die?).
aber der emg30 aus dem roboshop müsste schneckenlahm laufen. vielleicht kräftig, aber den werten nach und im vergleich statt möglicher 2km/h bei den 386er nur 0,2 km/h

@jguerthe:
kann das sein? ist dein robi so langsam unterwegs?

oder habe ich was übersehen.

gruss, ozett

Christian H
19.06.2013, 06:53
@ozett,

hast vor kurzem nach Codeschnitzel gefragt um die Sensoren auszuwerten:



Do
.
Dein Programm
.
B0 = S0 : B1 = S1 : B2 = S2 : B3 = S3
B0 = B0 + S0 : B1 = B1 + S1 : B2 = B2 + S2 : B3 = B3 + S3
B0 = B0 / 2 : B1 = B1 / 2 : B2 = B2 / 2 : B3 = B3 / 2
Ms0 = B0 + 100 : Ms1 = B1 + 100 : Ms2 = B2 + 100 : Ms3 = B3 + 100
Ss0 = B0 - 100 : Ss1 = B1 - 100 : Ss2 = B2 - 100 : Ss3 = B3 - 100
For I = 1 To 4500
Svr = S0
If Svr > Ms0 Or Svr < Ss0 Then
Svr = S0 : Shl = S1 : Shr = S2 : Svl = S3 : Exit For
End If
Shl = S1 :
If Shl > Ms1 Or Shl < Ss1 Then
Svr = S0 : Shl = S1 : Shr = S2 : Svl = S3 : Exit For
End If
Shr = S2 :
If Shr > Ms2 Or Shr < Ss2 Then
Svr = S0 : Shl = S1 : Shr = S2 : Svl = S3 : Exit For
End If
Svl = S3
If Svl > Ms3 Or Svl < Ss3 Then
Svr = S0 : Shl = S1 : Shr = S2 : Svl = S3 : Exit For
End If
Next

If i >=4500 then Notaus
Svr = Svr - B0
Shl = Shl - B1
Shr = Shr - B2
Svl = Svl - B3

.
Dein Programm
.
Loop




S0 bis S3 sind die per ADC gemessenen Sensorenwerte. Die Bs sind Mittelwerte um die Streuung etwas zu reduzieren. Tritt zum Zeitpunkt der For:next Schleife ein Spike auf, wird von einem der Sensoren dieser Mittelwert über- oder unterschritten. Daraufhin werden alle Sensorenwerte währen des Spikes erfaßt und die For-Next Schleife verlassen. Das Timing ist also wichtig, auf dass ein spike währen der for-Next-Schleife auftritt. Ist aber nicht kompliziert. Die Schleife gibt bei mir alle 0,2 sec einen Spike ab. Die For-Next-Schleife läuft die 500 etwa in 0,5 sec durch. Das restliche Programm braucht etwa 0,15 sec. So wird also ein Spike abgefangen. Kommt kein spike, läuft i bis 500 (nach 0,5 sec) und es ist klar, dass die Schleife ausgefallen sein muß.

Grüße

Christian

ozett
19.06.2013, 20:58
ok. danke. super.
also jeder spike wird _immer_ von den spulen erfasst, solange sich der robo _innerhalb_, d.h. auf dem rasen im breich der induktionsschleifeneingrenzung befindet (und diese nicht durchtrennt ist oder der spike-generator defekt) ist.
sehe ich das richtig?
oder wird vom spike in einer der spulen _nur_ dann stom induziert, wenn eine der verbauten spulen am robo in etwa in 50cm nähe/abstand des drahtes ist?

je nachdem ist mir der reaktionsalgorythmus nicht ganz klar.

das ganze robo-programm braucht 0,15s, dazu kommt periodisch die for-next-schleife mit 0,5s. nur wenn die for-next-schleife läuft, kann der robo die spulen abfragen und feststellen, ob er sich gerade auf dem draht befindet. ist das richtig verstanden?

danke und gruss,
ozett

Christian H
20.06.2013, 07:30
@ ozett, stimmt so. Ein Signal gibt´s auf dem ganzen Rasen.

ozett
20.06.2013, 09:29
ich hab' jetzt nochmal den ersten Post gelesen, weil ich nicht erkennen kann, ob du auch auf die polaritätsumkehr in der spule reagierst. (macht du nicht, oder?)

Ich glaube verstanden zu haben, dass du an allen vier ecken des roboters spulen hast und wenn eine der spulen (theroretisch" direkt oberhalb des begrenzungsdrahtes steht, ist in dieser spule das spike-signal im vergleich zu einem referenz-mittelwert (und in diesem Augenblick auch den anderen spulen) stärker.
d.h. der robo prüft quasi in Fahrt alle 0,20 sec (laufzeit des gesamten programm-loops), ob eine der spulen ein stärkeres signal emfängt als die anderen _und_ als der (laufend gemittelte?) referenzwert. stimmt das?
ein stärkerer signalimpuls an einer der spulen (eben im vergleich zum mittelwert und den anderen spulen) dürfte aber sicherlich auch schon einige 10cm vor erreichen des drahtes (nicht erst direkt darüber) so sein, oder? richtige annahme?

wenn dann also in deinem for-next-loop ein (immer im vergleich) stärkerer signalausschlag an einer der spulen erkannt ist, dann erfasst du nochmal alle sensorwerte (warum?) und die for-next-schleife wird verlassen.
der robo kann jetzt eigenlich 180° gegen die spulenposition (vl,vr,hl,hr) umsteuern (oder im zufallswinkel, des chaos wegen. oder des entkommens...) um wieder in das Rasenfeld einzufahren.

wenn es ein signal auf dem ganzen rasen gibt, dann müssten innerhalb des Rasenfeldes (also nicht im randbereich, in dem der draht liegt), das wohl nicht immer gleichförmig rund oder quadratisch ist, sonder ausgrenzungen (bäume, teich..) hat, der impulsempfang in allen 4 spulen gleichzeitig von etwas gleicher stärke sein. stimmt das auch? wenn eine der spulen ausfällt oder (keine ahnung warum, aber denkbar) im Rasenfeld die spulen den impuls nicht gleich bewerten (metallplatte im boden?), müsste der robo innerhalb auch des rasenfeldes seine fahrtrichtung mal ändern.

ist das alles so richtig - oder hab' ich da einige denkfehler gemacht?

Christian H
20.06.2013, 10:00
uff,

eigentlich hatte ich, bereits als der Artikel fürs rn-wissen geschrieben wurde, gedacht, es wäre ausreichend erklärt. Also, die Polarität der Spikes ist natürlich wichtig zu erfassen, da diese eben innen und aussen unterscheidet. Die Signalintensität ist erst mal nicht wichtig. Es geht nur um die Polarität. Dass man eben über die Schleife fährt, ergibt sich einfach daraus, dass die Polarität umschlägt. Genau genommen ergeben sich ja 2 Spikes hintereinander, der erste, wenn sich das Magnetfeld während des Impulses aufbaut(kurz und stark) und ein zweiter mit umgekehrter Polarität (schwächer und dafür länger), wenn es wieder verschwindet. In rn-wissen findet sich hierzu auch ein Diagramm. Es wird einfach immer der erste auftretende Impuls und dessen Richtung erfaßt.

ozett
20.06.2013, 13:06
also erstmal ganz herzlichen dank für die antwort.
ich habe jetzt den rn-artikel nochmal _langsam_ nachgelesen. hätte ich vielleicht vor meinem posting machen sollen, ja,ja, geht mir auch so: ufff! ;-)
ich würde mich freuen, wenn ich nochmal versuchen dürfte das zu verstehen? ich glaube, für die schmitt-trigger nachbildung in software fehlen mir grundlagen ....

also im ADC erhält man Werte bei jedem auftretenden spike. jeder spike-impuls (z.bsp. mit dauer von 150 ms) baut ein magnetfeld auf, das in der spule (je nach polung und/oder aufenhalt der spule innen/aussen) eine spannung mit polarität erzeugt.
am ende des spike-impules, durch den abfall des magnetfeldes, wird in der spule eine spannung mit umgekehrter polarität (und kürzerer dauer als beim aufbau) erzeugt.

durch die im rn-artikel gezeigte emfangselektronik können am ADC diese spannungen als entweder oberhalb 1/2 Vcc oder unterhalb 1/2 Vcc gemessen werden.
theoretisch also mit einsetzen des spikes (als positiver Impuls, je nach polung der spule oder lage innen/aussen) zwischen 2,5-5V
und mit Ende des spikes zwischen 2,5V und 0V für den negativ-Impuls beim Abbau des magnetfeldes, am ende von z.bsp. 150ms.
-- oder ist dieser ende-impuls zu kurz und wird nicht erfasst?

1/2 Vcc (also 2,5V) läge am ADC nur unter dieser bedingung an: (von hier) (http://www.rn-wissen.de/index.php/Begrenzungsschleife_-_Induktionsschleife)


"Wird keine Spannung in L induziert, stellt sich deshalb am Ausgang ebenfalls etwa 1/2 Vcc ein."
in den spannungslosen zustand kommt die spule aber nur, wenn keine induktion stattfindet (draht oder impulsgeber defekt), oder
"Befindet sich die Spule genau über der Schleife wird keine Spannung induziert."

UFFF!
Kommt jetzt die programmtechnische auswertung, ob dauerhaft innen oder aussen. also der schmitt-trigger in software?
oder fehlt hier irgendwie eine sinus-kurve?



"An- und Abschalten der Spannung an der Induktionsschleife erzeugen jeweils eine, weniger als 0,1 ms dauernde, Spannungsänderung (positiver oder negativer Spike) am Ausgang des OPV. Das Ausgangssignal wird im Mikrocontroller über den ADC ausgewertet"


was ist denn mit "negativer Spike" gemeint? Habe ich irgendwo eine sinus-modulation übersehen?

ich verstehe das bislang so, dass die werte am ADC in der impulsbreit von 150ms zwischen oberhalb und unterhalb 1/2Vcc pendeln? Also mit induktion einsetzendem Spike und induktion mit umgekehrter polarität durch spike-ende (=spannungsabfall).

in dem code-schnipsel (von hier) (http://www.rn-wissen.de/index.php/Begrenzungsschleife_-_Induktionsschleife)


Svr = Svr - A0: Svl = Svl – A1 'Differenzen Impuls - Ausgangswerte 'z.B. positiv innen, negativ aussen

wird der aktuelle spike-wert von "'A0= Ausgangswerte der Sensoren (ohne Impuls)" abgezogen.

macht man das mit ADC-Werten von 0-255 für 0-5V (1/2 Vcc wären dann etwa 125),
dann würde durch den Wechsel von positiver Spulenspannung mit Spike-anfang und negativer spannung zu Spike-ende der Wert von "Svr" doch mit jedem Impuls alle 150ms wechseln, oder nicht?
Also zwischen z.Bsp. +55 und -45, nimmt man mal werte wie diese an: 180-125=+55 und 80-125=-45.
beim schmitt-trigger in elektronik kämen aber dauerhaft +4,5 und 0V für innen und aussen raus, oder?

ich habe sicher wieder was nicht verstanden oder übersehen (laufzeit der schleife?), oder? bitte, wäre wirklich dankbar für einen kleinen klapps auf den Hinterkopf.... ;-)

danke danke und gruss,
ozett

Nachtrag (Lösung?): deinen letzten Post auch nochmal _langsam_ gelesen.
also die for-next-schleife wird ja verlassen, wenn ein Spike erkannt wird. d.h. die negative induktion zum spike-ende wird gar nicht ausgewertet.
sondern nur der Aufbau des magnetfeldes mit einsetzen des Spike. und das ist der kasus-knacktus!



Svr = Svr - A0: Svl = Svl – A1 'Differenzen Impuls - Ausgangswerte 'z.B. positiv innen, negativ aussen


Der ADC-Wert der jeweiligen Spule hat immer nur die Anfangspolarität beim einsetzen des Spikes. dann Abbruch der Spulenabfrage.
Und die Anfangspolarität ist entweder "innen" oder "aussen". Am besten halt "innen", damit der Robo das Gras mäht, und nicht die Blumen.
Kann das so sein?

Christian H
20.06.2013, 14:17
Der Nachtrag von Dir fast das Prinzip nochmal sehr richtig und prägnant zusammen. Nur noch eine kurze Anmerkung zu der Dauer der Spikes. Ein Stromimpuls wird natürlich nur ganz kurz, für Millisekunden durch die Spule geschickt und wiederholt sich z.B. alle 0,2 sec. Sprich innerhalb von ms baut sich das Magnetfeld auf (positiver spike) und fällt dann wieder zusammen (negativer spike, etwas langsamer s.o.). Die meiste Zeit ist also "Funkstille, bzw. gar kein Magnetfeld da".

ozett
26.06.2013, 19:47
Hallo,
ich versuche gerade mal einige Details der einzelnen Mähroboter aus den verteilten Threads zusammen zutragen auf:
http://www.rasenroboter-wiki.at/Rasenroboter_Projekte

Dabei lese ich einiges zum zweiten mal und stelle meine grossen Wissenlücken fest.
Ich habe die Unterscheidung zwischen dem "Spike"-Verfahren und dem "Ambrogio-Sinus" erst jetzt wirklich gesehen.

Daher die Frage an ChristianH:
Warum hast du das Spike-Verfahren 'erfunden', wo es beim Robi2Mow doch schonn eine Empfängerschaltung gab?
Es gab sicher gute Gründe, oder?

(Bin immer noch auf Suche und für meine geschätzte Kabellänge von ca. 300-400m gilt scheinbar das Ambrogio-Sinus als weniger fehlerträchtig.
Bei vielen kommerziellen Modell wird häufig auch 250m Kabellänge erstmal als maximum angegeben.)

danke und gruss,
ozett

jguethe
27.06.2013, 10:18
Hallo ozett,
ich darf darauf einmal - ungefragt - antworten.
per email - deshalb im Thread hier nicht sichtbar - habe ich mich bei Robi2Mow näher erkundigt. Was nach der eigentlichen Empfänger-Schaltung kommt, ist eigentlich noch viel wichtiger,
nämlich die softwarseitige Signalauswertung. Auf seiner Homepage weist er darauf hin, dass die Phasenlage / Frequenz bei Sender und Empfänger absolut stabil sein muss. Was Nachbaufähiges liegt ganz offensichtlich nicht vor.
Grundsätzlich gilt wohl: Das Spikeverfahren ist im Hardware-Aufbau simpel, das Sinusverfahren ist um Größenordnungen sowohl beim Sender als auch beim Empfänger aufwändiger.

gruss
jguethe

ozett
27.06.2013, 10:58
Hallo jguethe,
danke für die Antwort. Nach Durchsicht einiger Threads hier und zu diesem Thema scheinen auch nur ganz, ganz wenige (zwei bis drei personen) gleichzeitig Interesse und erfordnerliche besondere Fähigkeiten zum re-Design und Bau solcher Empfänger.
Das Spike-Verfahren scheint anfällig gegen gewisse Störungen, und daher offensichtlich mit einiger manuellen Optimierungen verbunden. Es scheint so, als ob das Ambrogio/Robomow-Sinus (evt. auch andere?) am besten geeignet wäre.
und hier wird gekämpft mit dem spike-verfahren: http://www.insaneo.selfhost.bz/index.php/forum/ardunio-mower/22-sensoren?start=40#164

Daher kam mir die Frage, wie robi2mow den Empfängerbau geschafft hat? Er hat ja offensichtlich einen funktionsfähigem Empfänger in seinem robo. Als Sender den fertigen Ambrogio-Sender (ca. 130 EUR als Ersatzteil).

Meine Kentnisse sind begrenzt, aber kann man in der Schaltungsskize nicht erkennen, wie die Frequenz-Synchronisation gemacht wird? Wie hat robi2mow das geschafft, nur in software? Mochte er keine Tips geben?

hier hat jemand mal das sinus untersucht: http://ocfnash.wordpress.com/2010/06/26/discman-powered-mower/
kann man da auch nicht mehr erkennen?

Noch habe ich ein wenig Hoffnung, dass jemand befähigtes einen Nachbau schafft. Weil die Anzahl der Empfägnerbauteile bei robi2mow so überschaubar ist.
Illusorisch?

danke und gruss,
ozett

Christian H
27.06.2013, 12:15
Hallo,

ganz zu Beginn hatte ich auch die Sinus- Methode ausprobiert. Mein Fehler war damals wohl nur eine Ferrit-Antenne (für Radio-Wecker) genommen zu haben. Die Reichweite war damit nicht sonderlich. Die Spike-Methode hat bessere Ergebnisse gebracht und bin deshalb daran hängengeblieben. Hatte mich damals wenig um bestehende Methoden gekümmert, sondern einfach drauf los experimentiert.

So kompliziert dürfte die Sinus-Methode auch nicht sein. Als Einstieg würde ich einen einfachen Selbstbau-NF-Generator nehmen mit etwa 20 KHz betreiben. Mindestens 2 Empfänger aufbauen (abgestimmte Schwingkreise z.B. mit fertigen NF-Verstärker Kemo M040N und damit jeweils an einen ADC eines Atmega. In einer Schleife die ADC-Werte laufend auswerten und die Zeitpunkte der Maxima für jeden Empfänger bestimmen. Stimmen die Zeitpunkte für alle Empfänger überein, sind sie in Phase. Die zu erwartenden Zeitpunkte der Maxima kann man natürlich für die nächsten Minuten hochrechnen. So stabil sollten die Frequenzen schon sein, wenn man mit einem Quarz am Atmega arbeitet. Weichen plötzlich für einer der Empfänger die Zeitpunkte der Maxima (bzw. Phase) grob ab (bzw. ist in deren Mitte), ist der Empfänger über den Begrenzungsdraht hinaus.

Die Methode von oliver nash ist nochmal etwas anders. Die Erklärung wie´s funktioniert bringt er ja auch nicht. Der Sender wechselt in der Mitte der Sinuswelle die Phase um 180 Grad. Vielleicht erkennt der Empfänger diesen Phasenwechsel daran, dass die Amplitude plötzlich abnimmt. Bei welcher Phasenlage dies passiert, bestimmt dann innen und außen.

Viele Grüße (von Madeira bei strahlend blauen Himmel)

Christian

robi2mow
28.06.2013, 08:58
Hallo!


Hallo jguethe,

Daher kam mir die Frage, wie robi2mow den Empfängerbau geschafft hat? Er hat ja offensichtlich einen funktionsfähigem Empfänger in seinem robo. Als Sender den fertigen Ambrogio-Sender (ca. 130 EUR als Ersatzteil).

Meine Kentnisse sind begrenzt, aber kann man in der Schaltungsskize nicht erkennen, wie die Frequenz-Synchronisation gemacht wird? Wie hat robi2mow das geschafft, nur in software? Mochte er keine Tips geben?


Noch habe ich ein wenig Hoffnung, dass jemand befähigtes einen Nachbau schafft. Weil die Anzahl der Empfägnerbauteile bei robi2mow so überschaubar ist.
Illusorisch?

ozett

Etwas zu den Fragen:
Der Bau des Empfängers ist durchaus, machbar wenn man einen Print anfertigen würde. Allerdings ist mein Empfänger (auf Lochraster) bei weitem nicht so gut wie das Original der letzten Generation. Da sind noch ein paar weitere Filterstufen drinnen, um das Signal noch selektiver zu empfangen. Den Unterschied merkt man, wenn es Störungen von Motoren (Bürstenfeuer) gibt. Die Software ist für C-Profis sicher kein Problem.

ABER: Man ist in einer preislich anderen Dimension. Denn man muss auch den Sender haben und der kostet 300 EUR und nicht 130 EUR. Der Empfänger kostet ca 150 EUR als Ersatzteil.

Was ist der Unterschied zu anderen Systemen. Durch die anfängliche Synchronisation mit dem Signal seines eigenen Senders, kann er das Signal immer 100% zuordnen. Er hat das Signal IMMER, nicht nur beim drüber fahren über die Schleife.
Wenn man die Auswertung nur mit Vergleich Spule vorne und hinten machen würde, wäre das am Einfachsten. Aber sollte der Roboter durch irgendeinen Umstand mal mit beiden Sensoren nach draussen geschoben werden, würde er nicht mehr erkennen, dass er Aussen ist. Beim Ambrogio ist das aber sehr wohl so.
Wobei das auch bei der Spike Methode so ist, was ich weiss.

Jedenfalls ist fraglich ob man für den kleine Bereich so eine aufwendige Sinus Methode braucht? Ich habs ja nur verwendet, weil mein Sender ja schon vorhanden ist!

Zum Sender: Ich hab schon einmal mit einen sehr genauen Frequenzgenerator und NF Verstärker getestet und das funktioniert mit dem Ambrogio Empfänger genau so. Nur wenn die Frequenz ausserhalb des akzeptierten Fensters ist, meldet er kein Signal. Bei langsamen Frequenzänderungen gleicht sich der Empfänger laufend an.
Aber der Selbstbau des Senders, ohne Energie verbraten im NF Verstärker ist noch viel aufwendiger als der Empfänger.

Vom Rundfunkgesetz ist der 8kHz Ton des Sinussenders erlaubt und frei gegeben (nach Recherchen vor ein paar Jahren). Bei der Spike Methode, wo ja steile Flanken auftreten (mit entsprechenden Oberwellen) ist das sicher nicht erlaubt. Ich gehe davon aus , dass es irgendwann zu Schwierigkeiten kommen wird, da sicher Funk massiv gestört wird. Das hat auch der Ambrogio Sender der ersten Generation gemacht, siehe meinen Beitrag bzgl. Funkstörungen.

Sollte sich wer zu einer Entwicklung eines Bausatzes aufraffen, unterstütze ich ihn natürlich mit meinem ganzen Wissen und Forschungsergebnissen.

ozett
28.06.2013, 10:22
nero76 hat hier
http://insaneo.selfhost.bz/insaneo/index.php/forum/ardunio-mower/22-sensoren?start=40#167
einen ersten Aufbau, um die Senderfrequenz eines arduino in einem arduino zu emfpangen.
Die Empfangsfrequenz müsste vermutlich nur noch (wie bei der Empfangsschaltung von christianH) die Phase beim Start vermerken, um die phasendrehung beim verlassen der schleife zu erkennen.
aber hier müssen fachleute ran .... vermutlich ..

mc19dg
28.06.2013, 16:56
So jetzt muss ich auch mal etwas dazu schreiben!

Für die die mich noch nicht kennen: Klick (https://www.roboternetz.de/community/threads/58519-Rasenm%C3%A4hroboter-f%C3%BCr-ca-2000m%C2%B2)

Ich habe ja zur zeit die Spike-Methode vom rn-wissen, habe mich damit aber noch nicht genauer Beschäftigt da sie zur zeit ganz gut funktioniert.
Solte jemand eine Universelle Methode mit der Sinus-Methode entwickeln würde ich gerne beim Layout/Platine helfen (wenn gewünscht)?
Mann könnte zb. den Empfänger mit einem eigenen Prozessor (zb Atmega8,...) ausstatten, der die Synchronisation und Auswertung übernimmt. Dieser hat dann einen Ausgang für Drinnen/Draußen,...
So ist man nicht an einer Sprache gebunden und jeder kann das Signal einfach in seiner Elektronik einlesen.

Leiterbahnen mit einer Stärke von 0,2mm und Bauteile wie SOT323 sind für mich kein Problem. Kann auch kleinere Stückzahlen mit einem Reflow-Pizza Ofen bestücken.


Mfg
mc19dg

ozett
28.06.2013, 21:48
Hallo!
ABER: Man ist in einer preislich anderen Dimension. Denn man muss auch den Sender haben und der kostet 300 EUR und nicht 130 EUR. Der Empfänger kostet ca 150 EUR als Ersatzteil.


Der Robomow-Sender für eine zusätzliche Zone soll 109,- EUR kosten. nach dem Engländer, der den sender des "perimeter-wire" untersucht hat vermute ich gaaaanz grob, dass es eine Ähnlichkeit zum abrogio gibt.
nichtsdestotroz wäre ein sinus-sender und ein empfängerelektronik (für innen und aussen) vermutlich ein schub für alle rasenmäherbaster und vermutlich ein schub für die algoryhtmen der mähstrategien ... :p

fhs
11.07.2013, 19:02
Hallo,
habe mich gerade mit den hier diskutierten Konzepten der Begrenzungs-Induktionsschleifen beschäftigt und zwei Fragen dazu:


Was spricht für/gegen die Verwendung der Netzfrequenz für eine kontinuierlich sendende (also nicht gepulste) Schleife? An Vorteilen sehen ich: Ultrasimpler Sender (Trafo + optionaler Widerstand + Schleife), Erkennung leicht möglich mit Spule+OPAMP+µC mit einem relativ langsamen ADC. Nachteile: Störungen durch die ubiquitären 50 Hz. Legale Aspekte? Übersehe ich etwas?
Warum haben die Schleifen üblicherweise nur eine Windung?

Danke!
Fred

kojek
26.07.2013, 08:23
Hallo,

beschäftige mich auch schon seit einiger Zeit mit den Robotern, einen super Mäher wäre der Robocut der aber seine Entwicklung eingestellt hat. Habe eine Seite gefunden wo man günstig Teile kaufen kann für seinen Eigenbau Roboter- hat auch gebraucht Teile auf Anfrage. leihwerkzeug.at Wenn ich hier so lese das Platinen 200 usw. kosten sind Sie hier um 80€ zu bekommen(Schleifengenerator). Ich glaube bei den Preisen muss man keine Hardware selber bauen würde nur die Platinen modifizieren und eine Art open Source daraus machen. Die Mäher sind super aufgebaut mit unverwüstlichen Motoren und Getriebe und es besteht immer die Möglichkeit den Mäher komplett zu machen wenn die Erfindung nicht so gewünscht verläuft. Stelle den Link von der Homepage mal rein wenn nicht erlaubt löschen: www.leihwerkzeug.at

meddie
26.07.2013, 13:26
Hatte vorher noch nichts gesehen vom Robocut. Habe jetzt ein Bißchen danach gegoogelt und habe noch so ein Paar Reste davon gefunden. Muss sagen der Aufbau gefällt mir sehr gut. Was hat denn der Kit gekostet weiß das jemand?
Also die Bauweise würde ich glatt für mich übernehmen. Ich glaube wenn ich mal Zeit habe zeichne ich mal die Teile in 3D. Hast Du noch mehr Details von dem? Mich würden die Motoren interessieren.

kojek
26.07.2013, 14:17
Ja, tolles Teil ich wundere mich warum dieses Teil nicht in Serie ging. Habe zweimal versucht mit dem Herrn Kontakt auf zunehmen leider ohne Antwort. Den Shop gibt es leider auch nicht mehr wo er verkauft wurde. War aber nicht billig der Bausatz aber das war vor einigen Jahren da wahren die Mähroboter auch noch schweineteuer. Ich habe mir dann einen Denna zugelegt zum basteln siehe Homepage von vorher. Habe mir das Teil ohne Inhalt gekauft vor einem Jahr gebraucht um 280€ (es fehlten nur die Platinen, Akkus) leider wurde es nichts mit dem Eigenbau und so kaufte ich mir die restlichen Teile dazu. So habe ich kein Geld verloren denn die restlichen Teile habe ich günstig gebraucht bekommen bei ihm. Ist zwar ein China Produkt aber nicht schlecht aufgebaut und vergleichbar mit Robomow. Ausschlaggebend wahr das ich den Mäher nehmen wollte weil normale Motoren verbaut sind und nicht eine Hochentwickelte Schaltung dazu gebraucht wird. Die ganze Hardware war natürlich auch fertig und Ersatzteile sind auch zu bekommen und man muss nicht selber ein Messerteller entwickeln.

manne_sahne
05.08.2013, 20:40
Gibt es außer der Dauerhaltbarkeit einen Grund warum zu Brushless-Motoren geraten wird?
Was für Anforderungen werden denn Antriebsmotoren und den Mähmotor gestellt?
Würde das hier funktionieren:
- Antriebsmotor: http://www.pollin.de/shop/dt/ODE1OTg2OTk-/Motoren/DC_Getriebemotoren/Gleichstrom_Getriebemotor_PGM_37DC12_77.html

- Mähmotor: http://www.ebay.de/itm/Gleichstrommotor-12-Volt-2800min-1bei-5-0Ncm-NEU-/380685258235?pt=Motoren_Getriebe&hash=item58a29c0dfb

Christian H
07.08.2013, 09:14
Beim Antriebsmotor ist eine Umdrehnungsgeschwindigkeit von 1U/sec angegeben. Erscheint mir etwas schnell. Hängt natürlich auch von der Größe der Räder ab. Ansonsten entspricht der Motor wohl dem RB-35 von Conrad. Sieht zumindest ganz ähnlich aus. Den gibt´s mit unterschiedlichen Getriebe. Mit 200:1 dreht der nur etwa 20/min und wäre damit etwas kräftiger und besser.

Zu dem Mähmotor: Brushless-Motoren (Außenläufer) haben gegenüber den normalen Motoren den Vorteil, dass sie auch bei niedriger Drehzahl hohes Drehmoment haben und man kann auf ein Getriebe verzichten. Mit Getriebe macht´s halt mehr Krach. Die Anforderungen hängen auch von der Größe des Mähtellers ab. Ansonsten kann ich zu dem vorgeschlagenen Motor nicht´s sagen.

Probieren geht über studieren!

Beste Grüße

Christian

klaro1971
11.08.2013, 08:07
Hallo manne_sahne,
bei meinen Mähroboter habe ich als Antriebsmotoren 2 RB 35Getriebeotoren 1:100 als Antrieb.Ich finde die sind gut den seit etwa 2Jahren laufen die ohne Propleme.Mein Proplem ist allerdings,das die Räder ab einer bestimmten Steigung durchdrehen da mein Mäher mit bleiakku nur 5kg wiegt.(baue aber andere Räder mit mehr Gripp)
Als Mähmotor habe ich einen BL Outrunner 3529/24,der mit einer 15Ampere-Sicherung abgesichert ist.Er treibt zwei breite Abbrechklingen aus den Baumarkt an.Der Motor ist stark und schnell so das das Gras gleich gemulcht wird.
Gruß Klaro

OpiTheWahn
11.08.2013, 11:24
Als Antriebsmotor hab ich bei mir die hier: http://www.pollin.de/shop/dt/MjI1OTg2OTk-/Motoren/DC_Getriebemotoren/Gleichstrom_Getriebemotor_GMPD_404980_1_12_V_.html Super Dinger, schon fast n bisschen zu stark ;) den kann man nicht festhalten, ohne das er das Gras rausreißt mit den Rädern ;) Max. 4nm pro Rad, damit ist jede steigung egal. Macht ~20U/min, bei meinen 20cm Rädern is das schnell genug. Allzu laut is der auch nicht.

021aet04
11.08.2013, 12:18
Der Motor hat aber eine Einschaltdauer von nur 10%.

MfG Hannes

OpiTheWahn
11.08.2013, 12:29
und wo is das Problem?

021aet04
11.08.2013, 12:44
Die Einschaltdauer gibt an wie lange ein Gerät (hier der Motor) eingeschalten sein darf. Bei einem Rasenmähermotor läuft der Motor teilweise mehrere Stunden. Da könnte der Motor Schaden nehmen.

MfG Hannes

OpiTheWahn
11.08.2013, 12:53
10%... von was?

021aet04
11.08.2013, 13:41
http://de.wikipedia.org/wiki/Einschaltdauer

Zitat aus dem Link:
Die Einschaltdauer kann dimensionslos als Prozentangabe (Verhältnis von Nutzungsdauer zum Beobachtungszeitraum) angegeben werden. In der Regel wird ergänzend zur Prozentangabe der Nutzungszeitraum angegeben. Wenn nicht, gilt als Nutzungszeitraum 10 Minuten.

MfG Hannes