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