Izveidot Control Board par Romi robotu šasiju

Suspense: 'Til the Day I Die / Statement of Employee Henry Wilson / Three Times Murder (Jūnijs 2019).

$config[ads_text] not found
Anonim

Izveidot Control Board par Romi robotu šasiju


Šajā rakstā mēs apspriedīsim datortehnikas dizaina izstrādi robotai PCB, un mēs uzrakstīsim programmaparatūru divu līdzstrāvas motoru vadīšanai.

Atbalsta informācija

  • Izstrādājiet pielāgotu mikrokontrolleru plānošanas un testēšanas padomi
  • Custom PCB dizains ar EFM8 mikrokontrolleru
  • Robotu akcelerometra datu vākšana un analīze

Bot

Mehāniskā aparatūra, ar kuru mēs strādāsim, ir Romi šasija, ko pārdod Pololu. Tas ir zemu cenu plastmasas rāmja plus motora plus disku komplekts, kas ir samērā viegli montējams.

  • Motora ievietošana motora turētājā ir nedaudz izliekta. Plastmasas sānu gabaliem ir saliekt diezgan mazliet. Un kaut kā es piespiedu plastmasas cilpiņu motora gadījumā; rezultātā cīņa beidzās ar šķelto plastmasas cilni. Es nedomāju, ka bot darbība ciest tik ilgi, kamēr es neesmu gatavojas lielu ātrumu pār neapbūvētu reljefu, bet acīmredzot jums vajadzētu mēģināt savākt savu Romi, nezaudējot neko. Tāpēc esiet piesardzīgs, kad ievietojat motorus.

DXF

Vienkārša lieta, kas jāaizmirst, izstrādājot PCB, ir montāžas caurumi. Viņi ne vienmēr ir nepieciešami, bet parasti tas ir labāk tos iekļaut. Romi ir aprīkots ar daudziem priekšpīķītiem caurumiem; jūs vienkārši izmantojat rāmi rāmja apakšējā daļā, lai nodrošinātu skrūvi, kas iet caur PCB montāžas atveri, kas atrodas rāmja augšējā daļā (tas ir parādīts montāžas video). Jautājums ir, kā jūs nodrošināt, lai montāžas caurumi sakristu ar rāmja urbumiem "// www.pololu.com/product/3500/resources" target = "_ blank"> šeit un meklējiet "Front, top and Romi šasijas skats uz sāniem "). Ja jūsu CAD programmatūra atbalsta DXF importu (es domāju, ka tā ir kopēja funkcionalitāte), jūs varat iekļaut rāmja kontūru savā PCB izkārtojumā:

Jūs varētu domāt par kaut ko. . .

Kas šajā pasaulē ir? Nu, tas ir vajadzējis būt Visu apmešanas shēmu logotips. Kad es augšupielādēju dizainu ar MacroFab lietotāja interfeisu, es izmantoju ODB ++ faila formātu, nevis gerberu. Ar manu CAD programmatūru (DipTrace) ir vieglāk ģenerēt ODB ++ failus. Kopumā man bija apmierināta procedūra, bet acīmredzot bija problēma ar šo sietspiedes daļu. Es gribu būt skaidrs, ka es nekādā ziņā neesmu vainoja MacroFab, jo PCB priekšskatījums skaidri parādīja šo precīzu problēmu, bet es nolēmu cerēt, ka programmatūra, ko izmantoja priekšskatījuma attēla izveidošanai, padarīja netīrās sietspiedes rāmi un faktisko izgatavošanu naudas sods. Nu es biju nepareizi.

Šeit ir PCB izkārtojums:

Romi motori pavelso maksimālo (ti, strāvas) strāvu 1, 25 A katram, bet normālā darba strāva ir tikai 130 mA. Es nebiju pārliecināts, vai 1 A sienas transformators būtu piemērots motoru palaišanai, bet tas, šķiet, darbojas labi.

Motora vadība

Mēs neieskatīsimies uz visiem šī raksta apakšsistēmām. Tagad mēs vienkārši īsumā aplūkosim motora piedziņas shēmu, jo pirmais galvenais pārbaudes uzdevums ir nodrošināt, ka mēs varam vadīt motorus. Ja jūs vēlaties redzēt visas dizaina detaļas, varat lejupielādēt visu shematisko, izmantojot šādu saiti (tas ir zip fails, kas ietver arī BOM):

Shematisks un BOM

Patiesībā, es pat nevēlos daudz par motora piedziņas shēmu pateikt, jo tas ir gandrīz identisks tam, kas aprakstīts šajā rakstā. Galvenā atšķirība ir tāda, ka es nomainīju sensora rezistora vērtību (R3 zemāk shematiskā veidā) saskaņā ar Romi dzinēju slēgšanas strāvu. Es jutu arī ērti, izmantojot mazāku lielapjoma kondensatoru (C21), jo motori nav tik spēcīgi kā tie, kas tiek izmantoti C-BISCUIT demo bot.

Mēs vēlamies, lai robots virzītu uz priekšu, kad virziena tapa ir loģiska. Lai to izdarītu, pievienojiet motora savienojumiem skrūvju spailes sekojoši:

Mums ir četras funkcijas pamata kustības kustībai:

 void FullSpeed_Forward(void) { MOT_R_nEN = 1; MOT_L_nEN = 1; MOT_R_PWM = 1; MOT_L_PWM = 1; MOT_R_DIR = 1; MOT_L_DIR = 1; MOT_R_nEN = 0; MOT_L_nEN = 0; } void FullSpeed_Reverse(void) { MOT_R_nEN = 1; MOT_L_nEN = 1; MOT_R_PWM = 1; MOT_L_PWM = 1; MOT_R_DIR = 0; MOT_L_DIR = 0; MOT_R_nEN = 0; MOT_L_nEN = 0; } void FullSpeed_TurnRight(void) { MOT_R_nEN = 1; MOT_L_nEN = 1; MOT_R_PWM = 1; MOT_L_PWM = 1; MOT_R_DIR = 0; MOT_L_DIR = 1; MOT_R_nEN = 0; MOT_L_nEN = 0; } void FullSpeed_TurnLeft(void) { MOT_R_nEN = 1; MOT_L_nEN = 1; MOT_R_PWM = 1; MOT_L_PWM = 1; MOT_R_DIR = 1; MOT_L_DIR = 0; MOT_R_nEN = 0; MOT_L_nEN = 0; } 

Katras funkcijas vispārējā secība ir tāda pati: izslēdziet motorus, uzstādiet PWM signālus augstu loģikai, iestatiet virzienu atbilstoši kustības darbībai un pēc tam ieslēdziet motorus. Lai apturētu motorus, vienkārši pieslēdzam pieslēgvietai augstu loģiku:

 void StopMotors(void) { MOT_R_nEN = 1; MOT_L_nEN = 1; } 

Pārbaudes kods ciklā ar četrām kustības operācijām, pēc tam motori apstājas pirms sērijas sākuma:

 while (1) { FullSpeed_Forward(); C2ADAPTER_LEDGRN = !C2ADAPTER_LEDGRN; Delay_seconds(7); FullSpeed_Reverse(); C2ADAPTER_LEDGRN = !C2ADAPTER_LEDGRN; Delay_seconds(7); FullSpeed_TurnLeft(); C2ADAPTER_LEDGRN = !C2ADAPTER_LEDGRN; Delay_seconds(7); FullSpeed_TurnRight(); C2ADAPTER_LEDGRN = !C2ADAPTER_LEDGRN; Delay_seconds(7); StopMotors(); Delay_seconds(7); } 

Jūs varat lejupielādēt avota un projekta failus, izmantojot šādu saiti.

Avota un projekta faili

Kopsavilkums

Šajā rakstā es uzrādīju Romi robotu šasiju no Pololu un iepazīstināja ar pielāgotu PCB, kas kontrolētu robotu. Mēs ieslēdzām dēli un pievienojām dzinējus, pēc tam mēs pārbaudījām motoru vadības funkcionalitāti ar vienkāršu testēšanas kodu. Ņemiet vērā, ka EFM8 mikrokontrolleru ieprogrammēja, izmantojot šajā rakstā apskatīto C2 adaptera paneli. Nākamajos projektos mēs izpētīsim papildu kontroles PCB daļas.

Dodiet šim projektam pašiem sevi! Iegūstiet BOM.