Indholdsfortegnelse:

Measurino: et målehjul Bevis for koncept: 9 trin
Measurino: et målehjul Bevis for koncept: 9 trin

Video: Measurino: et målehjul Bevis for koncept: 9 trin

Video: Measurino: et målehjul Bevis for koncept: 9 trin
Video: Råkøyring på Snapchat 2024, Juli
Anonim
Measurino: et målehjuls bevis på koncept
Measurino: et målehjuls bevis på koncept

Measurino tæller simpelthen antallet af omdrejninger på et hjul, og den tilbagelagte afstand er direkte proportional med selve hjulets radius. Dette er det grundlæggende princip for et kilometertæller, og jeg har hovedsageligt startet dette projekt for at studere, hvordan man holder kredsløbet (håndteret af en Arduino mikrokontroller) kompatibelt med flere afstande fra millimeter til kilometer og for at evaluere mulige problemer eller forbedringer.

Trin 1: Dele og komponenter

  • Arduino Nano rev.3
  • 128 × 64 OLED diplay (SSD1306)
  • Inkrementel fotoelektrisk roterende encoder (400P/R)
  • Gummihjul til modelfly (51 mm i diameter)
  • 2 trykknapper
  • 9v batteri

Trin 2: Koderen

Koderen
Koderen
Koderen
Koderen

Til dette projekt har jeg testet flere billige roterende encodere, men jeg kasserede dem straks på grund af præcisions-/følsomhedsproblemer. Så jeg gik til DFRobots Incremental Photoelectric Rotary Encoder - 400P/R SKU: SEN0230. Dette er en industriel inkrementel fotoelektrisk roterende encoder med aluminiumsmateriale, metalskal og rustfrit stålaksel. Det genererer AB tofaset ortogonalt pulssignal gennem rotation af gitterskiven og optokobleren. 400 impulser/runde for hver fase og 1600 impulser/runde for dobbeltfase 4 gange output. Denne roterende encoder understøtter max 5000 r/min hastighed. Og den kan bruges til hastighed, vinkel, vinkelhastighed og andre datamålinger.

Den fotoelektriske roterende encoder har en NPN åben kollektorudgang, så du skal bruge pullup-modstande eller aktivere den interne Arduino's pull-up. Det bruger 750L05 spændingsregulatorchip, der har en DC4.8V-24V bred indgangseffekt.

Trin 3: Følsomhed

Følsomhed
Følsomhed

Denne optoelektriske roterende encoder har virkelig en stor følsomhed, hvilket gør den perfekt til akselstyring og positionering af applikationer. Men til mit formål var det for meget fornuftigt. Med et 51 mm hjul har denne encoder en følsomhed på 0,4 mm, hvilket betyder, at hvis du hånden har minimale rysten, vil de blive registreret. Så jeg sænkede følsomheden ved at tilføje en hysterese i afbrydelsesrutinen:

tomrumsafbrydelse ()

{char i; i = digitalRead (B_PHASE); hvis (i == 1) tæller += 1; andet tæller -= 1; hvis (abs (count)> = hysterese) {flag_A = flag_A+count; count = 0; }}

Dette trick var nok til at give målingen en god stabilitet.

Trin 4: Måling

Vælg din måleenhed (decimal eller kejserlig), og placer derefter hjulet med dets kontaktpunkt i starten af din måling, tryk på knappen Nulstil og lad det dreje til slutningen. Fra venstre mod højre stiger og summerer målingen, for højre til venstre falder og trækkes det. Du kan også måle kurveobjekter (din bilform, gelænderet på en vindeltrappe, armens længde fra skulderen til håndleddet med albuen bøjet osv.).

En fuld rotation af et hjul med diameter = D måler en længde på D*π. I mit tilfælde, med et 51 mm hjul, er dette 16,02 cm, og hver flåt måler 0,4 mm (se afsnittet Følsomhed).

Trin 5: Samling

PoC er blevet lavet på et brødbræt for at demonstrere kredsløbet. Hver komponent er blevet fastgjort på brættet, og den roterende encoder er forbundet til en 2x2 polskrueterminalblok. Batteriet er et 9v standardbatteri, og det samlede strømforbrug i kredsløbet er omkring 60mA.

Trin 6: Kode

Til displayet brugte jeg U8g2lib, som er meget fleksibel og kraftfuld til denne form for OLED -skærme, hvilket giver et bredt udvalg af skrifttyper og gode placeringsfunktioner. Jeg spildte ikke for meget tid på at fylde displayet op med information, da dette kun var en Poc.

For at læse encoderen bruger jeg afbrydelser genereret af en af de 2 faser: hver gang koderakslen bevæger sig, genererer den en afbrydelse til Arduino, der er knyttet til impulsens stigning.

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

Displayet skifter automatisk fra millimeter til meter til kilometer og (hvis det vælges fra trykknappen) fra inches til yards til miles, mens RST -knappen nulstiller målingen til nul.

Trin 7: Skemaer

Skemaer
Skemaer

Trin 8: Fra PoC til produktion

Hvorfor er dette et bevis på koncept? På grund af mange forbedringer, der kunne/bør foretages, før man bygger et fuldt fungerende udstyr. Lad os se alle mulige forbedringer i detaljer:

  • Hjul. Measurinos følsomhed/præcision afhænger af hjulet. Et mindre hjul kan give dig en bedre præcision ved måling af små længder (i størrelsesordenen millimeter til centimeter). Et meget større hjul med en forlængelsesbom gør det muligt at gå på vejen og måle kilometer. For små hjul skal materialet overvejes: et fuldgummihjul kan deformere lidt og påvirke præcisionen, så i så fald vil jeg foreslå et aluminium/stålhjul med kun et tyndt bånd for at undgå glid. Med en triviel software-redigering (vælg den korrekte hjuldiameter med en switch), kan du overveje interchageable hjul til at tilpasse sig ethvert mål ved hjælp af et 4-benet stik (dvs. usb-port).
  • Software. Ved at tilføje en anden trykknap kunne softwaren også tage sig af måling af områder med rektangler eller vinkler amplitude. Jeg råder også til at tilføje en "Hold" -knap for at fastfryse målingen for enden, og undgå at utilsigtet bevæge hjulet, før du læser værdien på displayet.
  • Udskift hjulet med en spole. Ved korte foranstaltninger (inden for få meter) kunne hjulet udskiftes med en fjedret spole indeholdende tråd eller tape. På denne måde skal du bare trække i tråden (få encoderakslen til at rotere), tage dit mål og se på displayet.
  • Tilføj visning af batteristatus. 3.3v Arduino referencepinden (præcis inden for 1%) kan bruges som en base for ADC -konverteren. Så ved at lave en analog til digital konvertering på 3,3V-stiften (ved at tilslutte den til A1) og derefter sammenligne denne aflæsning med aflæsningen fra sensoren, kan vi ekstrapolere en virkelighedstro læsning, uanset hvad VIN er (så længe den er over 3,4V). Et fungerende eksempel kunne findes i dette andet projekt af mig.

Trin 9: Billedgalleri

Anbefalede: