Hi@all
so nun hier die Zeichung und der Screenshot des VB Programms:
Hallo,
sorry das ich jetzt erst Antworte.
Also die Ü Eier Variante habe ich jetzt mangels geeigneter Materialien aufgegeben.
Ich habe hier im Forum einen Elektor Artikel gefunden, welcher nach der Variante wie sie Tido geschrieben hat, funktionier.
Kurzfassung:
---------------
Es wird eine Umlenkrolle mit Schwimmer und Gegengewicht an dem Brunnen Rand angebracht. An die Welle der Rolle kommt ein 10Gang Wendelpoti dann kann man den Strom messen und die Höhe umrechnen.
Problem bei der Sache ist das bei einer Umlenkrolle mit 50cm Durchmesser und bei den 10 Umdrehungen des Potis nur 157cm höhe überwunden werden können.
Also muss eine andere Lösung her.
Ich habe nun meinen Versuchsaufbau wie folgt gemacht:
ich habe eine Umlenkrolle mit Umfang 22 cm genommen und dort zwei Magnete versetzt angebracht.
An die Halterung der Rolle habe ich nun 2 Reed Kontakte angebracht.
Dadurch das die Magnete versetzt an der Rolle sind kann ich die Richtung der Rolle erkennen und kann praktisch unbegrenzt viele Umdrehungen registrieren.
Ich habe das ganze mit meiner alten C-Control Micro getestet und funktioniert wunderbar.
Ich kann nun die Brunnentiefe in 22cm Schritten registrieren.
Ein kleines Problem gibt es aber noch, die Reed Kontakte schalten beim vorbeifahren der Magnete manchmal 2 mal und damit kommt die MicroControl durcheinander. Wenn ich den Durchmesser des Magnetpoles verkleinere geht es besser.
Ich werde das ganze jetzt nochmal mit Lichtschranke oder LDR testen, damit sollte es Störunanfälliger sein.
Ich mache am WE mal eine Zeichnung und stell sie hier ein.
Hier das Programm der C-Control:
Damit man nicht immer PC angeschaltet haben muss, gibt es noch eine Ampel, welche bei zu geringen Wassestand Rot leuchtet.Code:define drehl port[5] 'erster ReedKontakt define drehr port[6] 'zweiter Reedkontakt define rot port[4] 'LED ROT define gruen port[2] 'LED Gruen define x byte 'Variable für die höhenwerte baud 9600: pause 20 x=0 'Variable auf Null setzen #start put x 'Wert senden if drehl = on then goto linksw 'ersten Reed abfragen if drehr = on then goto rechtsw 'zweiten Reed abfragen if x < 23 then goto rot 'Ampel ROT schalten bei zu geringen Stand if x >= 23 then goto gruen 'Ampel Gruen schalten bei guten Stand goto start #linksw if drehl = off then goto links 'warten Kontakt aus put x 'daten senden goto linksw #links if drehr = on then goto plus if drehl = on then goto start put x goto links #rechtsw if drehr = off then goto rechts put x goto rechtsw #rechts if drehl = on then goto minus if drehr = on then goto startre put x goto rechts #startre if drehr = off then goto start put x goto startre #startli if drehl = off then goto start put x goto startli #plus put x if drehr = off then x = x+1 else goto plus put x goto start #minus put x if drehl = off then x = x - 1 else goto minus put x goto start #gruen rot = off gruen = on goto start #rot rot = on gruen = off goto start
Die gesendeten Daten werden dann mit einen Visual Basic Programm am PC ausgewertet.
Bei Interessse kann ich den Quellcode auch Posten.
MFG
Ronny
Hi@all
so nun hier die Zeichung und der Screenshot des VB Programms:
Hallo,Zitat von dr_Bal
mich würde er interessieren, vllt. ist das der VB-Einstieg, den ich schon so lange suche...
MfG
Tido
---------------------------------------------------
Have you tried turning it off and on again???
---------------------------------------------------
Hallo Tido,
Der Code ist echt Simpel, ist nur aus einen MSomm (Serielle Schnittstelle) beispiel und einigen basics zusammengesetzt.
Wenn du noch fragen hast melde dich.
anbei der Quellcode, sowie der Link zu der vbp (visualBasic 6) datei.
Brunnen.zip Project DateiCode:'################################################################# '# # '# Benötigte Elemente: # '# -Label2 & label3 # '# -mscomm1 # '# -progressbar1 # '# # '################################################################# Private Sub Form_Load() ' Fire Rx Event Every x Bytes MSComm1.RThreshold = 1 MSComm1.SThreshold = 1 ' When Inputting Data, Input y Bytes at a time MSComm1.InputLen = 1 MSComm1.Settings = "9600,N,8,1" 'Com port einstellungen ' Open COM1 MSComm1.CommPort = 1 'nummer des Com Ports MSComm1.PortOpen = True 'Com Port öffnen End Sub ' Kommunikationsereignis Private Sub MSComm1_OnComm() 'Fehlerhandling COM Schnittstelle Select Case MSComm1.CommEvent Case comOverrun MsgBox "Datenverlust!" Case comRxOver MsgBox "Datenverlust!" Case comEvReceive 'jetzt gehts los xx = MSComm1.Input 'Variable "xx" mit dem Empfangen Daten füllen daten = Asc(xx) 'Empfangenen Daten in Ascii umwandeln If daten > 71 Then daten = 0 '71 maximale Umdrehungen der Rolle = höhe des Brunnen, wenn größer als 71 dann null als höhe anzeigen If daten < 12 Then Label3.ForeColor = &HFF& 'Farbe der höhenanzeige auf rot setzen If daten > 12 Then Label3.ForeColor = &HFFFF& 'Farbe der höhenanzeige auf gelb setzen If daten >= 23 Then Label3.ForeColor = &HFF00& 'Farbe der höhenanzeige auf grün setzen Label3.Caption = daten * 0.22 & " METER" 'höhe ausrechnen und im Label3 anzeigen, 22 cm hat der Umfang des Rades ProgressBar1.Value = daten 'Progressbar setzen Label2.Caption = "letzter Empfang: " & "Datum: " & Date & " um: " & Time 'Label2 zeigt den letzten Empfang an End Select End Sub
Ciao Ronny
andere Sensorlösung wäre der Druck gewesen. Wenn Du den Wasserdruck (unten abgenommen) entweder auf einen Drucksensor gibst (Wasser komprimiert die Luft in einem Rohr) oder aber eben ein Steigrohr erfasst (gut detektierbarer Schwimmer steigt in einem Rohr und wird mit Hallsensor oder optisch erfasst), hast Du kein Problem mit Verschmutzen o.ä.
Andere Lösungen sind Ultraschall - Laufzeitmessung (Abstandswarnerprinzip) oder Kapazitive Messung (Quantum stellt da tolle Bausteine her).
HTH
Carsten
Lesezeichen