Elektronický regulátor otáček minisoustruhu
- robokop
- Site Admin
- Příspěvky: 22400
- Registrován: 10. 7. 2006, 12:12
- Bydliště: Praha
- Kontaktovat uživatele:
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
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)
- Zdenek Valter
- Příspěvky: 5201
- Registrován: 9. 1. 2009, 5:16
- Bydliště: Ústí n. L.
Jenže při praní jsou ty otáčky dané, takže se to pro tento stav dá poměrně snadno nastavit aby necukalo.turbyho píše:V praxi totiz 100 regulacnich zasahu za 1s u techto motoru staci.Zdenek Valter píše:.......
Jo přesně tak jsem to myslel.
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?
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
Diskutuje se tu v posledni dobe ale o univerzalnim motoru z pracky coz je primarne AC i kdyz jde napajet i DC.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.
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.
Triakovou regulaci to nejde. Ta funguje pouze na AC.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.turbyho píše:V praxi totiz 100 regulacnich zasahu za 1s u techto motoru staci.Zdenek Valter píše:.......
Jo přesně tak jsem to myslel.
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?
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
- Zdenek Valter
- Příspěvky: 5201
- Registrován: 9. 1. 2009, 5:16
- Bydliště: Ústí n. L.
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í.turbyho píše:Diskutuje se tu v posledni dobe ale o univerzalnim motoru z pracky coz je primarne AC i kdyz jde napajet i DC.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.
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.
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
Mas schema zapojeni?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.
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.
- Zdenek Valter
- Příspěvky: 5201
- Registrován: 9. 1. 2009, 5:16
- Bydliště: Ústí n. L.
Jsou tady ve vláknu O.K. sám je pohledám.turbyho píše: Mas schema zapojeni?
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.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.
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
- Zdenek Valter
- Příspěvky: 5201
- Registrován: 9. 1. 2009, 5:16
- Bydliště: Ústí n. L.
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:Jestli je tam remenice jednodussi je ji sundat, dat na delicku a navrtat par der a do nich vlepit magnety.
Podle mne jsou i jednodušší na výrobu - a mohou přesahovat i průměr řenenice.turbyho píše:Plechove clonky me vzdy mirne desi kdyz se zacnou tocit
Hobbík - obráběč i 3D tiskař začátečník - strojní park je konečně instalován
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
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.
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
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.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(); }
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.