Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Geen van beide ;-) De servo library is gebaseerd op TIMER1 en werkt niet goed als je meerdere interrupt gerelateerde zaken wilt regelen. In ieder geval op een Arduino Uno. Mijn methode staat beschreven onderaan de eerste post van dit draadje.
Het schakelen van de uitgangen kost tijd. Voor een goed signaal is het belangrijk om daar rekening mee te houden.
Ofwel, ik selecteer ze op lengte (van kort naar lang) en stuur vervolgens de uitgangen allemaal hoog. Eerst de korte, daarna oplopend tot de langste. Vervolgens kijk ik naar de micros() timer en schakel ze stuk voor stuk weer uit. Omdat je dan de kortste als eerst weer uitschakelt heeft de schakeltijd geen invloed op de pulslengte.
Krijg je een beetje dit beeld:
![]()
Om te controleren of de signalen stabiel zijn kan je er een scope of digitale servo op aansluiten. Dan zie of hoor je direct of het signaal stabiel is.
Vandaag de nieuwe algoritme kunnen testen voor de altitude hold functie. Werkt best aardig dacht ik zo
Bedankt voor je reactie! Altijd leuk om te lezenDit is een indrukwekkende prestatie!!!
Ik dacht dat je een bluetooth module ging gebruiken?Ik heb inmiddels een test opstelling gemaakt, met een Due, de sensor, en een bluetooth dongle die aan 1 van de seriele poorten zit zodat ik de basis luchtdruk kan instellen.
Ik dacht dat je een bluetooth module ging gebruiken?
Deze module is het:
APC220 Radio Communication Module
Lekker bezig Joop!
Ik wel eens met Delphi van die NMEA strings uit elkaar gepeuterd. Toen nog met m'n GPS bluetooth module van m'n Tomtom. Dat werkte prima. Je hebt niet alle strings nodig, al komen ze wel voorbij.
Als ik het goed heb kan ik bij mijn GPS module grofweg opgeven welke type strings er gestuurd gaan worden. Dat scheelt weer een prak aan info wat je niet hoeft te verwerken.
Succes maar weer. Ik ben benieuwd naar je volgende video, de laatste was indrukwekkend.
Persoonlijk denk ik dat alles afhangt van je setup of je zaken aan moet passen in de configuratie van de gps.
De gps die ik gebruik communiceert "out of the box" op 57600bps. Zet ik dit uit tegen 10 bits per byte kom ik uit op 5760 bytes per seconden. Een NMEA string volgens het NMEA protocol is maximaal 82 byte lang. Lang niet alle regels zijn dit.... maar toch. Dan kom ik uit op 70 regels per seconden. 8O
Daarnaast is de gps zo "slim" om niet alle NMEA record in gelijke mate door te sturen. De $GPGLL (lon / lat positie) komt bijvoorbeeld vaker langs dan $GPGSV (satellieten in beeld).
Het filteren van de data neemt in verhouding tot de seriële communicatie nauwelijks tijd in beslag. De ongewenste NMEA records worden gewoon genegeerd en verdwijnen in /dev/null
Het uitschakelen van specifieke NMEA records levert naar mijn mening dus geen snelheidswinst op.
Tja, die stelling lijkt mij niet echt logisch. Een gps-ontvanger bestaat grofweg uit twee delen. Het eerste (ontvanger)deel voor het ontvangen en produceren van de tijdgerelateerde zaken. Gezien de noodzaak van nauwkeurigheid kan je als gebruiker deze tijd niet verstoren. Dit deel zorgt voor de maximaal haalbare nauwkeurigheid van de gps ontvanger.Maar stelregel is wel dat je zo min mogelijk info moet krijgen van je GPS zodat de GPS alleen de informatie verwerkt die je ook echt nodig hebt, scheelt ook weer iets in de accuraatheid en stabiliteit![]()
Tja, die stelling lijkt mij niet echt logisch. Een gps-ontvanger bestaat grofweg uit twee delen. Het eerste (ontvanger)deel voor het ontvangen en produceren van de tijdgerelateerde zaken. Gezien de noodzaak van nauwkeurigheid kan je als gebruiker deze tijd niet verstoren. Dit deel zorgt voor de maximaal haalbare nauwkeurigheid van de gps ontvanger.
Het tweede deel van de gps-ontvanger voert de berekeningen uit voor positie, snelheid, enz. Deze berekeningen worden gemaakt op basis van de gegevens uit het eerste deel. Het enige wat je hier kan doen is meer of minder informatie opvragen. Maar de basisgegevens uit het eerste deel veranderen hierdoor niet.
Alleen gps-ontvangers die door de fabrikant zijn overgewaardeerd kunnen problemen geven als je deze maximaal gaat “belasten”. Dan raakt het rekendeel wel in de problemen omdat de gevraagde stroom van data niet op tijd af is. Door de noodzakelijke rekentijd werk je met oude signalen uit het eerste ontvangerdeel.
Krijg je problemen met de nauwkeurigheid die beter wordt naarmate je de minder data vraagt, heb je te maken met een gps-ontvanger die niet kan wat de leverancier stelt. Dit heb ik in post 74 ook al aangehaald. Veel gps-ontvangers zijn gewoon overgewaardeerd.
En natuurlijk is een seriële verbinding van 9600bps in combinatie met 10Hz ook geen reële combinatie. Je haalt het gewoon niet om alle NMEA-data 10 keer per seconden binnen te halen op 9600bps. En toch zie je het bij veel goedkope gps ontvangers gewoon staan.
Maar stelregel is wel dat je zo min mogelijk info moet krijgen van je GPS zodat de GPS alleen de informatie verwerkt die je ook echt nodig hebt, scheelt ook weer iets in de accuraatheid en stabiliteit :wink:
Vroeger was het iig zo, maar dat zal wel komen door de baudrate zoals je zegt, tegenwoordig heb je met 115200bps genoeg ruimte, en de chips in de GPS ontvangers zijn ook aardig rap momenteel.
Dat is dus hetzelfde als wat ik in post 114 vertelde ;-)