Dec 06, 2018 Lăsaţi un mesaj

Proiectarea sistemului de control al motorului pentru manipularea robotului

2 proiectarea software-ului sistemului

2.1 μC / OS-II arhitectură

μC / OS-II este un kernel cu sistem de operare multitasking, portabil, implantabil ROM, care poate fi trunchiat, preventiv, în timp real, cu eficiență ridicată în execuție, amprenta mică, performanță și scalabilitate în timp real. Caracteristicile, cel mai mic kernel poate fi compilat la 2KB. μC / OS-II este scrisă în limba C și în limba de asamblare. Cea mai mare parte a codului este scrisă în C. Doar câteva dintre codurile strâns legate de procesor sunt scrise în limbajul de asamblare. μC / OS-II include doar funcții de bază cum ar fi programarea sarcinilor, gestionarea sarcinilor, gestionarea timpului, gestionarea memoriei, comunicarea între sarcini și sincronizarea.

Atribuirea sarcinilor în cadrul sistemului 2.2μC / OS-II

După transferarea cu succes a sistemului μC / OS-II la STM32F107, programarea bazată pe μC / OS-II se face prin împărțirea unei aplicații mari în sarcini relativ independente. Prioritatea fiecărei sarcini este definită, iar kernelul μC / OS-II programează și gestionează aceste sarcini.

Ideea de proiectare a software-ului este de a oferi viteza motorului și poziția de direcție a dispozitivului de direcție prin portul serial în funcție de funcționarea reală a robotului. Viteza motorului este comparată cu valoarea setată a codificatorului incremental și comanda buclă închisă este implementată de algoritmul de viteză PID. Poziția transmisiei de cârmă este în principal faptul că codorul de valoare absolută alimentează înapoi poziția curentă, iar viteza transmisiei de cârmă este reglată în funcție de cerința de timp de acțiune. Funcțiile care trebuie realizate de software-ul sistemului de comandă a motorului acestui robot de manipulare sunt următoarele:

◆ Mașina superioară dă viteza motorului, unghiul de virare și timpul de acțiune;

◆ Necesită o ajustare continuă a turației motorului și o bună performanță statică și dinamică. Viteza nu este calculată prin algoritmul PI.

◆ Necesită ca angrenajul de cârmă să atingă rapid unghiul specificat, iar feedback-ul de poziție este folosit ca reglarea vitezei date de la mecanismul de cârmă;

◆ Are o anumită funcție de protecție a defecțiunilor. Când motorul este blocat, curentul este prea mare și transmisia de direcție atinge întrerupătorul de limitare, este necesar să opriți modulul de antrenare.

Pentru ca funcțiile de mai sus să fie implementate, proiectarea aplicației poate fi împărțită în următoarele sarcini:

1 Porniți sarcina. Inițializați sistemul, creați o stare inițială a motorului, apoi ștergeți-l și porniți sarcina să doarmă.

2 sarcini de protecție a motorului și a dispozitivului de direcție. Se utilizează pentru a răspunde la o întrerupere externă atunci când comutatorul supracurent sau limitator este activat. Când se introduce starea de întrerupere, semnalul de sarcină este trimis. Programul de sarcini detectează că semaforul este valid și răspunde la sarcină și oprește ieșirea. Prioritatea sarcinii este setată la nivelul 0.

3 sarcini ale computerului gazdă. Se folosește pentru mașina superioară pentru a controla motorul și transmisia de direcție, iar prioritatea sarcinii este setată la nivelul 1. Atunci când se generează registrul de intrare a datelor gazdă, se va genera o întrerupere, care va trimite octetul recepționat în tampon și eliberarea semaforului sarcinii date de computerul gazdă; când semaforul este detectat, sarcina va începe executarea și octetul corespunzător va fi executat. Informația este analizată în funcție de viteza corespunzătoare a motorului și de poziția roții de direcție pentru a atribui valori variabilelor corespunzătoare.

4 sarcină de control al vitezei motorului. Pentru reglarea vitezei în buclă închisă a motorului, prioritatea sarcinii este setată la nivelul 2.

5 sarcini de control al mecanismului de direcție. Se utilizează pentru a controla transmisia de direcție pentru a ajunge la poziția specificată în timpul specificat, iar prioritatea sarcinii este setată la nivelul 3.

2.3 Porniți sarcina

În programul principal, înainte de a apela alte sarcini ale μC / OS-II, apelați mai întâi funcția de inițializare a sistemului OSInit () pentru a inițializa toate variabilele și structurile de date ale μC / OS-II; în același timp, stabilește sarcina în așteptare OS_TaskIdle (), această sarcină este mereu în stare gata; apelați funcția OSTaskCreate () pentru a stabili sarcina de pornire; apelați OSStart (), transferați controlul la kernelul μC / OS-II, începeți să executați multitasking.

Sarcina de pornire este creată în programul principal, care are trei funcții principale:

1 pentru inițializarea sistemului (modul de ieșire PWM, port serial, modul ADC, funcția de întrerupere a nivelului de intrare, temporizator).

2 Stabiliți cantitatea de semnal utilizată de sistem.

3 stabilește alte sarcini ale sistemului.

În cele din urmă, apelați OSTaskDel (OS_PRIO_SELF) pentru a se șterge și a porni sarcina să doarmă. Principalul flux de activitate al programului este prezentat în Figura 4.

2.4 sarcina de control al vitezei motorului

De fiecare dată când encoderul incremental generează o întrerupere externă, semaforul de sarcină se emite în starea de întrerupere. Programul de sarcini detectează că semaforul este valid și răspunde la sarcină. Sarcina realizează controlul cu buclă închisă prin măsurarea vitezei actuale a motorului și a comparației de viteză date. Fluxul sarcinii de control al vitezei motorului este prezentat în Figura 5.

2.5 sarcina de comandă a dispozitivului de comandă

Controlerul servo generează un timp de referință de către un cronometru, trimite un semaphore la fiecare oră fixă și sarcina va fi executată o singură dată. Funcția de control servo compară poziția măsurată de codorul absolut cu poziția dată și ajustează viteza servomotorului în funcție de timpul rămas. Debitul sarcinii de control servo este prezentat în Figura 6.

3 interfață electromecanică a sistemului

Transmisia de direcție a robotului constă dintr-un reductor 30: 1 conectat la motorul DC. Codificatorul de poziție absolută este conectat la mecanismul de cârmă și trimite semnalul de unghi al transmisiei de cârmă la placa de comandă a angrenajului. Cele două arbori ai roții din față a robotului sunt conectate printr-o bară de transmisie. Unul dintre arbori este conectat la mecanismul de direcție printr-o curea de transmisie, astfel încât, atunci când roata de cârmă se rotește, cureaua transmisă acționează tija de transmisie pentru a se asigura că cele două roți din față se pot roti sincron. Motorul cu tracțiune pe spate este un motor DC, care este conectat direct la encoder incremental. După reducerea raportului de reducere cu un reductor de 25: 1, roata din spate este acționată de diferențialul mecanic. Semnalele de la encoder incremental sunt, de asemenea, trimise la placa de comandă a unității. Structura sistemului electromecanic este prezentată în figura 7.

Concluzie

În această lucrare se realizează proiectarea componentelor motorului și servomotorului robotului de manipulare. Sistemul de operare în timp real μC / OS-II este integrat cu succes pe STM32F107, iar experimentul cu buclă închisă de viteză a motorului și a mecanismului de direcție este finalizat. Utilizând caracteristicile performanței în timp real cu mai multe sarcini a controlerului Core Cortex-M3 și a sistemului μC / OS-II, acesta oferă o bază software și hardware pentru capturarea imaginilor ulterioare robot și urmărirea navigației. Dacă algoritmul PI existent este îmbunătățit și se poate realiza viteza motorului și controlul dublu de buclă curentă curent, caracteristicile motorului robotului vor fi mai bune, iar perspectiva de aplicare a robotului de manipulare va fi mai largă.



Trimite anchetă

whatsapp

teams

E-mail

Anchetă