Hastighetsmätare till robot (Med eget släphjul)
Re: Hastighetsmätare till robot (Med eget släphjul)
Du kan ju i testsyfte göra PIC-koden väldigt trivial (så att Schmitt-triggern påverkar en utgång) och sedan utveckla det därifrån när du vet att det funkar.
Re: Hastighetsmätare till robot (Med eget släphjul)
EagleSpirit:
>Man kan ha ca 4mm breda fält innan de går in för mycket i varandra pga bredden på sensorn.
Jo, mina fält är knappt 4mm breda, så jag misstänker att det bidrar till problemet! Men sen borde det ju spela roll på vilket håll man sätter sensorn på, den har ju de två komponenterna (LEDn och fototransistorn) bredvid varandra, jag har den på "bredden", men det kanske skulle fungera bättre att sätta den på "höjden"?
>Vi hade en skiva med 48 svarta fält = 96 fält = 384 pulser per varv.
Hmm... Om det är 48 svarta fält per varv, då borde det ju bli 48 pulser per varv
. Förklara gärna!
>Det allra bästa är dock att använda en mätskiva som har genomskinliga fält.
Vad tror du om en skiva där fälten är utfrästa/borrade hål, och en reflexdetektor? Om man då har skivan vit så kommer ju den reflektera ljuset, men när det kommer ett hål så reflekterar det ju inte. Å andra sidan så borde det ju bli samma som ett svart fält.. Det är ju svårt att komma åt med en läsgaffel, då måste man ju ha en roterande axel eller liknande att sätta skivan på så att det är tomt på båda sidorna...
>Problemet om man inte har två sensorer är att sensorn kan hamna i ett gränsläge när hjulet står still, och om du inte vet riktningen så kommer du få en himla massa felvärden.
En schmitt trigger borde ju lösa detta problemet. Eller, menar du om hjulet åker lite fram och tillbaks? Det kan ju va problem då, men tills vidare kör jag på bara en sensor!
>Man kan ha ca 4mm breda fält innan de går in för mycket i varandra pga bredden på sensorn.
Jo, mina fält är knappt 4mm breda, så jag misstänker att det bidrar till problemet! Men sen borde det ju spela roll på vilket håll man sätter sensorn på, den har ju de två komponenterna (LEDn och fototransistorn) bredvid varandra, jag har den på "bredden", men det kanske skulle fungera bättre att sätta den på "höjden"?
>Vi hade en skiva med 48 svarta fält = 96 fält = 384 pulser per varv.
Hmm... Om det är 48 svarta fält per varv, då borde det ju bli 48 pulser per varv

>Det allra bästa är dock att använda en mätskiva som har genomskinliga fält.
Vad tror du om en skiva där fälten är utfrästa/borrade hål, och en reflexdetektor? Om man då har skivan vit så kommer ju den reflektera ljuset, men när det kommer ett hål så reflekterar det ju inte. Å andra sidan så borde det ju bli samma som ett svart fält.. Det är ju svårt att komma åt med en läsgaffel, då måste man ju ha en roterande axel eller liknande att sätta skivan på så att det är tomt på båda sidorna...
>Problemet om man inte har två sensorer är att sensorn kan hamna i ett gränsläge när hjulet står still, och om du inte vet riktningen så kommer du få en himla massa felvärden.
En schmitt trigger borde ju lösa detta problemet. Eller, menar du om hjulet åker lite fram och tillbaks? Det kan ju va problem då, men tills vidare kör jag på bara en sensor!
- EagleSpirit
- Inlägg: 1288
- Blev medlem: 27 maj 2003, 23:15:48
- Ort: Västerås
- Kontakt:
Re: Hastighetsmätare till robot (Med eget släphjul)
Fältbredd: Vi monterade dom på "höjden", men jag vet inte hur mycket det varierar. Om du orkar får du gärna testa
Pulsantal: Förlåt, det blir ju 192 pulser per varv. Till att börja med så mätte vi antalet flankerna. Tänk dig en skiva med två svarta fält och två vita. Det är 4st flanker. Sen eftersom vi hade två sensorer med fasförskjutning så blev det dubbelt så många flanker. Så 48 svarta fält -> 2*48 = 96 flanker -> med två sensorer 2*2*48 = 192 flanker totalt.
Svarta eller genomskinliga fält: Problemet är att svart reflekterar fortfarande litegrann. Du kan ha råkat ut för det när du ändrade pull-up-motståndet och spänningsnivån var 3,2V vid svart. Det är även synligt i diagrammet jag la upp. Där går signalen ner litegrann på svart.
Vid genomborrat/fräst så blir det absolut ingen reflektion mitt i det genomskinliga fältet. Sen som du kanske har märkt så blir pappret smutsigt och slitet, om du har en alu-skiva som är utfräst så går den inte sönder lika lätt. Det är smart att lämna kvar en bit ute vid kanten för stabilitet, men det kanske är svårt när du har så litet hjul.
Endast en sensor: Det är bra att testa så enkelt som möjligt, men om du får konstiga värden ibland så har du kanske en förklaring till varför. Dom som hade hållt på med vårt kandidatprojekt tidigare använde bara en sensor och de fick en del problem när de stod stilla pga vibrationer i bilen.
Pulsantal: Förlåt, det blir ju 192 pulser per varv. Till att börja med så mätte vi antalet flankerna. Tänk dig en skiva med två svarta fält och två vita. Det är 4st flanker. Sen eftersom vi hade två sensorer med fasförskjutning så blev det dubbelt så många flanker. Så 48 svarta fält -> 2*48 = 96 flanker -> med två sensorer 2*2*48 = 192 flanker totalt.
Svarta eller genomskinliga fält: Problemet är att svart reflekterar fortfarande litegrann. Du kan ha råkat ut för det när du ändrade pull-up-motståndet och spänningsnivån var 3,2V vid svart. Det är även synligt i diagrammet jag la upp. Där går signalen ner litegrann på svart.
Vid genomborrat/fräst så blir det absolut ingen reflektion mitt i det genomskinliga fältet. Sen som du kanske har märkt så blir pappret smutsigt och slitet, om du har en alu-skiva som är utfräst så går den inte sönder lika lätt. Det är smart att lämna kvar en bit ute vid kanten för stabilitet, men det kanske är svårt när du har så litet hjul.
Endast en sensor: Det är bra att testa så enkelt som möjligt, men om du får konstiga värden ibland så har du kanske en förklaring till varför. Dom som hade hållt på med vårt kandidatprojekt tidigare använde bara en sensor och de fick en del problem när de stod stilla pga vibrationer i bilen.
Re: Hastighetsmätare till robot (Med eget släphjul)
Okej, Då är jag med på hur du menar med fälten!
Jag har inga läsgafflar hemma (Om man inte skulle leta upp någon gammal kulmus och ta läsgaffeln från den
) men annars tänkte jag att man borde kunna ta en reflexdetektor (har ett antal liggandes) och inte koppla in LED, så sätter man en extern IR LED på andra sidan om skivan istället. Men jag ska se om jag inte kan hitta någon kul kulmus 
Om jag tänker rätt så blir det så att ju större hysteres man har på schmitt triggern, ju mera fram, och tillbaks kan hjulet snurra utan att det blir problem. Men vi får se hur det blir med det!
Sen tänkte jag att PIC'en tar tiden på hur lång tid det det tar för en puls att gå förbi, det gör jag på tre stycken pulser, sen sorterar jag dem efter storlek och tar medianen av dem. Efter det mäter jag en ny puls (då kastar jag ut den äldsta, som i en kö) också sorterar jag de tre och tar medianen. Om man hela tiden tar medianen av 3 (eller 5) stycken, då borde man ju bli av med mycket utav skräpvärdena?
Jag har inga läsgafflar hemma (Om man inte skulle leta upp någon gammal kulmus och ta läsgaffeln från den


Om jag tänker rätt så blir det så att ju större hysteres man har på schmitt triggern, ju mera fram, och tillbaks kan hjulet snurra utan att det blir problem. Men vi får se hur det blir med det!
Sen tänkte jag att PIC'en tar tiden på hur lång tid det det tar för en puls att gå förbi, det gör jag på tre stycken pulser, sen sorterar jag dem efter storlek och tar medianen av dem. Efter det mäter jag en ny puls (då kastar jag ut den äldsta, som i en kö) också sorterar jag de tre och tar medianen. Om man hela tiden tar medianen av 3 (eller 5) stycken, då borde man ju bli av med mycket utav skräpvärdena?
- EagleSpirit
- Inlägg: 1288
- Blev medlem: 27 maj 2003, 23:15:48
- Ort: Västerås
- Kontakt:
Re: Hastighetsmätare till robot (Med eget släphjul)
Jag såg nu att du tänkt använda den som hastighetssensor. Då borde det inte vara så stora problem om den står stilla. Jag har hela tiden tänkt att du ska mäta avstånd. Det bästa är läsgaffel, men det är möjligt att använda en reflexdetektor. Reflektionen från ett hål är fortfarande lägre än svart färg. Bäst lär det bli om man använder ett svart hål 

Re: Hastighetsmätare till robot (Med eget släphjul)
28-juni-2009 - Ny idé!
Inatt kunde jag inte sova eftersom jag fick en ny idé på hur jag skulle göra den här sensorn. Så jag började med att plocka fram lego lådan, sen började jag CADa lite....

...Och CAM'a....

Gissa vad jag gjorde sen...? (Jag började fräsa ut den...
)

Detta blev resultatet, en encoderdisk med ett kors till nav, detta gör att den passar på teknik LEGO axlarna!

Och, till min stora förvåning passade den exakt lika bra som den borde!! (alltså perfekt
)

Så här ser hela apparaten ut, hjulet snurrar i marken, driver ett kugghjul, som driver ett annat kugghjul, som driver ett kugghjul som sitter fast i samma axel som encoderdisken. Detta gör att encoderdisken snurrar lika snabbt som hjulet, men den har större diameter, vilket betyder att springorna i den kan vara 8,5mm breda, och jag får ändå 5mm upplösning på hjulet
.

Jag antar att jag måste måla encoderdisken nu innan jag kan testa den.. Den får bli svart!

Det enda problemet då är att om roboten kör i 10km/h, då kommer hjulet och ecoderdisken snurra i ~3000 RPM
. Baserat på erfarenhet av andras mini sumo robotar är jag mycket rädd att plasten kommer smälta då...

Lösningen på det blir nog att behålla kugghjulen, axlarna och hjulet, men fräsa ut nya "pinnar" som det sitter fast i. Om jag gör dem i plexiglas eller liknande, och sen köper jag antingen kullager eller glidlager och hänger upp axlarna i. Någon som vet om man kan köpa (mindre kvantiteter) av glidlager, 4mm innerdiameter?
EagleSpirit: Behöver jag ha någon speciell färg för att måla hålen svarta? Min sprejfärg fäster inte...
Mvh. Daniel
Inatt kunde jag inte sova eftersom jag fick en ny idé på hur jag skulle göra den här sensorn. Så jag började med att plocka fram lego lådan, sen började jag CADa lite....

...Och CAM'a....

Gissa vad jag gjorde sen...? (Jag började fräsa ut den...


Detta blev resultatet, en encoderdisk med ett kors till nav, detta gör att den passar på teknik LEGO axlarna!

Och, till min stora förvåning passade den exakt lika bra som den borde!! (alltså perfekt


Så här ser hela apparaten ut, hjulet snurrar i marken, driver ett kugghjul, som driver ett annat kugghjul, som driver ett kugghjul som sitter fast i samma axel som encoderdisken. Detta gör att encoderdisken snurrar lika snabbt som hjulet, men den har större diameter, vilket betyder att springorna i den kan vara 8,5mm breda, och jag får ändå 5mm upplösning på hjulet


Jag antar att jag måste måla encoderdisken nu innan jag kan testa den.. Den får bli svart!

Det enda problemet då är att om roboten kör i 10km/h, då kommer hjulet och ecoderdisken snurra i ~3000 RPM


Lösningen på det blir nog att behålla kugghjulen, axlarna och hjulet, men fräsa ut nya "pinnar" som det sitter fast i. Om jag gör dem i plexiglas eller liknande, och sen köper jag antingen kullager eller glidlager och hänger upp axlarna i. Någon som vet om man kan köpa (mindre kvantiteter) av glidlager, 4mm innerdiameter?
EagleSpirit: Behöver jag ha någon speciell färg för att måla hålen svarta? Min sprejfärg fäster inte...


Mvh. Daniel
- EagleSpirit
- Inlägg: 1288
- Blev medlem: 27 maj 2003, 23:15:48
- Ort: Västerås
- Kontakt:
Re: Hastighetsmätare till robot (Med eget släphjul)
du får åka ut i jymden och hämta ett svart hål som du moddar
skoj att du fick till något så snabbt, hjulet snurrar med lätt när du drar det fram och tillbaks eller? LEGO kan ha en tendens att smälta vid höga hastigheter. Om du ändå ska ha så hög hastighet och du verkar ha lite utrymme över, varför inte använda ett lite större hjul? Det kanske är möjligt att limma ihop ett par plexiskivor, fräsa ur dom som du gjort och sedan limma dit någon yta med grepp utanpå det. Alltså så att encoderhjulet blir hjulet.

skoj att du fick till något så snabbt, hjulet snurrar med lätt när du drar det fram och tillbaks eller? LEGO kan ha en tendens att smälta vid höga hastigheter. Om du ändå ska ha så hög hastighet och du verkar ha lite utrymme över, varför inte använda ett lite större hjul? Det kanske är möjligt att limma ihop ett par plexiskivor, fräsa ur dom som du gjort och sedan limma dit någon yta med grepp utanpå det. Alltså så att encoderhjulet blir hjulet.
Re: Hastighetsmätare till robot (Med eget släphjul)
Jo, Men om jag gör hjulet större, då måste jag ju ha fler fällt (= smalare fällt) eftersom jag vill ha en upplösning på max 5mm. Om jag gör som jag gjorde nu att encoderhjulet är större än hjulet så får jag ju bredare fält = lättare att mäta (även om det snurrar snabbare).
Jag håller på att bygga en lösning som gör att det inte kommer smälta, förhoppningsvis, annars får det bli kullager..
Jag håller på att bygga en lösning som gör att det inte kommer smälta, förhoppningsvis, annars får det bli kullager..

Re: Hastighetsmätare till robot (Med eget släphjul)
>...och du verkar ha lite utrymme över...
Det är en prioriteringsfråga! Nu tar den här modulen upp större delen av platsen där jag hade tänkt ha batteri och elektronik... Men det löser sig på nått vis!
29-juni-2009 - Fortsatt byggande...
Lösningen för att legot inte ska smälta vid höga varvtal blev att fräsa ut en egen "legobit" i självsmörjande plast (POM). Hittade inga mått för tekniklego på internet, så det blev att mäta med skjutmåttet. Verkar som om dem har 8mm mellan hålen, och hålen är ca. 5,1mm i diameter.

Monterade på alla sakerna, kugghjulen passade perfekt.


Sen målade jag disken...

Nu är det bara elektroniken kvar!


Den nya plasten gjorde att axlarna snurrar mycket lättare! Jag har kopplat in en elmotor och snurrat snabbt på den (Hur snabbt är okänt..) och inga tecken på värme. Så det verkar fungera bra!
Mvh. Danne
Det är en prioriteringsfråga! Nu tar den här modulen upp större delen av platsen där jag hade tänkt ha batteri och elektronik... Men det löser sig på nått vis!

29-juni-2009 - Fortsatt byggande...
Lösningen för att legot inte ska smälta vid höga varvtal blev att fräsa ut en egen "legobit" i självsmörjande plast (POM). Hittade inga mått för tekniklego på internet, så det blev att mäta med skjutmåttet. Verkar som om dem har 8mm mellan hålen, och hålen är ca. 5,1mm i diameter.

Monterade på alla sakerna, kugghjulen passade perfekt.


Sen målade jag disken...

Nu är det bara elektroniken kvar!


Den nya plasten gjorde att axlarna snurrar mycket lättare! Jag har kopplat in en elmotor och snurrat snabbt på den (Hur snabbt är okänt..) och inga tecken på värme. Så det verkar fungera bra!
Mvh. Danne
Re: Hastighetsmätare till robot (Med eget släphjul)
29-juni-2009 - Elektroniken.
Nu när mekaniken är klar började jag fundera på elektroniken. Jag gjorde ett litet test, jag kopplade ur LED'n från reflexdetektorn, så jag använder bara fotottransistorn i den, också belyste jag den med en 940nm IR LED. Det reagerade den tydligt på, och gick ner till 0,0v.

Så så började jag modda kortet lite, så att det skulle ta mindre plats..

Detta gjorde att jag fortfarande hade en jättefin signal vid 311Hz.
311Hz = 311 / 7 * 60 = 2670 RPM
311 / 7 * 2*tt*11 / 1000 = 3,69 m/s
3,69 m/s * 3,6 = 13 Km/h
(Låter som rätt mycket.. Har jag räknat rätt? Ska göra lite mer tester...)

Det gick att ställa den i ett "mittläge" så att spänningen blev mitt emellan max och min... Men bara jag har en hysteres så ska det nog inte vara några problem!

Snurrade på lite snabbare, pulserna ser fortfarande fina ut!
457,1 Hz = 457,1 / 7 * 60 = 3918 RPM
457,1 / 7 * 2tt * 11 / 1000 = 4,5 m/s
4,5 m/s * 3,6 = 16,2 km/h

Så, vad tror ni? Verkar ju fungera bra!
Edit: Jodå, mina hastighetsberäkningar verkar stämma! Jag provade att driva den med skruvdragaren, den är specificerad till 900 RPM (batteriet är lite halvt oladdat..) och jag fick 98,72 hz, alltså 846,2 RPM. Stämmer ju jätte bra!
Nu när mekaniken är klar började jag fundera på elektroniken. Jag gjorde ett litet test, jag kopplade ur LED'n från reflexdetektorn, så jag använder bara fotottransistorn i den, också belyste jag den med en 940nm IR LED. Det reagerade den tydligt på, och gick ner till 0,0v.

Så så började jag modda kortet lite, så att det skulle ta mindre plats..

Detta gjorde att jag fortfarande hade en jättefin signal vid 311Hz.
311Hz = 311 / 7 * 60 = 2670 RPM
311 / 7 * 2*tt*11 / 1000 = 3,69 m/s
3,69 m/s * 3,6 = 13 Km/h
(Låter som rätt mycket.. Har jag räknat rätt? Ska göra lite mer tester...)

Det gick att ställa den i ett "mittläge" så att spänningen blev mitt emellan max och min... Men bara jag har en hysteres så ska det nog inte vara några problem!

Snurrade på lite snabbare, pulserna ser fortfarande fina ut!
457,1 Hz = 457,1 / 7 * 60 = 3918 RPM
457,1 / 7 * 2tt * 11 / 1000 = 4,5 m/s
4,5 m/s * 3,6 = 16,2 km/h

Så, vad tror ni? Verkar ju fungera bra!

Edit: Jodå, mina hastighetsberäkningar verkar stämma! Jag provade att driva den med skruvdragaren, den är specificerad till 900 RPM (batteriet är lite halvt oladdat..) och jag fick 98,72 hz, alltså 846,2 RPM. Stämmer ju jätte bra!

Re: Hastighetsmätare till robot (Med eget släphjul)
Tänkte att jag skulle börja koda lite på PIC'en nu, men jag vet inte riktigt hur jag ska göra...
En idé jag har är att göra såhär:
Då får man ju reda på hur lång tid det tar att köra 1/14dels varv (2tt11/14 = ~4,93mm). Så långt, så bra. Men vad händer då om man står stilla eller rör sig väldigt långsamt, då kommer hastigheten ju uppdateras jätte sällan! 100 hz uppdateringsfrekvens hade ju varit bra, så då tänkte jag att om den inte har gått de 5mm efter 10ms så antar man att den står stilla. Men det fungerar ju inte! För ifall den då kör i mindre än ~1,8km/h kommer den anta att den står stilla... Hur ska jag då göra!?
Snabba svar uppskattas så att jag kan börja programmera så snabbt som möjligt...
En idé jag har är att göra såhär:
Kod: Markera allt
om (IO pinnen går från hög till låg)
{
Sätt en timer på att räkna µS.
Sålänge (IO pinnen INTE går från låg till hög)
{
}
Stoppa timern och kolla vilket värde som ligger i den.
}
Snabba svar uppskattas så att jag kan börja programmera så snabbt som möjligt...

Re: Hastighetsmätare till robot (Med eget släphjul)
Tänker du inte bakvänt nu? Istället för att mäta tiden för en puls kan du ta en viss fast tid (tex. 20 ms) och räkna hur många pulser som du får under dessa 20 ms. Då kan du räkna ut hastighet och sträcka utifrån antalet pulser. Ju längre tid du mäter under desstu bättre svar får du så det blir en avvägning man får göra i slutändan: snabbt eller exakt.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Hastighetsmätare till robot (Med eget släphjul)
Men du startar väll en räknare som bara räknar och en interrupt på att trigga när en pinne byter nivå och då pausar du räknaren och ser vad den blev.
Sedan bör du ha interrupt på overflow på räknaren som då kanske ökar ännu en variabel så du för större mätområde.
Men en 16 bitars timer med 1ms mellan varje ökning ger ju typ 1 minut mellan pulserna och är det saktare än det kan du ju klassa rörelsen som 0.
Sedan bör du ha interrupt på overflow på räknaren som då kanske ökar ännu en variabel så du för större mätområde.
Men en 16 bitars timer med 1ms mellan varje ökning ger ju typ 1 minut mellan pulserna och är det saktare än det kan du ju klassa rörelsen som 0.
Re: Hastighetsmätare till robot (Med eget släphjul)
Tid mellan pulser är enklast. Vänta in en puls och ta sen tiden direkt från första till andra pulsens start.
Enklast att få dynamik i det sättet också, är det långt mellan pulserna kan man göra annat medans timern räknar och man kör en interupt på port change eller transition to high/low eller nåt finns mycket att välja på
Ska du liks fram med fräsen kunde du ju fräst ett hjul med en massa hål längs kanten och sen ta en oring som "däck". Gör du ett med lite större omkrets så får du litet slitage på legoaxeln.
Enklast att få dynamik i det sättet också, är det långt mellan pulserna kan man göra annat medans timern räknar och man kör en interupt på port change eller transition to high/low eller nåt finns mycket att välja på

Ska du liks fram med fräsen kunde du ju fräst ett hjul med en massa hål längs kanten och sen ta en oring som "däck". Gör du ett med lite större omkrets så får du litet slitage på legoaxeln.
Re: Hastighetsmätare till robot (Med eget släphjul)
Visst har ni rätt i vad ni säger, men jag tror inte riktigt ni förstår mitt problem!
Men säg att roboten kör i 0,1 km/h, då kommer det ta 360ms att räkna tiden på 1 period, så visst går det att räkna den, inga problem med det, men då kommer jag ju få en uppdateringsfrekvens på ~2,5 hz, och jag skulle vilja ligga mellan 50 - 100Hz....
Men säg att roboten kör i 0,1 km/h, då kommer det ta 360ms att räkna tiden på 1 period, så visst går det att räkna den, inga problem med det, men då kommer jag ju få en uppdateringsfrekvens på ~2,5 hz, och jag skulle vilja ligga mellan 50 - 100Hz....