Snelle RC-car met GPS

Uit RobotMC.be
Ga naar: navigatie, zoeken

De Hobbyking Rattler :

Rattler 1.jpg

Dit is een uit de kluiten gewassen 4-wheel drive RC-auto met een brushless aandrijving. De "ARR" versie bevat de auto met motor, regelaar en stuurservo. Zelf moet je dus nog een RC-ontvanger / zender voorzien en 2s lipo batterij (ca 4000 mAh). Volgens Hking is dit een 1/8 schaal offroad buggy, maar eigenlijk is het een groot uitgevallen 1/10 schaal. De reden dat ik voor deze wagen koos is de prijs (ca 150 €, warehouse Europa), en de positieve reviews op internet. Je vindt ook talloze videos op youtube over deze auto. De snelheid zo uit de doos is aanzienlijk : op 2s lipos haalt deze wagen direct 50 km/h ! Met 3s lipo zelfs 75 km/h. Voor het echte gooi en smijtwerk zou wel de regelaar te licht zijn : deze schakelt dan uit wegens te warm. Hier de link : https://hobbyking.com/nl_nl/h-king-rattler-1-8-4wd-buggy-rtr-with-60a-esc.html?___store=nl_nl

Youtube filmpje van GPS-prestaties :

Dit filmpje toont hoe de Rattler een eenvoudig rechthoekig parcours (30*12m) aflegt :


https://www.youtube.com/watch?v=L_Jshh8BfnU

Zowel snelheid als richting worden autonoom geregeld. Opvallend : zelfs als Rattler begint te slippen in de bochten, stuurt het algoritme steeds naar de juiste richting.

Een filmpje in de winter : wat doet het regelalgoritme als het glas is ?

https://www.youtube.com/watch?v=PtJ49IMEenc


De hardware om met GPS te rijden :

De gekozen hardware is gebaseerd op mijn eerdere ervaringen met de Tamiya Mini :

Processor bordje is een STM32 F407 discovery (168 MHz, FPU). GPS is wederom de Ublox M8N Snelheidsmeting motor met een hal-sensor NXP KMI18 Loggen gps-data, kompas en snelheid met de Wemos D1 Serieel naar PC met een BT HC05 Als IMU de MPU9250 Visuele status-info met een ledstrip WS2812 RC ontvanger is een Simprop 35 MHz (Old school !) Nog extra 4AAA NiMh accus voor een stabiele voeding Programmeeromgeving is Coocox Onder de carosseriekap van de Rattler is er voldoende plaats om al deze componenten in te bouwen.

Voeding via BEC motorsturing

Zoals bij mijn andere RC-car dacht ik de voedingsspanning via de BEC (battery elimantion circuit) van de ESC te voorzien. Maar, bij de eerste testen bleek al snel dat deze BEC niet eens de stroompulsen van de stuurservo kon afdekken ! Zo gauw als er snelle stuurcommandos worden gegeven, zakt de spanning in tot onder de 2.5 Volt ! Zelfs de RC-ontvanger hield er dan even mee op, en ook de BT HC05, GPS en MPU waren hier niet van gediend. In de afbeelding zie je een screenschot van het spanningsverloop (boven = 6V voeding, onder = 3V van de µ F407). In principe zou de ESC 1.5 A moeten leveren bij 6 V.

Rattler ESC.png

De remedie : Ik heb gewoon een 4*NiMH AAA cellen parallel aangesloten. Het idee : de cellen worden automatisch bijgeladen, want de spanning van de BEC is ca 6V. Indien de spanning sterk daalt, zullen deze cellen stroom bijleveren. Werkt prima, was het niet dat de BEC ook hier weer moeilijk deed : bij het opstarten checkt deze eerst de spanning, indien hier spanning aanwezig is, gaat de BEC er vanuit dat hij geen spanning mag leveren ! Een extra diode van BEC naar batterijpakket bracht redding... Deze diode brengt ook de 6 V naar een gezonde 5.6 Volt, dit is veiliger voor de Discovery F407.

Snelheidsmeting met Hall sensor

Dit was een meevaller : ik kon de Hall sensor eenvoudig vastkleven op de buitenkant van de (brushless) motor ! Bij een brushless motor draaien immers de magneten (rotor), en de spoelen (stator) staan stil. Het veld van deze magneten is zo krachtig dat de hall sensor dit signaal zelfs doorheen de stator kan meten ! Ook als de motor aangestuurd wordt, bleef het signaal perfect. Het betreft hier ook een synchroon motor, de rotor moet het veld van de stator volgen. Met 2s lipos kon ik een frequentie meten van ca 150 tot 700 Hz. Mijn hall sensor (NXP KMI18) geeft bij elke wisseling van poolpaar ook een signaal wisseling. Deze worden dan met een interrupt geteld. Elke 50 ms wordt dan de teller uitgelezen en gereset. Het bruikbare snelheidsbereik is dan ca 15 tot 70 pulsen/50 ms.

Hall sensor.jpg

MPU 9250

De plaats van de MPU moet met zorg gekozen worden : magnetische strooivelden van de motor of magnetische materialen (staal, ijzer) zijn te vermijden. De sensor kreeg dus een plaats dicht aan de vooras, bovenop de alu dwarsversteviging. Na kalibratie van offsets had ik een vrij nauwkeurige meting van het magnetisch noorden. De sensor staat opgesteld met de X-as in de rijrichting, hiermee is rekening te houden als het het "Madgwick" algoritme aanroept :

MadgwickQuaternionUpdate(-ax,-ay, az, -gx*PI/180.0f, gy*PI/180.0f, gz*PI/180.0f,-my,-mx,mz);//Rattler

600px

De versnellingen zijn hier in "g", rotatiesnelheid in "°/s" en magnetisch veld in "milligauss". De gyro en acc wordt aan 200 Hz uitgelezen, de magneetsensor aan 100 Hz.

Opbouw van alle componenten

Onder de kap is er ruim plaats voor al de componenten. Hiertoe heb ik eerst een triplex plankje op het alu verstevigingsprofiel bevestigd. Hierop komt dan een gaatjesprint waarop de headers en de processorprint worden gesoldeerd. Volgende aansluitingen zijn voorzien :

MPU9250, GND, 3.3V, SDA en SCL Ublox M8n : GND, 5V, Tx en Rx Wemos D1 : GND, 5V, Tx en Rx Ontvanger : GND, 5V, somsignaal RC-servo sturen : GND, 5V en servosignaal RC-ESC : GND, 5V en servosignaal Led strip WS2812 : GND, 5V en signaal Speed sensor : GND, 5V en signaal Op de discovery print zijn wel niet alle pinnen vrij, ik dus wel andere pinnen moeten gebruiken dan bij de Nucleo F411. De meeste componenten kunnen gewoon met 5V gevoed worden (komt van de ESC/ 4AAA batterijen), maar de MPU mag maar met 3.3V gevoed worden. Deze voeding komt van de discovery print.

Rattler 2.jpg