- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 390

Thema: Rasenrobo mit Induktionsschleife, Schaltbilder, Hallsensor

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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:
    Klicke auf die Grafik für eine größere Ansicht

Name:	robotpath.png
Hits:	16
Größe:	3,9 KB
ID:	19824
    Vielen Dank für eure Hilfe.
    Markus

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260

    rasenrobo - Update

    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:

    Code:
    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
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Rasenrobo1.jpg   Rasenrobo2.jpg   Rasenrobo3.jpg  
    Geändert von Christian H (16.08.2012 um 20:12 Uhr)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress