Timer für Mühle mit Arduino und Wägezellen

Diskutiere Timer für Mühle mit Arduino und Wägezellen im Mühlen Forum im Bereich Maschinen und Technik; Hallo Zusammen, Aus einer Diskussion im Namensähnlichen Thread ergab sich folgender Ansatz: Die Mengenmessung mittells Wägezellen. Ich habe...

  1. #1 ingoingo, 25.06.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    Hallo Zusammen,

    Aus einer Diskussion im Namensähnlichen Thread ergab sich folgender Ansatz:

    Die Mengenmessung mittells Wägezellen.


    Ich habe mich mal drangesetzt und die Mechanik konstruiert und gedruckt.
    Da ich in meiner Mühle sowieso schon einen Arduino mit eigenem Programm am laufen habe sollte die weitere implementierung wenig Aufwand darstellen. Ich warte aktuell noch auf einen Messverstärker um die Wägezelle auslesen zu können.


    Den Programmablauf stelle ich mir so vor:

    1. Tara
    2. x Sek. mahlen (x<Gesamtmahldauer)
    3. Stop
    4. g/Sek Verhältnis aus den x Sek. Mahldauer und der entstandenen Menge Mehl im Siebträger messen
    5. die restlichen y Sek. ,welche sich jetzt errechnen lassen, mahlen.


    [​IMG]
    [​IMG]



    Was meint ihr?


    Gruß Ingo
     
    blu gefällt das.
  2. mamu

    mamu Mitglied

    Dabei seit:
    25.04.2011
    Beiträge:
    3.294
    Zustimmungen:
    726
    Klingt sehr interessant und ich fände eine Lösung die nicht über die Krücke Timer/Zeit geht sehr gut.
    Wie hast du die Gabel und Mechanik gebaut? Kosten?
     
  3. #3 ingoingo, 25.06.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    Ich habe die 2 Teile 3d gedruckt. Ich habe einen eigenen Drucker hier.

    Ich bin mir aber nicht sicher ob der Wägezellen so optimal belastet werden. Zu der vertikalen Kraftkomponente des Siebträgers kommt ja noch ein Drehmoment welches durch den Hebelarm erzeugt wird. Ich weiß nicht wie dieses die Messung beeinflusst. Hier ist wohl ausprobieren angesagt.
     
  4. blu

    blu Mitglied

    Dabei seit:
    15.11.2004
    Beiträge:
    9.688
    Zustimmungen:
    6.716
    Hi,
    prima, ich wünsche viel Erfolg!
    Bei schnellen Mühlen bin ich etwas skeptisch, ob der Mahlgutstrom nicht so ungleichmäßig ist, dass ein korrektes Stoppen nicht unmöglich ist.
    Ich bin sehr gespannt. Kannst du deine Quelle für die Waage nennen? Vielleicht wage ich mich auch mal ran.
    LG blu
     
  5. #5 ingoingo, 25.06.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    Danke, ich habe eine Graef CM800, die macht ca. 13g/7s da sollte es ausreichen.

    Dei Wägezellen hatte ich noch hier rumliegen. Aber bei Ebay gibt es welche aus China für 5€ pro Stück.
     
  6. #6 gunnar0815, 26.06.2014
    gunnar0815

    gunnar0815 Mitglied

    Dabei seit:
    17.08.2005
    Beiträge:
    15.404
    Zustimmungen:
    1.026
    Tolles Projekt bisher haben wir immer gedacht das es nicht möglich ist damit eine konstante Menge in den Siebträger zu bekommen.
    Bin gespannt ob es dir gelingt.
    Ob das bei Mühlen mit unter 2 Sek. für 8 g geht ist dann noch einen andere Sache.

    Gunnar
     
  7. mamu

    mamu Mitglied

    Dabei seit:
    25.04.2011
    Beiträge:
    3.294
    Zustimmungen:
    726
    Fände es schon gut wenn es für Mühlen mit 9s für 16g klappen würde ;-)
     
  8. #8 mamu, 26.06.2014
    Zuletzt bearbeitet: 26.06.2014
    mamu

    mamu Mitglied

    Dabei seit:
    25.04.2011
    Beiträge:
    3.294
    Zustimmungen:
    726
    Welche der angebotenen Sensoren haben einen Messbereich von 5-25g mit einer Genauigkeit von 0,5g +-5% und einer Auflösung von 0,1g. Oder auch nur annähernd in dieser Spezifikation?
    Edit: und dann noch eine Vorlast von 500g bzw je nach Konstruktion der Siebträgerhalteraufnahme auch mehr.
     
  9. #9 ingoingo, 26.06.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    Ich habe noch keine Sicherheit ob es mit meinen Wägezellen funktionieren wird. Auf diesen steht jeweils 5kg drauf.
    Ich muss auch schauen wie ich mit dem INA125 als Messverstärker hinkomme.
    Das ist zwar nicht mein erstes Arduino Projekt aber mit Wägezellen habe ich vorher noch nicht gearbeitet.


    So sieht das ganze jetzt vollständig aus. Elektronik kommt dann die Tage :)


    [​IMG]
     
  10. #10 ingoingo, 26.06.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    Keine Ahnung auf welche Messgenauigkeit man mit 2 von denen kommt. Aber 0,2gr würden mir volkommen ausreichen. Wobei man ja beachten muss dass das Messergebnis so genau es auch ist letztendlich durch das nachmahlen nochmal ungenauer werden kann.

    http://www.ebay.de/itm/Digital-Elec...Electrical_Test_Equipment&hash=item417f7b4988
     
  11. mamu

    mamu Mitglied

    Dabei seit:
    25.04.2011
    Beiträge:
    3.294
    Zustimmungen:
    726
    Ich hoffe du berichtest hier.
    Im Netz gibt es zum Thema Arduino und Wägezelle auch ein paar Treffer.
    Wozu brauchst du den Meßwertverstärker? Liefert der Sensor nicht 4-20 bzw. 0-16mA an Strom? Bei meinen Druckmessumformern war es dieser Industriestandart und ich habe dann nur den Spannungsabfall an einem ausgemessenen Widerstand mit dem Arduino gemessen. Klappt prima.
     
  12. #12 ingoingo, 02.07.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    So hallo Leute,

    hier ein paar Neuigkeiten.

    Ich habe die Wägezellen zum laufen gebracht. Ich kann damit 1 Gramm genau messen. (Musste die Wägezellen auffräsen um besser in den Messbereich zu kommen.)

    Aber leider läuft mein Programm noch nicht rund. Die Mühle fängt an zu laufen aber hört nicht nach 5 sec. auf wie sie sollte um die Berechnung der Restmahlzeit zu starten.

    Jemand eine Idee?

    Hier mal der Code der teilweise kopiert ist:

    int grinderPin = 13;
    int isGrinding = LOW;
    unsigned long delaybeforestart = 5000;
    unsigned long swingdelay = 3000;
    unsigned long firstgrindtime = 5000;
    unsigned long secondgrindtime = 0;
    unsigned long stoptime;
    int counter=0;
    float pause;

    //Weigh

    float loadA = 0; // kg
    int analogvalA = 302.7; // analog reading taken with load A on the load cell
    float loadB = -0.11375; // kg
    int analogvalB = 227.17; // analog reading taken with load B on the load cell
    float analogValueAverage = 0;
    long time = 0; //
    int timeBetweenReadings = 200; // We want a reading every 200 ms;
    float newload;
    float secondspergram;


    //firstgrind um g/sec zu berechnen
    void firstgrind() {

    stoptime = millis() + firstgrindtime;
    isGrinding = HIGH;
    digitalWrite(grinderPin, HIGH);
    counter=1;
    Serial.println(counter);
    }

    //secondgrind um auf Wunschmenge zu kommen
    void secondgrind() {
    stoptime = millis() + secondgrindtime;
    isGrinding = HIGH;
    digitalWrite(grinderPin, HIGH);
    counter=3;
    Serial.println(counter);
    }



    void setup(){
    Serial.begin(9600);
    pinMode(grinderPin, OUTPUT);
    digitalWrite(grinderPin, LOW);
    float pause=delaybeforestart+firstgrindtime+swingdelay;
    }

    void loop(){

    //firstgrind
    if (millis()>=delaybeforestart){
    firstgrind();
    }

    //Wiegen und berechnen und 2. Mahlung starten

    if (counter==2 && millis()>=pause){
    secondspergram=firstgrindtime/(newload*1000);
    secondgrindtime= ((13-(newload*1000))*secondspergram); //auf 13 Gramm Mehl will ich kommen
    Serial.println(secondgrindtime);
    secondgrind();
    }

    // stop the grinder if nessesary
    if(millis() >= stoptime && isGrinding == HIGH && counter == 1){
    isGrinding = LOW;
    digitalWrite(grinderPin, LOW);
    counter=2;
    Serial.println(counter);
    }
    if(millis() >= stoptime && isGrinding == HIGH && counter == 3){
    isGrinding = LOW;
    digitalWrite(grinderPin, LOW);
    counter=4;
    Serial.println(counter);
    }

    int analogValue = analogRead(0);

    // running average - We smooth the readings a little bit
    analogValueAverage = 0.999*analogValueAverage + 0.001*analogValue;

    // Is it time to print?
    if(millis() > time + timeBetweenReadings){
    float load = analogToLoad(analogValueAverage);
    float newload=load-0.002;

    // Serial.print("analogValue: ");Serial.println(analogValueAverage);
    // Serial.print(" load: ");Serial.println(newload,4);
    time = millis();
    }

    }


    float analogToLoad(float analogval){

    // using a custom map-function, because the standard arduino map function only uses int
    float load = mapfloat(analogval, analogvalA, analogvalB, loadA, loadB);
    return load;
    }

    float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
    {
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
     
  13. #13 gunnar0815, 02.07.2014
    gunnar0815

    gunnar0815 Mitglied

    Dabei seit:
    17.08.2005
    Beiträge:
    15.404
    Zustimmungen:
    1.026
    Beim Programm kann ich dir leider gar nicht helfen
    Von der Idee erst ein Teil zu mahlen und die Zeit daraus dann zu berechnen genial.
    Wie ein Messblitz beim Fotoblitz.
    1 g Genauigkeit wird aber nicht reichen.
    Ich stellen meinen Timer auf 0,02-0,04 Sek. ein bei ca. 8 g in 2 Sek. um ganz genau die Druchflussmenge zu bestimmen.
    Das sind weniger als 0,1 g.
    Denke das Zeitmahlen mit Timer ist auch gar nicht das Problem er das Schüttgut danach das nicht immer ganz konstant alles aus der Mühle fällt. Gefühlt ca. jede 20ste Mahlung leidet darunter.
    Ein Rüttler ab der Rutsche wäre eine Lösung.

    Gunnar
     
  14. blu

    blu Mitglied

    Dabei seit:
    15.11.2004
    Beiträge:
    9.688
    Zustimmungen:
    6.716
    Hi,
    nur auf die Schnelle (habe gerade zu wenig Zeit):
    du deklarierst pause 2x, einmal ganz zu Beginn (korrekt, globale verfügbar) und dann noch mal im Setup (falsch, nur lokal). Probier das doch mal zu korrigieren.
    Morgen Abend kann ich nochmal in Ruhe drüberschauen wenn nötig.
    lg blu
    edit: zum Spielen habe ich mir mal eine 1 kg Wägezelle bestellt. Dauert aber noch bis sie kommt und ich habe noch nichtmal die versprochene Doku für die Baristalights + Chronofunktion :-(
     
  15. #15 ingoingo, 02.07.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    Mit der Genauigkeit gebe ich dir Recht! Jedoch solle es noch genauer werden. Im Moment rauscht der Wert von den Wägezellen noch ein wenig. Wenn ich das abgestellt bekomme sollten 0,2 Gramm drin sein :)

    Und für die Rutsche hab ich auch schon eine Idee. Entweder ein Piezo der Schwingungen erzeugt oder ein kleiner Servo der einen Draht o.Ä. hin und her bewegt.
     
    gunnar0815 gefällt das.
  16. #16 ingoingo, 02.07.2014
    ingoingo

    ingoingo Mitglied

    Dabei seit:
    24.02.2009
    Beiträge:
    90
    Zustimmungen:
    86
    Im Setup berechne ich die Variable nur noch. Oder darf ich die Berechnung auch außerhalb von setup und loop Teil ausführen? Wenn ich sie im Setup berechne kann ich doch nachher drauf zugreifen oder liege ich da falsch?
     
  17. blu

    blu Mitglied

    Dabei seit:
    15.11.2004
    Beiträge:
    9.688
    Zustimmungen:
    6.716
    Hi,
    du darfst schon im Setup rechnen, aber du darfst dort nicht nochmals die Variable deklarieren, d.h. das float vornedran muss weg. Vielleicht noch weitere Kleinigkeiten ;-), mehr morgen.
    lg blu
     
  18. #18 gunnar0815, 02.07.2014
    gunnar0815

    gunnar0815 Mitglied

    Dabei seit:
    17.08.2005
    Beiträge:
    15.404
    Zustimmungen:
    1.026
    Irgendwas was an der Rutsch schwingt wäre schon super.

    Gunnar
     
  19. mamu

    mamu Mitglied

    Dabei seit:
    25.04.2011
    Beiträge:
    3.294
    Zustimmungen:
    726
    Das Problem liegt daran, dass du, nachdem du einmal gemahlen hast, die stoptime zwar in secondgrind neu berechnest, im erneuten Durchlauf der Loop-Funktion aber wiederum firstgrind aufgerufen wird. Loop läuft ja nicht nur einmal durch. In firstgrind setzt dünste stoptime aber wieder neu und zwar auf die aktuelle Zeit plus 5s. Also läuft die Mühle bei jedem Durchlauf immer 5s länger als die aktuelle Zeit, also unendlich lange.
     
  20. #20 mamu, 02.07.2014
    Zuletzt bearbeitet: 02.07.2014
    mamu

    mamu Mitglied

    Dabei seit:
    25.04.2011
    Beiträge:
    3.294
    Zustimmungen:
    726
    Noch ein Tipp: nimm nicht Pin 13, der hat die Eigenheit, dass er beim Hochfahren immer kurz an geht. Folge, die Mühle würde immer kurz anlaufen.
     
Thema:

Timer für Mühle mit Arduino und Wägezellen

Die Seite wird geladen...

Timer für Mühle mit Arduino und Wägezellen - Ähnliche Themen

  1. [Zubehör] Timer für Mühle

    Timer für Mühle: Hallo zusammen, ich bin auf der Suche nach einem Timer für meine zum Direktmahler umgebaute Fiorenzato T80. Am liebsten eine schicke oder...
  2. Ersatz für Bezzera BB05 Kaffeemühle mit Timer

    Ersatz für Bezzera BB05 Kaffeemühle mit Timer: Hallo, mich nervt meine oben genannte Mühle da die Hälfte des Kaffees immer zur Seite rausfällt. Hat jemand eine Empfehlung für eine saubere...
  3. Mühle mit Timer (dosier option) für einfach und doppio espresso

    Mühle mit Timer (dosier option) für einfach und doppio espresso: Hallo, suche zum Einstieg in die Siebträger Home Welt eine relativ gute Mühle. Preis sollte ca. 200 - 350 sein. Was mir wichtig ist es soll...
  4. Mühle mit Timer (1er und 2er) für 300 €

    Mühle mit Timer (1er und 2er) für 300 €: Hallo, ich suche für meinen Bekannten eine vernünftige Lösung. Eine elektrische Mühle mit vernünftigem Ergebnis und Timer Funktion. Nutzung im...
  5. Mühle für Lelit PL 41 PLUS T (mit oder ohne TIMER?)

    Mühle für Lelit PL 41 PLUS T (mit oder ohne TIMER?): Hallo liebe Kaffee-Liebhaber nach der Rückabwicklung der PL 42TEMD (wegen Betrug), habe ich mir nun eine Lelit PL 41 PLUS T günstig aus...