» teme » Napravite ideje »Brzinomjer za skuter

Brzinomjer za skuter

Predstavljam vam moju sljedeću zanatinaime, brzinomjer za skuter.
Pozadina je sljedeća: za zadovoljstvo prevladavanja tjelesne neaktivnosti kupljena je daska Rollersurf. Kako su na ploči samo dva kotača, vožnja po njoj zahtijeva osjećaj ravnoteže, na njoj možete „stajati“ samo u pokretu. Nakon što sam se uvjerio da su se, nakon kontinuiranog kretanja na udaljenosti od oko 700 metara, kotači kao da se zaglavio u pijesku, a kretanje je bilo vrlo teško, obratio Internetu i stručnjacima. Postalo je jasno da zbog pretjerane mekoće materijala kotača za moju težinu, materijal kotača je vrlo vruć i omekšan, kontakt s cestom se povećava, a povećana viskoznost kotača otežava kontrolu i stvaranje zakretnog momenta. Nakon zamjene kotača tvrđim kolutom, ploče su se značajno povećale, kao i jednostavnost rada. Na istoj dugoj stazi nije se dogodilo poznato kočenje, brzina se i dalje povećavala, što je dovelo do neugodnog pada.
Ideja za mjerenje brzine i ograničenje u ubrzanju došla je, vjerojatno nakon pada :) Postojao je prototip iz 2014. godine, gdje je takav uređaj stvoren, ali za drugu vrstu ploče, gdje se ravnina rotacije kotača ne kreće mnogo u odnosu na ploču i elektronika može se postaviti na samu ploču povezivanjem sa senzorom na kolu s fleksibilnom žicom.
U mom se slučaju i senzor i elektronika ne smiju postavljati na nosač kotača, jer se nosač (točak) rotira oko svoje osi kružno u odnosu na ravninu ploče.
Izgled valjka za surtanje


Realizacija. Specifikacija prijenosa odabrala je BlueTooth zbog dostupnosti ove tehnologije i njegove prisutnosti u Samsung SM-V700 smartwatchu pri ruci. Za modul BlueTooth izabran je HC-05, kontroler Težak Mini Pro, ali naknadno zamijenjen golim kontrolerom AtMega168A, odabrana je Li-Pol baterija od 500mAh koja zadovoljava dimenzije kotača i procijenjenu potrošnju energije. Kao senzor rotacije odabran je Hall Sensor SS49E, za razliku od prototipa, kao stabilnije u radu. U skladu s tim, skica je malo modernizirana. Prolazak magneta ugrađenog u glavčinu kotača analizira se s dvije točke: prva aktivira - magnet ulazi u zonu osjetljivosti - "vod", a druga aktivira - magnet izlazi iz zone osjetljivosti osjetnika - "silazak".Upravljač broji te događaje u određenom vremenskom periodu - 1 sekundu i šalje primljeni broj preko komunikacijskog kanala na Android uređaj, istovremeno analizirajući dolazne signale. Program za primanje, prikazivanje, upravljanje modulom kreiran je na temelju prototipa u okruženju Android Studio. Omogućuje određena poboljšanja vezana za povećanje otpornosti na buku. Kao i prototip, izračunava brzinu i udaljenost. Korisna funkcija uključivanja / isključivanja "prednjeg svjetla" - LED usmjerenog prema naprijed - također je spremljena, kako se čini.
Blok bez poklopca

Vidljiv gornji lijevi dio: crvena LED zaštita od prestanka punjenja, prekidač za rad napunjenosti, baterija ispod: zeleni BT modul, mikrokontroler AtMega168A s podesivim stezaljkama zalijepljen je na stražnjoj strani kućišta gornjim dijelom.
Poklopac bloka s magnetskim senzorom

Sklopljen sa ricinusom, modul izgleda ovako:
Blokiraj na ricinusu

Na fotografiji možete vidjeti prekidač za napajanje, kontakte za spajanje punjača, s druge strane jedinice na uglu iznad - LED - "prednje svjetlo".
Program prototipa bio je dopunjen mogućnošću izdavanja zvučnih i vibracijskih signala u različitim događajima (uključivanje / isključivanje prednjeg svjetla, alarmni signal kada prekoračite navedenu maksimalnu ograničenje brzine).
Testiranje na stolu - na fotografiji ispod, još nije testirano na cesti, čeka se ljeto :)
Ispitivanje na stolu

Projekt Android Studio ima veliku količinu, objavit ću ga negdje s vezom, ako postoji interes, donosim skicu s komentarima.
U nazočnosti interesa, spreman sam dijeliti ideje, iskustva.
Pitanje \ tema automatski se objavljuje u društvenom. mreža web-mjesta - pratite odgovore tamo:

Prikladno za temu

Povezane teme

Dodajte komentar

    • osmijehosmjesixaxau redudontknowprostakNea
      gazdaogrebotinabudaladaDa-Daagresivantajna
      oprostiteplesdance2dance3pomilovanjepomoćpića
      zaustavljanjeprijateljidobrogoodgoodzviždaljkapasti u nesvijestjezik
      dimpljeskanjeCrayObjavitepodrugljivdon-t_mentionpreuzimanje
      vrućinaljutitlaugh1MDAsastanakmoskingnegativan
      not_ikokicekaznitičitatiuplašitiplašitraži
      podsmijehthank_youovoto_clueumnikakutansložiti
      lošebeeeblack_eyeblum3rumenilohvalisati sedosada
      cenzuriranizadirkivanjesecret2prijetitipobjedayusun_bespectacled
      shokrespektlolpreveddobrodošlikrutoyya_za
      ya_dobryipomoćnikne_huliganne_othodifludzabranablizu
1 komentar
Autor
Skica firmvera ATMega168A:
/*
* Mega168 !!!
*/
#include "timer-api.h"

int Polarity = -1; // polaritet pulsa ulaznog signala (u mom slučaju negativan
int Treshold = 500; // prag pokretanja očitanog impulsa 1/2 Vcc = 512
int CountTurn = 0; // pohraniti broj okretaja za obračunsko razdoblje
int LED = 13; // LED spojen na PB5 pin
int InputSignal = A5; // ulaz za Hall senzor
int TurnNumber = 0; // akumulirani broj okretaja
int DeltaT = 28; // odgoda s prednje strane kako bi se odredio kraj pulsa za stabilnost
bool Tick = netočno; // početna vrijednost, još uvijek nema kvačica

postavljanje praznine ()
{
Serijski počet (9600); // za uklanjanje pogrešaka
timer_init_ISR_2Hz (TIMER_DEFAULT); // dobiti odgodu od 1 sekunde !!!
pinMode (LED, IZLAZ); // izlaz signala na pozadinsko osvjetljenje (prednje svjetlo)
pinMode (InputSignal, INPUT); // ulaz za Hall senzor
}

void loop () // ovdje radimo obradu signala iz senzora i upravljanja prednjim svjetlima
{
if (Tick) // dopuštenje za izvršavanje bloka if u određenom vremenskom intervalu
// poslati broj okretaja
{
Serial.println (String (CountTurn) + ";"); // za uklanjanje pogrešaka
Označite = lažno; // pripremite trag. vremenski interval
CountTurn = 0; // nula broja okretaja nakon prijenosa na pametni telefon
}

else // ako krpelj još nije stigao, akumuliramo broj obrtaja, uključimo / isključimo prednje svjetlo
{
// nakupljanje obrtaja
ako je došao (analogRead (InputSignal) {
kašnjenje (DeltaT); // još ništa ne čitajte
if (analogRead (InputSignal)> Treshold) // krajnji rub je došao
{
CountTurn ++; // akumulirati broj obrtaja po dolasku zadnjeg ruba
}
}

// upravljanje prednjim svjetlima
if (Serial.available ()> 0) // pročitajte lik iz BTSerial
{
naredba char = Serial.read ();
sklopka (naredba)
{
slučaj '0': digitalWrite (LED, LOW); razbiti; // upaliti prednje svjetlo
kućište '1': digitalWrite (LED, HIGH); razbiti; // Isključite prednje svjetlo
}
}
}
}

void timer_handle_interrupts (int timer)
{
Tick ​​= istina;
}

Savjetujemo vam da pročitate:

Predaj to pametnom telefonu ...