ledvinap píše:Nejak nechapu, proc by to atmel nedal. Regulacni smycka staci na 16khz pro proud, nizsi na pozici. To je v instrukcich strasna spousta casu. Treba AT90PWM3 ma slusne generatory PWM, vcetne ochrany proti nadproudu a tak.
Mno k tomu mam toto. Jeste vcera jsem to videl na CPLD, dnes uz na FPGA, pote co jsem dokoncil simulaci.
1) Potrebuji zvladnout zmenu kvadratury do 500000step/sec
2) Integracni clen v A300 je supper a atmegou ho nenahradi (behem jednoho cyklu PWM 58Khz scitam 256* rozdil fyzicke pozice od zadane) To je udelat 14 848 000 souctu za sekundu. Abych stanovil velmi presny prumer rozdilu fyzicke vzdalenosti od zadane. Tim totalne vyhladim nastup motoru v reakci na krok. Tj. impulzy prichazeji v pomalem sledu viz treba 5kHz a motor se toci krasne plynule. Zvednu na 250Kz a motor okamzite zarovna beh s tim, ze se totalne minimalizuji prebehy a nedobehy.
3) PWM na CPU je vzdy dano jako INTEGER. FPGA mi umoznuje vlozit imaginarni desetinou cast. Tomu se rika synteza frekvence. V pravde to je potom tak, ze PWM 5.3 prebiha dvakrat jako 5 a jednou jako 6. Tj. Tu desetinou cast rozlozi do stridy. Tim generuji PWM velmi hladce v zavislosti na tom integracnim clenu a dokonale simuluji analogove generovani. (to mi CPU neumozni)
4) Mohu v realne case vyrovnavat PWM, podle zatizeni motoru, protoze mi uplne jina cast FPGA hlida zavislost proudu na rychlosti motoru a tim presne vyhodnotim casovou konstantu pro integracni clen a vyrovnam v realnem provozu zatez motoru a prispusobim to tomu PWM.
S A300 jsem par napadu odkoukal, ale pri simulaci jsem narazil na par malickosti, ktere a300 ve sve jednoduchosti neresilo.
1) Rozdilna zatez motoru a to i v prubehu. Treba CNC reze do dreva. Pokud ma pohyb na prazno je uplne jinaci konstanta integracniho clenu, jako v okamziku, kdy si hrabne do materialu
2) Vsechny tyto hodnoty se u A300 nastavovali analogove, coz je supper, ale jejich zmena v realnem case nebyla mozna.
I kdyz jsem v teto oblasti uplny novacek a CNC zadne nevlastnim, jsem schopen se ve veci rychle zorientovat a popravde co se zdalo se zacatku jednoduche kazdou dalsi simulaci se ukazuje slozitejsi. Ale nebudu delat zatim zadne zavery. Prvne sezenu motor a vse co jsem zjsitil na nej uplatim realne. Predpokladam, ze zjistim dasli malickosti, ktere me mohou prekvapit.
Popravde predstava ze bych toto vse implementoval do CPU je pro me nerealna. Ano pro jednoduchou aplikaci proc ne? Ale pokud pozaduji presnost a kompenzaci vlivu, tak uz to vidim pouze na spec HW na CPU jako periferii. Software reseni si neumim predstavit, pokud pod to nedam nejaky ARM9 na 200Mhz a jeste by se zapotil. FGPA je podstatne hladci a synteza dovoluje kouzla, ktere mi CPU nedovoli. Ale v jednoduchy situacich klidne sahnu i po 8pinovem Pic12c508/509, pokud se to do nej vleze a jeho casovani mi postacuje.
Viz. treba muj mrdko kreslici plotr via DPS.

)
http://xy41xx.stcomp.cz/
http://www.youtube.com/watch?v=HyTIAENnFkk 
))
Cely interpretr Hpgl, vcetne rozbehovych krivek, Bootloaderu firmware a znakove sady se vlezlo do ATMEGA8L. Coz je 8Kb. Jenze to jsou krokove motory. Moje rozcarovani s DC motoru bylo u simulace. Velmi rychle jsem zjistil jaka je fyzika devka a jak velmi promenlive vlastnosti ma motor v zavislosti
a) Na zatezi
b) Teplote
c) Rychlosti
d) Doby cyklu PWM (jake rozcarovani bylo, kdyz jsem zjistil ze ji budu muset taky menit)
e) Charakteru nabehu PWM
f ) Spravnem stanoveni minimalniho proudu pro pohyb motoru a to jeste v zavislosti na zatezi
g) .... h) ... i) ....
Jsou to pouze utrzky nesestavene do formy. Popravde o to co jsem zjistil jsem ochoten se podelit az to opravdu realne nasadim.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ochrana proti nadproudu je dobra vec, ale taky musi byt chytra, Musim spravne vyhodnotit kratkodobe pretizeni motoru v zavistlosti na zmene rychlosti prichazejiciho kroku, abych rychle zarovnal pozici. Podle vseho motor v pohode zvladne kradkodobe i 8nasobne pretizeni proudu. Ale i tuto slozku musim integrovat, abych to nedelal casteji nez mam a nejlepe u toho jeste sledovat teplotu motoru, abych mu nakonec jen neublizil.