- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 15

Thema: Maximalwerte DC-Motor bestimmen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Naja, wenn es ein 3V-Motörchen ist wird das Temperaturmessen schwierig.
    Ich vermute mal das Ding wird nicht allzu groß sein -> wenig Masse -> geringe thermische Kapazität -> ergo wird er sich ein gutes Stück wieder abgekühlt haben bevor der Sensor ein brauchbares Ergebnis anzeigen kann (Zeit zum Auseinanderbau mit einbezogen).

    Den Motor nach seiner Temperatur zu regeln wäre zwar theoretisch machbar, wird aber wahrscheinlich ziemlich aufwändig. Zum einen die Regelung selber, zum anderen wird die Temperturmessung im Betrieb ein Problem sein, dessen Lösung bei kleinen Baugrößen ebenfalls recht aufwändig sein dürfte.

    Vorschlag: Bau dir eine Konstantstromquelle aus einem LM317 und schalte den davor. Dann würden zwar im Maximalfall nur noch ca. 5,7V am Motor anliegen, aber dafür kann dein Motor nicht mehr durchbrennen wenn du ihn belastest. Im Überlastfall würde er einfach stehenbleiben weil der LM317 die Spannung über dem Motor runternimmt.

    Unter der Vorraussetzung, dass Wirkungsgrad und thermische Kapazität bekannt sowie die maximale Betriebszeit definitiv begrenzt sind könntest du den Motor auch definiert überlasten, dazu mußt du nur den über die Betriebszeit maximal verträglichen Dauerstrom berechnen und die LM317-Stromquelle entsprechend auslegen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.04.2013
    Beiträge
    526
    Soo doof ist die Idee mit dem Vorwiderstand gar nicht. Wenn der Motor 4 Ohm hat und du noch einen 4 Ohm Widerstand davorschaltest, fließt beim blockierten Motor nur noch der halbe Strom, was dann nur noch ein viertel der Wärmemenge ergibt. Die Leerlaufdrehzahl wird sich kaum ändern und auch die Drehzahl, bei der du den besten Wirkungsgrad hast, die ist ungefähr 80 % der Leerlaufdrehzahl. Da fließt dann nur noch ein kleiner Strom, und der Widerstand stört nicht sehr. Allerdings wird auch der Widerstand warm, du musst also einen entprechend leistungsfähigen Typen auswählen.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Da er prinzipiell bei etlichen Testläufen kein Problem mit den 7V hatte, habe ich vorhin mal versucht, eine Einschalttauerüberwachung in meinen Code zu implementieren. Simples C-Gefrickel, aber die While-Schleife, welche die Positionen abruft und wartet, dass der Stop-Sensor sein Auslösesignal abgibt, mag meine Ideen zur Zeitbegrenzung nicht.
    Sobald die Bewegung einsetzt, speichere ich den aktuellen Zeitwert. Wenn dieser nun um 5 Sekunden überschritten wird, würde ich gerne eine Zwangspause einlegen und einen reneuten Versuch nach einer kurzen Abkühlphase starten. Aber genau da liegt das Problem.
    Theoretisch sollte ich mir mit der Funktion millis() die aktuellen Millisekunden auf meinem Diyplay ausgeben können. Aber das funktioniert genau einmal, kurz nach dem Aufruf der Funktion.
    Also habe ich ohne zeitliche Konstante eine Zahl inkrementiert. Das klappt super, ich kann sie mir auch auf meinem Display anzeigen lassen, rasselt schön sauber hoch.
    Sobald ich das jedoch als if-Abfrage in meine While-Schleife (kopfgesteuert) einbinde, zählt da nichts mehr. Irgendwie muss es in While-Schleifen mit Abfragen geben. Auch n kurzes Delay hat keine Abhilfe geschafft...

    Code:
    void turn()
    {
        if (karusellInAction == 0)
            {
            karusellInAction = 1;
            karusellPosition = 0;
            digitalWrite(relayVoltagePin, HIGH);
            digitalWrite(motorPin, HIGH);
            delay(leadTime);                        // adjust for each model
            relay1 = 0;
            relay2 = 0;
            relay4 = 0;
            relay8 = 0;
    
    
            while (analogRead(relayStop) <= 20)                         // A0 default: 40 active: 340
            {
                if (analogRead(relayeins) >= 50) { relay1 = 1; }        // A1 default: 42 active: 342
                if (analogRead(relayzwei) >= 50) { relay2 = 1; }        // A2 default: 41 active: 341
                if (analogRead(relayvier) >= 50) { relay4 = 1; }        // A3 default: 40 active: 340
                if (analogRead(relayacht) >= 50) { relay8 = 1; }        // A4 default: 41 active: 340/341
            }
    
            writePosition();
            delay(overTravelTimings[(karusellPosition-1)]);                  // adjust for each model
            digitalWrite(motorPin, LOW);
            digitalWrite(relayVoltagePin, LOW);
            previousTurn = lastTurn;
            buttonTime = millis();
            if (jumpedOver <= 1)
            {
                jumpedOver++;
            }
            lastTurn = millis();                    // moved before stop-sensing
            karusellInAction = 0;
            //lcd.clear();
            }
    }
    Wenn die While-Schleife zu lange läuft, muss ich den MotorPin wieder auf low setzen. Aber irgendwie komm ich da nicht raus.

Ähnliche Themen

  1. Phasenverschiebung bestimmen
    Von Maverick89 im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 22.10.2010, 14:52
  2. Postion bestimmen
    Von horsty im Forum Sensoren / Sensorik
    Antworten: 5
    Letzter Beitrag: 14.11.2009, 20:24
  3. Drehmoment bestimmen, jedoch nicht vom Motor...
    Von DBDüsentrieb im Forum Mechanik
    Antworten: 8
    Letzter Beitrag: 23.07.2008, 22:45
  4. Rauschamplitude bestimmen
    Von Felix G im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 20.01.2008, 22:20
  5. Umdrehungszahl bestimmen
    Von Robotik84 im Forum Asuro
    Antworten: 18
    Letzter Beitrag: 19.11.2006, 09:27

Berechtigungen

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

Labornetzteil AliExpress