Båt Autopilot - baserat på Arduino (7 / 13 steg)
Steg 7: Prototyp #3
Ett problem som plågat de tidigare prototyperna var långsam uppdatering hastigheten. Rodret helt enkelt reagerar inte tillräckligt snabbt på en föränderlig bärande, så jag tagit med detta i min lista av mål:
- Påskynda uppdateringen av autopiloten
- Lägg till motor styrenheter
- Programmet en motor mixer
- Lägga till en mottagare
Öka hastigheten uppdatering
Det enda problemet med TinyGPS ++-bibliotek är att det är långsam. Problemet var, Arduino Uno inte går att köra två saker samtidigt (Jo det kan, men inte riktigt). En enkel lösning skulle vara att ha en annan Arduino använda TinyGPS ++-bibliotek för att tolka GPS data, sedan skicka ställning till andra autopiloten. Problemet var, hade jag en annan Arduino.
En Arduino Uno är i huvudsak en AtMega328 chip och några extra komponenter. Det är lätt att bygga din egen "Arduino" på en skärbräda, så det är precis vad jag gjorde. Härär en riktigt bra guide om hur man gör. Efter att jag byggt min skärbräda Arduino, kopplade jag upp en helt ny Ublox NEO - 6M GPS-modul på samma sätt som jag kopplade upp min tidigare GPS. Jag programmerade denna nya Arduino att använda Bill Porters Filöverföring bibliotek, och jag använde ensam ledare för att bilda ett enkelriktat seriell anslutning mellan huvudsakliga Arduino och bakbord en. Med denna nya bakbord Arduino kunde jag öka hastigheten uppdatering från 4Hz, till upp till 50Hz!
Att lägga till Motor styrenheter
Jag gillade verkligen ProtoSheild för Arduino Uno som jag var med, men jag fann att den inte har tillräckligt med utrymme att hålla två motor styrenheter. Så jag slet av den gamla, mini bakbord, och sätta i en mycket större en.
Kretsen för motor styrenhet är enkel, en MOSFET, med hjälp av PWM, styr den genomsnittliga spänning kommer att motorn. En 1 k resistor begränsar gate strömmen så att Arduino inte slockna, och en 10 k resistor håller MOSFET bort när det finns ingen ingång.
Programmera en Motor Mixer: att gå från ett roder till motorer
Denna båt har inte ett roder, men det används i stället två motorer för att styra. Jag ville dra nytta av de två motorerna istället för att limma ett servo på båten. Jag byggde redan de motoriska styrenheter, nu allt som fanns kvar för att göra är att programmera Arduino att kontrollera dessa motorer styrenheter.
Jag började med programmering en mock-up programmet i Visual Studio. Jag använde brytpunkter för att felsöka min kod, och jag fick så småningom en motor mixer. Nu alla som var kvar för att göra var överföring koden från VS till Arduino, som inte var mycket svårt, med tanke på de var mycket liknande språk (C# och C++).
Lägga till en RC mottagare
Jag la en RC mottagare till denna prototyp för manuell omställning. Det var lätt att mäta de inkommande värden med funktionen pulseIn och har autopiloten reagera på dessa värden.
Testa prototypen
Jag placerade denna prototyp i båten, motorerna är ansluten till MOSFETs och förprogrammerade en sökväg i lokala dammen. Båten var kunna slutföra den triangel väg en gång, då slutade fungera och dog. Jag var tvungen att rädda det med en uppblåsbar båt. Vänder ute, den höga spänningen från batteriet (12v), stekt spänningsregulatorer 5v.