Bring innovation to life RF433 Full Calculation Versie ... · Het berekenen van de waarde voor het...
Transcript of Bring innovation to life RF433 Full Calculation Versie ... · Het berekenen van de waarde voor het...
Bring innovation to life
BITL Ackermann Sturing 4DC Servo RF433 Full CalculationVersie leerkrachten
Bring innovation to life
De presentatie BITL DC motor sturing Tank met RF433 zou geen geheimen meer mogen bevatten In deze presentatie gaan we uit van de kennis reeds opgebouwd in de tank sturing.We maken gebruik van dezelfde remote sturing dan bij de Tank sturing. Let wel op dat je zorgt dat je verschillende RF ID codes gebruikt. Verder verwijzen we naar BITL Ackermann Sturing 4DC Servo RF433 Table. Hierbij wordt de besturing gerealiseerd door middel van een “off line” berekening.
In de presentatie wordt verwezen naar een aantal assumpties die eigen zijn aan power gebruik en rekencapaciteit van de processor. Voor deze specifieke onderdelen worden ook afzonderlijke presentaties gemaakt. Die presentaties zijn een basis voor IoT of FoF of factory of the future design. Je bepaalt zelf of je die bijkomende presentaties wenst te bestuderen of niet.De presentatie BITL Arduino Low Power Control geeft je een theoretische inzicht en enkele metingen in het gebruik van Arduino low power;
Wij hebben vastgesteld dat de kennis : low power, beperkte rekencapaciteit, data security basissen voor IoT weinig besproken worden. Nochtans zijn die fundamenteel. Ook omdat er weinig literatuur en uitgewerkte voorbeelden bestaan kan het best zijn dat onze visie niet de enig juiste is. Opmerkingen zijn dan ook steeds meer dan welkom.
Bring innovation to life
Training Fusion360Training Fusion360
▫ Leerkrachten hebben RTC training gevolgd▫ VDAB opleiding Fusion360▫ Online training en forum Fusion360
Leerlingen IB hebben nu een opleiding 3D ontwerp en realisatie ipv Fotoshop.
Hierbij wordt gekozen voor Fusion360 en S3D
Bring innovation to life
Het KdG document is een beschouwing voor het mechanisch ontwerp. Voor het schrijven van de juiste UNO software zijn de RTC Antwerpen Ackermann beschouwingen noodzakelijk, presentatie. Het document aangemaakt door KdG is onvoldoende om de software sturing te realiseren. KdG geeft ook aan dat dit complex is maar zonder software sturing heeft het project weinig zin.
Omdat wij het aspect wiskunde in de STEM projecten bij IB belangrijk vinden hebben wij een “correcte” implementatie gemaakt van het Ackermann principe. Uit de groep van 18 leerlingen hebben wij 4 leerlingen geselecteerd die een grondige opleiding gekregen hebben van die presentatie. De andere leerlingen gebruiken het KdG document. Bij vragen dienen de leerlingen het “ondersteunend” team te raadplegen. Uiteraard is de presentatie met een ieder gedeeld. Zoals wij veracht hebben is het tekenen van de trucks stuurinrichting geen probleem met het document van KdG. Het schrijven van de software, maar ook de architectuur die wij hen als leerkrachten hebben opgelegd, is voor de meeste leerlingen toch wel een uitdaging geweest. De leerlingen hebben de testfase van google rekenblad en excel die afgerond. De eerste implemantatie in vb.net wordt nu gerealiseerd.
Indien je nu geen gebruik wenst te maken van de off-line rekentechniek dan kan je niet anders om alle berekeningen uit te voeren in real time op de arduino. Arduino is niet geschikt voor floating point berekeningen en heeft ook zeer beperkte rekencapaciteit. Zeker de goniometrische functies dienen in detail bekeken te worden.
Deze situatie kan leiden tot twee situaties.1. De rekentijd wordt onaanvaardbaar lang waardoor de sturing niet meer functioneert.2. De UNO is steeds bezig met de berekeningen, RF en motorsturing waardoor de UNO niet in lower power mode kan
geplaatst worden.
Bring innovation to life
Opleiding Ackermann▫ KdG hogeschool ontwerp document▫ RTC Antwerpen Ackermann beschouwingen
Bring innovation to life
Opleiding IoT low power▫ RTC Antwerpen Engie project IoT
Gegeven de beperkte rekencapaciteit van de Arduino UNO dient er offline software geschreven te worden. Dit is aan bod gekomen bij het RTC Engie IOT STEM project. De presentatie BITL Arduino Low Power Control ligt deze bewerking toe. Zoals reeds aangegeven gaat de reken behoefte van onze toepassing ertoe leiden dat de Low Power Control niet benut kan worden.
Bring innovation to life
Design 3D trucks▫ Selectie internet canvas▫ Projectie tekenen▫ Slicing
▫ Dak▫ Kabine UNO gedeelte▫ Kabine aansluiting chassis▫ Motor Ophanging▫ Stuurinrichting▫ Afronden
Bring innovation to life
Review 3D printsKlassikaal onder leiding van leerkrachten en support team
Aanpassing van ontwerp
ofwel
Slicing s3d en start print
Print overzicht wordt beheerd door leerkrachten.
De 3D prints voor de realisatie met Table of Full Calculation is identiek. Je kan dus op dezelfde hardware de twee benaderingen testen … en meten.
Bring innovation to life
Ackermann excel realisatieIedere leerling maakt een volledige analyse, ontwerp en implementatie van het Ackermann principe in excel
Input : afmetingen van spoorbreedte, fusee, banden, stuurstang …
Output : de vier toerentallen en stuurhoek in functie van de hoek van rechtervoorwiel.
Om een eerlijk vergelijk mogelijk te maken worden de formules gebruikt in excel en vb.net omgezet naar de Arduino IDE. Uiteraard dienen voor enkele goniometrische functies bijkomende software geschreven te worden, toegelicht in deze presentatie.
Bring innovation to life
Beschouwing MetingenBlauw de motorsturing.
Geel het ontvangen van RF 433 code.
Tussen het gele en het blauwe de tijd dat de arduino rekent.
Bring innovation to life
Beschouwing 1Full calculation mode.
▫ Het aansturen van de servo en DC motoren duurt 9.5 mS tot 17.45 mS = 7.95 mS▫ Het ontvangen van RF code die correct is 17.45 mS tot 20 mS = 2.55 mS▫ Het berekenen van de waarde voor het aansturen van de motoren 23.68 mS tot 26.70 mS = 3.05 mS▫ Het detecteren van een foutieve RF code 22.59 mS tot 22.73 mS = 0.14 mS
We stellen vast dat om de 24 cycli we slechts één juiste RF code hebben ontvangen.De deadlock counter staat op 100 … we resetten de motor sturing niet ok!
(7.95 +3.05 + 0.14 ) * 24 + 2.55 : De totale cycli tijd is 269 mS
De reactietijd van de truck is 0.27 sec. De gemiddelde menselijke reactietijd is 0.25 secWe ervaren de truck sturing daarom als “haperend traag”.
Bring innovation to life
Beschouwing 2Table mode.
Het aansturen van de servo en DC motoren duurt 9.5 mS tot 17.45 mS = 7.95 mSHet ontvangen van RF code die correct is 17.45 mS tot 20 mS = 2.55 mSHet berekenen van de waarde voor het aansturen van de motoren 29.2 mS tot 29.56 mS = 0.36 mSHet detecteren van een foutieve RF code 22.59 mS tot 22.73 mS = 0.14 mS
We stellen vast dat om de 24 cycli we slechts één juiste RF code hebben ontvangen.De deadlock counter staat op 100 … we resetten de motor sturing niet. Ok!
(7.95 + 0.36 + 0.14 ) * 24 + 2.55 = De totale cycli tijd is 196 mS
De reactietijd van de truck is 0.20 sec. De gemiddelde menselijke reactietijd is 0.25 secWe ervaren de truck sturing daarom als “direct”.
Bring innovation to life
Beschouwing 3Rand opmerkingen :
1. Je kan een verdere optimalisatie doorvoeren door de vorige motorsturingen bij te houden en het shield enkel aan te sturen bij een nieuwe correcte RF code.
2. Het gebruik van snellere motoren, tweede versie, zal met de besproken full calculation mode “lastig” worden.3. In de full calculation code zijn reeds veel optimalisaties doorgevoerd.
a. De schets gebruikt 15058 bytes (46%) programma-opslagruimte. Maximum is 32256 bytes.b. Globale variabelen gebruiken 831 bytes (40%) van het dynamisch geheugen. Resteren 1217 bytes voor lokale
variabelen. Maximum is 2048 bytes.c. Gebruik van constante voor PI waarden en geen functie.d. Afrondingen voor grote en kleine hoeken, ook om “dev by zero” en “overflow” te vermijden.e. Maximaal “onthouden” van tussenresultaten die later ook gebruikt kunnen worden.f. Geen kwadraten maar een vermenigvuldiging met zichzelf
g. Gebruik van float, 32 bit floating point geen double, 64 bit IEEE
Bring innovation to life
Beschouwing 4Een volgende stap bestaat er nu in om de snelheid van de RF433 communicatie te verhogen. We zullen dan zien dat de full calculation mode fout gaat in tegenstelling tot de table mode.
In een IoT of FoF omgeving hebben wij controle over het energie gebruik. Voor deze toepassing maakt dat niet veel uit omdat de motoren steeds gestuurd worden en het merendeel van de de energie gaat daar naar toe.
Laten we de motoren buiten beschouwing (stilstand) en de energieverbruik berekening uitvoeren voor de twee implementaties.
Bring innovation to life
Beschouwing 5Het vebruik :RF ontvangen = 16.8 mA … 2.55 mSUNO calculation = 45 mA … 0.36 mSUNO lowpower mode = 1.2 mA … (3.05 - 0.36 ) 2.69 mS
Table based : 0.017 uAh
RF ontvangen = 16.8 mA … 2.55 mSUNO calculation = 45 mA … 3.05 mSUNO lowpower mode = 1.2 mA 0ms
Full calcuation : 0.050 uAh
Een factor 3 minder energie verbruik omwille van de software architectuur (met stilstaande motoren)
Bring innovation to life
Beschouwing 6Zoals in de presentatie “BITL Arduino Low Power Control” is het van belang om een energie flow diagram te tekenen. Dit ontwerp dient te worden uitgevoerd voordat de “klassieke” methode van analyse, ontwerp en implementatie wordt aangevangen.
Verder in de presentatie wordt nu de software toegelicht met de enkele specifieke technieken om de rekensnelheid te drukken en ook een architectuur die power management toelaat.
Bring innovation to life
Code 1 Herhaling
Opletten dat je RFCode voor de zender en ontvanger gelijk maakt.
Bring innovation to life
Code 2 Om rekentijd te “winnen” gebruiken we constante voor waarde en deelwaarde van pi in plaats van de pi() functie te gebruiken.
De DEG_TO_RAD en omgekeerd worden in de code niet gebruikt. Enkel ter info ...
Bring innovation to life
Code 3 Herhaling
Drie bijkomende digitale outputs om de digitale storage scoop aan te sturen.
Door op die outputs te meten kunnen we exact de uitvoeringstijd van het programma opmeten.
Voor de motoren, RF433 ontvanger en de rekentijd van het algoritme.
Bring innovation to life
Code 4 Herhaling
Bring innovation to life
Code 5 Parameters bepaald door het 3D ontwerp. Gebruik de documentatie ter beschikking gesteld op STEMRTCAntwerpen.be
Bring innovation to life
Google Education : Ackermann
Bring innovation to life
Code 6 Define parameters, afgeleide parameters
Bring innovation to life
Code 7 Define parameters, afgeleide parameters
Bring innovation to life
Code 8 Define parameters, afgeleide parameters, narnalpart is een zelfde gedeelte in de formule.
Bring innovation to life
Code 9 Define parameters, afgeleide parameters, narnalpart is een zelfde gedeelte in de formule.
Bring innovation to life
Code 10 Herhaling
Bring innovation to life
Code 11 In “void setup” worden een aantal berekeningen uitgevoerd die niet afhankelijk zijn van wr of het toerental.
Bring innovation to life
Code 12 “void setup”
Bring innovation to life
Code 13 Herhaling let op de synchronisatie led_pin voor metingen met de scoop.
Bring innovation to life
Code 14 Herhaling
Bring innovation to life
Code 15 Herhaling
Bring innovation to life
Code 16 Noteer :
255.0 ipv 255 … goed praktische voor code reading … bewerking met float variabelen.
HALF_PI ipv pi() / 2
(b, 5) aantal cijfers dat geprint wordt.
Bring innovation to life
Code 17 Vergelijkbaar
Bring innovation to life
Code 18 Vergelijkbaar
Bring innovation to life
Code 19Vermijd delen door nul en overflow. Kleine hoeken worden afgerond door een waarde vast te leggen. In dit geval 250000. In de verdere berekeningen zullen we dit effect zien maar zonder gevolg voor de sturing van de truck.
Bring innovation to life
Code 20Vergelijkbaar
Bring innovation to life
Code 21Vergelijkbaar … toch even goed opletten ...
Bring innovation to life
Code 22 toelichtingBij de table berekening zoeken we in de vb.net software de hoogste waarde van de vier multipliers op. Afhankelijk daarvan kiezen we een initiële waarde voor nvr of nvrcalc. De arduino “kent” pas deze waarde nadat de truck in gebruik is genomen. Vooraf kan je die niet berekenen.
We “veronderstellen” een waarde van 1000 voor nvrcalc. Vervolgens nemen we de truck in gebruik, draaien de wielen volledig rechts, volledig links en “berekenen” de waarde voor de multipliers. Telkens berekenen we dan een “kleinere” waarde voor nvrcalc.
We stellen vast dat nvrcalc, voor mijn truck implementatie, uiteindelijk op 697 komt.
Bring innovation to life
Code 22 toelichtingIndien de truck vervolgens recht vooruit rijdt heeft hij geen 1000,1000,1000,1000 multiplier maar een 697,697,697,697 multiplier. De truck heeft hierdoor een lagere maximum snelheid. Je kan dat oplossen door die parameter ook weer dynamisch te maken met een lopend gemiddelde. De truck gaat dan vertragen bij het nemen van een bocht en automatisch versnellen bij het rechtdoor rijden.
Dit is een uitbreiding … volgend schooljaar wellicht …
Bring innovation to life
Code 22 toelichtingEven nadenken over deze code ...
Bring innovation to life
Code 23 toelichtingEven nadenken over deze code ...
Bring innovation to life
Code 24Vergelijkbaar
Bring innovation to life
Code 25Vergelijkbaar, berekening van de stuurhoek in radialen en duizendste van een radiaal.
Bring innovation to life
Code 26Vergelijkbaar, einde van de berekeningen.
Bring innovation to life
Code 27Vergelijkbaar
Bring innovation to life
Code 28Vergelijkbaar
Bring innovation to life
Code RTCAntwerpen.beDe softwarecode kan verder geoptimaliseerd worden maar dat heeft weinig didactische waarde.
De leerlingen kunnen de twee versie naadloos met elkaar uitwisselen.
Wens je ondersteuning om de uitvoer tijden te tonen met een scoop maak dan een afspraak met RTC Antwerpen.
Bring innovation to life
Code RTCAntwerpen.beMaak gebruik van de hardware ter beschikking gesteld door RTC Antwerpen om een overzichtelijke ontwikkel omgeving te realiseren.
Bring innovation to life