Micro Maestro
- Detaljer
- torsdag, 01. september 2011 23:28 Øyvind Magnussen
Beskrivelse: Micro Maestro er en USB-enhet som kan styre 6 forskjellige RC-servoer, eller fartsregulatorer. Den kan også kobles sammen med flere enheter dersom 6 skulle bli for lite.
Den kan også bli styrt via vanlig UART fra feks en mikrokontroller. Denne artikkelen beskriver hvordan man kommer igang med enheten, samt hvordan den blir implementert for kontroll via LabVIEW ved bruk av "compact-protokollen".
Produsent: www.pololu.com
Selger: www.sparkfun.com
Keywords: Micro Maestro, servo, fartsregulator, LabVIEW, RC
Note: Det blir referert til databladet i artikkelen ved bruk av sidetall referert til PDF [s.XX]
Installasjon
Fra produsentens hjemmeside kan man laste neddriveren slik at Windows kan kommunisere med enheten. Installeringen installerer også et brukergrensesnitt som lar deg teste kommunikasjonen på en enkel måte. Det eneste som må sjekkes for å få den til å fungere med LabVIEW-koden som ligger vedlagt er å påse at "Serial mode" er satt til "USB Chained". Baudrate ol spiller ingen rolle.
Protokoller
Man kommuniserer med MicroMaestro ved å sende kommandoer til den. Dette kan gjøres for 3 forskjellige protokoller:
- Pololu
- Compact (denne er valgt for dette dokumentet)
- Mini SSC
Den første kommandoen som sendes til enheten avgjør hvilken protokoll som brukes. Man sendter 4 byte for å snakke med compact-protokollen:
| byte 1 | byte 2 | byte 3 | byte 4 |
|
Kommando (MSB høy) |
Servonummer |
Data low bits (MSB lav) |
Data high bits (MSB lav) |
Først sendes altså en kommando, denne angir compact-protokollen. I tillegg inneholder første byte en kommando som sier hva micro maestro skal gjøre. Den neste byten sier hvilken servo som skal kjøres av de 6. Byte 3 og 4 er dataen tilhørende kommandoen som ble sendt. Dette er et 14-bits tall, fordelt på 2stk 8bits registre. Merk at MSB (most significant bit) alltid skal være lav.
Adresse-register for compact protocol
| Komando |
Adresse |
Note: |
| Set Posisjon | 0x84 | Angir posisjon servoen skal gå til |
| Set Hastighet | 0x87 | Setter hastigheten servoen skal gå med |
| Set Akselerasjon | 0x89 | Setter akselerasjonen servoen skal akselerere med |
| Les posisjon | 0x90 | Leser servoens nåværende posisjon, 2 bytes: 0x90, servonummer |
| Les bevegelses-status | 0x93 | Ser om noen av servoene beveger seg (0x01), hvis ikke (0x00), 1 byte |
| Les feilkoder | 0xA1 | Feilkodene finnes her [s. 24] |
| Gå hjem | 0xA2 | Alle servoer går til utgangsposisjonen |
LabVIEW-implementasjon
Det hele er implementert i LabVIEW. Først blir com-porten satt opp med ønsket baudrate. Selve programmet kjører i en while loop. Her blir compact-protokollen sendt ut på porten.
Ettersom at protokollen sender data på en lit spesiell måte (2 stk 7-bits tall som 2stk 8-bit) er det ikke helt rett fram å sende dette ut på porten. Derfor er det laget en subVI som fikser denne konverteringa. Inn til denne sendes ønsket posisjon på servoen i μs (1500 er i senter, 1000 er helt til den ene siden, og 2000 helt til den andre siden). Så tallet må alltid holde seg mellom 1000-2000 for å ikke overbelaste servoen.
Når man kobler inn enheten blir det automatisk installert 2 COM-porter. COM-porten som skal brukes i LabVIEW er den som heter "Pololu Maestro 6-Servo Controller Command Port".

Vedlegg
|
Vedlagt ligger 2 stk LabVIEW-filer. Disse inneholder alt som trengs for å teste enheten. Klikk på "Attachment" for å laste ned. |
|
| PS: Husk å gi spenning til servoene! :Þ |
|
Lykke til!!