Hur man driva Dynamixel AX-12A servon (med en RaspberryPi) (3 / 6 steg)
Steg 3: Glädjen av UART kommunikation
Till skillnad från andra servon bemöta Dynamixel inte PWM signaler, men ett något mer komplicerat protokoll av instruktioner för läsning och skrivning på dess minne. Denna kommunikation sker över en halv duplex UART-port, använda endast en tråd för både sändning och mottagning.
Vad detta innebär är att vi behöver bygga en liten krets som omvandlar full duplex till halv duplex, om vi vill använda en Raspberry Pi eller en Arduino (eller en annan mikrokontroller med en full duplex seriellt gränssnitt) för att styra dessa motorer.
De AX-12 manualen från 2006 rekommenderar denna krets:
Det är i grunden en tri-buffring system för medla bussen; Det ser till att när registeransvarige sänder, bussen inte är ansluten till Rx stift, och att när det räknar med att ta emot, det inte drivs av Tx PIN-koden.
Istället för att använda en 74HC126 och en 74HC04, använde jag en 74LS241 (som rekommenderas här), eftersom det redan har inbyggda förmåga att aktivera hälften av dess buffertar med en hög signaler, och den andra hälften med en låg signal.
Schematiskt för kretsen hamnade jag använder, och en enkel PCB design är uppe i 123D.circuits.