Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

Alles zum Thema Brauanlagen-Selbstbau. Für Steuerung und Automatisierung bitte das Unterforum "Automatisierung" nehmen.
Benutzeravatar
norb
Posting Junior
Posting Junior
Beiträge: 34
Registriert: Montag 11. Juli 2016, 21:16
Wohnort: Hannover

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#101

Beitrag von norb » Samstag 9. Februar 2019, 20:26

mwx hat geschrieben:
Samstag 9. Februar 2019, 18:50
Läuft
Wow, nice! :thumbup

JackFrost
Posting Klettermax
Posting Klettermax
Beiträge: 179
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#102

Beitrag von JackFrost » Samstag 9. Februar 2019, 20:54

Sieht echt gut aus.

Gruß JackFrost

Benutzeravatar
glassart
Posting Freak
Posting Freak
Beiträge: 1268
Registriert: Mittwoch 1. Juli 2015, 11:50

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#103

Beitrag von glassart » Sonntag 10. Februar 2019, 13:28

Super Michael ! :thumbsup :thumbsup

lg Herbert

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#104

Beitrag von mwx » Sonntag 10. Februar 2019, 17:52

So, jetzt auch tatsächlich im Einsatz und ein Foto vom Innenleben. Als nächstes werde ich weiter an der Software schrauben.

IMG_3090M.jpg
IMG_3101M.jpg

Benutzeravatar
glassart
Posting Freak
Posting Freak
Beiträge: 1268
Registriert: Mittwoch 1. Juli 2015, 11:50

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#105

Beitrag von glassart » Sonntag 10. Februar 2019, 17:59

und du hast dir einen Displayrahmen gedruckt wie ich sehe :Bigsmile

lg Herbert

Wie verhält sich eigentlich das Einschwingverhalten wenn mit einem großen Fisch und Masse gearbeitet wird ? Sollte vermutlich deutlich schneller einregeln, oder ?

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#106

Beitrag von mwx » Sonntag 10. Februar 2019, 18:11

glassart hat geschrieben:
Sonntag 10. Februar 2019, 17:59
und du hast dir einen Displayrahmen gedruckt wie ich sehe :Bigsmile
Ja, auf die Idee brachte mich ein gewisser Herbert :) obwohl der Ausschnitt auch so ganz gut geworden ist.

Screenshot 2019-02-09 at 14.33.07.png

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#107

Beitrag von mwx » Sonntag 10. Februar 2019, 18:12

glassart hat geschrieben:
Sonntag 10. Februar 2019, 17:59
Wie verhält sich eigentlich das Einschwingverhalten wenn mit einem großen Fisch und Masse gearbeitet wird ? Sollte vermutlich deutlich schneller einregeln, oder ?
habe ich noch nicht probiert. Die Regelung habe ich aber inzwischen verbessert.

Benutzeravatar
bieratenschreck
Posting Junior
Posting Junior
Beiträge: 57
Registriert: Donnerstag 16. November 2017, 16:57
Wohnort: Nürnberger Land

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#108

Beitrag von bieratenschreck » Montag 11. Februar 2019, 10:30

Todschickes Teil, gefällt mir! Danke für Dein Engagement!
Gruß
chr

Benutzeravatar
monsti88
Posting Senior
Posting Senior
Beiträge: 464
Registriert: Mittwoch 12. Oktober 2016, 21:42
Wohnort: Gauting

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#109

Beitrag von monsti88 » Montag 11. Februar 2019, 11:03

DerDerDasBierBraut hat geschrieben: Schraub mal auf und mach Fotos (mit und ohne Fisch). Das bekommen wir gelöst.
Hab meinen Rührer dann mal aufgeschraubt, aber leider vergessen auch Fotos von den Rührfischen zu machen... :redhead
Folgt dann am kommenden WE.
D0448C17-A828-4080-B69A-C7FF343D7260.jpeg
20l Bottichmaischer mit 25l Thermobehälter und 34l Pfanne :Smile

Benutzeravatar
DerDerDasBierBraut
Posting Freak
Posting Freak
Beiträge: 4858
Registriert: Donnerstag 2. Juni 2016, 20:51
Wohnort: Ahrensburg

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#110

Beitrag von DerDerDasBierBraut » Montag 11. Februar 2019, 11:21

Reicht schon. Rührfische bis 2cm passen zu dem Rührer.
Falls auch die Kurzen fliegen könntest du drei Sachen versuchen:

1. Die Mutten von den Stehbolzen abschrauben und Scheiben unter den Lüfter legen, damit die Magneten dichter unter die Rührplatte kommen. Falls die Muttern danach nicht mehr passen -> Heißkleber :Bigsmile

2. Mehrere dünne (0,5m), runde, starke (N52) Neodymmagneten kaufen (Durchmesser entsprechend der verbauten Magneten), und die flachen Neodymmagneten auf die vorhandenen Magneten kleben (halten von selbst, ohne Kleber). So kommst du mit jedem Neodymmagneten 0,5mm dichter an die Rührplatte, hast mehr Anziehungskraft und irgendwann passt der Abstand ...

3. Unsere 3D Druck Spezis bitten, dir einen passenden Zentrierring zu drucken, den du anstatt des Metalls auf deinen Lüfter klebst. Damit würden auch längere Fische gut passen (3cm).
"Da braut sich was zusammen ... "
"Oh, Bier ;-) !"
"Nein! Was Böses!"
"Alkoholfreies Bier??? ..."
-----------
Viele Grüße
Jens

Interesse an Flüssighefen ... ?

Benutzeravatar
monsti88
Posting Senior
Posting Senior
Beiträge: 464
Registriert: Mittwoch 12. Oktober 2016, 21:42
Wohnort: Gauting

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#111

Beitrag von monsti88 » Montag 11. Februar 2019, 11:43

Super, danke! Die Maßnahmen werden abgearbeitet.

Ginge auch 4. neuen Lüfter kaufen und mit vorhandener Elektronik nutzen? Also nur die zwei Kabel zum Lüfter tauschen? Dann könnte ich den hier im Thread etablierten Lüfter mit Zentrierhilfe nutzen und müsste nur ein neues Gehäuse basteln (war eh zu klein für den 2l Kolben). Mit Elektronik kenne ich mich leider nicht aus, daher wäre es für mich von Vorteil, wenn ich die vorhandene weiter nutzen könnte...
20l Bottichmaischer mit 25l Thermobehälter und 34l Pfanne :Smile

Benutzeravatar
DerDerDasBierBraut
Posting Freak
Posting Freak
Beiträge: 4858
Registriert: Donnerstag 2. Juni 2016, 20:51
Wohnort: Ahrensburg

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#112

Beitrag von DerDerDasBierBraut » Montag 11. Februar 2019, 11:47

Klar, das geht auch.
"Da braut sich was zusammen ... "
"Oh, Bier ;-) !"
"Nein! Was Böses!"
"Alkoholfreies Bier??? ..."
-----------
Viele Grüße
Jens

Interesse an Flüssighefen ... ?

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#113

Beitrag von mwx » Montag 11. Februar 2019, 13:41

Ich hab noch ein bisschen weitergebastelt und herausgekommen ist ein Smart-Rührer .. ich kann den jetzt per App steuern :Bigsmile

IMG_20190211_132926M.jpg

daleipi
Posting Klettermax
Posting Klettermax
Beiträge: 211
Registriert: Samstag 9. September 2017, 13:08

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#114

Beitrag von daleipi » Montag 11. Februar 2019, 13:50

Tolle Sachen baut ihr!

ich werde die Tage mal meine Kiste mit alten PC-Sachen (füllt sich seit den späten 80ern...) durchsuchen um auch was zu bauen.

weiß jemand wo ich Rührstäbe ohne 20€ Mindestbestellwert und Versand nach Österreich erwerben kann?

amaz.n ist viel zu teuer...https://www.amazon.de/dp/B01AW7ME7C/ref ... 88823&sr=1

LG
stefan

Benutzeravatar
Frudel
Posting Freak
Posting Freak
Beiträge: 931
Registriert: Donnerstag 28. April 2016, 22:12

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#115

Beitrag von Frudel » Montag 11. Februar 2019, 14:10

Klasse Teil , bin begeistert!

Musste nachfragen , wieviel der Versand nach Osterlitsch kostet , bei Ebä gibt es einige , die die Magneten anbieten.

https://www.ebay.de/itm/5-X-POWER-NEODY ... 9#shpCntId
Viele Menschen benutzen Informationen und Fakten wie ein Betrunkener einen Laternenpfahl :
Vor allem zur Stütze ihres Standpunktes und weniger zum Beleuchten eines Sachverhaltes.

Benutzeravatar
beryll
Posting Freak
Posting Freak
Beiträge: 2092
Registriert: Samstag 25. Juli 2015, 15:10
Wohnort: Saarwellingen
Kontaktdaten:

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#116

Beitrag von beryll » Montag 11. Februar 2019, 14:49

mwx hat geschrieben:
Montag 11. Februar 2019, 13:41
Ich hab noch ein bisschen weitergebastelt und herausgekommen ist ein Smart-Rührer .. ich kann den jetzt per App steuern :Bigsmile


IMG_20190211_132926M.jpg
Ich war zufrieden mit meinem Rührer, hörst Du??? Zufrieden! ;-)

Michael, tolle Arbeit, die Du da in den letzten Tagen vorantreibst! Magst Du einen Anleitung für den geneigten Nachbauer irgendwann mal ins Wiki oder diesen Thread hier einstellen? Also, ich würde mich darüber freuen :-)

VG Peter
Mein Lieblingstier ist der Zapfhahn...!
(Aktueller Bericht aus dem Gärfass)

Terminfindung Treffen der Saar-Lor-Lux Brauer

daleipi
Posting Klettermax
Posting Klettermax
Beiträge: 211
Registriert: Samstag 9. September 2017, 13:08

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#117

Beitrag von daleipi » Montag 11. Februar 2019, 15:30

Frudel hat geschrieben:
Montag 11. Februar 2019, 14:10
Klasse Teil , bin begeistert!

Musste nachfragen , wieviel der Versand nach Osterlitsch kostet , bei Ebä gibt es einige , die die Magneten anbieten.

https://www.ebay.de/itm/5-X-POWER-NEODY ... 9#shpCntId
Magnete hab ich. Danke.

Die RÜHRstäbe oder-fische brauch ich noch.

EDIT: hab mir grad da mal 3 Stück 30x7mm bestellt: https://www.ebay.de/itm/Magnetruhrstabc ... GTR=1#shId

sonst gibt es noch die klar erkennbaren Angebote aus China auf ebay.

JackFrost
Posting Klettermax
Posting Klettermax
Beiträge: 179
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#118

Beitrag von JackFrost » Montag 11. Februar 2019, 16:41

Ich hab am Wochenende das Gehäuse vorbereitet. Da meine Möglichkeiten zur Bearbeitung von Holz, Kunststoff und Metall nicht so gut sind, sind die Schlitze für die Stecker und das Display nicht so gut geworden.
Mein Ätzgerät ist leider noch nicht eingetroffen, daher hab ich den Reset von Display per Quick&Dirty an nem freien Pin gelötet.
Heute sollten noch die Duo LEDs kommen, dann kann der Zustand auch von der „Ferne“ gesehen werden.
Es ist geplant rot, grün und grün blinkend zu verwenden. Für gelb hab ich noch keine Idee.
Heute Abend kommen ein paar Bilder. Mit dem Holzgehäuse kann ich bei weitem nicht mithalten.
Meine Smart-Funktionen werden sich auf Automatik und Fernsteurung über USB/RS232 TTL beschränken. Als nächstes muss ja ne Gärsteuerung her und da gibt’s dann nen ARM Cortex M mit Kaskade 😀 für Hutschienenmontage.

Gruß JackFrost

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#119

Beitrag von mwx » Montag 11. Februar 2019, 19:13

beryll hat geschrieben:
Montag 11. Februar 2019, 14:49
Magst Du einen Anleitung für den geneigten Nachbauer irgendwann mal ins Wiki oder diesen Thread hier einstellen? Also, ich würde mich darüber freuen :-)
Ja, das kann ich gerne machen. Allerdings wird das immer ein Bastelprojekt bleiben. Wer das nachbauen will sollte also schon halbwegs Sattelfest im Umgang mit Arduino und Raspberry Pi sein. Ich helfe da gerne so gut ich kann das ist aber per Ferndiagnose oft schwierig.

JackFrost hat geschrieben:
Montag 11. Februar 2019, 16:41
Da meine Möglichkeiten zur Bearbeitung von Holz, Kunststoff und Metall nicht so gut sind ... Mit dem Holzgehäuse kann ich bei weitem nicht mithalten.
Meine Smart-Funktionen werden sich auf Automatik und Fernsteurung über USB/RS232 TTL beschränken.
Jack, ich habe auch nicht so gute Möglichkeiten. So schwierig ist das nicht. Das Holz habe ich fertig zugeschnitten bestellt, die Glasscheibe auch. Etwas fummelig ist das rechteckige Loch (habe das mit eine Minifräse gemacht, geht aber auch sicher mit Laubsäge oder Dremel. Den 3D gedruckten Rahmen stelle ich gerne zur Verfügung). Für alles andere reicht ein Akkuschrauber.

Die Smart Funktion mit App ist natürlich Spielerei. Den Raspberry Pi habe ich hauptsächlich eingebaut weil ich nicht mehr an den USB Stecker vom Arduino ran komme. Jetzt kann ich neue Software vom Raspberry Pi (via SSH) auf den Arduino spielen.

Gruß, Michael

Benutzeravatar
beryll
Posting Freak
Posting Freak
Beiträge: 2092
Registriert: Samstag 25. Juli 2015, 15:10
Wohnort: Saarwellingen
Kontaktdaten:

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#120

Beitrag von beryll » Montag 11. Februar 2019, 20:07

mwx hat geschrieben:
Montag 11. Februar 2019, 19:13
beryll hat geschrieben:
Montag 11. Februar 2019, 14:49
Magst Du einen Anleitung für den geneigten Nachbauer irgendwann mal ins Wiki oder diesen Thread hier einstellen? Also, ich würde mich darüber freuen :-)
Ja, das kann ich gerne machen. Allerdings wird das immer ein Bastelprojekt bleiben. Wer das nachbauen will sollte also schon halbwegs Sattelfest im Umgang mit Arduino und Raspberry Pi sein. Ich helfe da gerne so gut ich kann das ist aber per Ferndiagnose oft schwierig.
Ja, das kenne ich nur zu gut... Mit nem Pi und auch Arduino kenne ich mich ganz gut aus, vor allen Dingen in der Programmierung der kleinen Burschen :-) Ich bin halt als "WI" eher auf der Softwareseite zuhause und nicht so in der Hardware-Bastelei. Aus dem Grund freue ich mich immer, wenn jemand sowas aufbaut und man es nachbauen kann :Drink

VG Peter
Mein Lieblingstier ist der Zapfhahn...!
(Aktueller Bericht aus dem Gärfass)

Terminfindung Treffen der Saar-Lor-Lux Brauer

JackFrost
Posting Klettermax
Posting Klettermax
Beiträge: 179
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#121

Beitrag von JackFrost » Montag 11. Februar 2019, 23:48

Die LEDs sind eigebaut.
So sieht die Steuerung eingebaut in mein Gehäuse aus :
IMG_1806.JPG
Die Geschwindigkeit wird nun über einen gleitenden Mittelwert geglättet. Wenn die Zeit im Profil abgelaufen ist, dann blinkt die entsprechende LED mit 2 Hz grün.

Ich hab immer mal wieder Sprünge bei der gemessenen Geschwindigkeit. Da muss ich noch den Fehler noch finden.

Die nächste Stufe wird das GUI in die Bedienung über den Drehencoder.

Anbei noch ein Video https://youtu.be/siCe7xjCs0o

Gruß JackFrost

Benutzeravatar
murby81
Posting Junior
Posting Junior
Beiträge: 61
Registriert: Montag 8. Oktober 2018, 08:33
Wohnort: Mittelfranken

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#122

Beitrag von murby81 » Dienstag 12. Februar 2019, 20:14

Hallo Zusammen,

ich bräucht mal eure Hilfe.

Und zwar hab ich mir auch einen Magnetrührer gebastelt. Nichts besonderes, soll einfach nur den Zweck erfüllen.

Ich hab nen 120mm Gehäuselüfter in eine 150mm ISO Abzweigdose rein. Magnet von einer Festplatte auf den Lüfter geklebt. Habe auf eine Steuerung verzichtet, da ich keine da hatte. Sonst hatte ich alle Sachen da und musste nichts kaufen. Wenn ich den Rührer jetzt anschalte, haut es mir immer den Rührfisch gleich nach außen im Erlenmeyer, so dass er sich nicht dreht.

Liegt es an der fehlenden Steuerung? Lüfter hat 1350 U/Min, ist das zuviel? Hab schon 5V und 12V getestet. Leider immer das selbe Ergebnis. Oder doch ein anderes Problem? Magnet zu groß oder falsch angebracht? (Mittig am Lüfterrad angebracht)

Besten Dank für eure Hilfe.

Gruß

Stefan

JackFrost
Posting Klettermax
Posting Klettermax
Beiträge: 179
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#123

Beitrag von JackFrost » Dienstag 12. Februar 2019, 20:30

Poste bitte mal ein Bild von dem Lüfter mit montiertem Magneten. Hast du versucht beide Magneten von der Platte zu verwenden ? Einen mit N nach oben den anderen mit S ?

Gruß JackFrost

Benutzeravatar
murby81
Posting Junior
Posting Junior
Beiträge: 61
Registriert: Montag 8. Oktober 2018, 08:33
Wohnort: Mittelfranken

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#124

Beitrag von murby81 » Dienstag 12. Februar 2019, 20:43

Bitteschön
Dateianhänge
IMG_20190212_204114.jpg

Benutzeravatar
DerDerDasBierBraut
Posting Freak
Posting Freak
Beiträge: 4858
Registriert: Donnerstag 2. Juni 2016, 20:51
Wohnort: Ahrensburg

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#125

Beitrag von DerDerDasBierBraut » Dienstag 12. Februar 2019, 21:00

murby81 hat geschrieben:
Dienstag 12. Februar 2019, 20:14
Liegt es an der fehlenden Steuerung? Lüfter hat 1350 U/Min, ist das zuviel? Hab schon 5V und 12V getestet. Leider immer das selbe Ergebnis. Oder doch ein anderes Problem? Magnet zu groß oder falsch angebracht? (Mittig am Lüfterrad angebracht)
Mit einem Magneten wedelt der Rührfisch wie ein Fuchsschwanz. Das kann nicht funktionieren!
Schroll nach oben. Hier sind Problem, Ursache und Lösung erklärt. : https://hobbybrauer.de/forum/viewtopic. ... 75#p268175
"Da braut sich was zusammen ... "
"Oh, Bier ;-) !"
"Nein! Was Böses!"
"Alkoholfreies Bier??? ..."
-----------
Viele Grüße
Jens

Interesse an Flüssighefen ... ?

Benutzeravatar
murby81
Posting Junior
Posting Junior
Beiträge: 61
Registriert: Montag 8. Oktober 2018, 08:33
Wohnort: Mittelfranken

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#126

Beitrag von murby81 » Dienstag 12. Februar 2019, 21:14

Ah OK, danke. Also war der HDD Magnet nicht optimal. Dann such ich mal das Haus nach zwei kleineren ab.

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#127

Beitrag von mwx » Mittwoch 13. Februar 2019, 20:22

Es geht voran, ich habe jetzt alle Funktionen eingebaut. Also Boost und Fische fangen. Das ganze hat jetzt ein Menu in dem man die verschiedenen Sachen einstellen kann. Alles ist immer noch mit einem einzigen Knopf einstellbar .. das gefällt mir sehr gut:

Alle Einstellungen werden gespeichert und sind nach Stromausfall wieder da. Alle Einstellungen kann man unabhängig für jeden Rührer machen.

Das Menu hat 5 Punkte, durch einfaches drücken kann man zwischen Menu, Rührer 1 und Rührer 2 wechselen.

Geschwindigkeit einstellen
a.jpg

Boost aktivieren und einstellen (drehen zum Geschwindigkeit einstellen, lang drücken zum starten). Das Sternchen zeigt an das der Boost Modus für den Rührer aktiv ist
b.jpg

Boost Zeit einstellen (in Minuten)
c.jpg

Catch aktivieren. CAT zeigt an das der Rührer grade Fische fängt.
d.jpg

Catch intervall einstellen (in Minuten)
e.jpg

Die Sourcen dazu poste ich in ein paar Tagen (reifen lassen).

Gruß, Michael

Benutzeravatar
glassart
Posting Freak
Posting Freak
Beiträge: 1268
Registriert: Mittwoch 1. Juli 2015, 11:50

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#128

Beitrag von glassart » Mittwoch 13. Februar 2019, 21:08

jetzt fehlt "nur" noch die Heizung und das 1.3 OLED ( ich drucke gerade OLED-Einbaurahmen für 2,3,4 -fach OLED´s :Bigsmile )

Super da freue ich mich schon auf das Ende der Reifezeit :thumbsup

lg Herbert

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#129

Beitrag von mwx » Freitag 15. Februar 2019, 13:50

Hier wie versprochen die Sourcen zu meiner Lüftersteuerung. Die Kommentare sollten ausreichen um den Arduino richtig anzuschließen. Das ganze ist angepasst an einen Arduino Leonardo oder einen Pro Micro. Ich verwende die BeQuiet Lüfter mit 1000 Umdrehungen. Der Drehschalter ist ein KY-040 und das Display ein 1602 LCD. Für andere Komponenten muss der Quelltext eventuell angepasst werden.


Schaltplan:

https://easyeda.com/micwes/stir

Schematic_stir_Sheet-1_20190216092729.png

Quelltext:

Code: Alles auswählen

/////////////////////////////////////////////////////////////////////////////// Stir Control (mwx'2019, v1.1.0)
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>

#define SX Serial.print 
#define SXN Serial.println
#define MS (long)millis()

int SPEEDINC      = 50;                                                                      // speed increment

int FANMIN        = 200;                                                                   // fan minimum speed
int FANMAX        = 1000;                                                                  // fan maximum speed

int RDELAY        = 5000;                                                        // regulation delay on changes
int RINTERVAL     = 2000;                                                                // regulation interval 
int CATCHSTOP     = 20000;                                                                 // catch stop period
int SPEEDINTERVAL = 5000;                                                             // speed measure interval

int PWM0          = 9;                                                                    // PWM pin for 1. fan
int PWM1          = 10;                                                                   // PWM pin for 2. fan
                                      
int I0            = 2;                                                   // interrupt pin for 1. fan rpm signal
int I1            = 3;                                                   // interrupt pin for 2. fan rpm signal
                                  
int CLK           = 5;                                                                 // clk on KY-040 encoder
int DT            = 6;                                                                  // dt on KY-040 encoder
int SW            = 4;                                                                  // sw on KY-040 encoder

int SAVETAG       = 1004;                                                                           // save tag 

LiquidCrystal_I2C lcd(0x27,16,2);                                           // LCD display (connect to SDA/SCL)

int v0,b0,r0,v1,b1,r1,r,fanstate0,fanstate1;                                            // speed and regulation
long rpmcount0,rpmcount1;                                                                        // rpm counter
double rpm0,rpm1;                                                                                        // rpm

long speedts,dt,rts,swts,bts,ox,savets,catchts0,catchts1,stop0,stop1,b0ts,b1ts;                       // timing
int bdelay,bprocess,enclast,encval,swmode;                                                 // button processing
char form[8],out[32],M[8];String str;                                                          // string buffer
int OK,SAVE,LOCK,bstate0,bstate1,btime0,btime1,catch0,catch1,ctime0,ctime1,mode;
 
void setup() { ////////////////////////////////////////////////////////////////////////////////////////// SETUP
  rpmcount0=0;rpmcount1=0;rpm0=0;rpm1=0;bprocess=0;speedts=0;r0=0;r1=0;swmode=2;

  Serial.begin(9600);                                                                           // start serial
  
  lcd.init();lcd.backlight();lcd.clear();                                                     // initialize lcd

  attachInterrupt(I0,rpmint0,FALLING);                                           // setup interrupts vor rpm in
  attachInterrupt(I1,rpmint1,FALLING);

  TCCR1A=0;TCCR1B=0;TCNT1=0;                                                      // setup timer for 25 kHz PWM
  TCCR1A = _BV(COM1A1)  // non-inverted PWM on ch. A
         | _BV(COM1B1)  // same on ch; B
         | _BV(WGM11);  // mode 10: ph. correct PWM, TOP=ICR1
  TCCR1B = _BV(WGM13)   // ditto
         | _BV(CS10);   // prescaler=1
  ICR1   = 320;         // TOP=320

  SAVE=0;                                                                           // load/initialize settings
  if (eer(0)!=SAVETAG) {
    v0=300;v1=300;b0=700;b1=700;btime0=30;btime1=30;catch0=0;catch1=0;ctime0=120;ctime1=120;
      eew(0,SAVETAG);
      save();
  } else {
    v0=eer(1);v1=eer(2);b0=eer(3);b1=eer(4);btime0=eer(5);btime1=eer(6);
    catch0=eer(7);catch1=eer(8);ctime0=eer(9);ctime1=eer(10);
  }

  pinMode(PWM0,OUTPUT);pinMode(PWM1,OUTPUT);                                                   // set pin modes
  pinMode(CLK,INPUT);pinMode(DT,INPUT);pinMode(SW,INPUT);

  enclast=digitalRead(CLK);                                                                // get encoder state

  fanstate0=0;fanstate1=0;OCR1A=0;OCR1B=0;                                                     // turn fans off

  rts=MS;swts=MS;bts=MS;savets=MS;catchts0=MS;catchts1=MS;stop0=MS;stop1=MS;                       // set timer

  lcd.clear();                                                                  // clear display, start running

  bstate0=0;bstate1=0;mode=0;updatelcd();updatespeed();updatemarker();LOCK=0;             // set initial states
}


void loop() { //////////////////////////////////////////////////////////////////////////////////////////// LOOP

  if (SAVE>0 && MS-savets>60000) {;save();SAVE=0;savets=MS;} ////////////////////////// save settings if needed
  
  if (catch0 && MS-catchts0>(long)ctime0*60000) { ////////////////////////////////////// check catch fish state
    catchts0=MS;stop0=MS+CATCHSTOP;
    updatePWM();
  }
  if (catch1 && MS-catchts1>(long)ctime1*60000) {
    catchts1=MS;stop1=MS+CATCHSTOP;
    updatePWM();
  }

  if (bstate0 && MS-b0ts>(long)btime0*60000) {;bstate0=0;updatelcd();} ////////////////////// check boost state
  if (bstate1 && MS-b1ts>(long)btime0*60000) {;bstate1=0;updatelcd();}

  if (Serial.available() > 0) { ////////////////////////////////////////////////////////// serial communication
    str=Serial.readString();OK=0;

    if (str=="info") {;serinfo();OK=1;}                                                                 // info
    
    if (str.substring(0,5)=="speed") {                                // speed <fan0> <fan1> (200-820, 820=max)
      v0=sstr(str,':',1).toInt();
      v1=sstr(str,':',2).toInt();
      updatePWM();r0=0;r1=0;rts=MS+RDELAY;
      SAVE++;OK=1;updatelcd();serinfo();
    }

    if (str.substring(0,6)=="bspeed") {                              // bspeed <fan0> <fan1> (200-820, 820=max)
      b0=sstr(str,':',1).toInt();
      b1=sstr(str,':',2).toInt();
      updatePWM();r0=0;r1=0;rts=MS+RDELAY;
      SAVE++;OK=1;updatelcd();updatespeed();serinfo();
    }
    
    if (str.substring(0,2)=="on") {                                         // on <fan0> <fan1> (value: 0 or 1)
      if (sstr(str,':',1).toInt()==1) {;fanstate0=1;r0=0;} else fanstate0=0;
      if (sstr(str,':',2).toInt()==1) {;fanstate1=1;r1=0;} else fanstate1=0;
      updatePWM();rts=MS+RDELAY;
      SAVE++;OK=1;updatelcd();updatespeed();serinfo();
    }

    if (str.substring(0,5)=="boost") {                                   // boost <fan0> <fan1> (value: 0 or 1)
      if (sstr(str,':',1).toInt()==1) {;rts=MS+RDELAY;bstate0=1;b0ts=MS;} else {;bstate0=0;}
      if (sstr(str,':',2).toInt()==1) {;rts=MS+RDELAY;bstate1=1;b1ts=MS;} else {;bstate1=0;}
      SAVE++;OK=1;updatelcd();updatespeed();serinfo();
    }

    if (str.substring(0,5)=="catch") {                                   // catch <fan0> <fan1> (value: 0 or 1)
      if (sstr(str,':',1).toInt()==1) {;catch0=1;catchts0=MS;} else {;catch0=0;}
      if (sstr(str,':',2).toInt()==1) {;catch1=1;catchts1=MS;} else {;catch1=0;}
      SAVE++;OK=1;updatelcd();updatespeed();serinfo();
    }
    
    if (str.substring(0,5)=="btime") {                                     // btime <fan0> <fan1> (value: 0-60)
      btime0=sstr(str,':',1).toInt();if (btime0<0) btime0=0;if (btime0>60) btime0=60;
      btime1=sstr(str,':',2).toInt();if (btime1<0) btime1=0;if (btime1>60) btime1=60;
      SAVE++;OK=1;updatelcd();updatespeed();serinfo();
    }
    
    if (str.substring(0,5)=="ctime") {                                   // ctime <fan0> <fan1> (value: 60-240)
      ctime0=sstr(str,':',1).toInt();if (ctime0<60) ctime0=60;if (ctime0>240) ctime0=240;
      ctime1=sstr(str,':',2).toInt();if (ctime1<60) ctime1=60;if (ctime1>240) ctime1=240;
      SAVE++;OK=1;updatelcd();updatespeed();serinfo();
    }

    if (!OK) SXN("ERROR");
  }

  if (MS-rts>RINTERVAL) { ////////////////////////////////////////////////////////////////////////// regulation
    
    if (abs(v0-rpm0)>5) {
    
      ox=1;if (abs(v0-rpm0)>50) ox=3;
      ox=1;if (abs(v0-rpm0)>100) ox=5;
      
      if (bstate0) r=b0; else r=v0;
      
      if (r>rpm0) {;r0+=ox;if (r0>40) r0=40;}
      if (r<rpm0) {;r0-=ox;if (r0<-40) r0=-40;}
  
      
      ox=1;if (abs(v1-rpm1)>50) ox=3;
      ox=1;if (abs(v1-rpm1)>100) ox=5;
      
      if (bstate1) r=b1; else r=v1;
      
      if (r>rpm1) {;r1+=ox;if (r1>40) r1=40;}
      if (r<rpm1) {;r1-=ox;if (r1<-40) r1=-40;}
      
      
      if (!fanstate0) r0=0;
      if (!fanstate1) r1=0;
        
    }    
        
    updatePWM();
    rts=MS;
  }

  bdelay=0; //////////////////////////////////////////////////////////////////////////////////// process switch
  if (!bprocess) {
    while (!digitalRead(SW)){
      bdelay++;
      delay(25);
      bprocess=1;
      if (bdelay>20) break;
    }
  }
  
  if (bdelay>0 && MS-bts>100) {                                                            // long button press
    if (bdelay>20) {
      
      if (swmode==0 && mode==0 && !LOCK) {                                                      // fan 0 on/off
        if (fanstate0==0) {;rts=MS+RDELAY;fanstate0=1;r0=0;updatePWM();}
         else {;fanstate0=0;}
        updatespeed();
      }
      if (swmode==1 && mode==0 && !LOCK) {                                                      // fan 1 on/off
        if (fanstate1==0) {;rts=MS+RDELAY;fanstate1=1;r1=0;updatePWM();}
        else {;fanstate1=0;}
        updatespeed();
      }

      if (swmode==0 && mode==1 && !LOCK) {                                                    // boost 0 on/off
        if (bstate0==0) {
          rts=MS+RDELAY;bstate0=1;b0ts=MS;updatePWM();
        }  else {;bstate0=0;}
        updatespeed();
      }
      if (swmode==1 && mode==1 && !LOCK) {                                                    // boost 1 on/off
        if (bstate1==0) {
          rts=MS+RDELAY;bstate1=1;b1ts=MS;updatePWM();
        } else {;bstate1=0;}
        updatespeed();
      }

      if (swmode==2) {                                                                           // lock/unlock
        if (LOCK==0) LOCK=1;
        else LOCK=0;
        updatemarker();
      }
      
      bdelay=0;
      
    } else if (bdelay>0 && bdelay<20 && !LOCK) {           // short button press: switch menu -> fan 0 -> fan 1
      swmode++;if (swmode>2) swmode=0;
      updatemarker();
      bdelay=0;
    }
    
    bts=MS;
  }
  if (digitalRead(SW)) bprocess=0;

  encval = digitalRead(CLK); ////////////////////////////////////////////////////////////////// process encoder
  if (encval != enclast && !LOCK) {
    if(!encval){
            
      if (digitalRead(DT) != encval) {                                                                    // cw
        if (swmode==0 && mode==0) v0+=SPEEDINC;  // fan 0 speed up
        if (swmode==1 && mode==0) v1+=SPEEDINC;  // fan 1 speed up
        if (swmode==0 && mode==1) b0+=SPEEDINC;  // boost 0 speed up
        if (swmode==1 && mode==1) b1+=SPEEDINC;  // boost 1 speed up
        if (swmode==0 && mode==2) btime0++;      // boost time 0 up
        if (swmode==1 && mode==2) btime1++;      // boost time 1 up
        if (swmode==0 && mode==3) catch0++;      // catch 0 on/off
        if (swmode==1 && mode==3) catch1++;      // catch 1 on/off
        if (swmode==0 && mode==4) ctime0+=10;    // catch time 0 up
        if (swmode==1 && mode==4) ctime1+=10;    // catch time 1 up
        if (swmode==2) mode++;
      } else {                                                                                           // ccw
        if (swmode==0 && mode==0) v0-=SPEEDINC;  // fan 0 speed down
        if (swmode==1 && mode==0) v1-=SPEEDINC;  // fan 1 speed down
        if (swmode==0 && mode==1) b0-=SPEEDINC;  // boost 0 speed down
        if (swmode==1 && mode==1) b1-=SPEEDINC;  // boost 1 speed down
        if (swmode==0 && mode==2) btime0--;      // boost time 0 down
        if (swmode==1 && mode==2) btime1--;      // boost time 1 down
        if (swmode==0 && mode==3) catch0--;      // catch 0 on/off
        if (swmode==1 && mode==3) catch1--;      // catch 1 on/off
        if (swmode==0 && mode==4) ctime0-=10;    // catch time 0 down
        if (swmode==1 && mode==4) ctime1-=10;    // catch time 1 down
        if (swmode==2) mode--;
      }
    
      if (swmode==0 && mode==0) {;updatePWM();r0=0;rts=MS+RDELAY;}                      // apply speed change 0
      if (swmode==1 && mode==0) {;updatePWM();r1=0;rts=MS+RDELAY;}                      // apply speed change 1
      if (swmode==0 && mode==1) {;updatePWM();r0=0;rts=MS+RDELAY;}                // apply boost speed change 0
      if (swmode==1 && mode==1) {;updatePWM();r1=0;rts=MS+RDELAY;}                // apply boost speed change 1
      
      if (swmode==0 && mode==2) {;if (btime0<0) btime0=0;if (btime0>60) btime0=60;}       // check boost time 0
      if (swmode==1 && mode==2) {;if (btime1<0) btime1=0;if (btime1>60) btime1=60;}       // check boost time 1
      
      if (swmode==0 && mode==3) {;if (catch0<0) catch0=1;if (catch0>1) catch0=0;catchts0=MS;}  // check catch 0
      if (swmode==1 && mode==3) {;if (catch1<0) catch1=0;if (catch1>1) catch1=0;catchts1=MS;}  // check catch 1
      
      if (swmode==0 && mode==4) {;if (ctime0<60) ctime0=60;if (ctime0>240) ctime0=240;}   // check boost time 0
      if (swmode==1 && mode==4) {;if (ctime1<60) ctime1=60;if (ctime1>240) ctime1=240;}   // check boost time 1

      if (swmode==2) {;if (mode<0) mode=4;if (mode>4) mode=0;}                               // check menu mode
      
      SAVE++;updatelcd();delay(50);
    } 
  }
  enclast=encval;
  
  dt=MS-speedts; ///////////////////////////////////////////////////////////////////////////// caluculate speed
  if (dt>SPEEDINTERVAL) {
    
    rpm0=rpmcount0/2/((MS-speedts)/1000.0)*60.0;
    rpm1=rpmcount1/2/((MS-speedts)/1000.0)*60.0;

    rpm0=round(rpm0/5.0)*5;
    rpm1=round(rpm1/5.0)*5;

    speedts=MS;rpmcount0=0;rpmcount1=0;
    updatespeed();
  }
  
}


/////////////////////////////////////////////////////////////////////////////////////////////////////// SUPPORT

void updatelcd() { ///////////////////////////////////////////////////////////////////////////////// update LCD
  if (mode==0) {
    slcd(1,1,5,"SPEED");
    ilcd(7,1,-4,int(v0));
    ilcd(12,1,-4,int(v1));
  }
  if (mode==1) {
    slcd(1,1,5,"BOOST");
    ilcd(7,1,-4,int(b0));
    ilcd(12,1,-4,int(b1));
  }
  if (mode==2) {
    slcd(1,1,5,"BTIME");
    ilcd(7,1,-4,int(btime0));ilcd(12,1,-4,int(btime1));
  }
  if (mode==3) {
    slcd(1,1,5,"CATCH");
    if (catch0==0) slcd(7,1,-4,"OFF");
    else slcd(7,1,-3,"ON");
    if (catch1==0) slcd(12,1,-4,"OFF");
    else slcd(12,1,-3,"ON");
  }
  if (mode==4) {
    slcd(1,1,5,"CTIME");
    ilcd(7,1,-4,int(ctime0));ilcd(12,1,-4,int(ctime1));
  }
}  
  
void updatemarker() { /////////////////////////////////////////////////////////////////// update current marker
  slcd(0,1,1," ");
  slcd(6,1,1," ");
  slcd(11,1,1," ");
  if (!LOCK) {
    if (swmode==0) slcd(6,1,1,">");
    if (swmode==1) slcd(11,1,1,">");
    if (swmode==2) slcd(0,1,1,">");
  }
}

void updatespeed() { ///////////////////////////////////////////////////////////////////////// update fan speed
  
  slcd(1,0,5,"     ");
  if (fanstate0) {
    if (MS<stop0) {
      slcd(7,0,-4,"CAT");
    } else {
      if (bstate0) {
        ilcd(1,0,2, (((long)btime0*60000)-(MS-(long)b0ts))/1000/60+1);
      } else slcd(7,0,1," ");
      ilcd(7,0,-4,rpm0);
    }
  }
  else slcd(7,0,-4,"OFF");
  
  if (fanstate1) {
    if (MS<stop1) {
      slcd(12,0,-4,"CAT");
    } else {
      if (bstate1) {
        ilcd(4,0,2, (((long)btime1*60000)-(MS-(long)b1ts))/1000/60+1);
      } else slcd(12,0,1," ");
      ilcd(12,0,-4,rpm1);
    }
  }
  else slcd(12,0,-4,"OFF");
}

void serinfo() { /////////////////////////////////////////////////////////////////////////// serial info output 
  SX(fanstate0);SX(":");SX((int)(v0));SX(":");SX((int)(b0));SX(":");
  SX(fanstate1);SX(":");SX((int)(v1));SX(":");SX((int)(b1));SX(":");
  SX(rpm0);SX(":");SX(rpm1);SX(":");SX(r0);SX(":");SX(r1);SX(":");
  SX(bstate0);SX(":");SX(bstate1);SX(":");SX(btime0);SX(":");SX(btime1);SX(":");
  SX(catch0);SX(":");SX(catch1);SX(":");SX(ctime0);SX(":");SX(ctime1);SXN("");
}

void ilcd(int x,int y, int l,int v) { //////////////////////////////////////////////////// write integer to LCD
  sprintf(form,"%%%dd",l);
  sprintf(out,form,v);
  lcd.setCursor(x,y);lcd.print(out);
}

void slcd(int x,int y, int l,String s) { ////////////////////////////////////////////////// write string to LCD
  sprintf(form,"%%%ds",l);
  sprintf(out,form,s.c_str());
  lcd.setCursor(x,y);lcd.print(out);
}

void updatePWM() { ///////////////////////////////////////////////////////////////////// update PWM (fan speed)
  if (v0<FANMIN) v0=FANMIN;if (v0>FANMAX) v0=FANMAX;
  if (v1<FANMIN) v1=FANMIN;if (v1>FANMAX) v1=FANMAX;
  if (b0<FANMIN) b0=FANMIN;if (b0>FANMAX) b0=FANMAX;
  if (b1<FANMIN) b1=FANMIN;if (b1>FANMAX) b1=FANMAX;
  
  double v;
  
  if (fanstate0) {
    if (MS<stop0) {
      OCR1A=0;
    } else {
      if (bstate0) {
        v=b0/(FANMAX/320.0)+r0;if (v<0) v=0;if (v>320) v=320;
        OCR1A=v;
      } else {
        v=v0/(FANMAX/320.0)+r0;if (v<0) v=0;if (v>320) v=320;
        OCR1A=v;
      }
    }
  } else OCR1A=0;
  
  if (fanstate1) {
    if (MS<stop1) {
      OCR1B=0;
    } else {
      if (bstate1) {
        v=b1/(FANMAX/320.0)+r1;if (v<0) v=0;if (v>320) v=320;
        OCR1B=v; 
      } else {
        v=v1/(FANMAX/320.0)+r1;if (v<0) v=0;if (v>320) v=320;
        OCR1B=v;
      }
    } 
  } else  OCR1B=0;
} 

void rpmint0() {;rpmcount0++;} ///////////////////////////////////////////////////////////////// rpm interrupts
void rpmint1() {;rpmcount1++;}

int eer(int adr) {;return EEPROM.read(adr*2)+EEPROM.read(adr*2+1)*256;} /////////////////////////// read EEPROM

void eew(int adr, int val) {;EEPROM.write(adr*2,val%256);EEPROM.write(adr*2+1,val/256);} /////// save to EEPROM

void save() { /////////////////////////////////////////////////////////////////////////////////// save settings
  eew(1,v0);eew(2,v1);eew(3,b0);eew(4,b1);eew(5,btime0);eew(6,btime1);
  eew(7,catch0);eew(8,catch1);eew(9,ctime0);eew(10,ctime1);
}

String sstr(String data, char separator, int index) { ///////////////////////////////// get seperated substring
  int found=0;
  int si[]={0,-1};
  int mi=data.length()-1;

  for (int i=0; i<=mi && found<=index; i++) {
    if (data.charAt(i) == separator || i == mi) {
      found++;si[0]=si[1]+1;si[1]=(i==mi) ? i+1 : i;
    }
  }
  return found > index ? data.substring(si[0], si[1]) : "";
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////// END

Funktionsübersicht:
  • Kurz drücken: wechseln zwischen Menu, Rührer1 und Rührer2
  • Drehen wenn Menu ausgewählt ist: wechseln zwischen den Menu Punkten (SPEED, BOOST, BTIME, CATCH, CTIME)
  • Lange drücken wenn Menu ausgewählt ist: Alle Funktionen sperren (entsperren ebenfalls durch langes drücken)
  • Wenn ein Rührer aus gewählt ist:
    • SPEED: drehen stellt Geschwindigkeit ein, lange drücken schaltet Rührer ein bzw. aus.
    • BOOST: drehen stellt Boost Geschwindigkeit ein, lange drücken aktiviert/deaktiviert die Boost Funktion (Laufzeit wird im Display angezeigt).
    • BTIME: drehen stellt die Boost Zeit in Minuten ein
    • CATCH: drehen aktiviert/deaktiviert die Fischfang Funktion
    • CTIME: drehen stellt den Interwall in Minuten für die Fishfang Funktion ein

Display Anzeigen:

Unten Links: Menu
Unten Mitte/Rechts: Zeigt je nach gewähltem Menupunkt die eingestellten Werte für die Rührer an.
Oben Mitte/Rechts: Zeigt die aktuelle Drehzahl der Rührer an (oder 'OFF' oder 'CAT' (Fischfang))
Oben Links: zeigt die noch verbleibende Zeit der Boostfunktion an.
Zuletzt geändert von mwx am Sonntag 17. Februar 2019, 19:08, insgesamt 2-mal geändert.

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#130

Beitrag von mwx » Samstag 16. Februar 2019, 10:01

Schaltplan hinzugefügt

JackFrost
Posting Klettermax
Posting Klettermax
Beiträge: 179
Registriert: Dienstag 15. Mai 2018, 18:10

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#131

Beitrag von JackFrost » Samstag 16. Februar 2019, 23:25

Ich hab meine Steuerung nun so fertig , das der Standardautomatikmodus, der Handmodus und das verstellen eines Profiles für jeweils die linke und rechte Seite geht.

Im Menu können nun das Profil für die linke und rechte Seite temporär geändert werden. Wenn im Automatikmodus gestoppt wird, bleibt die verstrichene Zeit erhalten. Erst mit einem Reset des geladenen Porfiles wird es auf die aktuellen Werte gestellt.

Aktuell läuft der Magnetrüher mit der langsamen Geschwindigkeit weiter wenn die Gesamtezeit verstrichen ist.

Ich hatte noch eine Störeintrahlung bei der Drehzahlmessung, daher musst ich mit der Hand ein paar Kondensatoren einlöten, das werde ich bei der Rev. 2 beheben.
Die gemessene Drehzahl wird über einen gleitenden Durchschnitt mit 16 Werten geglättet.

Ich kann derzeit Drehzahlen von 400UpM bis maximale Drehzahl regeln. Aus dem Stand sind Drehzahlen < 400 UpM schwierig, da muss ich an der Regelung noch ein paar Sachen verbessern.

USB, Fernsteuerung und der Bootloader sind noch nicht fertig.

Morgen werde ich mal den "Betatest" mit einer W164 machen. Für meine größeren Gefässe werde ich mir noch ein 15V Netzteil besorgen.

Hier ist noch ein Link zu einem Video in dem man die Menus usw sieht https://youtu.be/QRJ7w1K40rU


Gruß JackFrost

Benutzeravatar
mwx
Posting Klettermax
Posting Klettermax
Beiträge: 260
Registriert: Mittwoch 11. Oktober 2017, 07:37
Wohnort: Berlin

Re: Der Magnetrührer-Thread (DIY, Infos, Bilder und mehr)

#132

Beitrag von mwx » Sonntag 17. Februar 2019, 19:39

Ich habe die Software oben geupdatet. Sie läßt sich nun sehr einfach für beliebige Lüfter anpassen.

Antworten