» tråder » DIY-ideer »Speedometer for scooter

Speedometer for scooter

Jeg bringer din neste oppmerksomhet håndverknemlig speedometeret for scooter.
Bakgrunnen er som følger: for gleden av å overvinne fysisk inaktivitet ble Rollersurf-styret kjøpt. Siden det bare er to hjul på brettet, å sykle på det krever en følelse av balanse, kan du bare “stå” på det i bevegelse. Etter å ha sørget for at hjulene etter kontinuerlig bevegelse i en avstand på rundt 700 meter så ut til å sitte fast i sanden og bevegelsen var veldig vanskelig, henvendte jeg meg til Internett og spesialister. Det ble tydelig at på grunn av overdreven mykhet av hjulmaterialet for min vekt, er hjulmaterialet veldig varmt og myknet, kontakten med veien øker og den økte viskositeten til hjulet gjør det vanskelig å kontrollere og skape dreiemoment. Etter å ha byttet ut hjulene med en hardere rull, økte brettene betydelig, og det samme gjorde kontrollen. På det samme lange sporet skjedde ikke den kjente bremsingen, hastigheten fortsatte å øke, noe som førte til et ubehagelig fall.
Ideen om å måle hastighet og begrense deg i akselerasjon kom, sannsynligvis etter et fall :) Det var en prototype fra 2014, der en slik enhet ble opprettet, men for en annen type brett, der rotasjonsplanet til hjulet ikke beveger seg mye i forhold til brettet og elektronikk kan plasseres på selve brettet ved å koble det til sensoren på hjulet med en fleksibel ledning.
I mitt tilfelle skal ikke både sensoren og elektronikken plasseres på hjulbraketten, siden braketten (selve hjulet) roterer rundt sin akse på en sirkulær måte i forhold til brettet.
Roller Surf Utseende


Realisering. Signalspesifikasjonen ble valgt av BlueTooth på grunn av tilgjengeligheten av denne teknologien og dens tilstedeværelse i Samsung SM-V700 smartwatch for hånden. BlueTooth-modulen ble valgt HC-05, kontrolleren Arduino Mini Pro, men deretter erstattet av AtMega168A bare kontroller, ble et 500 mAh Li-Pol-batteri valgt for å møte hjulens dimensjoner og det estimerte strømforbruket. Som rotasjonssensor ble Hall-sensoren SS49E valgt, i motsetning til prototypen, som mer driftsstabil. Følgelig ble skissen litt modernisert. Passasjen til en magnet montert i hjulnavet analyseres med to punkter: den første aktiveringen - magneten kommer inn i følsomhetssonen - "platoon" og den andre aktiveringen - magneten går ut av sensorsensitivitetssonen - "nedstigning".Kontrolleren teller disse hendelsene innen et spesifikt tidsrom - 1 sekund og sender det mottatte nummeret via kommunikasjonskanalen til Android-enheten, samtidig som de innkommende signalene analyseres. Programmet for å motta, vise, administrere modulen ble opprettet basert på prototypen i Android Studio-miljøet. Den sørger for noen forbedringer relatert til økende støyimmunitet. I likhet med prototypen beregner den hastighet og avstand. Den nyttige funksjonen ved å slå på / av "lyskasteren" - en LED som er styrt fremover i bevegelse - er også lagret, slik det ser ut.
Blokk uten deksel

Synlig øverst til venstre: rød beskyttelse mot lading reversering, ladearbeidsbryter, batteri; nedenfor: den grønne VT-modulen, AtMega168A-mikrokontrolleren med innspolede klemmer limes på ryggen med den øvre delen av saken.
Blokkdeksel med magnetisk sensor

Sammen med hjulet ser modulen slik ut:
Blokk på hjul

På bildet kan du se strømbryteren, kontaktene for tilkobling av laderen, på den andre siden av enheten i hjørnet over - LED - "frontlys".
Prototypeprogrammet ble supplert med muligheten til å gi ut lyd- og vibrasjonssignaler ved forskjellige hendelser (slå av / på hodelykten, et alarmsignal når du overskrider den angitte maksimale fartsgrensen).
Testing på bordet - på bildet nedenfor, ennå ikke testet på veien, venter på sommeren :)
Testing på bordet

Android Studio-prosjektet har et stort volum, jeg legger det et sted med en lenke, hvis det er interesse, tar jeg med en skisse med kommentarer.
I nærvær av interesse er jeg klar til å dele ideer, opplevelser.
Spørsmål \ emne blir automatisk publisert i det sosiale. nettverk av nettsteder - følg med for svar der:

Passer for tema

Beslektede emner

Legg til en kommentar

    • smilersmilerxaxaokdontknowyahoonea
      sjefscratchlurejaja-jaaggressivhemmelighet
      beklagerdansedance2dance3benådninghjelpdrikkevarer
      stoppvennergodgoodgoodfløytebesvimelsetunge
      røykklappingCrayerklærehånligdon-t_mentionnedlasting
      heteirefullaugh1MDAmøtemoskingnegative
      not_ipopcornstraffeleseskremmeskremmersøk
      spydighetthank_youdetteto_clueumnikakuttenig
      dårligbeeeblack_eyeblum3rødmeskrytekjedsomhet
      sensurertpleasantrysecret2trueseieryusun_bespectacled
      ShokRespektlolPrevedvelkommenKrutoyya_za
      ya_dobryihelperne_huliganne_othodiFLUDforbudnær
1 kommentar
Forfatteren
ATMega168A firmwareskisse:
/*
* Mega168 !!!
*/
# inkluder "timer-api.h"

int Polaritet = -1; // polaritet av pulsen til inngangssignalet (i mitt tilfelle negativ
int Treshold = 500; // triggergrense for leseimpuls 1/2 Vcc = 512
int CountTurn = 0; // lagre antall omdreininger for regnskapsperioden
int LED = 13; // LED koblet til PB5-pinne
int InputSignal = A5; // inngang for Hall-sensor
int TurnNumber = 0; // akkumulert antall omdreininger
int DeltaT = 28; // forsinkelse fra fronten til bestemmelse av enden av pulsen for stabilitet
bool Tick = falsk; // initialverdi, ingen hake enda

ugyldig oppsett ()
{
Serial.begin (9600); // for feilsøking
timer_init_ISR_2Hz (TIMER_DEFAULT); // få 1 sekunders forsinkelse !!!
pinMode (LED, UTGANG); // signalutgang til bakgrunnsbelysningen (lyskaster)
pinMode (InputSignal, INPUT); // inngang for Hall-sensor
}

void loop () // her gjør vi behandlingen av signaler fra sensoren og frontlyskontrollen
{
if (Merk) // tillatelse til å utføre if-blokken med et fast tidsintervall
// send antall revolusjoner
{
Serial.println (String (CountTurn) + ";"); // for feilsøking
Kryss av = usant; // forbered sporingen. tidsintervall
CountTurn = 0; // null antall omdreininger etter overføring til smarttelefonen
}

ellers // hvis flåtten ikke har kommet ennå, akkumulerer vi antall omdreininger, slår / på lyskasteren
{
// akkumulering av revolusjoner
hvis (analogRead (InputSignal) {
forsinkelse (DeltaT); // les ikke noe ennå
hvis (analogRead (InputSignal)> Treshold) // etterkant har kommet
{
CountTurn ++; // akkumulere antall omdreininger ved ankomst av bakkanten
}
}

// frontlyskontroll
hvis (Serial.available ()> 0) // les tegnet fra BTSerial
{
char kommando = Serial.read ();
bytte (kommando)
{
sak '0': digitalWrite (LED, LAV); bryte; // slå på lyskasteren
case '1': digitalWrite (LED, HIGH); break; // Slå av lyskasteren
}
}
}
}

void timer_handle_interrupts (int timer)
{
Kryss av = sant;
}

Vi anbefaler deg å lese:

Gi den til smarttelefonen ...