Internet Arduino kontrollerade T-spåret XY bord (9 / 10 steg)
Steg 9: Elektronik och
Vi använde Pololu Jrk 21v3 USB Motor Controller med Feedback (JRK) - dessa styrenheter fungerar som elektroniken i en hobby servo, men har mycket mer kontroll - du kan ställa in PID parametrar, motor riktning, sortiment etc. via ett Windows-program och USB-kontakten, och de har flera inmatningsmetoder för kontroll (R/C signaler, serial) och feedback (vi använde den linjära spänningen - potentiometer). För ursprungliga sandlådan, är vi nu använder en av dessa för X-axeln, och fortfarande använder en modifierad (för kontinuerlig rotation) hög hastighet, hög effekt servo för Y-axeln (som kräver mindre ström att flytta).
Innan du använder Arduino, vi ansluten JRK kontrollanterna en i taget till en PC och brukade konfigurationsverktyget setup JRK styrenheter.
Med JRK styrenheter, kan PID algoritmen trimmas ganska tight så vi är nära, men inte så exakt som några CNC uppställningar. Men det är mycket mer än vad vi behövde för vårt program. För 200 RPM motorer vi använde på X-axeln, vi hamnade med P = 3.5, jag = 0 och D = 20. Vi är inte experter på detta, och kanske de kan anpassas bättre. Vi använder automatisk skalning av input - träningsläget att göra utbudet av rörelse karta till full 0-4095 utbud. Detta kommer att göra i kontrollprogrammet lättare att installera eftersom det inte behöver någon kalibrering eller rad konstanter än 0 och 4095 - något vi inte hade med den tidigare projektets servomotorer.
Controller och Ethernet-anslutning
Det finns många alternativ till sätta den här upp för Internet control. För det tidigare projektet, vi använde en Siteplayer Telnet Ethernet till seriell modul ansluten direkt till en Lynxmotion SSC-32 servo controller och servo eller JRK styrenheten ansluts till vetenskapliga Styrkommittén med R/C kommando-läge. Detta är en bra setup för webbserverkontroll eftersom den behöver endast telnet-kommandon (lätt i PHP) att kontrollera den så länge som webbservern buffertar och skickar kommandon fint. Lynxmotion SSC-32 kan också kommandona som ska köras under en angiven tidsperiod (vanligtvis ett par sekunder), så sned flyttar fungerar bra med timing - kortare avstånd axeln rör sig långsammare.
För detta projekt beslutat vi att använda en Arduino för att köra JRK styrenheter. Så, vi behöver då kommandona position att göra X och Y-axlarna flytta ihop jämnt. Vi kunde också ha använt Arduino för att köra en Lynxmotion SSC-32, men eftersom JRKs också ta seriell kommandon direkt, det verkar renare att en mindre uppsättning styrelser.
För att ansluta JRKs till Arduino, använde vi bara TX stiftet på Arduino trådbunden till både RX stift på JRKs - en enkel en Y kabel sedan JRKs var och en har en adress som används i kommandon, de kan bara anslutas till samma TX stift. Motorerna är kopplade till A och B kontakter, och + 12v och Gnd till dessa kontakter. Se till att de Arduino och JRK styrenheter dela jordledaren så TX fungerar. Vi använde en PC-nätaggregat så vi hade 12v för motorerna och 5v för Arduino.
Här är Arduino skiss vi använde för att testa flytta tabellen XY till slumpmässiga positioner. Det visar hur man gör timing slingan för JRK styrenheter, så de diagonala rörelserna blir rak. Denna kod använder klockan då ståndpunkten på varje slinga. Genom att inte använda förseningar, tillåter vi för nästa steg att lägga till Ethernet Shield och med Arduino som webbserver också.
Som innan, vi kunde använda en Ethernet till seriell enhet som Siteplayer Telnet för att skicka kommandon till Arduino, men vi kan också använda en Ethernet Shield för att köra Arduino. Bilderna visar denna setup och enkel web UI vi används för att testa. Det finns inga datorer eller webbservrar - hela webbservern på Arduino + Ethernet Shield! Skiss för denna inställning är här. Du kommer att behöva lägga in din egen IP-adress, och vi hade en port forwarding inställning på vår brandvägg för att få det att fungera.
Som Arduino web UI skulle kunna utvidgas för att tillåta flera kommandon, sparar dem i en matris på Arduino och spela upp rörelserna i sekvens. När vi får denna inställning för TeleToyland, kommer att vi göra det, eller fortsätta att använda servern för buffring av dem som tidigare.
Slutliga ledningar anteckningar
I slutet, vi använde en Arduino Mega för att få extra minnesutrymme att buffra kommandon - det bör finnas utrymme för ungefär 1.700 av kommandona 4 byte vi använt.
För projektet, vi hade 6 färger (R, Y, G, B, mjuk vit och Bright White) av LED strips - vi kunde ha använt multicolor de, men dessa var lätt att använda. För att driva dem, använde vi IRLB8721 N kanal Power MOSFETs från Adafruit. De är mycket lätt att använda. Stift 1 går till en Arduino i/o pin, Pin 2 går till Gnd sida av lampan, och Pin 3 går till makt leverans marken. Den LED + pin går till den + 12v strömförsörjning.
Vi använde två mer MOSFETs - en för servo som rör sig upp och ner pennan och en för att kontrollera en DPDT relä som kopplar motorerna när de inte används. Vi på TeleToyland eftersom det finns perioder utan användning, och att hålla servo och motorer drivs upp kommer att förkorta deras liv. Så sista Arduino koden använder vi driver dem på, har alla flyttar, sedan driver dem bort.
Det är allt. Vi hoppas att detta inspirerar dig att göra din egen web ansluten tele-robotar!