Professional Documents
Culture Documents
BR.pdf
BR.pdf
Villamosmérnöki Tanszék
2021-2022
1. félév
Tantárgy: MMME
Beágyazott elektronikai rendszerek
Terv
A terv címe: Léptető motor irányításának tervezése
Mesteri 2. év
FMR - Fejlett Mechatronikai Rendszerek szak
Kivonat
megvalósítva. A terv fel van bontva a következő elemekre: VHDL program, program feltöltése az
Bevezetés
A cél a projekt egy olyan digitális rendszer volt, ami három tengely mentén tud elmozdulni
(x,y,z). A koordináta rendszerben való elmozdulást a cnc világban jól ismert G-kódu algoritmus
alapján érdemes építeni. A rendszer programját VHDL-ben sikerült megvalósítani, illetve annak
modellezését a Simulinkben. Az irányításhoz szükséges hardver Zybo FPGA rendszerrel ami Linuxos
parancsot kap. Képesnek kell lennie, egyszerre több tengelyen elmozdulnia. Azonkívül az elmozdulás
legyen menedékes, fokozatosan gyorsuló, és megállás előtt fokozatosan lassuló. A gép működés során
legyen pontos, illetve a mozdulatokat, a parancsok legyen ismételhetők. Legyen internet kapcsolata,
hogy távolról lehessen irányítani. Érintős képernyős legyen a kezelői rendszer. Sebessége legyen
cm/sec-ban.
A digitális rendszerek tervezésére két tervezési módszert különböztetünk meg: – fentről lefelé (top
down): egy magasabb absztrakciós szintről apró lépésekkel ér el a részletekig, – lentről felfelé: az apró
részletekből kiindulva jut el a magasabb absztrakciós szintig. A tervezés során figyelembe kell
vennünk: teljesítmény=ford∙nyomaték
A logikai tervezés során megvalósítjuk a regiszterátviteli szinten leírt elemeket. A logikai
tervezést kapuszintű tervezésnek is nevezik, mivel ezen a szinten logikai kapukat, multiplexer
A rendszert a vhdl segítségével tervezzük meg, illetve itt tudjuk tesztelni is. A VHDL nyelv
adatbázishoz sem, – nem erőltet rá a tervezőre egyetlen tervezési módszertant sem, – független a
Összefoglalva: a VHDL nyelv leírja egy elektronikus áramkör vagy rendszer viselkedését, struktúráját,
amely alapján elemezhető vagy megvalósítható a fizikai áramkör. A VHDL mint szabványosított
hardverleíró nyelv a következő esetekben alkalmazható: – szintézisre, áramköri leírásra, – FPGA vagy
alkalmazása (oszcilloszkóp, logikai analizátor) vagy az FPGA áramkörbe integrált logikai analizátor.
1. VHDL program
programozási nyelv az Egyesült Államok Védelmi Minisztériumának utasítására fejlesztették ki, mivel
az volt a cél, hogy minden IC-t (integrated circuit) könnyen dokumentálni lehessen. (VHDL, 2021) Az
IC belső áramkörei bár nem ismertek, a viselkedése alapján meg lehet állapitani az IC strukturális
logikatervezés, illetve áramkörtervezés), magas szintű logikai szintézis (HLS - viselkedés model
átvitele RTL modelbe), az áramkör fizikai megvalósítása, rendszerintegráció, tesztelés. (Brassai, 2018)
jelet vagy jeleket amelyek fokozatosan felgyorsitsa a léptető motort egy bizonyos sebességig, illetve
lelassítsa a léptetőmotort a célba érése előtt. Tehát a léptető motor vezérléséhez szükséges egy
impulzusszélesség-moduláció jel, egy irány jel és egy engedély jel. Mind a három jelnek elegendő két
bitt viszont az impulzusszélesség-moduláció jelnek meg kell határozni a három különböző részét, ami
gyorsítja, sebességét tartja, és lassítja a motort. Így meg kell határozni a gyorsulás idejét, legyen T1, a
gyorsulás értékét, legyen d1, és a gyorsulás frekvenciáját, legyen N1. Ugyanakkor meghatározzuk az
impulzusszélesség-moduláció jelnek a maradék két részét T2, N2-el, és T3, d3, N3-el. Bementi jelnek
még meghatározzuk a sart és reset bemeneteleket. A start jel elindítja a motort a kitűzött irányba,
illetve a reset törli a vezérlő utasításait és új utasítások befogadását teszi lehetővé. Az 1.1 és 1.2
1.1 Ábra
1.2 Ábra
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity lepteto_vezerlo is
src_ce : in STD_LOGIC;
start : in std_logic;
reset : in std_logic;
en : in std_logic;
dir : in std_logic;
);
end lepteto_vezerlo;
-- deklarációs rész
type allapot_tipus is (RDY, INIT_A, T1_CIKL, DEK_T1, INIT_B, T2_CIKL, KONST, INIT_C,
RT2_next <= RT2 when rdy, if src_clk'event and src_clk = '1' then
en_out <=en;
A program lefutása az FPGA-n egy executable (végrehajtható) fáj által történik aminek a
kiterjesztése elf. A fájl az FPGA processzor magjába letöltődik bootoláskor és majd onnan végzi a
előnyös, több szempontból is, a programot egy linux operációs rendszer segítségével fogjuk betölteni a
az FPGA-ba. A linux operációs rendszer segítségével el lehet érni, hogy a lehessen kommunikálni a
rendszerrel akár egy wifi készüléken keresztül. A Linux operációs rendszer végrehajtható fájl mellé
még kell egy devicetree fájl ami tartalmazza a rendszer perifériás eszközeinek működtetéséhez
szükséges információkat. A devicetree fájl dts kiterjesztését elő lehet állítani a xilinx szoftverrel, de
azt át kell alakítani bináris állománnyá, hogy a devicetree fájl olvasható legyen a linux rendszer
számára. A dts fájl kiterjesztésének átalakítását a linux rendszerben a dtc -o dtb -i dts
Ahhoz, hogy tudjunk kommunikálni a rendszerrel még szükség lesz egy driverre ami a
driver fordítását a makefile paranccsal lehet megvalósítani, hogy olvasható legyen az operációs
rendszer számára és insmod-al lehet beiktatni a rendszerbe. Ami még szükséges, hogy találjon a
kernel verzió a fájlokban a megfelelő kernellel és egy olvasható fájlon keresztül lehet utasításokat
küldeni a processzornak.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define START_ADDR 0
#define RESET_ADDR 4
#define EN__ADDR 8
#define DIR_ADDR 12
#define D3_ADDR 16
#define D2_ADDR 20
#define D1_ADDR 24
#define T3_ADDR 28
#define T2_ADDR 32
#define T1_ADDR 36
#define N3_ADDR 40
#define N2_ADDR 44
#define N1_ADDR 48
#include <sys/types.h>
typedef struct {
int main(){
FILE* fp;
data_w buff_out;
fp = fopen("/proc/cncdriver","w+");
buff_out.addr=EN_ADDR;
buff_out.data=0;
fflush(fp);
buff_out.addr=RESET_ADDR;
buff_out.data=1;
fflush(fp);
buff_out.addr=START_ADDR;
buff_out.data=0;
fflush(fp);
buff_out.addr=RESET_ADDR;
buff_out.data=0;
fwrite (&buff_out , sizeof(data_w), 1, fp);
fflush(fp);
buff_out.addr=T1_ADDR;
buff_out.data=500;
fflush(fp);
buff_out.addr=D1_ADDR;
buff_out.data=100;
fflush(fp);
buff_out.addr=N1_ADDR;
buff_out.data=100;
fflush(fp);
buff_out.addr=T2_ADDR;
buff_out.data=500;
fflush(fp);
buff_out.addr=N2_ADDR;
buff_out.data=0;
buff_out.addr=D2_ADDR;
buff_out.data=0;
fflush(fp);
buff_out.addr=N3_ADDR;
buff_out.data=100;
fflush(fp);
buff_out.addr=D3_ADDR;
buff_out.data=0;
buff_out.addr=T3_ADDR;
buff_out.data=500;
buff_out.addr=RESET_ADDR;
buff_out.data=0;
fflush(fp);
fflush(fp);
sleep(1);
fclose(fp);
return 0;
A programban, a változók mellett még a regiszterek címét kell megadni amit a xilinx programból le
segitségével:
A rendszer strukturális illetve fizikai modellje található az alábbi ábrákon:
3. MATLAB modell
impulzusszélesség-moduláció jelet előállítjuk egy háromszög hullám és egy saját szerkesztésű irányító
jellel amint az látható a 3.1 ábrán. A két jel összehasonlításának eredménye egy
impulzusszélesség-moduláció munkaciklusa csökken. Így egy fordított trapéz alakú irányító jellel el
lehet érni azt a gyorsító és lassító jelet ami hasonló a vhdl programban meghatározott jelhez. Az
3.1 Ábra
3.2 Ábra
Az impulzusszélesség-moduláció jel előállításának a rendszere a 3.3 ábrán található. Mivel a
háromszög hullám generátornak nincs frekvencia bemenete, így az N változó nem szükséges. A
léptető motor ábrája a 3.4 ábrám található. A léptető motor le van egyszerűsítve annyiból, hogy nincs
számba véve a tehetetlensége, és amíg az irányító jel 1 addig van a motornak egy adott sebessége,
másképp nyugalomban van. A 3.5 ábrán látható a motor válasza az impulzusszélesség-moduláció jelre.
Látható amint a motor gyorsulás alatt van a ciklus elején és lassulás alatt a ciklus vége felé mielőtt a
motor nyugalomba ér. A 3.6 ábrán látható a rendszer. A rendszer egyenesen arányos 30 egység
távolság megtevés felett, így a bemenetet elegendő szorozni egy állandóval. Viszont 30 egység alatt a
rendszer már nem lineáris mivel az adott idő (T1) alatt a motor nem éri el a maximum végsebességet,
így görbeillesztés szükséges ami látható a 3.7es ábrán. A görbeillesztés eredményének a függvényének
3.4 Ábra
3.5 Ábra
3.6 Ábra
3.7 Ábra
3.8 Ábra
3.9 Ábra
3.10 Ábra
Összefoglalás
Ebben a tanulmányban egy digitális rendszer volt bemutava, amely irányítja a léptető motor
sebességét illetve irányát. A rendszer programját VHDL-ben sikerült megvalósítani, illetve annak
modellezését a Simulinkben. Az irányításhoz szükséges hardver Zybo FPGA rendszerrel ami Linuxos
Kiadó, 2018.