Shock Media

Navigatie

Robot met gyroscoop

Forum > Meten & meetapparatuur > Robot met gyroscoop
Naam Bericht
MartijnV

Eigenlijk kan dit in zowel dit forum als in digitaal als in software, maargoed.

Hallo allemaal. Ik ben bezig met een robot projectje. Het idee is om een gyroscoop te gebruiken om de hoek te bepalen waaronder de robot staat ten opzichte van zijn beginstand. Dit kan door de hoeksnelheid die gemeten wordt door een gyroscoop ic te integreren. Met behulp van andere sensors zal het 0 punt af en toe ingesteld moeten worden om te zorgen dat de hoek niet verloopt door onnauwkeurigheid.

Ik ben student werktuigbouwkunde en weet het een en ander van sensors en programmeren. Waar ik echter nog niet alles van weet zijn PICs. De bedoeling is dat dat gaat veranderen.

Dit is geen schoolopdracht maar gewoon een hobby projectje en ik zou het leuk vinden als jullie meedenken en mij wat dingen kunnen leren.

Laat ik eens beginnen met te vragen hoe je een analoog signaal door een PIC laat integreren, het liefst zo nauwkeurig mogelijk. Hoe snel kan een PIC waarden meten (en opslaan) en er tegelijk aan rekenen. Er moeten ook 2 motoren aangestuurd worden om de robot weer recht te zetten als hij van koers raakt.

Alvast bedankt voor jullie hulp!
sould3mon

heb je de sensor al waar en hoe duur was die wel niet ?
kan je leuke dingen mee doen


dubbel

er moet ergens langer filmpje zijn maar ben em kwijt
[Bericht gewijzigd door sould3mon op 4 januari 2008 23:44:52]
Boeip

http://revver.com/video/443032/botka-the-barely-standing-robot/
Dit is de lange versie.
Echt kicken man! Als die gozer m een tik geeft, hersteld ie zich weer helemaal. Knap staaltje techniek!
Et Toto - "Allesomvattend" - Boeip.nl - Voorderingen RF modules
MartijnV

cool filmpje idd! Sensor komt bij Sparkfun vandaan. Aangezien al die sensors van die irritante behuizingen hebben, hebben ze daar dat IC alvast op een bordje gemaakt voor mensen zonder SMD-skills.
[Bericht gewijzigd door MartijnV op 4 januari 2008 23:37:53]
sould3mon

maar om op je vraag terug te komen staat in de datasheet hoesneel de convertors werken ten opzichte van de clock en welke timing ze min nodig hebben en met de welke externe kristal etc.

maar geloof dat als je moelijke berekingen tergelijkertijd wil gaan doen dat je met gewoone pic niet zal redden meschien zon dspic die hebben een hardware multiplier en delen geloof ik ook maar moet je ff in datasheets gaan
MartijnV

Ik heb nog geen PIC gekozen. Eigenlijk heb ik er nog niet zo vaak mee gewerkt. Als je een suggestie kan doen voor een PIC ga ik natuurlijk graag de datasheet inspecteren.
sould3mon

op hun website hebben ze goede zoekmachiene
zo kan je zoeken op adc bits en aantal channels
etc

ik zou minimaal voor een dspic gaan

nadeel is dat je moet kijken naar asm of c maar hun c zal wel closed source zijn en erg beperkt zijn voor somige chips zover ik weet zijn er in asm geen restricties .

weet niet wat je achtergrond kennis is .
en wil nu mensen ook niet te snel een fpga aanraden maar als je brute paralele rekenkracht nodig hebt maar dat is alweer eenhele andere wereld.

Ununoctium

Heb je al gedacht aan een opamp?
http://en.wikipedia.org/wiki/Operational_amplifier_applicati...Integrator
En dan dat analoge signaal omzetten naar digitaal
I don't know how fast I'm going, but I know exactly where I am
MartijnV

Opamp zou kunnen, had ik al even naar gekeken, maar lijkt mij minder nauwkeurig, of zit ik er dan naast? En een PIC achtig iets heb ik toch nodig om de gegevens te verwerken. Maar het voordeel van opamp is natuurlijk dat het geen rekenkracht kost. Achtergrond kennis is nog niet optimaal maar ik ben niets te beroerd om alles uit te zoeken. Ik zal eens kijken naar een dspic datasheet. fpga lijkt me even een brugje te ver.
MartijnV

Ik ben nu bij dsPic's aan het kijken en daar lijken wel bruikbare dingen tussen te zitten. Er zit bij een aantal ook een A/D omzetter op, wat natuurlijk makkelijk is. Verder heb ik geen idee wat ik aan ram moet hebben. Mij lijkt dat t kleinste al genoeg is. Nog even een paar vraagjes.

Wat betekent in "18 x 12-bit @ 500 (ksps)" de 18 als het gaat om een A/D omzetter?

Ik wou wel gaan programmeren in C, waarom zou dat moeilijkheden opleveren?

Als ik een PIC18 neem met spi support en ik heb een gyro die ook spi signaal uitgeeft, zou het dan ook met die combinatie kunnen of kom ik dan rekenkracht te kort?

Kan iemand nog iets zeggen over werken met een opamp. Hoe nauwkeurig zou dat zijn? Anders ga ik het van het weekend sowieso maar even maken denk ik, de onderdelen heb ik wel.
sould3mon

maar waar is het analooge signaal van dan als die gyro spi signaal uitspuugt neem ik aan dat dit digitaal is of is dat aleen voor de controll en zit er analoog meetuitgang op ?

die 18x zoals ik lees slaat hier op 18 pinnen die een adc functie hebben op 12bit maximum.
en hij doet max 500 kilo samples p/s

(geloof dat je bij pic ook sneller kon sampelen tegen inlevering van bitspresicie maar dat durf ik niet zeker te zeggen )

als je het programa al geschreven hebt of je weet hoelang je berekening gaat duren (aantal clocks)
kan je het wel uitrekenen of de pic snel genoeg is.
maar daar kan ik weinig over zeggen

over het c gebeuren moet je het programa van hun downloaden geloof toch echt dat een van de c talen niet te gebruiken was zonder licentie meschien is dat die dspic welke geloof ik c32 ofzoiets gebruikt.

bij pic18 oid was is het zo dat er geen optimalisatie is van de code
[Bericht gewijzigd door sould3mon op 10 januari 2008 14:14:33]
MartijnV

De gyro die ik nu heb geeft alleen analoog, maar ik heb er een op het oog die SPI en analoog doet.

Op de site van Microchip staat bij chips 0x, 1x of 2x bij A/D converters. Wat zou dat dan betekenen?

De bedoeling is dus om een SPI of analoog signaal in te lezen, dan een aantal samples te nemen en dat dan te delen door de tijd om zo de hoek te krijgen. Heeft iemand hier verder nog tips voor. Ik weet namelijk ook niet zo 123 wat voor code ik daar aan vast moet plakken. Mss in een soort array?

En kan iemand nog wat toevoegen over het werken met een opamp?
[Bericht gewijzigd door MartijnV op 11 januari 2008 14:39:38]
MartijnV

Het wordt weer tijd om hiermee door te gaan.

Kan iemand me zeggen hoe nauwkeurig integreren met een opamp werkt. Alles digitaal is natuurlijk wel mooi, maar als het zo ook een beetje nauwkeurig kan is het mij ook goed.
rbeckers

Hoe nauwkeurig wil je integreren?

http://en.wikipedia.org/wiki/Operational_amplifier_applications

floppy

Als je in C wilt programmeren heb je dan als een atmel AVR overwogen. Gratis complete ontwikkel omgeving met C compiler.
MartijnV

Die wikipedia had ik idd al uitgebreid bekeken. Ik wil graag zo nauwkeurig integreren dat mijn gyroscoop het zo lang mogelijk volhoudt als de robot gaat rijden. Ik zet de hoek op 0 graden bij vertrek en dan moet de gyroscoop bijhouden onder welke hoek de robot staat. een paar minuten is wel genoeg, dan calibreer ik hem daarna weer opnieuw langs de muur oid.

Een avr had ik nog niet naar gekeken. Ik hoorde van meerdere mensend dat ik voor dat rekenwerk wel een dspic nodig zou hebben. Maar als je hier meer over weet ben ik natuurlijk zeer geinteresseerd.
floppy

quote:
Op 1 maart 2008 21:36:02 schreef MartijnV:
Een avr had ik nog niet naar gekeken. Ik hoorde van meerdere mensend dat ik voor dat rekenwerk wel een dspic nodig zou hebben. Maar als je hier meer over weet ben ik natuurlijk zeer geinteresseerd.

Eem atmega heeft een hardware multiplier on board dus dat schiet ook al aardig op.
Integreren met een opamp levert toch wat drift op als je dat over langere tijd doet. Ik zat te denken aan een integrator met wat fet switches, zoiets als een sample en hold, waarmee je voor 0.1 s de output van je sensor integreert dan meet en je integrator reset. Maar misschien werkt een simpel rc filter met een tijdsconstante van ca 0.1 s ook wel. Dan kan je met 10 metingen per seconde volstaan, die metingen integreer je dan verder in je processor. Dan hoef je in elk geval geen 500.000 samples per s. te doen.
MartijnV

Ik zal eens in wat datasheets duiken. Een integrator met FET switches ben ik niet mee bekend. Kan je hier wat meer uitleg over geven? Alvast bedankt.
floppy

quote:
Op 6 maart 2008 17:04:41 schreef MartijnV:
Ik zal eens in wat datasheets duiken. Een integrator met FET switches ben ik niet mee bekend. Kan je hier wat meer uitleg over geven? Alvast bedankt.

Ik bedoel zoiets:
http://www.ecircuitcenter.com/Circuits/opint/image002.gif
MartijnV

Zo, het is alweer een tijdje geleden maar ik ben er weer druk mee bezig. Ik heb de gyroscoop op 5V aangesloten. Met een kastje van National Instruments sluit ik hem aan de de computer. Ik gebruik daarbij het potentiaalverschil tussen de uitgang en de 2.5V pen. Dit levert een waarde tussen de -2.5 en de 2.5V, afhankelijk van de draaisnelheid.

Nou zit ik een beetje in VB6 te prutsen om daar een hoek van te kunnen maken, maar dat wil nog niet echt. Heeft iemand tips? Misschien een stukje code dat ik kan gebruiken? Data in VB krijgen is geen probleem, maar hoe integreer ik het een beetje knap...

Ik heb het ook nog met een opamp geprobeerd, maar het ding heeft in nulstand ook nog een afwijking van 70mV ofzo en als de opamp dan een tijdje aanstaat verloopt hij vrij snel.
steenaap

- Bewerk en versterk het sensor signaal zodat het volledige meetbereik van de ADC benut wordt:
Trek de ongebruikte spannings range (in het gebied 0-2.5V) af van het sensor signaal met een verschilversterker, versterk het bekomen signaal met een instrumentatie versterker zodat je maximale reading 5V wordt.

Indien je dit goed gedaan hebt, zijn de uitgangsspanningen 0 en 5V bij de maximale rotatie snelheden in beide richtingen in je toepassing.

- Verbind het versterkte signaal met de ADC ingang van een AVR (10 bits zou moeten volstaan). Laat de AVR de sensor uitlezen aan 100HZ op een timer interrupt, op deze manier weet je dat je exact op 100Hz de sensor uitleest. Dit is belangrijk.

- De ADC samples hebben nog geen fysische informatie. Daarvoor moet je ze gaan schalen met een polynomial. In de makkelijkste benadering gewoon met een constante factor.

- Integreer wiskundig de sensor waarden in de AVR. Hiervoor zijn verschillende integratie methoden mogelijk. Zoek bv eens op de runge kutta methode.

- Stuur op een veel lagere frequentie de gemeten hoek door naar je pc of display het op een LCD of 7 segmenten display. Let daarbij op, dat je het bemonsteren van het versterkte sensor signaal niet verstoort.

- Indien je over geen calibratie tafel beschikt (een gewone sterveling heeft deze niet in bezit), kan je de calibratie factor vinden door de hoek te resetten op 0. Je draait de sensor 90 graden. Indien de kalibratiefactor juist is, zal de geintegreerde hoek 90 graden aangeven. Zoniet moet je gaan tunen.

- Aangezien je door het versterken van het sensor signaal niet weet hoeveel de zero degree/second referentie spanning bedraagt, moet je deze even traceren bij het opstarten van je elektronica. Je middelt gedurende een bepaalde tijdsspanne de metingen uit, en bekomt ergen een waarde tussen 0 en 1023 indien je een 10 bit ADC gebruikt. Op deze manier heb je ook je sensor bias omzeilt (in de veronderstelling dat deze constant blijft gedurende de tijd dat je elektronica aan staat).

Misschien kan dit ook analoog opgelost worden, hoewel ik dan niet weet hoe je met de sensor bias omgaat. Ik heb het meer voor digitale elektronica.

Een gyroscoop is onderhevig aan drift. Als de sensor in rust is, en je integreert zn waarden, zal na enige tijd de hoek gaan driften. Dit wil je niet. Waarom gebruik je geen digitaal compas?
[Bericht gewijzigd door steenaap op 25 augustus 2008 11:09:48]
BenZ
Special Member

quote:
Nou zit ik een beetje in VB6 te prutsen om daar een hoek van te kunnen maken, maar dat wil nog niet echt. Heeft iemand tips? Misschien een stukje code dat ik kan gebruiken? Data in VB krijgen is geen probleem, maar hoe integreer ik het een beetje knap...

Ik heb het ook nog met een opamp geprobeerd, maar het ding heeft in nulstand ook nog een afwijking van 70mV ofzo en als de opamp dan een tijdje aanstaat verloopt hij vrij snel.


Integreren op een PC of met een PIC is doodsimpel: optellen van de opvolgende meetwaarden (eventueel na linearisatie van die meetwaarden) , waarbij de bemonsterfrekwentie de versterkingsfactor is. Gewoon rekenkundig uitzoeken (denk aan overlopen van de uitkomst!).
De verstorende factor is de offset, van meetinstrument of van daarna volgende versterkers. Als de offset een nauwkeurig bekende waarde is, kan je de meetwaarden daarvoor corrigeren (offset eraf trekken), zo niet dan moet die op een of andere manier geminimaliseerd worden (afregelen van je analoge deel). De offset is bij langdurig integreren de factor die de nauwkeurigheid bepaalt.
Zoeken in topic