Innholdsfortegnelse:

Measurino: a Measuring Wheel Proof of Concept: 9 trinn
Measurino: a Measuring Wheel Proof of Concept: 9 trinn

Video: Measurino: a Measuring Wheel Proof of Concept: 9 trinn

Video: Measurino: a Measuring Wheel Proof of Concept: 9 trinn
Video: 125 Innovative Electric Vehicles and Personal Transports 2024, November
Anonim
Measurino: et målehjuls bevis på konsept
Measurino: et målehjuls bevis på konsept

Measurino teller ganske enkelt antall rotasjoner av et hjul, og distansen som er tilbakelagt er direkte proporsjonal med radiusen til selve hjulet. Dette er det grunnleggende prinsippet for en kilometerteller, og jeg har startet dette prosjektet hovedsakelig for å studere hvordan kretsen (håndteres av en Arduino mikrokontroller), kompatibel med flere distanser, fra millimeter til kilometer, og for å evaluere mulige problemer eller forbedringer.

Trinn 1: Deler og komponenter

  • Arduino Nano rev.3
  • 128 × 64 OLED diplay (SSD1306)
  • Inkrementell fotoelektrisk roterende encoder (400P/R)
  • Gummihjul for modellfly (51 mm dia)
  • 2 trykknapper
  • 9v batteri

Trinn 2: Koderen

Koderen
Koderen
Koderen
Koderen

For dette prosjektet har jeg testet flere billige rotorkodere, men jeg kastet dem umiddelbart på grunn av presisjons-/følsomhetsproblemer. Så jeg gikk til DFRobots inkrementelle fotoelektriske roterende encoder - 400P/R SKU: SEN0230. Dette er en industriell inkrementell fotoelektrisk roterende encoder med aluminiumsmateriale, metallskall og rustfritt stålaksel. Det genererer AB tofaset ortogonalt pulssignal gjennom rotasjon av gitterskiven og optokobleren. 400 pulser/runde for hver fase, og 1600 pulser/runde for tofase 4 ganger utgang. Denne roterende encoderen støtter maks 5000 r/min hastighet. Og den kan brukes til hastighet, vinkel, vinkelhastighet og andre datamålinger.

Den fotoelektriske roterende encoderen har en NPN åpen kollektorutgang, så du må bruke pullup-motstander eller aktivere den interne Arduino-pull-up. Den bruker 750L05 spenningsregulatorbrikke, som har en DC4.8V-24V bred inngangseffekt.

Trinn 3: Følsomhet

Følsomhet
Følsomhet

Denne optoelektriske rotorkoderen har virkelig en stor følsomhet, noe som gjør den perfekt for akselkontroll og posisjonering. Men for mitt formål var det for mye fornuftig. Med et 51 mm hjul har denne koderen en følsomhet på 0,4 mm, noe som betyr at hvis du hånden har minimale skjelvinger, blir de registrert. Så jeg senket følsomheten ved å legge til en hysterese i avbruddsrutinen:

ugyldig avbrudd ()

{char i; i = digitalRead (B_PHASE); hvis (i == 1) teller += 1; annet teller -= 1; hvis (abs (count)> = hysterese) {flag_A = flag_A+count; telle = 0; }}

Dette trikset var nok til å gi tiltaket en god stabilitet.

Trinn 4: Måling

Velg din måleenhet (desimal eller imperial), og plasser deretter hjulet med kontaktpunktet i begynnelsen av målingen, trykk på tilbakestillingsknappen og la det rotere til slutten. Fra venstre til høyre øker og summerer målingen, for høyre til venstre reduseres og trekkes det. Du kan også måle kurveobjekter (bilformen din, rekkverket til en vindeltrapp, armlengden fra skulderen til håndleddet med albuen bøyd, etc.).

En full rotasjon av et hjul med diameter = D vil måle en lengde på D*π. I mitt tilfelle, med et 51 mm hjul, er dette 16,02 cm og hver flått måler 0,4 mm (se avsnittet Følsomhet).

Trinn 5: Montering

PoC har blitt laget på et brødbrett for å demonstrere kretsene. Hver komponent er festet på brettet og den roterende omkoderen er koblet til en 2x2 polskrueklemme. Batteriet er et 9v standardbatteri og det totale strømforbruket til kretsen er rundt 60mA.

Trinn 6: Kode

For skjermen brukte jeg U8g2lib som er veldig fleksibel og kraftig for denne typen OLED -skjermer, noe som gir et bredt utvalg av fonter og gode posisjoneringsfunksjoner. Jeg brukte ikke så mye tid på å fylle opp displayet med informasjon, ettersom dette bare var en Poc.

For å lese koderen bruker jeg avbrudd generert av en av de to fasene: hver gang koderakselen beveger seg, genererer den en avbrudd til Arduino knyttet til impulsens stigning.

attachInterrupt (digitalPinToInterrupt (A_PHASE), interrupt, RISING);

Displayet skifter automatisk fra millimeter, til meter, til kilometer og (hvis valgt fra trykknappen) fra tommer, til meter, til miles, mens RST -knappen tilbakestiller målet til null.

Trinn 7: Skjemaer

Skjemaer
Skjemaer

Trinn 8: Fra PoC til produksjon

Hvorfor er dette et bevis på konsept? På grunn av mange forbedringer som kan/bør gjøres før du bygger et fullt fungerende utstyr. La oss se alle mulige forbedringer i detaljer:

  • Hjul. Følsomheten/presisjonen til Measurino er avhengig av hjulet. Et mindre hjul kan gi deg bedre presisjon når du måler små lengder (i størrelsesorden millimeter til centimeter). Et mye større hjul med forlengelsesbom gjør det mulig å gå på veien og måle kilometer. For små hjul må materialet vurderes: et fullgummihjul kan deformere litt og påvirke presisjonen, så i så fall vil jeg foreslå et aluminium/stålhjul med bare et tynt tape for å unngå sklir. Med en triviell programvare-redigering (velg riktig hjuldiameter med en bryter), kan du vurdere interchageable hjul for å tilpasse seg ethvert mål ved å bruke en 4-pinners kontakt (dvs. usb-port).
  • Programvare. Ved å legge til en annen trykknapp, kan programvaren også ta seg av måling av områder med rektangler eller vinkler amplitude. Jeg anbefaler også å legge til en "Hold" -knapp for å fryse målingen på slutten, og unngå å utilsiktet bevege hjulet før du leser verdien på displayet.
  • Bytt hjulet med en tråd. Ved korte tiltak (innen få meter) kan hjulet byttes ut med en fjæret spole som inneholder tråd eller tape. På denne måten trenger du bare å trekke i tråden (få encoderakselen til å rotere), ta mål og se på displayet.
  • Legg til visning av batteristatus. 3.3v Arduino referansepinne (nøyaktig innen 1%) kan brukes som en base for ADC -omformeren. Så ved å gjøre en analog til digital konvertering på 3,3V-pinnen (ved å koble den til A1) og deretter sammenligne denne avlesningen med avlesningen fra sensoren, kan vi ekstrapolere en sant til virkelighet, uansett hva VIN er (så lenge den er over 3,4V). Et fungerende eksempel kan bli funnet i dette andre prosjektet mitt.

Trinn 9: Bildegalleri

Anbefalt: