CNC ismet

Nya'ri Viktor office at flexelec.hu
Wed Jul 20 10:28:07 CEST 2005


Hello, Vajk!

Akkor kérlek nézd meg mégegyszer azt az egyszerü rutint, amit irtam 
tegnap, mert abban bizony nem soxorozódik össze.
Pont ez a DDS lényege is:
Ha van mondjuk egy 50MHz-es oszcillátorom, egy 32bites 
fázis-akkumulátorom és egy 4096 cellás eprom szinusztáblám, akkor nem 
csak az 50MHz egésszámú leosztott frekijeit tudom előállítani, hanem pl. 
14372.251 Hz-et is és 14372.263 Hz-et is; azaz 0.0116 Hz-es (5*10^7 / 
2^32) lépésekben bármit, max 25 MHz-ig.
Ha érdekel, ajánlom figyelmedbe pl. az AD9835 DDS IC-t; speciel pont 
erről beszéltem, én is ezt használom szinuszgenerátorként.
http://www.analog.com/en/prod/0,2877,AD9835,00.html
Ugyanezen analógiával megoldható az egyenes húzása is, +-1 step hibával, 
bármekkora távolságon, bármekkora felbontással. (lehet hogy pont ezt 
hívják DDA-nak, kb. ezt írta le Palasik Sándor)
Nézd át mégegyszer azt a pici C progit!

Viktor

Vajk Fekete wrote:
> nem az osztas a gond, hanem hogy eloszor kiszamolod az egy lepes dx-re 
> juto dy-t, utanna meg azokat adogatod ossze. igy az osztas hibaja jol 
> megsokszorozodik. minel nagyobb felbontasu a geped/nagyobb felbontasu a 
> rasztered, annal nagyobb pontossagu valos szamabrazolas kell. Ugye 
> 0.01mm felbontasnal egy 20cm negyzet atlojat ha rajzolod az x lepesek 
> szama 2000 lesz, tehat ha mondjuk 4 tizedesjegy pontosan szamolsz, akkor 
> a dy-od hibaja az elejen az osztasnal rossz esetben 5e-5, az 2000-szer 
> osszeadva pont 0.01mm, tehat a vegere egy lepesben el is van rontva a 
> dolog. Ha a 20cm nem 20cm, es a lepesenkenti felbontas kisebb, a helyzet 
> fokozodik. Egy ipari robotnal, ahol meteres elmozdulasok vannak es a 
> szervo jeladojanak a lepese lehet mondjuk 0.005mm mar igen komoly 
> aritmetikak kellhetnek. (a pozicio egeszreszenek tarolasa kapasbol 5 
> jegy mm-ben, es a fentiek miatt a tortreszre is kell min 6-7 jegy, az 
> mar 12 jegy pontossag. mennyi is a double? az meg jo kell legyen akkor 
> ugye?)
> 
> vajk
> 
> Nya'ri Viktor wrote:
> 
>>
>>
>> Palasik Sandor wrote:
>>
>>>> Nagy vonalakban; mi ez a DDA algoritmus?
>>>
>>>
>>>
>>>
>>> Egészen nagy vonalakban: veszed a vonal tangensét, fixpontosan 
>>> ábrázolod.
>>> Minden X lépésnél a tangenst hozzáadod az Y akkumulátorhoz és akkor 
>>> lépsz Y-ban, ha az egészrész változott. A maximális távolság 
>>> határozza meg, hogy milyen pontosan kell ábrázolni a tangens. Akkor 
>>> működik jól, ha a tangens <= 1. Ha nem így van, akkor fel kell 
>>> cserélni a tengelyeket.
>>> Hátránya: egyszer osztani kell a legelején, valamint az Y akkumulátor 
>>> kétszer annyi bites, mint amekkorák a koordnináták.
>>>
>>> Ezért jobb szerintem a Bresenham algoritmus, mert ott nem kell 
>>> osztani és nem kell kétszeres pontosság sem, valamint könnyű vele 
>>> szép, a középpontra szimmetrikus vonalakat rajzolni. Persze, ha van 
>>> elég bit a tangens ábrázolására, a DDA és a Bresenham pontosan 
>>> ugyanazt adja.
>>>
>> Na hát akkor ez kb. ugyanaz, mint a DDS magja, amit pár levéllel 
>> ezelőtt le is írtam; lehet hogy a DDA-ban és DDS-ben a DD 
>> (DirectDigital asszem) ugyanazt jelenti?
>> Márpedig amit leirtam, annál nem nagyon tudok egyszerübbet, és még 
>> osztani sem kell benne...
>>




More information about the Elektro mailing list