instructables VHDL Kontrola Leza Motorê Biryara Rêvebirinê û Leza Çep û Rastê Leza Kontrolê
NOT: Ev rûpel beşek ji avahiyek mezin e. Ji kerema xwe piştrast bikin ku hûn HERE dest pê bikin, ji ber vê yekê hûn fêm bikin ka ya jêrîn li ku derê di projeya mezin de cih digire
Serview
Kontrolkirina leza motor û rêwerzê yek ji du beşên sereke ye di robota fotodetektorê de, ya din jî dabeşkirina detektorê an ronahiyê ye. Dema ku beşa fotodetektorê balê dikişîne ser dîtina robotê, beşa kontrolkirina leza motor û rêgezê balê dikişîne ser tevgera robot. Daneyên pêvajoya kontrolkirina leza motorê û rêwerzê ku ji dabeşa fotodetektorê tê dayîn û di forma tevgera motorê de encamek laşî dide.
Armanca vê dabeşkirinê kontrolkirina lez û arastekirina herdu motora çep û rastê ya robota ronahiyê ye. Ji bo ku hûn van nirxan biryar bidin, hûn ê hewceyê mezinahî û pozîsyona ronahiya ku ji hêla kamerayê ve hatî girtin û ji hêla tîrêjê ve hatî hilberandin hewce bike. Di heman demê de hûn ê hewceyê leza pîvandî ya li ser her yek ji motoran jî bikin. Ji van têketinan, hûn ê bikaribin ji bo her motorê nirxa PWM (Modulasyona Pel-Perehiyê) derxînin.
Ji bo ku hûn bigihîjin vê yekê, hûn ê hewce bikin ku van modulên VHDL (li jêr jî têne girêdan) çêbikin:
- Kontrol
- Hesabkirina xeletiyê
- Veguherîna binary
- Nebûna çavkaniyek ronahiyê
Hûn dikarin li koda VHDL ji bo vê dabeşkirinê li vir binêrin.
Supplies
Em pêşniyar dikin ku bi ISE Design Suite 14.7 kod bikin ji ber ku ew dikare ji bo ceribandina kodê di VHDL de jî were bikar anîn. Lêbelê, ji bo barkirina kodê di BASYS 3-ê de, hûn ê hewce bikin ku Vivado (ver. 2015.4 an 2016.4) saz bikin û astengiya bi dirêjkirina .xdc binivîsin.
Kontrola Leza Motora VHDL: Rêzkirin û Leza, Kontrolker Leza Çep û Rast: Rûpel 1
PÊNGAVA INSTRUCTION
Gav 1: Kontrol
Ji bo ku fêm bikin ka meriv çawa tevgera robotê digere ronahiyê kontrol dike, dema ku ew çavkaniyek ronahiyê dibîne em ê tevgera xwestî ya robotê rave bikin. Ev tevger dê li gorî pozîsyon û mezinahiya çavkaniya ronahiyê were kontrol kirin.
Algorîtmaya ku tê bikar anîn wekî kontrolkerek robotek RC-ê ye, bi yek lewazek ku dikare çep an rast were zivirandin, û leverek din ku dikare pêş an paşde were zivirandin.
Ji bo ku li ronahiyê bigerin, hûn dixwazin ku ev robot di xetek rast de bimeşe ger cîhê çavkaniya ronahiyê rast li pêşiya robot be. Ji bo kirina wê, hûn li ser motorên çep û rastê heman lezê dixwazin. Ger ronî li milê çepê yê robotê be, hûn dixwazin motora rastê ji motora çepê zûtir bimeşe da ku robot bikaribe ber bi çepê ve ber bi ronahiyê ve bizivire. Berevajî vê, heke ronî li milê rastê yê robotê be, hûn dixwazin motora çepê ji motora rastê zûtir bimeşe da ku robot bikaribe ber bi rastê ve ber bi ronahiyê ve bizivire. Ev bi leba çepê ya kontrolkerek RC re wekhev e, ku hûn dikarin kontrol bikin ka hûn dixwazin robotê çep, rast, an rast biguhezînin.
Dûv re, hûn dixwazin ku robot bi pêş ve biçe ger çavkaniya ronahiyê dûr be (çavkaniya ronahiyê ya piçûk), an heke çavkaniya ronahiyê ya naskirî pir nêzîk be (çavkaniya ronahiyê ya mezin) paşde biçe. Di heman demê de hûn dixwazin ku robot ji çavkaniya ronahiyê dûrtir be, robot ew qas zûtir tevdigere. Ev yek bi levera rastê ya kontrolkerek RC-ê re wekhev e, ku hûn dikarin kontrol bikin ka hûn dixwazin pêş ve biçin an paşde biçin, û hûn çiqas bilez dixwazin ku ew biçe.
Dûv re hûn dikarin formulek matematîkî ji bo leza her motorek derxînin, û em rêza lezê di navbera -255 heya 255 hilbijêrin. Nirxa neyînî tê wateya ku motor dê paşde bizivire, nirxek erênî tê wateya ku motor dê ber bi pêş ve bizivire.
Ew algorîtmaya bingehîn a tevgera vê robotê ye. Ji bo bêtir fêrbûna vê modulê, li vir bikirtînin.
Gav 2: Hesabkirina Çewtiyê
Ji ber ku we jixwe leza û rêwerziya armancê ya motoran heye, hûn jî dixwazin leza pîvandî û rêwerziya motoran jî bihesibînin. Ger ew gihîştiye armanca lezê, em dixwazin ku motor tenê li ser leza xwe tevbigere. Ger wusa nebe, em dixwazin leza motorê zêde bikin. Di teoriya Kontrolê de, ev wekî pergala kontrolkirina vegerê ya girtî tê zanîn.
Ji bo bêtir fêrbûna vê modulê, li vir bikirtînin.
Gav 3: Veguherîna Binary
Ji hesabên berê, we berê çalakiya ku ji bo her motorê hewce dike zanibû. Lêbelê, hesab bi karanîna binarya îmzekirî têne kirin. Armanca vê modulê ew e ku van nirxên îmzekirî veguherîne nirxek ku dikare ji hêla jeneratorê PWM ve were xwendin, ku rêgez (an li milê demjimêran an berevajî demjimêr) û leza (di navbera 0 û 255-an de ne). Di heman demê de, ji ber ku berteka ji motorê di binarya nenîşankirî de tê pîvandin, modulek din hewce ye ku nirxên nenîşankirî (rêber û bilez) veguherîne nirxek îmzekirî ku dikare ji hêla modula hesabkirina xeletiyê ve were hesibandin. Ji bo bêtir fêrbûna vê modulê, li vir bikirtînin.
Gav 4: Nebûna Çavkaniya Ronahî
We robotek çêkiriye ku gava ronahiyê ji hêla robotê ve tê tesbît kirin ji bo ronahiyê digere tevdigere. Lê gava ku robot ronahiyê nebîne çi dibe? Armanca vê modulê ew e ku ferman bide ka gava rewşek wusa hebe çi bikin.
Rêya herî hêsan û lêgerîna çavkaniyek ronahiyê ev e ku robot di cîh de bizivire. Piştî zivirîna çend saniyeyan, ger robot hîn jî çavkaniyek ronahiyê nedîtibe, hûn dixwazin robot ji tevgerê raweste, da ku hêzê xilas bike. Piştî hejmareke din a saniyeyan, divê robot dîsa li cîhê xwe bizivire da ku li ronahiyê bigere. Ji bo bêtir fêrbûna vê modulê, li vir bikirtînin.
Gav 5: Çawa dixebite
Ji bo vê ravekirinê hûn dikarin li wêneyê jorîn binihêrin. Wekî ku di destpêka vê rêwerzanê de hate behs kirin, hûn ê hewceyê têketina "mezin" û "pozîsyona" ji dabeşkirina bendikê bikin. Ji bo ku hûn pê ewle bibin ku ev têketin derbasdar in (mînakample, gava ku hûn mezinahî = 0 distînin, mezinahî bi rastî sifir e ji ber ku kamera ronahiyê nabîne, û ne ji ber ku kamera hîn dest pê dikir) hûn ê jî hewceyê cûreyek nîşankerê bikin, ku em jê re dibêjin "READY". Van daneyan dê ji hêla kontrolê (Ctrl. vhd) ve bêne hilberandin da ku leza armanca her motorê (9 bit, îmzekirî) diyar bike.
Ji bo hilberek aramtir li ser motorê, hûn dixwazin di pergalek girtî de bertek bikar bînin. Ji bo vê yekê têketinên "rêber" û "leza" her motorê ji beşa pîvana leza motorê hewce dike. Ji ber ku hûn dixwazin van têketinan têxin nav hesabên xwe, hûn ê neçar bibin ku van nirxên bênîşan veguherînin binarya îmzekirî ya 9-bit. Ev ji hêla veguherînera binary ya îmzekirî (US2S.vhd) ve nehatiye îmzekirin.
Hesabkirina xeletiyê (çewtî. vhd) çi dike ev e ku leza pîvandî ji leza armancê kêm dike da ku çalakiya her motorê diyar bike. Ev tê vê wateyê ku dema ku her du jî xwedî heman nirxê bin, jêbirin dibe sifir û motor dê tenê li ser leza xwe tevbigere. Her weha hûn dikarin faktorek pirjimariyê zêde bikin da ku robot zûtir bigihîje leza armancê.
Ji ber ku kontrolkerê motorê pêdivî bi lez û rêgeziya her motorê heye, divê hûn nirxên nîşankirî yên çalakiyê li du nirxên nenîşankirî yên cihêreng wergerînin: leza (1 bit) û rêwerz (8 bit). Ev ji hêla veguhezkara binaryê ya îmzekirî-ber-ne-nîşankirî (S2US.vhd) ve tête kirin, û dê bibe têketina beşa kontrola motorê.
Me modulek jî lê zêde kir da ku diyar bikin dema ku ronî neyê tespît kirin dê çi bikin (tu ronahiyê tune. Bhd). Ji ber ku ev modul di bingeh de jimarvanek e, ew ê bihejmêre ka çiqas pêdivî ye ku robot an bizivire an li cîh bimîne. Ev ê piştrast bike ku robot li şûna tiştê ku li pêşiya wê ye, hawîrdora xwe "dibîne", û dema ku çavkaniyek ronahiyê bi rastî tune be hêza bataryayê biparêze.
Gav 6: Berhev bikin Files
Ji bo hevgirtinê files, hûn hewce ne ku îşaretan ji her modulê ve girêdin. Ji bo kirina wê, divê hûn modulek nû ya asta jorîn çêbikin file. Ketin û derketinên modulên berê wekî pêkhate têxin, ji bo girêdanan îşaretan lê zêde bikin û her portê bi cotê têkildar veqetînin. Hûn dikarin li girêdanên li ser nîgara jorîn binihêrin, û li kodê li vir binihêrin.
Gav 7: Ceribandin
Piştî ku we bi tevahî kodê qedand, hûn hewce ne ku zanibin ka koda we kar dike berî ku hûn wê li panelê bar bikin, nemaze ji ber ku dibe ku beşên kodê ji hêla kesên cûda ve werin çêkirin. Ji bo vê yekê ceribandinek pêdivî ye, ku hûn ê nirxên dummy binivîsin û bibînin ka kod bi awayê ku em dixwazin tevbigere. Hûn dikarin bi ceribandina her modulê dest pê bikin, û heke ew hemî bi rêkûpêk bixebitin, hingê hûn dikarin modula asta jorîn ceribandinê bikin.
Gav 8: Wê li ser Hardware biceribîne
Piştî ku koda we li ser komputera we hate ceribandin, hûn dikarin kodê li ser hardware ya rastîn biceribînin. Divê hûn astengiyê çêbikin file li ser Vivado (.xdc file ji bo BASYS 3) ji bo kontrolkirina kîjan ketin û derketinê diçin kîjan portan.
TIŞTEYA GIRÎNG: Em bi awayê dijwar fêr bûn ku dibe ku pêkhateyên elektrîkê xwedî nirxek herî zêde ya niha an voltages. Bê guman ji bo nirxan serî li datasheet bidin. Ji bo PMOD HB5, pê ewle bin ku voltage ji çavkaniya hêzê ya li 12 volt (ji ber ku ev voltage ji bo motorê), û herikîna ku ji bo tevgera motorê hewce ye hindik be.
Gav 9: Wê Bi Parçeyên Din re Têkel Bikin
Ger gavên berê serketî bûn, kodê bi komên din re tevlihev bikin da ku koda paşîn di robotê de were barkirin. Hingê, voila! We bi serfirazî robotek ronahiyê digere.
Gav 10: Beşdar
Ji çepê ber bi rastê:
- Antonius Gregorius Deaven Rivaldi
- Felix Wiguna
- Nicholas Sanjaya
- Richard Medyanto
Gelek baş: Kontrola Leza Motora VHDL: Rêzkirin û Leza, Kontrolker Leza Çep û Rast: Rûpel 6
Spas dikim ji bo reviewing! Ev proje bi rastî tenê beşek projeyek polê ye (Robotê Digere Ronahî bi panela BASYS 3 û kamera OV7670), ji ber vê yekê ez ê di demek nêzîk de zencîreyê li dersa hînker zêde bikim!
Ecêb: Ez li bendê me ku her tişt bi hev re bibînim.
Belge / Çavkanî
![]() |
instructables VHDL Kontrola Leza Motorê Biryara Rêvebirinê û Leza Çep û Rastê Leza Kontrolê [pdf] Rênîşander Kontrola Leza Motora VHDL Biryara Rêvebirinê û Kontrolkera Leza Çep û Rast a Lezê, Leza motorê ya VHDL, Rêvebiriya Birêvebirina Birêvebirinê û Kontrolkera Leza Çep û Rastê Lezê |