Náhrada výměnných kol posuvu za krokový motor s elektronikou

Odpovědět
lubbez
Příspěvky: 3154
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

30. 10. 2020, 12:33

Přesně takhle to mám udělané já. Samozřejmě je tam zaokrouhlování a to je potřeba dopočítávat, ale to už je vcelku jednoduché. A až to bude všechno hotové zjistíš, že to není tak úplně pravda. To je právě ta chyba, vzniklá režijním časem pro výpočet. Výhoda je, že je prakticky lineární pro všechny použitelné rychlosti vřetena.
atlan
Příspěvky: 3345
Registrován: 7. 2. 2011, 9:12

30. 10. 2020, 3:56

Encoder s vystupom Z cisto teoreticky staci 1000imp(ja mam 2000imp}
Tlatoani
Příspěvky: 75
Registrován: 8. 8. 2020, 8:42

30. 10. 2020, 8:00

Včera večer jsem objednal 1000 pulsu AB, ale není tam Z. K čemu to Z potřebuji?

Napadá mě, je to informace kterou mohu použít na:
1) opravu chyby při výpadku pulsu, vždy po celém otočení upravím počet
2) rychlý načítání, místo 1000 pulsů jeden
3) pokud je převod mezi vřetenem a enkoderem celočíselný tak k odečtu absolutního úhlového natočení vřetena (nejlépe při převodu 1:1)

Kde vzniká chyba na režijní čas pro výpočet? Měl jsem za to, že veškeré výpočty se provedou před zahájením posuvu a pak se jen hlídá přesné splnění spočítaného. Zobrazování, přerušení práce - reakce na vnější podnět, watchdog ... by mělo jít omezit nebo přesunout tak aby to nebránilo včasnému provedení podle spočítaného.
lubbez
Příspěvky: 3154
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

30. 10. 2020, 9:17

Od samého začátku vycházíme z toho, že budeme řezat závity. Pokud to má být pouze motorový posuv suportu, tak stačí libovolné duino a potenciometr a v reálném čase si budeš měnit otáčky krokáče podle potřeby. Dá se to doplnit stavitelnejma koncákama a už tahle jednoduchá fíčura neuvěřitelně zkvalitní práci, tím že máš možnost nastavit optimální řezné podmínky.

Pokud ale chceš využít elektroniku i stroj na plné kule, je tu řezání závitů a to je docela výzva. Tak jak ty to popisuješ, jsem uvažoval taky. Prakticky jenom změříš otáčky a podle toho nastavíš elektronicky posuv. Chybí ti ale informace, kdy má nůž najet do materiálu. Přesněji poprvé je to jedno, ale další opakování už se nemáš čeho chytit. Počítat kroky je nesmysl, to nestihneš. Další velký problém je, že elektronika nepozná, že se hnuly otáčky (nebo i zastavilo vřeteno) a zničíš obrobek a klidně i nůž. Není asi problém ten synchro impulz přibastlit nějakým snímačem, ovšem je to práce navíc. Tohle jsem vyvíjel a posléze rozchodil cca půl roku a když jsem vyhodnotil tu spoustu kompromisů, začal jsem přemýšlet nad něčím dokonalejším. Vlastně jediný publikovaný životaschopný projekt z Ruska tady aplikoval atlan. Já jsem se sice do zdrojáků koukal taky, ale nějak mě to neoslovilo a nakonec jsem se pustil svou vlastní cestou.

V každém případě ale potřebuješ minimálně dvě HW přerušení, jedno na počítání impulzů z IRC a druhé právě na zpracování toho Z (já říkám synchro) impulzu. Takže na příklad při 600 ot/min bude každých 100uS obsluhováno přerušení od IRC. To už je časová režie jako hrom. Nakonec zjistíš, že je jednodušší celé krokování předat obsluze přerušení. Ve výsledku si nastavíš požadované parametry, tady není žádný spěch a pak synchro pulzem povolíš obsluhu přerušení a už do toho nezasahuješ. Po odkrokování nadefinované vzdálenosti se přerušení zakáže a ty můžeš udělat potřebné úkony (třeba najet suportem opět na začátek práce) a opšt se čeká na synchro. Takhhle to funguje mě, ale to neznamená, že jediný mám patent na rozum. Ten rusák to má asi trochu jinak. V každém případě je off-line cesta tím špatný směrem, byť to může fungovat.
Tlatoani
Příspěvky: 75
Registrován: 8. 8. 2020, 8:42

1. 11. 2020, 5:51

@lubbez: Pokud by to neumělo řezat závity, tak to pro mě ztrácí kouzlo a nebudu to stavět.
Tvé informace jsou pro mě strašně cenné, ale pár věcem nerozumím.
Píšeš „Počítat kroky je nesmysl, to nestihneš.“ – jsou to kroky krokáče nebo pulsy od vřetene? Předpokládám že pulsy od vřetene a nestíhá se to počítat v době mimo řezání nožem. Třeba v době kdy se řezání připravuje. V době řezání jde veškerý výkon procesoru na řízení řezání a to znamená hlavně na počítání pulsů.
Vycházím z toho, že pulsy od vřetene jednoznačné určují natočení vřetene a že nedochází ke ztrátě či zdvojení pulzů. Synchro puls Z by měl jít získat čítačem, pokud by to nestíhal procesor tak externí HW čítač, něco jako je 74161 nebo 74163 či jim podobný obvod.

Kroky krokáče odpovídají pulsům od vřeteně, navíc je sám generuji a tak bych je měl být schopen počítat. Zde opět vycházím z toho, že všechny kroky se vykonají a mam ošetřený první krok aby se vykonal.
Jak zajištuješ, že se první krok vykoná (při 2 vinutích krokáče je 75% šance že k provedení prvního kroku nedojde)? Napadá mě, že při inicializaci řízení (zapnutí napájení) dojde k počátečnímu nastavení krokáče tak, aby pak došlo k vykonání požadovaného kroku.

Off line cesta je rozhodně cesta do pekel.

Lze někde vidět tvůj program?
lubbez
Příspěvky: 3154
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

1. 11. 2020, 10:32

Tohle je počáteční rozvaha
stoupání šroubu je 3mm 2000 IRC puls/ot
na otočku je 400 kroků kroky motoru
jeden krok motoru je tedy 0,0075mm
počet kroků počet přerušení
stoupání 0,2 mm 26,66666667 75
stoupání 0,25 mm 33,33333333 60
stoupání 0,35 mm 46,66666667 42,85714286
stoupání 0,4 mm 53,33333333 37,5
stoupání 0,45 mm 60 33,33333333
stoupání 0,5 mm 66,66666667 30
stoupání 0,6 mm 80 25
stoupání 0,7 mm 93,33333333 21,42857143
stoupání 0,8 mm 106,6666667 18,75
stoupání 1 mm 133,3333333 15
stoupání 1,25 mm 166,6666667 12
stoupání 1,5 mm 200 10
stoupání 1,75 mm 233,3333333 8,571428571

tady jsou fragmenty
/******************************************************************
Created with PROGRAMINO IDE for Arduino - 15.07.2018 14:40:52
Project :Řízení suportu soustruhu Mn-80
Verze/datum : 2.04 2020
Author : Lubomír Bezděk - lubbez
Description :
******************************************************************/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include "PCF8574.h"


#define koncak PB0 // koncový spínač 8
#define dirDriver PD5 // směr otáčení 5
#define stpDriver PD4 // výstup STEPů krokáče 4
#define enableDriver PD6 // vypnutí driveru 6
#define krokDriver PD7 // změna krokování driveru 7
#define potPin PC3 // potenciometr pro rychlost A3
#define pipak PB1 // pípák 9
#define smerOtaceni A6 // pouze ADC input A6
#define vlevo LOW //nastavení DIR motoru
#define vpravo HIGH
#define stDel 300 //rychlost při nastavování

#define snchr PD3 // synchro impulz 3
#define irc PD2 //digitalPinToInterrupt(pin)


a tady je to nejdůležitější samotné řezání závitů v přerušení
//Řezání závitu v přerušení ------------------------------------

void Go()
{
if (goStart==true) //jedna délka závitu
{
if(krokyPom>1) //ještě jsou nějaké kroky z délky závitu?
{
//tady přepočítáváme stoupání závitu v milimetrech
//na kroky posuvového šroubu, kdy 3mm je 400 kroků
if(stoupani>0) //pokud nezbyde jen desetinné číslo
{
if(zlomPom<zlom) //řízení STEP signálu
{
digitalWrite(stpDriver,HIGH); // první cca půlka low
}
else
{
digitalWrite(stpDriver,LOW); // a zbytek HIGH
}

zlomPom++;
stoupani--;
}
else
{
//tady už jenom generujeme požadovanou délku závitu
krokyPom--;
zlomPom=0;
stoupani=stoupani+preruseni_pocet[poradi]; //přičítáme i za čárkou

}
}
else
{
goStart=false; //vypnutá smyčka
goAction=false;
}
testPruchodu++;
}
}
//Synchronizační rutina------------------------------------------
void Synchro()
{
if(synStart==true) //tlačítko řezání závitu
{

if(pom=2) //první průchod pom=0
{ //druhý pom=1 !!!!
goStart=true; //začalo pracovat přerušení 0
pom=0; //vypnuli jsme průchod smyčkou
synStart=false; //a reset počítadla
}
else
{
pom++;
}

}

Ono je to trochu chaotické, ale celý program má bezmála 1000 řádků. V podstatě ty dvě poslední rutiny jsou klíčové. Jak k pochopení tak potom v samotné realizaci. Základem je ten excel na začátku, docela dost dlouho mi trvalo, než jsem pochopil co vlastně chci počítat. Na jedné straně mám délku generovanou jedním krokem motoru a na druhé straně posuv nože na jednu otáčku vřetena. Mantinely použití mi tady dělá reálná rychlost otáčení krokáče a otáčky vřetena. Samozřejmě synchro můžeš generovat třeba počítadlem, nebo čímkoliv jiným, ale mě přišlo nejjednodušší připlatit si 40 korun a to Z-ko tam prostě mít přímo v kabelu. (i já jsem si koupil nejdřív IRC bez Z výstupu a dělil to třema 7490) Samozřejmě kompletní SW publikovat nebudu, ale pokud si uděláš základní analýzu tak ti rád poradím, protože těch drobností kolem je spousta a člověk si je uvědomí až když mu chybí.
Tlatoani
Příspěvky: 75
Registrován: 8. 8. 2020, 8:42

2. 11. 2020, 7:20

@lubbez, paráda. Tvůj styl se mi líbí a snažím se to dělat podobně. Hodně komentářů. Já jsem sklouznul v směs češtiny a cestiny a angličtiny či cizojazyčných poznámek. Ty to máš pěkně učesaný. Kód si projdu. Děkuji.

Ano, je tam spoustu maličkostí které ve výsledku mohou být hodně nepříjemné. Pro mě ten Z signál by byl za víc než 40Kč a určitě je to příjemná informace s podstatným využitím. Ano ty 7490/7493 se k tomu nabízí. Enkoder přijde z Alliexpresu a už lituji, že jsem objednal 1000 pulsů a ne 1024 pulsu na otáčku. Přetečení 10bit binárního čítače by dalo elegantně Z, ted asi BCD jak píšeš. Tím že nevím, zda dokáži a zda budu chtít dodržet převod mezi vřetenem a enkoderem 1:1, tak tuto chybičku zatím neřeším.
atlan
Příspěvky: 3345
Registrován: 7. 2. 2011, 9:12

2. 11. 2020, 7:30

Pomer nechaj 1:1, inak si tam zavedies dalsiu chybu. Neviem ale encodery aj z Z stoja vsetky rovnako okolo 22E

A pozor lebo generovat jeden impulz pre krokaz bude malo, okrem hroznneho zvuku, ho neroztocis. Precitaj si preco drivery umoznuju budenie krokaca 1/4 alebo 1/8 alebo 1/32 lenze potom ti namiesto jedneho imoulzu treba az 8 pri nastaveni drivera na 1/8.

Lenze ked zastavis vreteno, uz stracas informaciu o Z(res mozes stratit kroky pri pootacani a merani) , a ked vypnes tak duplom.
Rusky system bol bez Z, a to sa mi nepacilo.
els.png
Prakticky tam skoro nic netreba,PUllup odpory vies napajkovat zospodu plosaku(rozsirovacia doska s svorkovnicami) arduino nano, zvysok ide po i2c na predny panel kde je klavesnica displej a tlacidla.
Tlatoani
Příspěvky: 75
Registrován: 8. 8. 2020, 8:42

2. 11. 2020, 8:21

Koukám, že používáš knihovnu pro I2C (PCF8574), tak předpokládám, že to máš rozdělené na HW bloky.
1) Jaký bloky tam máš které komunikují přes I2C?
Odhaduji, že minimálně zobrazování je asi na I2C pověšený.
–tvůj edit zodpověděl

2) Přes jaký modul napájíš a řídíš krokový motor?

To Z jsem oželel pod vlivem ruské verze. Na té se mi líbí umístění šablony enkoderu přímo na vřeteno.
3) Neuvažoval jsi jít cestou enkoderu z tiskárny jak to používají rusové a proč jsi to zavrhnul?

4) Koukám, že kombinuješ Atmel a PIC procesory, má to nějaký důvod?
atlan
Příspěvky: 3345
Registrován: 7. 2. 2011, 9:12

2. 11. 2020, 9:17

Lebo to picko mam doma, je prakticky nevyuzitelne v dnesnej dobe, a klavesnica bola montovana dodatocne, najprv tam bol len joystick ako maju rusy, preto to nestandartne pripojenie uP a klavesnice na PCF

Potrebujes velky kotucik aby ti vosiel na vreteno, navyse to tam upevnit a zakrytovat, nema Z. (enkoder vies dat mimo, je zakrytovany ma Z, proste jednoducha vec-kupit namontovat, seriovy diel)

Ozaj zabudol som driver mam nejaky cinsky napjany 70V, dnes by som siel do nemeckeho alebo cinskeho nema23 serva, neviem ci cinske ide nastavovat.
Tlatoani
Příspěvky: 75
Registrován: 8. 8. 2020, 8:42

3. 11. 2020, 9:52

atlan píše: 2. 11. 2020, 9:17.... dnes by som siel do nemeckeho alebo cinskeho nema23 serva, ..
Měl jsem za to, že používáš ruskou verzi a jsi kompatibilní s jejich rozvojem a své zmeny držíš v mezích možné budoucí úpravy. Pokud se ale podívám na tvé el. HW řešení, tak už to máš rozdělené do bloků o čem na ruském foru proběhla jen úvaha.
1) Jaký přínos po technické stránce očekáváš od nema23 serva?
2) Neuvažuješ o zavedení příčného posuvu a nejaké formě jak nahrát data a přiblížit se CNC?

Jak vidím, tak znáš jak PIC tak Atmel procesory. Chápu že Atmel je ted asi dostupnější a na Ardurinu je spoustu knihoven, ale
3) kde vidíš větší vhodnost Atmelu pro vývoj a řízení soustruhu?
lubbez
Příspěvky: 3154
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

3. 11. 2020, 11:05

Takové závěrečné zhodnocení. Krokový motor je fajn, ale jeho rychlost je relativně nízká, ale zrovna tento "problém" není v podstatě problém, protože se netočí zas tak moc rychle. Na druhou stranu je fakt, že klasické servo s driverem 180W je prakticky stejně drahé jako 2,2Nm closed loop. Pak je tu ještě velmi lákavá varianta klasického 200W OMRON serva na 230V, které jeden místní kolega prodává za pěkné peníze. Já osobně jsem se servy nikdy nedělal a když si objektivně prohlédnu diskuzi o servech třeba za posledních 5 let, není to zas až taková sranda. Když si vezmu, že neumím anglicky, tak je to problém.
Mnohem větší problém ale je procesor. Ten to vcelku spolehlivě nestíhá. Mám představu, že bych to zkusil přepsat na STM pro arduino. Přeci jenom 16MHz a 75MHz, je už sám o sobě rozdíl, ale další nemalá výhoda by měla být v šířce datové sběrnice. Jako třetí varianta je klon x51 s instrukcí na jeden takt na kmitočtu 24MHz.
atlan
Příspěvky: 3345
Registrován: 7. 2. 2011, 9:12

3. 11. 2020, 11:51

Nema zmysel robit z els - cnc, nato mas hotove linuxove riesenie, len propojit drivre a krokaze a vysustrizi ti to aj strelca na sach.

Nema32 servo stoji 129E, za cisty motor nema 33 das 30E a slusny driver min 50E.

Od serva ocakavam ze sa rozbehne z 0 na pozadovanenotacky podla impulzov, narozdiel od krokaza ktory potrebuje rampu. Tym padom umozni rezat zavity pri vysich otackach vretena. Ide hlavne o stupanie nad 1,5mm.

Atmel,to je jedno ale prrdavaju to na peknych dostickach v Číne, a. Ma. Jednoduchy datasheet.
bronek999
Příspěvky: 521
Registrován: 6. 3. 2014, 6:50

3. 11. 2020, 4:24

Ak dovolite, zapojim sa do diskusie. Ak pouzivam AB snimac na vretene a obsluha prerusenia z tohto snimaca bezi cely cas od spustenia mcu tak ziadny Z pulz nepotrebujem. V kazdej chvili poznam absolutnu poziciu vretena.

Na stolovom sustruhu som tiez zacal riesit elektronicky posuv. Davno, mozno 4 roky dozadu. Nemal som na to vela casu, tak som tam spravil len posuvy, zavity to zatial nevie. Mam taku univerzalnu DPS so Stm32, radicom tft dispeja a dotykovym ovladanim. Na tie posuvy som tam dorobil rotacny enkoder, v podstate jedina vec co odvtedy pouzivam.
Co sa tyka zavitov, predpokladam ze riesenie je take ze nastavim noz na zaciatok zavitu, zapnem maticu strojoveho posuvu. Vreteno sa toci. Kliknem start. Poznacim si poziciu vretena a posuvam noz az kym nestlacim tlacidlo stop. Vtedy vreteno zastavi, vysuniem noz trochu von. Stlacim tlacidlo navrat, vreteno sa rychlo otaca dozadu a support pride na zaciatok zavitu+nejaka rezerva. Stlacim stop, zastavi sa vreteno. Posuniem noz do zaberu a zase stlacim start.A rezem dalsiu hlbku zavitu..az kym nie je hotovy. V podstate system ako keby som tam mal ozubene kolesa.

Druha moznost je ze by sa vreteno stale tocilo a po vyrezani jedneho prechodu by krokovy motor posuvu zastal,odpojil by som maticu posuvu a rucne sa vratil na zaciatok zavitu. Tam zapl maticu, nastali noz do rezu a siel.znova.Toto ale potrebuje digitalne odmeriavanie na posuve.


Chapem to spravne?
Tlatoani
Příspěvky: 75
Registrován: 8. 8. 2020, 8:42

3. 11. 2020, 4:57

Pokusim se odpovědět. První případ se stále zapnutou maticí posuvu je správně. Ve druhém případě se naráží na problém najetí přesně do stejného bodu jako u prvního řezání. Když jsem nad tím dřív uvažoval, tak mi to vycházelo jako nouzovka pro případ nutnosti dokončit rozdělaný závit po havarijním vypnutí. Stejně by se nakonec muselo do bodu startu najíždět pomocí krokáče, nebo zajistit stejné natočení vodící tyče.

atlan píše: 3. 11. 2020, 11:51 Nema zmysel robit z els - cnc, nato mas hotove linuxove riesenie, len propojit drivre a krokaze a vysustrizi ti to aj strelca na sach.
...............
Od serva ocakavam ze sa rozbehne z 0 na pozadovanenotacky podla impulzov, narozdiel od krokaza ktory potrebuje rampu. .....................
LinuxCNC, MACH3 - je zajímavá myšlenka. Pak je otázkou zda má cenu stavit els když to samé umí CNC. Software by byl odladěný a HW by mohl být srovnatelný jako je u els s řízením ve dvou osách. Ušetřilo by se na ladění SW a možnosti by pak byly jak píšeš - šachový střelec.

1) Zkoušel jsi uvažovat o stavbě CNC ovládání a co tě od toho odradilo?
2) Co to je ta "rampa pro krokáč"?
Odpovědět

Zpět na „Ostatní elektronika“