Elektronický regulátor otáček minisoustruhu

ostatní motory, vřetena, regulace, snímaní otáček a jiné
Odpovědět
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22400
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

6. 1. 2017, 12:14

Bf co jsem mel, pokud vim zadny snimac nemela

Chyba v mych vypoctech tech zasahu je 2x vic protoze jsou dve pulvlny v periode

To uz sakra musi stacit
62 zasahu v kazde otacce
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22400
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

6. 1. 2017, 12:15

Jj uz jsem si vsimnul sve chyby
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
Zdenek Valter
Příspěvky: 5201
Registrován: 9. 1. 2009, 5:16
Bydliště: Ústí n. L.

6. 1. 2017, 12:20

turbyho píše:
Zdenek Valter píše:.......
Jo přesně tak jsem to myslel.
V praxi totiz 100 regulacnich zasahu za 1s u techto motoru staci.

A pokud mi neverite, zajdete treba namatkou do koupelny/pradelny a zkuste si pustit pracku (pokud ma jeste univerzalni motor). To je priklad regulace univerzalniho motoru s PID regulaci triakem. Cuka vam snad buben pri prani? :D
Jenže při praní jsou ty otáčky dané, takže se to pro tento stav dá poměrně snadno nastavit aby necukalo. ;-)

Nicméně zanechme planého povídání - Triaková regulace může být dostatečná, ale chce to vyzkoušet.
Pokud se ukáže, že ne - dá se tím přeci řídit i PWM ne ;-)
Hobbík - obráběč i 3D tiskař začátečník - strojní park je konečně instalován
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 12:26

Zdenek Valter píše: No to je právě o tom, že původně tohle vlákno vzniklo k fázové regulaci čínských soustruhů s DC motorem s permanentními magnety.
Desky mají spolehlivost jakou mají s principem měření otáček z komutace.
Možnou alternativou se nabízelo i použití pračkového motoru, kterých je hodně a které jsou dostupné za minimální cenu.
Já osobně nejsem příznivec náhrady za pračkový motor v soustruhu, protože při jeho odpojení od napájení je principieiní problém ho zabrzdit (což u původního motoru řešilo relé přepnutím kotvy na brzdný odpor).

Jako vlastník těhle strojků bych ji rád nahradil lepší alternativou - například výměnou té původní za PWM.
Proto jsme rád za každou snahu která ukazuje nějakou cestu a má výsledky.
Diskutuje se tu v posledni dobe ale o univerzalnim motoru z pracky coz je primarne AC i kdyz jde napajet i DC.

PWM regulace DC motoru s PID je ale v principu podobny problem. A generovat PWM umi kazdy Atmel v libovolnem Arduino z principu neb ma prislusne hw PWM. Tudiz privedes na nejaky pin snimac otacek a nejsnadneji pomoci vyse zminene PID knihovny budes generovat PWM do nejakeho vhodneho driveru (MOSFET, IGBT). Pak staci pridat par tlacitek a display aby jsi mohl nastavit pozadovane otacky.

Ono totiz z toho textu neni uplne jasne co presne chces a co jsi a nejsi schopen vymyslet a vyrobit. Tedy jestli to umis postavit a jen nevis jak nebo jestli to chces cele koupit.
Naposledy upravil(a) turbyho dne 6. 1. 2017, 12:38, celkem upraveno 1 x.
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 12:30

Zdenek Valter píše:
turbyho píše:
Zdenek Valter píše:.......
Jo přesně tak jsem to myslel.
V praxi totiz 100 regulacnich zasahu za 1s u techto motoru staci.

A pokud mi neverite, zajdete treba namatkou do koupelny/pradelny a zkuste si pustit pracku (pokud ma jeste univerzalni motor). To je priklad regulace univerzalniho motoru s PID regulaci triakem. Cuka vam snad buben pri prani? :D
Jenže při praní jsou ty otáčky dané, takže se to pro tento stav dá poměrně snadno nastavit aby necukalo. ;-)

Nicméně zanechme planého povídání - Triaková regulace může být dostatečná, ale chce to vyzkoušet.
Pokud se ukáže, že ne - dá se tím přeci řídit i PWM ne ;-)
Triakovou regulaci to nejde. Ta funguje pouze na AC.
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 12:31

Zdenek Valter píše: Jenže při praní jsou ty otáčky dané, takže se to pro tento stav dá poměrně snadno nastavit aby necukalo. ;-)
tady je uz tezke cokoli dodat... :roll:
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 12:37

robokop píše:Bf co jsem mel, pokud vim zadny snimac nemela
Mela to tak BF20 Vario. Ale je to sumak, nebylo to zase rizene triakem pokud vim. Zminil jsem to jen kvuli tomu snimaci otacek. :D
Uživatelský avatar
Zdenek Valter
Příspěvky: 5201
Registrován: 9. 1. 2009, 5:16
Bydliště: Ústí n. L.

6. 1. 2017, 12:53

turbyho píše:
Zdenek Valter píše: ...........
Jako vlastník těhle strojků bych ji rád nahradil lepší alternativou - například výměnou té původní za PWM.
Proto jsme rád za každou snahu která ukazuje nějakou cestu a má výsledky.
Diskutuje se tu v posledni dobe ale o univerzalnim motoru z pracky coz je primarne AC i kdyz jde napajet i DC.

PWM regulace DC motoru s PID je ale v principu podobny problem. A generovat PWM umi kazdy Atmel z principu neb ma prislusne hw PWM. Tudiz privedes na nejaky pin snimac otacek a nejsnadneji pomoci vyse zminene PID knihovny budes generovat PWM do nejakeho vhodneho driveru (MOSFET, IGBT). Pak staci pridat par tlacitek a display aby jsi mohl nastavit pozadovane otacky.

Ono totiz z toho textu neni uplne jasne co presne chces a co jsi a nejsi schopen vymyslet a vyrobit. Tedy jestli to umis postavit a jen nevis jak nebo jestli to chces cele koupit.
Ale já se ale mohu domnívat, že je ale o tom je pávě DF že se občas domněnky diskutujících nepotkají. ;-)

Zkusím ještě jednou a lépe
- v mini soustruzích je v drtivé většině fázová regulace s řízeným usměrňovačem, které vždy řídí DC motor s cizím buzením - ne tedy obecný motor.
( v nových strojích se objevuje i regulace PWM)

Rád bych aby vznikla poměrně levná náhrada vlastního regulátoru nejlépe s PWM ;-) s cenou cca do 1000 Kč, který nahradí původní dejme tomu i doděláním snímače otáček*.
Bylo by totiž fajn zachovat i původní zbylé zapojení - stop tlačítko, relé které spíná brzdu atd.
* ještě k těm otáčkám - na původní motory může být trochu komplikace přidat snímání otáček - zde je otázka zda v tom případě nesnímat přímo otáčky vřetene.

No a co se týče toho vymýšlení - nejsem schopen to vymyslet - nemám na to kapacity a ani zkušenosti. Pokud někdo dá návod asi bych byl schopen to postavit, ale nejraději bych si to koupil buď jako stavebnici (zde budu mít lepší pocit, že jsem si něco postavil ;-), nebo jako hotový regulátor, který si jen v mašině vyměním.
Hobbík - obráběč i 3D tiskař začátečník - strojní park je konečně instalován
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 1:05

Zdenek Valter píše: Zkusím ještě jednou a lépe
- v mini soustruzích je v drtivé většině fázová regulace s řízeným usměrňovačem, které vždy řídí DC motor s cizím buzením - ne tedy obecný motor.
( v nových strojích se objevuje i regulace PWM)

Rád bych aby vznikla poměrně levná náhrada vlastního regulátoru nejlépe s PWM ;-) s cenou cca do 1000 Kč, který nahradí původní dejme tomu i doděláním snímače otáček*.
Bylo by totiž fajn zachovat i původní zbylé zapojení - stop tlačítko, relé které spíná brzdu atd.
* ještě k těm otáčkám - na původní motory může být trochu komplikace přidat snímání otáček - zde je otázka zda v tom případě nesnímat přímo otáčky vřetene.

No a co se týče toho vymýšlení - nejsem schopen to vymyslet - nemám na to kapacity a ani zkušenosti. Pokud někdo dá návod asi bych byl schopen to postavit, ale nejraději bych si to koupil buď jako stavebnici (zde budu mít lepší pocit, že jsem si něco postavil ;-), nebo jako hotový regulátor, který si jen v mašině vyměním.
Mas schema zapojeni?

Snimani otacek za prevodovkou je prave ten problem ktery jsem zminoval u BF20 Vario. Znepresni to regulaci jelikoz budes u prevodu do pomala snimat mene pulzu na otacku motoru. Optimalni je pro dobrou regulaci snimat otacky na motoru a cim vice "pulzu" na otacku tim lepe (samozrejme s rozumem). U soustruhu by mohlo jit navrtat remenici motoru, osadit male magnety (treba 2mm) a snimat indukcnim senzorem. 8-16 magnetu by mohlo stacit. Dobre snimani otacek je pro dobre rizeni skoro to nejdulezitejsi.

Dobre by bylo udelat podruzne mereni otacek vretene pro snadnejsi nastaveni pozadovanych otacek. Zejmena pokud tam je nejaka prevodovka.
Naposledy upravil(a) turbyho dne 6. 1. 2017, 1:17, celkem upraveno 1 x.
Uživatelský avatar
Zdenek Valter
Příspěvky: 5201
Registrován: 9. 1. 2009, 5:16
Bydliště: Ústí n. L.

6. 1. 2017, 1:13

turbyho píše: Mas schema zapojeni?
Jsou tady ve vláknu ;-) O.K. sám je pohledám.
turbyho píše:Snimani otacek za prevodovkou je prave ten problem ktery jsem zminoval u BF20 Vario. Znepresni to regulaci jelikoz budes u prevodu do pomala snimat mene pulzu na otacku motoru. Optimalni je pro dobrou regulaci snimat otacky na motoru a cim vice "pulzu" na otacku tim lepe (samozrejme s rozumem). U soustruhu by mohlo jit navrtat remenici motoru, osadit male magnety a snimat indukcnim senzorem. 8-16 magnetu by mohlo stacit. Dobre snimani otacek je pro dobre rizeni skoro to nejdulezitejsi.

Dobre by bylo udelat taky ciste informativni podruzne mereni otacek vretene.
No já třeba na Asistu mám clonku s osmi otvory pro snímání otáček vřetene pro otáčkoměr a nebyl by určitě problém ji udělat s více otvory - třeba 16.
Co se týče motoru - vidím asi nejjednodušší cestu dát clonku na řemenici, ale nejsem si teď jist, jestli je tam místo.
Hobbík - obráběč i 3D tiskař začátečník - strojní park je konečně instalován
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 1:20

Jestli je tam remenice jednodussi je ji sundat, dat na delicku a navrtat par der a do nich vlepit magnety.

Plechove clonky me vzdy mirne desi kdyz se zacnou tocit :D
Uživatelský avatar
Zdenek Valter
Příspěvky: 5201
Registrován: 9. 1. 2009, 5:16
Bydliště: Ústí n. L.

6. 1. 2017, 1:27

turbyho píše:Jestli je tam remenice jednodussi je ji sundat, dat na delicku a navrtat par der a do nich vlepit magnety.
No toho se děsím já, jak budu do 12 mm těla řemenice vrtat díry - BTW. jakě jsou nejmenší magnety?
turbyho píše:Plechove clonky me vzdy mirne desi kdyz se zacnou tocit :D
Podle mne jsou i jednodušší na výrobu - a mohou přesahovat i průměr řenenice. ;-)
Hobbík - obráběč i 3D tiskař začátečník - strojní park je konečně instalován
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 1:37

ja myslim ze i 1mm se da, treba tady

https://www.unimagnet.cz/53-kotouce-male

jinak je to sumak jak se to udela mechanicky
Naposledy upravil(a) turbyho dne 6. 1. 2017, 1:38, celkem upraveno 1 x.
atlan
Příspěvky: 3347
Registrován: 7. 2. 2011, 9:12

6. 1. 2017, 1:38

enkoder s 100imp do 6000ot/min stoji do 20E, otazka je ci to uz nebude vela tolko impulzov

Tak ak sa niekto nudi moze sa stym hrat dalej

Kód: Vybrat vše

#include <PID_v1.h>


   double motorRPM=0;
   double motorPWR=0;
   double   setMotorRPMtmp;
  // double consKp;
  // double consKi;
  // double consKd;

    volatile double consKp = 0.025, consKi = 0.025, consKd = 0.00025; // doladit dle dynamickych vlastnosti stroje
    PID motorPID(&motorRPM, &motorPWR, &setMotorRPMtmp, consKp, consKi, consKd, DIRECT);


    void setup()
    {
         attachInterrupt(digitalPinToInterrupt(motorFREQPin), motorFREQ, RISING); // FALLING RISING
         attachInterrupt(digitalPinToInterrupt(zerroCrossingPin), zerroCrossing, FALLING); // FALLING RISING
         motorPID.SetMode(AUTOMATIC);
         motorPID.SetOutputLimits(0, 255);
         motorPID.SetSampleTime(100); // 200ms default
         Timer1.initialize(motorPeriodTimer);
       
     

    }

    void loop() {

            motorRPM = 2000; // dle motoru - 0-24000

       // obsluha motoru

       noInterrupts();
        motorPID.SetTunings(consKp, consKi, consKd);
       motorPID.Compute();
         interrupts();
    }

    void motorFREQ() {

      noInterrupts();

      motorLastFREQtime = micros();
      dTime = motorLastFREQtime - motorTime;
      motorTime = motorTime + dTime;
      motorRPMtmp = ((1000000 / dTime) * 60) / 8;

      interrupts();
    }

    void zerroCrossing() {

      noInterrupts();

      if (motorPWR == 0) {
        digitalWrite(motorACPin, LOW);
        motorState = B00000000;
      }
      else if (motorPWR == 255) {
        digitalWrite(motorACPin, HIGH);
        motorState = B00000000;
      } else {
        int pwr = ( 8000 - ((8000 / 255) * motorPWR)  );
        Timer1.attachInterrupt(motorTickPWR, pwr);
        motorState = B00000001;
      }

      interrupts();
    }

    void motorTickPWR ()
    {
      noInterrupts();

      Timer1.stop();

      if (motorState == B00000001) {
        digitalWrite(motorACPin, HIGH);
        int i = 100;
        while (i--) {
          __asm__("nop\n\t");
        }
        digitalWrite(motorACPin, LOW);
      }
      interrupts();
    }
turbyho
Příspěvky: 245
Registrován: 14. 3. 2014, 10:03

6. 1. 2017, 1:41

atlan píše:Tak ak sa niekto nudi moze sa stym hrat dalej

Kód: Vybrat vše

#include <PID_v1.h>


   double motorRPM=0;
   double motorPWR=0;
   double   setMotorRPMtmp;
  // double consKp;
  // double consKi;
  // double consKd;

    volatile double consKp = 0.025, consKi = 0.025, consKd = 0.00025; // doladit dle dynamickych vlastnosti stroje
    PID motorPID(&motorRPM, &motorPWR, &setMotorRPMtmp, consKp, consKi, consKd, DIRECT);


    void setup()
    {
         attachInterrupt(digitalPinToInterrupt(motorFREQPin), motorFREQ, RISING); // FALLING RISING
         attachInterrupt(digitalPinToInterrupt(zerroCrossingPin), zerroCrossing, FALLING); // FALLING RISING
         motorPID.SetMode(AUTOMATIC);
         motorPID.SetOutputLimits(0, 255);
         motorPID.SetSampleTime(100); // 200ms default
         Timer1.initialize(motorPeriodTimer);
       
     

    }

    void loop() {

            motorRPM = 2000; // dle motoru - 0-24000

       // obsluha motoru

       noInterrupts();
        motorPID.SetTunings(consKp, consKi, consKd);
       motorPID.Compute();
         interrupts();
    }

    void motorFREQ() {

      noInterrupts();

      motorLastFREQtime = micros();
      dTime = motorLastFREQtime - motorTime;
      motorTime = motorTime + dTime;
      motorRPMtmp = ((1000000 / dTime) * 60) / 8;

      interrupts();
    }

    void zerroCrossing() {

      noInterrupts();

      if (motorPWR == 0) {
        digitalWrite(motorACPin, LOW);
        motorState = B00000000;
      }
      else if (motorPWR == 255) {
        digitalWrite(motorACPin, HIGH);
        motorState = B00000000;
      } else {
        int pwr = ( 8000 - ((8000 / 255) * motorPWR)  );
        Timer1.attachInterrupt(motorTickPWR, pwr);
        motorState = B00000001;
      }

      interrupts();
    }

    void motorTickPWR ()
    {
      noInterrupts();

      Timer1.stop();

      if (motorState == B00000001) {
        digitalWrite(motorACPin, HIGH);
        int i = 100;
        while (i--) {
          __asm__("nop\n\t");
        }
        digitalWrite(motorACPin, LOW);
      }
      interrupts();
    }
A chodi? Jeste je treba vetsinou doladit konstanty PID a upravit pocet pulzu na otacku ze snimace. Tohle je pro 8 pulzu na otacku. Takze treba zmenou 8 za 16 nastavis 16 pulzu na otacku ze snimace.

motorRPMtmp = ((1000000 / dTime) * 60) / 8;

Prackovy motor toci az 24000ot/min., tak bacha s tema snimacema. Ten Atmel taky ma nejakou limitni rychlost pri danem krystalu. Je to treba spocitat.
Odpovědět

Zpět na „Ostatní elektromotory“