Autopilot till båt, med filmklipp
Autopilot till båt, med filmklipp
Jag har byggt en autopilot till min båt. Ska på båt semester nästa vecka, och fiska mycket, skönt att slippa tänka på ratten hela tiden.
Jag har byggt den av en skruvdragarmotor från en 12v skruvdragare jag köpte på jula. Som arm använder jag en bit av skaftet från micromoppen frida, även den inhandlad på jula. I den sitter en gängstång som sjuter det smala röret fram eller tillbaka, i det smala röret sitter det en bult. Det finns en liten microbrytare som känner av när armen är fullt indragen, bra när man ska kalibrera den. På chunken har jag limmat fast en magnet och under chunken sitter en hallefekt switch som man räknar varv med. När man kalibrerar den så drar den in armen hela vägen in tills microbrytaren ger signal, då vet man att den är längst in på position/varv 0. Är armen längst ut så är den på position/varv 150.
Elektroniken i den består i en pic16F84, som driver tre relä, via en uln2003. Två reläer använder jag till polvändning, det andra reläet ström till motorn. Har även satt en stor diod vid reläet som ger ström till motorn. Den använder jag som broms. Först slår man av strömen till motorn direkt därefter polvänder man och den stannar på ett halvt varv.
Först byggde jag med ett rc fartreglage, tänkte att man kanske skulle vilja kunna köra den lite långsamare också. Men det bara krånglade och det visade sig att jag alltid körde på fullgas hela tiden. Så det blev reläer. Funderade på h-brygga ett tag men det blev smidigare med bara reläer.
Som det ser ut nu så har jag den kopplad till en bärbardata med gps och försöker skriva i hopp så bra kåd som möjligt så att båten ska gå så rakt som möjligt med minsta möjliga svängningar. Det är inte så lätt, håller på att experimentera en massa, vill ju att den ska kunna lära sig själv hur den ska styra i olika väderförhållanden och så, man ska ju inte behöva göra massa inställningar bara för att det börjat blåsa mer.
Nackdelen med gps(nmea) är att man bara får in data var tredje sekund unigefär. Har en ju digital kompassmodul liggande, kanske skulle ta och integrera den i min autopilot.
Om jag lyckas få i hopp någon bra kåd är tanken den att jag ska lägga in den direkt i pic:en och sedan kunna koppla autopiloten direkt till gps:en utan dator.
Här är en liten idé skiss i 3d jag ritade innan bygget, visar hur den funkar.
http://web.telia.com/~u36308569/apilot3d.avi
Här är en film på hur den funkar in real life
http://web.telia.com/~u36308569/apilot.avi
Jag har byggt den av en skruvdragarmotor från en 12v skruvdragare jag köpte på jula. Som arm använder jag en bit av skaftet från micromoppen frida, även den inhandlad på jula. I den sitter en gängstång som sjuter det smala röret fram eller tillbaka, i det smala röret sitter det en bult. Det finns en liten microbrytare som känner av när armen är fullt indragen, bra när man ska kalibrera den. På chunken har jag limmat fast en magnet och under chunken sitter en hallefekt switch som man räknar varv med. När man kalibrerar den så drar den in armen hela vägen in tills microbrytaren ger signal, då vet man att den är längst in på position/varv 0. Är armen längst ut så är den på position/varv 150.
Elektroniken i den består i en pic16F84, som driver tre relä, via en uln2003. Två reläer använder jag till polvändning, det andra reläet ström till motorn. Har även satt en stor diod vid reläet som ger ström till motorn. Den använder jag som broms. Först slår man av strömen till motorn direkt därefter polvänder man och den stannar på ett halvt varv.
Först byggde jag med ett rc fartreglage, tänkte att man kanske skulle vilja kunna köra den lite långsamare också. Men det bara krånglade och det visade sig att jag alltid körde på fullgas hela tiden. Så det blev reläer. Funderade på h-brygga ett tag men det blev smidigare med bara reläer.
Som det ser ut nu så har jag den kopplad till en bärbardata med gps och försöker skriva i hopp så bra kåd som möjligt så att båten ska gå så rakt som möjligt med minsta möjliga svängningar. Det är inte så lätt, håller på att experimentera en massa, vill ju att den ska kunna lära sig själv hur den ska styra i olika väderförhållanden och så, man ska ju inte behöva göra massa inställningar bara för att det börjat blåsa mer.
Nackdelen med gps(nmea) är att man bara får in data var tredje sekund unigefär. Har en ju digital kompassmodul liggande, kanske skulle ta och integrera den i min autopilot.
Om jag lyckas få i hopp någon bra kåd är tanken den att jag ska lägga in den direkt i pic:en och sedan kunna koppla autopiloten direkt till gps:en utan dator.
Här är en liten idé skiss i 3d jag ritade innan bygget, visar hur den funkar.
http://web.telia.com/~u36308569/apilot3d.avi
Här är en film på hur den funkar in real life
http://web.telia.com/~u36308569/apilot.avi
Skulle det inte gå bra att kasadreglera rodret från GPSen ? Ena reglerkretsen styr rodret och använder kompasmodulen som givare. Detta system vill man ha så snabbt som möjligt så båten hela tiden går på inställd kurs oavsett störningar i form av vind och vågor. Sen låter man GPSen stå som givare för det andra systemet som skickar önskad kurs till första systemet. Fördelen med detta är att den andra reglerkretsen kan vara mycket långsammare vilket passar bra när GPSen ger lång dötid. Intressant projekt för övrigt
Jag har en kompassmodul liggande, en CMPS03 från lawicel. Har testat att köra en rc-båt via den, men blandade resultat, den ska ligga väldigt plant för att ge bra värden, gungande båtar verkar den inte gilla. Men jag kommer nog att testa den i alle fall, kanske inte så farligt i en större båt.
Min gps garmin etrex Venture ger ut riktningen var tredje sekund unigefär (i $GPRMC). Mitt cf-gps kort lite oftare. En kompassmodul skulle ge datan direkt utan fördröjning alls.
Det jag vill är också att autopiloten ska jobba så lite som möjligt, tillexempel om båten drar åt höger, så ska den inte hålla på och korrigera, driva, korrigera, driva osv.. utan då ska den sätta rodret i så mycket vänstersväng att det kompenserar för driften och hålla det där så länge det behövs.
Gäller bara att ha tålamod och nerver att lyckas skriva i hopp sådant program. Fuzzy logic kanske
Det är tänkt att jag ska koppla pic:en direkt till gps:en, anledningen till att jag har en bärbardator nu mellan gps:en och pic:en är ju att jag håller på och programmerar, försöker få till ett så bra program som möjligt. Sen när jag är klar med det ska jag skriva om det till picen och koppla gps:en direkt till picen. Det skulle vara jobbigt att behöva programera om picen varje gång man gör en liten ändring, speciellt när man är ute på sjön.
Jag ska testa med mer programmering innan jag börjar med kompass modul idén. Har ju en hel veckas båt semester programmerande att göra och hinner inte att sätta in kompassmodulen innan.
Det borde nog räcka med den riktning data jag har att tillgå nu.
Hur lång tid det är mellan datan beror ju på hur mycket övrig nmea
data som spottas ut också. En puck tillexempel matar ju inte ut lika mycket som en hand gps. Hand gps:en matar ju ut mycket fler meningar om, waipoint info, crosstrack error osv..
Styr man båten själv i lungt väder så är det inte alls så ofta man måste röra på rodret, tänkte att jag skulle göra något sånd i programet.
Tillexempel att autopiloten får bara röra på sig en gång var 30:de sekund, om inte felkursen överstiger x antal grader, då får den röra sig även att det inte gått 30 sekunder.
Jag ska testa med mer programmering innan jag börjar med kompass modul idén. Har ju en hel veckas båt semester programmerande att göra och hinner inte att sätta in kompassmodulen innan.
Det borde nog räcka med den riktning data jag har att tillgå nu.
Hur lång tid det är mellan datan beror ju på hur mycket övrig nmea
data som spottas ut också. En puck tillexempel matar ju inte ut lika mycket som en hand gps. Hand gps:en matar ju ut mycket fler meningar om, waipoint info, crosstrack error osv..
Styr man båten själv i lungt väder så är det inte alls så ofta man måste röra på rodret, tänkte att jag skulle göra något sånd i programet.
Tillexempel att autopiloten får bara röra på sig en gång var 30:de sekund, om inte felkursen överstiger x antal grader, då får den röra sig även att det inte gått 30 sekunder.
Mycket intressant projekt!
Har en autopilot till segelbåten som fungerar enligt samma mekansika princip.
I den sitter det däremot någon form av kompass modul. Är väldigt känslig.
Den svänger ganska mycket i början för att sedan stabilisera kursen.
Får man fråga vilka vatten du trafikerar?
Lycka till i fortsättningen!
Har en autopilot till segelbåten som fungerar enligt samma mekansika princip.
I den sitter det däremot någon form av kompass modul. Är väldigt känslig.
Den svänger ganska mycket i början för att sedan stabilisera kursen.
Får man fråga vilka vatten du trafikerar?
Lycka till i fortsättningen!
Nu är jag hemma igen efter båtsemestern. Vi åkte från domsands båthamn i bankeryd (nordväst om jönköping). Upp till olshammar med skärgård längst upp i vättern och hade det jättebra. Vi åkte på tisdagen den 13:de juni och kom hem på fredagen.
När vi började vår resa så satt jag och programmerade och lyckades få i hopp ett jättebra program, som styrde båten nästan helt spikrakt, och som ställer in sig själv typ. Det bygger på två variablar, roderlägen för korrigera till höger respektive vänster.
Autopiloten räknar ju varv, position 0 = armen fullt indragen(högersväng), position 150 = fullt ute(vänstersväng).... 75 ska ju då vara rakt fram, men det kan ju variera beroende på vind, strömmar, släpande fiskesaker osv.
de två variablerna är då, koriggera till höger och vänster. Typ
korr_h = 70 'position 70 är då lika med en jätteliten högersväng
korr_v = 80 'och position 80 = jätteliten vänstersväng
När då datan kommer in att båtens kurs är lite för mycket till höger, så läser programmet av variabel korr_v och sätter rodret till den positionen så den svänger lite till vänster. Men nu säger vi att det har börjat blåsa lite från vänster så att det inte är tillräckligt med position 80. Då ändras båda variablerna, korr_v och korr_h med +3 dvs, korr_v blir 83 och korr_h blir 73. Sen kollar den ju igen om det va tillräckligt, om inte så ökar den variablerna med 3 till. Mellanrummet mellan variablerna är ju här 10 (80-70), men det kan ändras beroende på hur många gånger programmet måste korrigera höger och vänster variablerna. Är det mycket vågor på sjön så måste ju mellanrummet vara större så att autopiloten blir mer aggressiv.
Undrar om någon fattade något alls av vad jag menar, är ju inte världens bästa förklarare
Dock så slutade autopiloten att fungera efter vi passerat visingsö, det va ju så väldigt varmt den dagen så den överhettade. Så hade jag glömt lägga in en liten paus i programmet i pic:en, efter sista minuten ändringar. Pausen skulle vara till att vänta på reläerna, så att inte strömmen kortslöts. Men utan den pausen så kortslöts strömmen under någon millisekund varje gång reläerna drog och det blev varmare och varmare, tillslut så hade kablar smällt i den och pic:en dött. Så det blev manuell styrning resten av resan.
Som det ser ut nu är all elektronik i autopiloten ihoppbyggd på experiment laminat(kopparöar) och massa sladdar lödda på reläerna. Hade tänkt bygga det på riktigt nu i stället, och etsa kretskort och så. Jag kan nog behöva lite hjälp med, hur jag ska bygga elektroniken sen också... Återkommer med det hoppas ni haft en trevlig midsommar
När vi började vår resa så satt jag och programmerade och lyckades få i hopp ett jättebra program, som styrde båten nästan helt spikrakt, och som ställer in sig själv typ. Det bygger på två variablar, roderlägen för korrigera till höger respektive vänster.
Autopiloten räknar ju varv, position 0 = armen fullt indragen(högersväng), position 150 = fullt ute(vänstersväng).... 75 ska ju då vara rakt fram, men det kan ju variera beroende på vind, strömmar, släpande fiskesaker osv.
de två variablerna är då, koriggera till höger och vänster. Typ
korr_h = 70 'position 70 är då lika med en jätteliten högersväng
korr_v = 80 'och position 80 = jätteliten vänstersväng
När då datan kommer in att båtens kurs är lite för mycket till höger, så läser programmet av variabel korr_v och sätter rodret till den positionen så den svänger lite till vänster. Men nu säger vi att det har börjat blåsa lite från vänster så att det inte är tillräckligt med position 80. Då ändras båda variablerna, korr_v och korr_h med +3 dvs, korr_v blir 83 och korr_h blir 73. Sen kollar den ju igen om det va tillräckligt, om inte så ökar den variablerna med 3 till. Mellanrummet mellan variablerna är ju här 10 (80-70), men det kan ändras beroende på hur många gånger programmet måste korrigera höger och vänster variablerna. Är det mycket vågor på sjön så måste ju mellanrummet vara större så att autopiloten blir mer aggressiv.
Undrar om någon fattade något alls av vad jag menar, är ju inte världens bästa förklarare
Dock så slutade autopiloten att fungera efter vi passerat visingsö, det va ju så väldigt varmt den dagen så den överhettade. Så hade jag glömt lägga in en liten paus i programmet i pic:en, efter sista minuten ändringar. Pausen skulle vara till att vänta på reläerna, så att inte strömmen kortslöts. Men utan den pausen så kortslöts strömmen under någon millisekund varje gång reläerna drog och det blev varmare och varmare, tillslut så hade kablar smällt i den och pic:en dött. Så det blev manuell styrning resten av resan.
Som det ser ut nu är all elektronik i autopiloten ihoppbyggd på experiment laminat(kopparöar) och massa sladdar lödda på reläerna. Hade tänkt bygga det på riktigt nu i stället, och etsa kretskort och så. Jag kan nog behöva lite hjälp med, hur jag ska bygga elektroniken sen också... Återkommer med det hoppas ni haft en trevlig midsommar
Det är en PI-regulering du beskriver.
P = Propotionellt
I = Integrerande
Alltså är styrsignalet (antal pulser +/-) et resultat av den direkta avvikelse (P) samt en summerande avvikelse (I, "still not there, one more notch please")
Låter helt bra att du fick rill det så bra, fixa bara nya sladder och delayen och åk på semester 1 gång till vetja Måste ju testas!
P = Propotionellt
I = Integrerande
Alltså är styrsignalet (antal pulser +/-) et resultat av den direkta avvikelse (P) samt en summerande avvikelse (I, "still not there, one more notch please")
Låter helt bra att du fick rill det så bra, fixa bara nya sladder och delayen och åk på semester 1 gång till vetja Måste ju testas!