Stap 9: Elektronica en controle
We gebruikten de Pololu Jrk 21v3 USB-Motor Controller met Feedback (JRK) - deze controllers werken als de elektronica in een hobby servo, maar veel meer controle - kunt u de parameters van de PID, de motor richting, het bereik etc. via een Windows-programma en de USB-connector instellen, en ze hebben verschillende invoermethoden voor controle (R/C-signalen, serial) en feedback (we gebruikten de lineaire spanning - potentiometer). Voor de oorspronkelijke sandbox, zijn wij nu met behulp van een van deze voor de X-as, en nog steeds met behulp van een gemodificeerde (voor continue rotatie) snelle, high-power servo voor de Y-as (die moet minder macht te verplaatsen).
Voordat u de Arduino, wij de JRK reservedomeincontrollers een tegelijk met een PC verbonden en het configuratieprogramma gebruikt om setup van de JRK-controllers.
Met de JRK-controllers, kan het PID-algoritme vrij strak dus we dicht, maar niet zo nauwkeurig als sommige CNC opstellingen zijn worden afgestemd. Maar, het is veel meer dan we nodig voor onze toepassing. Voor de 200 RPM motoren we op de X-as gebruikten, we eindigde met P = 3.5, ik = 0 en D = 20. We zijn geen experts op dit, en misschien ze beter kunnen worden afgestemd. We zijn met behulp van de automatische schaling van de input - de opleidingswijze aan te brengen in het bereik van beweging kaart de volledige 0-4095 bereik. Hierdoor wordt het besturingsprogramma gemakkelijker te installeren aangezien het niet nodig een kalibrerings- of gamma-constanten zijn dan 0 en 4095 - iets wat we niet met het vorige project servomotoren hadden.
Programmering van de Controller en Ethernet-verbinding
Er zijn vele opties om dit ingesteld voor Internet control. Voor het vorige project, we gebruikten een Siteplayer Telnet Ethernet naar serieel module aangesloten rechtstreeks op een Lynxmotion WS-32 servo controller, en de servo of JRK controller stekkers in de WS met behulp van de R/C commando-modus. Dit is een goede setup voor server webbesturingselement aangezien het vergt enige Telnet-opdrachten (makkelijk in PHP) om het te controleren, zolang de webserver buffers en de opdrachten mooi stuurt. De Lynxmotion WS-32 kunt ook de opdrachten moeten worden uitgevoerd gedurende een ingestelde tijd (een paar seconden meestal), dus schuin beweegt goed werken met de timing - de kortere afstand as meer langzaam.
Voor dit project, dat we besloten om het gebruiken van een Arduino voor het uitvoeren van de JRK-controllers. Dus, we moeten tijd de positie-opdrachten voor het maken van de X en Y-assen gelijkmatig tegelijk te verplaatsen. Wij kan ook de Arduino gebruikt om te rijden een Lynxmotion WS-32, maar aangezien de JRKs kunnen ook worden gebruikt om seriële opdrachten rechtstreeks op te nemen, lijkt cleaner te hebben een minder aantal planken.
Om de JRKs verbinden met de Arduino, gebruikte we enkel de TX-pin op de Arduino aangesloten op beide RX pinnen op de JRKs - een eenvoudige één draad Y kabel sinds de JRKs hebben elk een adres gebruikt in de opdrachten, ze kunnen alleen worden aangesloten op de dezelfde TX-pin. De motoren zijn aangesloten op de aansluitingen voor A en B, en + 12V na contact en Gnd aan die connectors. Controleer of de controllers van het Arduino en JRK delen van de draad van de grond, zodat de TX werkt. We gebruikten een PC power supply, dus we 12v voor de motoren en 5v voor de Arduino hadden.
Hier is de Arduino schets we gebruikt om te testen de XY-tabel verplaatsen naar willekeurige posities. Het laat zien hoe om te doen de timing lus voor de JRK-controllers, zodat de diagonale zetten rechte zal worden. Deze code gebruikt de klok voor de tijd van de positie op elke lus. Door niet met behulp van vertragingen, laten we voor de volgende stap van het toevoegen van de Ethernet-Shield en de Arduino ook als een webserver waarop wordt uitgevoerd.
Zoals vóór, we een Ethernet naar serieel apparaat zoals de Siteplayer Telnet gebruiken kunnen om opdrachten te verzenden naar de Arduino, maar we ook een Ethernet-Shield gebruiken kunnen om het uitvoeren van de Arduino. De afbeeldingen tonen dat setup en de eenvoudige web UI we om te testen gebruikt. Er zijn geen PC's of webservers - de gehele webserver bevindt zich op de Arduino + Ethernet-Shield! De schets voor dat setup is hier. U zal moet zetten in uw eigen IP-adres, en we hadden een poort forwarding instellen op onze firewall te laten werken.
Dat Arduino web UI kan worden verlengd zodat meerdere opdrachten, opslaan in een array op de Arduino, en de bewegingen in de juiste volgorde afspelen. Zodra we deze opstelling te voor TeleToyland krijgen, zullen we dat doen, of blijven gebruiken van de server om hen als voordat de buffer.
Definitieve bedrading notities
Op het einde, we een Arduino Mega gebruikt om de geheugenruimte voor de extra buffer de opdrachten - moet er ruimte voor ongeveer 1.700 van de opdrachten van de 4 byte die we gebruikt.
Voor het project, hadden we 6 kleuren (R, Y, G, B, Soft White en Bright White) van LED strips - we degene multicolor kon gebruikt hebben, maar deze waren gemakkelijk genoeg om te gebruiken. We hebben gebruikt voor het aandrijven van hen, IRLB8721 N kanaal Power MOSFETs van Adafruit. Ze zijn zeer makkelijk te gebruiken. Pin 1 gaat naar de pin van een Arduino i/o-Pin 2 gaat naar de kant van de Gnd van de LED en Pin 3 gaat naar de macht levering grond. De LED + pin gaat naar de + 12v stroomtoevoer.
We gebruikt twee meer MOSFETs - één voor de servo dat de pen op en neer beweegt, en één om een DPDT relais waardoor de motoren de verbinding verbreekt als ze niet worden gebruikt. We doen dit op TeleToyland omdat er perioden met geen gebruik zijn, en de servo en motoren aangedreven omhoog houden hun leven zal verkorten. Dus de definitieve Arduino code we gebruiken hen op, doet alle bewegingen bevoegdheden, zet ze dan uit.
That's about it. We hopen dat dit inspireert je om het maken van uw eigen web aangesloten tele-robots!