Hastighetsmätare till robot (Med eget släphjul)
Hastighetsmätare till robot (Med eget släphjul)
Tjena. Idag påbörjade jag ett nytt projekt som jag gått och tänkt på i någon månad, Nämligen en distansmätare (och hastighetsmätare) till min utväcklingsplattformsrobot (som jag inte har byggt än.... )
Syfte:
Jag vill kunna mäta hur långt min robot har kört, och hur hög hastigheten är på min robot, den ska bara gå på plant underlag (= inomhus). Däremot så kan jag inte mäta hastigheten på hjulen, oavsett om hjulen slirar eller inte så måste jag ha den reella hastigheten så att jag vet hur långt den har kört totalt.
Hur?:
Ett hjul som trycks ner i marken kommer snurra när roboten åker framåt/bakåt, hjulet kommer sitta under robotens mittpunkt, detta för att undvika sidokrafterna när den snurrar. För att läsa av hjulets rörelse kommer jag använda en reflexdetektor, alltså en ir-led och en fototransistor i samma kapsel. Typ denna, fast ytmonterad 75-344-72 .
Sedan ska det sitta någon liten PIC (kanske 12f629 / 12f675) som läser av sensorn med hjälp av "interrupt on change" funktionen som PIC'ar brukar ha. Denna ska då spara hur långt man har kört, och räkna ut en hastighet från genomsnittet av de tre sista (eller något liknande) förbipasserande linjerna.
Linjerna på hjulet kommer vara anpassade så att ett interrupt motsvarar en förflyttning av 5mm.
Kommunikation:
Ja, Då måste ju roboten kunna kommunicera med sensorns PIC på något vis, för detta hade jag tänkt mig I2C. Visst, det kanske är lite overkill, så varför tänker jag använda det? Jo, jag har aldrig använt varken I2C eller SPI, så någon gång ska man lära sig det, och nu har jag en anledning att lära mig det! Eftersom sensorn kommer ge interrupt ganska ofta är det också viktigt att det inte tar för lång tid att skicka över datan, visst är SPI snabbare än I2C, men I2C är ju ändå betydligt snabbare än tex RS232 (?).
25-juni-2009Byggandet:
Logiskt sett så är ju det första jag behöver ett hjul. Efter lite funderande kom jag fram till att man kan ta ett kullager, och helt enkelt använda det som hjul. Så jag tog ett flänskullager, hittade en lämplig bult att sätta fast det i, och två muttrar till det (varför två, det ska ni få se senare).
Sen skrev jag ut en färgskiva, 14 "rutor" ger ~4,934mm per interrupt.
Skar ut den med en skalpell så gott jag kunde. Man skulle haft något hårdare material så att jag kunde fräst ut den med CNC'n..
Efter lite fin justering så fick jag på den runt navet. Den är rätt smal tycker jag, så jag hoppas att reflexdetektorn kan fokusera på det lilla området!
När jag hade lyckats limma fast den upptäckte jag att det hade blivit en massa repor i det svarta! Hoppas att det inte stör sensorn...
Och såhär ska kretskortet med sensorn sitta. Längre än så har jag inte kommit..
Vad tror ni?
Mvh. Danne
Syfte:
Jag vill kunna mäta hur långt min robot har kört, och hur hög hastigheten är på min robot, den ska bara gå på plant underlag (= inomhus). Däremot så kan jag inte mäta hastigheten på hjulen, oavsett om hjulen slirar eller inte så måste jag ha den reella hastigheten så att jag vet hur långt den har kört totalt.
Hur?:
Ett hjul som trycks ner i marken kommer snurra när roboten åker framåt/bakåt, hjulet kommer sitta under robotens mittpunkt, detta för att undvika sidokrafterna när den snurrar. För att läsa av hjulets rörelse kommer jag använda en reflexdetektor, alltså en ir-led och en fototransistor i samma kapsel. Typ denna, fast ytmonterad 75-344-72 .
Sedan ska det sitta någon liten PIC (kanske 12f629 / 12f675) som läser av sensorn med hjälp av "interrupt on change" funktionen som PIC'ar brukar ha. Denna ska då spara hur långt man har kört, och räkna ut en hastighet från genomsnittet av de tre sista (eller något liknande) förbipasserande linjerna.
Linjerna på hjulet kommer vara anpassade så att ett interrupt motsvarar en förflyttning av 5mm.
Kommunikation:
Ja, Då måste ju roboten kunna kommunicera med sensorns PIC på något vis, för detta hade jag tänkt mig I2C. Visst, det kanske är lite overkill, så varför tänker jag använda det? Jo, jag har aldrig använt varken I2C eller SPI, så någon gång ska man lära sig det, och nu har jag en anledning att lära mig det! Eftersom sensorn kommer ge interrupt ganska ofta är det också viktigt att det inte tar för lång tid att skicka över datan, visst är SPI snabbare än I2C, men I2C är ju ändå betydligt snabbare än tex RS232 (?).
25-juni-2009Byggandet:
Logiskt sett så är ju det första jag behöver ett hjul. Efter lite funderande kom jag fram till att man kan ta ett kullager, och helt enkelt använda det som hjul. Så jag tog ett flänskullager, hittade en lämplig bult att sätta fast det i, och två muttrar till det (varför två, det ska ni få se senare).
Sen skrev jag ut en färgskiva, 14 "rutor" ger ~4,934mm per interrupt.
Skar ut den med en skalpell så gott jag kunde. Man skulle haft något hårdare material så att jag kunde fräst ut den med CNC'n..
Efter lite fin justering så fick jag på den runt navet. Den är rätt smal tycker jag, så jag hoppas att reflexdetektorn kan fokusera på det lilla området!
När jag hade lyckats limma fast den upptäckte jag att det hade blivit en massa repor i det svarta! Hoppas att det inte stör sensorn...
Och såhär ska kretskortet med sensorn sitta. Längre än så har jag inte kommit..
Vad tror ni?
Mvh. Danne
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Hastighetsmätare till robot (Med eget släphjul)
Varför inte ta en gammal kul-mus?
Då är ju redan allt klart. Du använder din egen elektronik såklart.
Denna kan du ju bara mäta 1D, med en mus kan du mäta 2D, Lägg till en elektrisk kompass så har du ju allt klart.
Men annars är det ju fins, du kan måla i det svarta med valfri mörk penna kanske?
Då är ju redan allt klart. Du använder din egen elektronik såklart.
Denna kan du ju bara mäta 1D, med en mus kan du mäta 2D, Lägg till en elektrisk kompass så har du ju allt klart.
Men annars är det ju fins, du kan måla i det svarta med valfri mörk penna kanske?
Re: Hastighetsmätare till robot (Med eget släphjul)
Jo, En mörk penna borde ju fungera. Bra tips!
Edit: Det är ju roligare att bygga själv!
Edit: Det är ju roligare att bygga själv!
-
- Inlägg: 593
- Blev medlem: 17 december 2005, 02:23:20
- Skype: crypto-master
- Ort: Nyköping
Re: Hastighetsmätare till robot (Med eget släphjul)
Kul!
Har du möjlighet får du gärna mäta signalerna med oscilloskop och visa, intressant att se hur pass distinkt skillnad man kan få
Har du möjlighet får du gärna mäta signalerna med oscilloskop och visa, intressant att se hur pass distinkt skillnad man kan få
Re: Hastighetsmätare till robot (Med eget släphjul)
Jo, Jag tänkte göra det så fort jag har fått på sensorn, det är lite enklare att kolla med en gång än att sitta och felsöka PIC'ens program sen när jag inte får det att fungera (så som det brukar bli...)
Re: Hastighetsmätare till robot (Med eget släphjul)
26-juni-2009 - Första testet!
Fortsatte bygga på den idag...
Varför finns det ytmonterade komponenter om man ändå måste löda på egna ben på dem!?
Lödde fast två SMD motstånd, lite sladdar och en stiftlist...
Dock hade jag satt reflexdetektorn lite för högt upp, så jag fick tillverka en plastbricka som gör att kretskortet kommer lite längre ifrån kullagret.
Såhär blev det, ganska perfekt tycker jag, dock var jag lite orolig eftersom sensorn sitter så lågt ut från navet..
Kopplade in den till oscilloscopet (och strömmatning) och körde lite fram och tillbaks.
Resultatet blev detta. Det verkar fungera, men det blir ju inte direkt en fyrkantsvåg som jag räknade med...
Om frekvensen är 4,68hz som på bilden, då blir varvtalet:
4,68 hz / 7 linjer = ~0,669 varv/sek = 40,11 RPM
Och, då körde jag den i:
40,11 RPM * 2tt * 11 / 60 = 46,18 mm/sek
Och det kan nog stämma
Jag ska testa att köra den liiite snabbare och se hur det går
Mvh. Danne
Fortsatte bygga på den idag...
Varför finns det ytmonterade komponenter om man ändå måste löda på egna ben på dem!?
Lödde fast två SMD motstånd, lite sladdar och en stiftlist...
Dock hade jag satt reflexdetektorn lite för högt upp, så jag fick tillverka en plastbricka som gör att kretskortet kommer lite längre ifrån kullagret.
Såhär blev det, ganska perfekt tycker jag, dock var jag lite orolig eftersom sensorn sitter så lågt ut från navet..
Kopplade in den till oscilloscopet (och strömmatning) och körde lite fram och tillbaks.
Resultatet blev detta. Det verkar fungera, men det blir ju inte direkt en fyrkantsvåg som jag räknade med...
Om frekvensen är 4,68hz som på bilden, då blir varvtalet:
4,68 hz / 7 linjer = ~0,669 varv/sek = 40,11 RPM
Och, då körde jag den i:
40,11 RPM * 2tt * 11 / 60 = 46,18 mm/sek
Och det kan nog stämma
Jag ska testa att köra den liiite snabbare och se hur det går
Mvh. Danne
Re: Hastighetsmätare till robot (Med eget släphjul)
36,25 hz = 357,7 mm/sek (1,28 km/h)
Detta var ju inget vackert...
40,39 hz = 398 mm/sek (1,43 km/h)
Och inte detta heller... Tanken va att den skulle kunna mäta uppåt 10 km/h. Någon som har idéer på hur man ska lösa detta, eller vad det kan bero på?
Detta var ju inget vackert...
40,39 hz = 398 mm/sek (1,43 km/h)
Och inte detta heller... Tanken va att den skulle kunna mäta uppåt 10 km/h. Någon som har idéer på hur man ska lösa detta, eller vad det kan bero på?
Re: Hastighetsmätare till robot (Med eget släphjul)
Det är ju inte så konstigt att du inte får en fyrkantsvåg ut, reflexdetektor har ju ett linjärt område mellan helt vitt och helt svart. Ett tips är att testa med en Schmitt-trigger.
- 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 höll på litegrann med encoders i kandidatprojektet. Det bästa hade vart att använda en magnetavkännande rotationssensor men pga konstruktionen kunde vi inte göra det. Här är en bild på våra "fält":
Här har du ett diagram över avstånd och utspänning.
Vi kom fram till att man ska ha ca 70% svart och 30% vitt för att få en ungefär 50% duty. Avståndet ska vara ca 1-2mm.
Man kan ha ca 4mm breda fält innan de går in för mycket i varandra pga bredden på sensorn. Det kan hjälpa om man sätter något översensorn med en springa som är smalare än 3mm. Vi hade en skiva med 48 svarta fält = 96 fält = 384 pulser per varv vid 135mm ut från centrum.
Det allra bästa är dock att använda en mätskiva som har genomskinliga fält. Det vill säga som i en kulmus eller om man skriver ut på ett OH-papper och mäter på varsin sida av skivan mha. en läsgaffel. Då blir det mycket stabilare pulser.
Vi använde en schmitt-triggerkrets på våra encoders för att få en ordentlig fyrkantsvåg. Det hjälper väldigt mycket om man ska använda den direkt på en digital ingång. Jag är inte säker men jag tror vi använde 74HC132.
Sen så föreslår jag att använda två stycken sensorer per hjul med 90° förskjutning. Då får du möjlighet att mäta riktning på hjulet + dubbelt så många pulser (om du även mäter på flankerna får du dubbelt så många till). 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. Hur de funkar ser du här: http://en.wikipedia.org/wiki/Encoder
victor_passe: Jag har visserligen inte testat det, men vad jag har hört så ger kulmus och lasermus inte så värst bra mätvärden. Problemet är att de inte är så noggranna och missar ofta mätvärden när hjulet slirar eller sensorn i lasermöss får dåliga mätvärden. Anledningen till att de funkar bra på datorn är att vi har ögon som feedback. Om pekarn inte hamnar där vi tänkt oss korrigerar vi det "omedvetet". Men i vissa tillämpningar kan de vara tillräckliga så det skulle vara intressant om någon testar.
Här har du ett diagram över avstånd och utspänning.
Vi kom fram till att man ska ha ca 70% svart och 30% vitt för att få en ungefär 50% duty. Avståndet ska vara ca 1-2mm.
Man kan ha ca 4mm breda fält innan de går in för mycket i varandra pga bredden på sensorn. Det kan hjälpa om man sätter något översensorn med en springa som är smalare än 3mm. Vi hade en skiva med 48 svarta fält = 96 fält = 384 pulser per varv vid 135mm ut från centrum.
Det allra bästa är dock att använda en mätskiva som har genomskinliga fält. Det vill säga som i en kulmus eller om man skriver ut på ett OH-papper och mäter på varsin sida av skivan mha. en läsgaffel. Då blir det mycket stabilare pulser.
Vi använde en schmitt-triggerkrets på våra encoders för att få en ordentlig fyrkantsvåg. Det hjälper väldigt mycket om man ska använda den direkt på en digital ingång. Jag är inte säker men jag tror vi använde 74HC132.
Sen så föreslår jag att använda två stycken sensorer per hjul med 90° förskjutning. Då får du möjlighet att mäta riktning på hjulet + dubbelt så många pulser (om du även mäter på flankerna får du dubbelt så många till). 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. Hur de funkar ser du här: http://en.wikipedia.org/wiki/Encoder
victor_passe: Jag har visserligen inte testat det, men vad jag har hört så ger kulmus och lasermus inte så värst bra mätvärden. Problemet är att de inte är så noggranna och missar ofta mätvärden när hjulet slirar eller sensorn i lasermöss får dåliga mätvärden. Anledningen till att de funkar bra på datorn är att vi har ögon som feedback. Om pekarn inte hamnar där vi tänkt oss korrigerar vi det "omedvetet". Men i vissa tillämpningar kan de vara tillräckliga så det skulle vara intressant om någon testar.
-
- Inlägg: 593
- Blev medlem: 17 december 2005, 02:23:20
- Skype: crypto-master
- Ort: Nyköping
Re: Hastighetsmätare till robot (Med eget släphjul)
Första oscilloskope bilden ser ju fin ut, vad är det för instrument du har ? Digitalt oscilloskope eller inkopplad dito på datorn ?
En schmitt trigger skulle nog göra en hel del, och sen mycket nyttigt EagleSpirit skrev tidigare.
En schmitt trigger skulle nog göra en hel del, och sen mycket nyttigt EagleSpirit skrev tidigare.
Re: Hastighetsmätare till robot (Med eget släphjul)
Är lite stressad nu, så jag ska läsa igenom allt igen och svara mera sen.
Ni säger att jag ska koppla en schmitt trigger på den innan PIC'en, men de digitala ingångarna på en PIC, är inte dem schmitt trigger??
Cryptomaster: Det är ett digitalt oscilloskop. Från Farnell. (Kostade båda skjortan och slipsen!!)
EagleSpirit: Mycket intressant information! Ska läsa lite noggrannare senare. Bengt (Vänerhall) hade ju en sensor från en optisk mus på sin robot i Robot-SM, men han sa precis som du att den inte fungerade alls bra, den hoppade över ibland och visade konstiga värden m.m. Så det känns som om man borde kunna få detta stabilare!
Edit: Jag ska öka pull-up resistansen på utgången ganska mycket så att jag får en större skillnad mellan utspänningen på svart och vit, jag skulle vilja ha närmare 0v ut när det är vitt!
Ni säger att jag ska koppla en schmitt trigger på den innan PIC'en, men de digitala ingångarna på en PIC, är inte dem schmitt trigger??
Cryptomaster: Det är ett digitalt oscilloskop. Från Farnell. (Kostade båda skjortan och slipsen!!)
EagleSpirit: Mycket intressant information! Ska läsa lite noggrannare senare. Bengt (Vänerhall) hade ju en sensor från en optisk mus på sin robot i Robot-SM, men han sa precis som du att den inte fungerade alls bra, den hoppade över ibland och visade konstiga värden m.m. Så det känns som om man borde kunna få detta stabilare!
Edit: Jag ska öka pull-up resistansen på utgången ganska mycket så att jag får en större skillnad mellan utspänningen på svart och vit, jag skulle vilja ha närmare 0v ut när det är vitt!
Re: Hastighetsmätare till robot (Med eget släphjul)
Efter en koll i databladet så såg jag att PIC'ar kan ha både med Schmitt Trigger och utan på ingångarna. Men jag hittade en låda med AND-kretsar med Schmitt Trigger ingång på, om jag kopplar ihop ingångarna på den så kan jag ju använda det tills vidare för att få en fyrkantsvåg.
Nu ska jag gå o labba lite mer, sen kommer det en ny uppdatering!
Nu ska jag gå o labba lite mer, sen kommer det en ny uppdatering!
Re: Hastighetsmätare till robot (Med eget släphjul)
De svarta som hade blivit dåligt fyllde jag i med en bläckpenna. Sen satte jag en till distansbricka på skruven så sensorn kom lite längre ifrån tavlan.
Här ser man avståndet...
(Om ni la märke till skalbaggen på båda de förra bilderna, vilket jag gjorde precis, så är det denna. Väldigt efterhängsen, så fort jag tog fram kameran så satte den sig på det jag skulle ta kort på!! (Kanske något med IR-strålning eller liknande... ))
Såhär blev det då. Mycket bättre!
Sen ändrade jag pull-upen så att jag fick mera "sving" på signalen. Dock tog jag lite för stort så den kom bara upp i 3,2v. Men det fixade jag, så nu går den upp till 4,2v.
Men när jag kopplade in den till min schmitt trigger blev det konstigt! Både shmitt triggerns utgång, och sensorns utgång fick störningar på sig!
Vad kan det bero på? Jag använder en 74HC08 (.pdf), jag kopplade ihop de två ingångarna, dock lät jag ingångarna på de oanvända kretsarna ligga flytande... Kan det vara det som är problemet? Jag har ordentlig avkoppling på matningen!
Här ser man avståndet...
(Om ni la märke till skalbaggen på båda de förra bilderna, vilket jag gjorde precis, så är det denna. Väldigt efterhängsen, så fort jag tog fram kameran så satte den sig på det jag skulle ta kort på!! (Kanske något med IR-strålning eller liknande... ))
Såhär blev det då. Mycket bättre!
Sen ändrade jag pull-upen så att jag fick mera "sving" på signalen. Dock tog jag lite för stort så den kom bara upp i 3,2v. Men det fixade jag, så nu går den upp till 4,2v.
Men när jag kopplade in den till min schmitt trigger blev det konstigt! Både shmitt triggerns utgång, och sensorns utgång fick störningar på sig!
Vad kan det bero på? Jag använder en 74HC08 (.pdf), jag kopplade ihop de två ingångarna, dock lät jag ingångarna på de oanvända kretsarna ligga flytande... Kan det vara det som är problemet? Jag har ordentlig avkoppling på matningen!
Re: Hastighetsmätare till robot (Med eget släphjul)
Efter en närmare titt så var inte den AND-kretsen shmitt trigger... Jag har kollat igenom hela mitt logik förråd, och där finns inte en enda schmitt trigger av någon typ . Det får väll bli att koppla in det dirrekt på en schmitt trigger ingång på PIC'en, men det är ju svårare att felsöka då...
-
- Inlägg: 593
- Blev medlem: 17 december 2005, 02:23:20
- Skype: crypto-master
- Ort: Nyköping
Re: Hastighetsmätare till robot (Med eget släphjul)
7414 är schmitt triggerkrets. Dock har jag inte själv någon annars hade jag skickat ner en till dig mot att få se skillnaden