Stap 7: Prototype #3
Een probleem dat de vorige prototypes geteisterd was de trage Bijwerksnelheid. Het roer gewoon reageren niet snel genoeg aan een veranderende lager, zodat ik die in mijn lijst met doelstellingen opgenomen:
- Verhoog de snelheid van de update van de automatische piloot
- Motor domeincontrollers toevoegen
- Programma een motor mixer
- Het toevoegen van een ontvanger
Verhogen van de snelheid van de update
Het enige probleem met de TinyGPS ++ bibliotheek is dat het langzaam. Het probleem was, de Arduino Uno kan niet twee dingen tegelijk kan worden uitgevoerd (ook wel, maar niet echt). Een eenvoudige oplossing zou zijn om een ander Arduino gebruik maken van de bibliotheek TinyGPS ++ GPS gegevens parseren en vervolgens de positie verzenden de andere automatische piloot. Probleem was, ik heb niet een ander Arduino.
Een Arduino Uno is in wezen een AtMega328 chip en enkele extra onderdelen. Het is gemakkelijk om te bouwen van uw eigen "Arduino" op een breadboard, dus dat is precies wat ik deed. Hieris een werkelijk goede gids op hoe dat te doen. Nadat ik mijn breadboard Arduino gebouwd, ik aangesloten een gloednieuwe Ublox NEO - 6M GPS-module op dezelfde manier dat ik mijn vorige GPS vastgehaakt. Ik deze nieuwe Arduino gebruiken Bill Porter's Easy Transfer bibliotheekgeprogrammeerd, en ik gebruikte één draad te vormen van een unilaterale seriële verbinding tussen de belangrijkste Arduino en het breadboard een. Met deze nieuwe breadboard Arduino kon ik de snelheid van de update van 4Hz, tot maximaal 50Hz te verhogen!
Motor Controllers toe te voegen
Ik hield werkelijk van de ProtoSheild voor de Arduino Uno die ik gebruikte, maar ik vond dat het voldoende ruimte om te houden van twee motor controllers niet hebt. Dus ik het oude, mini breadboard opgelicht, en zet in een veel groter is.
Het circuit voor de motorcontroller is eenvoudig, dat een MOSFET, met de hulp van PWM, bepaalt de gemiddelde spanning naar de motor. Een 1 k weerstand beperkt de huidige poort zodat de Arduino niet burn-out, en een 10 k ohm weerstand de MOSFET houdt uitgeschakeld wanneer er geen input is.
Programmeren van een Motor Mixer: gaande van een roer tot motoren
Deze boot beschikt niet over een roer, maar in plaats daarvan, het maakt gebruik van twee motoren te sturen. Ik wilde om te profiteren van de twee motoren in plaats van een servo lijmen de de boot. Ik bouwde al de motor controllers, nu alles wat overbleef om te doen is het programma van de Arduino te controleren van deze motoren controllers.
Ik begon bij de programmering van een mock-up programma in Visual Studio. Ik gebruikte onderbrekingspunten te zuiveren van mijn code, en uiteindelijk had ik een motor mixer. Nu alles wat overbleef om te doen was overdracht de code uit de VS aan de Arduino, die was niet heel moeilijk, gezien zij zeer gelijkaardig talen (C# en C++).
Het toevoegen van een RC-ontvanger
Ik heb een RC ontvanger toegevoegd aan dit prototype voor handbediende keuzehefboom. Het was gemakkelijk te meten van de binnenkomende waarden met de functie pulseIn, en de automatische piloot reageren op deze waarden.
Testen van het Prototype
Ik plaatste dit prototype in de boot, de motoren op de MOSFETs aangesloten, en voorgeprogrammeerd een pad in de lokale vijver. De boot was in staat om de driehoek pad uitvoeren zodra, dan gestopt met werken en stierf. Ik had om het te redden met een opblaasboot. Turns out, de hoge spanning van de accu (12v), gebakken de spanningsstabilisatoren 5v.