Přesné pozicování v Eaglu

Eagle od firmy CadSoft je výborný nástroj pro návrh desek s plošnými spoji. Pokud ale potřebujete více součástek umístit do přesných souřadnic, je ruční pozicování docela zdlouhavé. Eagle umožňuje skriptování, to už jsem věděl dlouho, ale zatím jsem to nepotřeboval používat.

Představte si například, že chcete vyrobit pásek LED diod a víte jak mají být daleko od sebe. Tím spíš, pokud je chcete mít pod nějakým konkrétním úhlem. Pozicovat takových 50 diod s kalkulačkou v ruce je práce na dlouhé zimní večery.

Pro generování eaglovského skriptu jsem použil matlab, protože je pro takové zkoušení pro mě nejpohodlnější. Zřejmě by ale celý výpočet šel provést přímo pomocí skriptu v eaglu. Ještě jednou tedy k zadání – chci vyrobit dvě paralelní řady ledek pod definovaným úhlem – vygeneroval jsem si souřadnice středů ledek vzdálené 4.1mm (jde o SMD velikosti 0805) tak, aby ležely vodorovně s osou Y, a podle zadaného úhlu vygeneroval rotační matici. Každý střed pak vynásobím rotační maticí a získám tak požadované souřadnice.

deg = 83;
angle = deg * pi/180; % setting in deg, result in rad
rot = [cos(angle) -sin(angle); sin(angle) cos(angle)];

Jednoduché. Teď to ale přenést z matlabu do eaglu. Na natočení součástky slouží příkaz Rotate. Pokud chete součástku natočit do konkrétního úhlu (a ne tedy pootočit o určitý úhel), zapisuje se příkaz takto:

rotate =R35 LED32

kde rovnítko značí absolutní souřadnice, R že jde o rotaci, 35 je požadovaný úhel ve stupních a LED32 je jméno součástky. Můžete zároveň pomocí M za rovnítkem součástku i ozrcadlit (přesunout do jiné vrstvy). Dál potřebujeme součástku posunout na správné souřadnice. K tomu máme příkaz move, který se používá například následovně:

move LED32 (2 4)

přičemž LED32 je opět označení součástky, kterou přesunujeme na souřadnice [2, 4]. Pokud by se stalo, že součástka se jmenuje zrovna tak, že by příkaz nemusel být jasně interpretovatelný, pak můžete název uzavřít do apostrofů.

V matlabu jsem vygeneroval pro každou součástku oba dva příkazy a vypsal do textového souboru, který se jmenuje skript.src a lze ho načíst eaglem (File -> Script).

for g = 1:4  
  for i=1:10
     newLeds(i,:) = rot*leds(i,:)'; %'
     disp(strcat(['MOVE LED',num2str(30+i+(g-1)*10), ' (', num2str(newLeds(i,1)-5*g), ' ', num2str(newLeds(i,2)), ')']))
     disp(strcat(['ROTATE', ' =R', num2str(deg - 90), ' LED',num2str(30+i+(g-1)*10)]);
  end 
end

Skript se automaticky spustí a provede, takže hned byste měli vidět výsledek.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *