Elektrisk rullstol Controller
Historia:
Min vän kom till mig med en enkel begäran. För att reparera hans Elektrisk rullstol efter det skadades av lighning på laddning. Stolen var försedd med en haj controller, och den öppnas, fanns svår flash-overs synliga på handkontrollen dator ombord. Man bara ytmontering komponenter, var det klart att hajen enheten var utöver ekonomiskt reparationer.
Efter försökande till få stöd i Sydafrika, och många timmar googling, var den billigaste lösningen att importera den komplett controller, sele och joystick enhet. Men totala kostnaden skulle ha varit runt ZAR10 000. Pengar har inte min vän.
"Bortom din komfort zon" tävlingsformulär
Detta är mitt inträde i "Beyond the Comfort Zone" tävlingen. Några av er kanske har sett min Instructables, och tror att bygga denna Elektrisk rullstol controller inte sträcker sig utanför min komfortzon. Men jag kommer att lista de objekt som fick mig att tänka längre än vad jag redan uppnått med Arduino Uno.
- Jag fick bara ett enda objekt, nämligen en dubbel MOS hastighet controller, och ombads att bygga den här domänkontrollanten.
- Jag gjorde nästan 95% av planeringen och utformningen av systemet, utan den faktiska skadade rullstolen tillgängliga.
- Jag har inga funktionshinder, och var tvungen att utforma systemet tänkande som en person som har inga funktioner i benen.
- Jag har aldrig satt i rullstol, och aldrig sett en elektrisk rullstol i aktion. Så hade jag ingen aning om hur de fungerar.
- Allt jag fick jobba på var den skadade controller. Jag använde detta för att få en utgångspunkt till vad styrs, och används av styrenheten. Jag kunde bestämma att systemet går på två 12V batterier ansluts i serie (24V DC), motorerna är 24V, 200W varje, och det finns en elektromekanisk bromssystem på varje motor.
- En ytterligare begäran i slutskedet av design, för att göra stolen avlägsen kontrollerade. Detta var att ge användaren mer självständighet i spara/hämta rullstolen när han lämnar sitt hus.
- Att få de reservdelar som behövs för att bygga systemet var en utmaning på egen hand. Bor i Sydafrika, var köper de olika komponenterna en utmaning på egen hand. Med en dysfunktionell postservice var eBay inte ett alternativ. Leveransen skulle ta 3-6 månader om du har tur att få ditt paket alls. Jag hade att göra med vad jag kunde få lokalt, och att hålla kostnaderna så låga som möjligt.
- Operativa begränsningar! – Detta var förmodligen den svåraste delen av konstruktionen. Att inte ha den faktiska rullstolen finns, jag var tvungen att föreskriva att lagra avsluta en hel del parametrar.
- Programminne. En massa olika funktioner fyllde snart upp i 32KB av ATMEGA328p. Optimering av koden var avgörande. Jag insåg snart att användningen av bibliotek hade måste undvikas så mycket som möjligt.
Bryta ner allt i små bitar
För att förenkla designprocessen, har jag brutit ner systemet i mindre bitar. De var:
- "Rullstol". Två motorer och Hastighetsregulatorer att testa kontroll av motorerna. Jag först bygga en liten bas med två modifierade full rotation servomotorer. Sedan som projektet började ta form, flyttade jag till en annan plats, tills jag slutade med en Rover 5 bas. Under konstruktionsfasen använde jag en själv bygga dubbla kanaler PWM varvtalsregulator.
- "Kontroller". Allt jag kunde få lokalt var en PS2/3 joystick.
- "Controller". Detta är baserat på en fristående ATMEGA328p och styr alla I/O funktioner av stolen.
- "Programmering enhet". En 16 x 2 raders LCD display, försedd med ett I2C gränssnitt. Här finns också knapparna meny och urval.
- "Aggregatet". Detta är gränssnittet mellan 24V-batterier och 5V av styrenheten. Det styr också bromsar, Batteriövervakning, aux relä och ström på/av enheten.
- Den "fjärrkontrollen". Denna består av en anpassade bygga 2.4GHx sändare och mottagare. För att göra den kompatibel med standard R/C utrustning, var enheterna avsedda att fungera som en standard PPM mottagare.
- Den "programvara". Samverkan med alla olika delar av design, men att bibehålla tillförlitlig drift av systemet. Det fanns ett par gånger att jag faktiskt har överskridit programminnet av ATMEGA328p, och var tvungen att göra drastiska optimering av koden. Men samtidigt, av kod vara så snabbt som möjligt.
- Olika "lägen". Joystick och mottagare läge krävs olika parametrar. Alla hade sömlöst införlivas design.
Provning
- Varje enhet har testats som en fristående enhet. Detta möjligt för mig att optimera programvaran för varje del av den final koden. Genom att använda denna metod, hade jag bara att koncentrera sig på en bit kod i taget, utan att påverka resten av koden. Min programvarudesign utvecklats, jag var tvungen att tänka på alla operativa möjligheter och läget för varje del av systemet.
- Men innan jag kan utforma de slutliga PC styrelser, jag var tvungen att bygga hela systemet på olika delar av bakbord. Detta möjligt för mig att den bästa möjliga metoden att införliva varje modul i det slutgiltiga systemet. Med systemet, jag var tvungen att först lära sig att göra använda av nRF24 moduler. Detta i sig orsakade vissa huvudvärk, och jag slutade så småningom bygga två Arduino sköldar för att först lära sig dessa RF-enheter, och räkna ut hur man använder sedan på en 3.3V system, makt genom 5V.
- Under varje fas av utvecklingen använde jag min "simulerade rullstol" bas för att testa varje funktion som design fortskred.
- De slutliga tester började efter att jag fått faktiska skadade rullstolen. Med slutliga controller testade, var det dags att börja ledningar upp systemet till rullstolen.
Vad lärde jag av detta projekt?
- Programstruktur. Troligen var den viktigaste delen av projektet, att få koden att köra konsekvent, och utan några buggar. Som med hårdvaran, slutade jag upp utforma varje funktion av programvaran individuellt.
- Begränsar. Endast med rullstolen tillgänglig, kunde jag testa olika gränserna för varje steg i kontrollermjukvaran. Det var där de flesta av de inställningsbara parametrarna skapades. Detta gjorde även mig att sitta i rullstolen och testa varje inställning.
- Kontroll. Del av den programvara som styr hastigheten på varje motor var den svåraste. Testa stolen, insåg jag att det inte så enkelt som att köra en fjärrkontroll bil. Stoppa stolen i full fart, resulterade i hjulen låsning, orsakar obehaglig runkar motioner. Gå bakåt i full fart, kommer att orsaka stolen för att vända bakåt när stolen är plötsligt slutade. Utan kunskap om PID kontroller slutade jag upp att utforma en metod för att styra den acceleration och retardation av stolen.
- Komfort. Jag lärde mig mycket om komfort, finare kontroller, känslighet och användarvänlighet i denna del av designen. Denna del av programvaran, tillsammans med de olika parametrar som kan programmeras, tog flera dagar att slutföra. Jag ville att rullstolen att operera utan snabba och ryckiga rörelser. Detta ändrade enligt vikten av personen i rullstol. Så slutade jag testa stolen med ett litet barn, min 14-åriga son och jag själv. Detta möjligt för mig att bestämma maximi- och minimivärden på varje parameter.
- Tänk som en person med funktionshinder. Jag hade att villkora mig själv att tänka, reagera och använder Elektrisk rullstol på samma sätt som en person med immobiliserade ben. Detta var mycket svårare att göra än från början dock. Med normala ben, man alltid använda benen för att kontrollera din tyngdpunkt, stabiliteten i stolen som din kropp balans samtidigt som man sitter och kör stolen. Under de sista testerna hade jag gå använda allvarliga tankekontroll samtidigt testa stolen. Svåraste var att simulera körning på eller en ramp, medan fortfarande inte faller ur stolen, eller vända det över stolen. Detta var en del av rullstol design där den PID kontrollen av motorerna har testats till fullo.
- Sist men inte minst, jag lärde mig att en funktionshindrad person har vissa begränsningar. Något vi alla tar för givet. Att kunna hjälpa min vän, gav jag honom tillbaka viss självständighet.