» Tematy » Pomysły na majsterkowanie »Prędkościomierz do skutera

Prędkościomierz do skutera

Zwracam uwagę na moją następną rzemiosłomianowicie prędkościomierz do skutera.
Tło jest następujące: dla przyjemności pokonania braku aktywności fizycznej zakupiono deskę Rollersurf. Ponieważ na planszy są tylko dwa koła, jazda na niej wymaga poczucia równowagi, więc możesz „stać” na niej tylko w ruchu. Po upewnieniu się, że po ciągłym ruchu w odległości około 700 metrów koła wydawały się utknąć w piasku, a ruch był bardzo trudny, zwróciłem się do Internetu i specjalistów. Stało się jasne, że z powodu nadmiernej miękkości materiału koła w stosunku do mojej masy, materiał koła jest bardzo gorący i miękki, zwiększa się kontakt z drogą, a zwiększona lepkość koła utrudnia kontrolę i wytwarzanie momentu obrotowego. Po wymianie kół na twardszy wał deski znacznie wzrosły, podobnie jak łatwość sterowania. Na tym samym długim torze nie nastąpiło znane hamowanie, prędkość nadal rosła, co doprowadziło do nieprzyjemnego spadku.
Pomysł zmierzenia prędkości i ograniczenia przyspieszenia pojawił się, prawdopodobnie po upadku :) Był prototyp z 2014 roku, w którym takie urządzenie zostało stworzone, ale dla innego rodzaju deski, gdzie płaszczyzna obrotu koła nie porusza się zbytnio względem deski i elektronika można go umieścić na samej płycie, łącząc go z czujnikiem na kole za pomocą elastycznego drutu.
W moim przypadku zarówno czujnik, jak i elektronika nie powinny być umieszczane na wsporniku koła, ponieważ sam wspornik (kółko samonastawne) obraca się wokół swojej osi w kołowy sposób względem płaszczyzny płyty.
Wygląd Roller Surf


Realizacja Specyfikacja transmisji została wybrana przez BlueTooth ze względu na dostępność tej technologii i jej obecność w smartwatchie Samsung SM-V700. Moduł BlueTooth został wybrany sterownik HC-05 Arduino Mini Pro, ale następnie zastąpiony goim kontrolerem AtMega168A, wybrano akumulator Li-Pol 500 mAh, aby spełnić wymiary kółka i szacowany pobór mocy. Jako czujnik obrotu wybrano czujnik Halla SS49E, w przeciwieństwie do prototypu, jako bardziej stabilny operacyjnie. W związku z tym szkic został nieco zmodernizowany. Przejście magnesu zamontowanego w piaście koła analizowane jest w dwóch punktach: pierwsze uruchomienie - magnes wchodzi w strefę czułości - „pluton”, a drugie uruchomienie - magnes opuszcza strefę czułości czujnika - „opadanie”.Kontroler zlicza te zdarzenia w określonym przedziale czasu - 1 sekundę i wysyła odebrany numer kanałem komunikacyjnym do urządzenia z systemem Android, jednocześnie analizując przychodzące sygnały. Program do otrzymywania, wyświetlania i zarządzania modułem został stworzony na podstawie prototypu w środowisku Android Studio. Zapewnia pewne ulepszenia związane ze zwiększeniem odporności na hałas. Podobnie jak prototyp, oblicza prędkość i odległość. Przydatna funkcja włączania / wyłączania „reflektorów” - diody LED skierowanej do przodu w ruchu - jest również zapisana, jak się wydaje.
Blok bez osłony

Widoczny górny lewy róg: czerwona dioda LED zabezpieczenia przed odwróceniem ładowania, przełącznik pracy, akumulator; poniżej: zielony moduł VT, mikrokontroler AtMega168A z zlicowanymi zaciskami jest przyklejony z tyłu do górnej części obudowy.
Zablokuj pokrywę za pomocą czujnika magnetycznego

Moduł zmontowany z kółkiem wygląda następująco:
Blok na kółkach

Na zdjęciu widać wyłącznik zasilania, styki do podłączenia ładowarki, po drugiej stronie urządzenia w rogu powyżej - LED - „reflektor”.
Prototypowy program został uzupełniony o możliwość emitowania sygnałów dźwiękowych i wibracyjnych przy różnych zdarzeniach (włączanie / wyłączanie reflektorów, sygnał alarmowy w przypadku przekroczenia określonego ograniczenia prędkości maksymalnej).
Testowanie na stole - na poniższym zdjęciu, jeszcze nie testowane na drodze, czekam na lato :)
Testowanie na stole

Projekt Android Studio ma dużą objętość, opublikuję go gdzieś z linkiem, jeśli jest zainteresowanie, przynoszę szkic z komentarzami.
W obecności zainteresowania jestem gotowy dzielić się pomysłami, doświadczeniami.
Pytanie \ temat jest automatycznie publikowane w serwisie społecznościowym. sieć witryn - sprawdzaj odpowiedzi:

Nadaje się do tematu

Powiązane tematy

Dodaj komentarz

    • uśmiechnij sięuśmiecha sięxaxaoknie wiemyahoonea
      szefiezadrapaniegłupiectaktak-takagresywnysekret
      przepraszamtańczyćdance2dance3przebaczeniepomocnapoje
      przestańprzyjacieledobrzegoodgoodgwizdaćomdlećjęzyk
      palićklaskanierakdeklarowaćdrwiącydon-t_mentionpobierz
      ciepłożałujęśmiech 1mdaspotkaniemoskingnegatywne
      niepopcornukaraćczytaćprzestraszyćstraszyszukaj
      drwinadziękujętoto_clueumnikostryzgadzam się
      źlepszczołablack_eyeblum3rumienić sięchwalić sięnuda
      ocenzurowaneuprzejmośćsekret2grozićzwycięstwoyusun_bespectacled
      shokrespektlolprevedwitamykrutoyya_za
      ya_dobryipomocnikne_huliganne_othodifludzakazzamknij
1 komentarz
Autor
Szkic oprogramowania układowego ATMega168A:
/*
* Mega168 !!!
*/
#include „timer-api.h”

int Polaryzacja = -1; // polaryzacja impulsu sygnału wejściowego (w moim przypadku ujemna
int Treshold = 500; // próg wyzwalania impulsu odczytu 1/2 Vcc = 512
int CountTurn = 0; // przechowuje liczbę obrotów dla okresu obrachunkowego
int LED = 13; // Dioda LED podłączona do styku PB5
int InputSignal = A5; // wejście dla czujnika Halla
int TurnNumber = 0; // skumulowana liczba obrotów
int DeltaT = 28; // opóźnienie od przodu do określenia końca impulsu dla stabilności
bool Tick = false; // wartość początkowa, jeszcze nie zaznaczono

void setup ()
{
Serial.begin (9600); // do debugowania
timer_init_ISR_2Hz (TIMER_DEFAULT); // uzyskaj 1-sekundowe opóźnienie !!!
pinMode (LED, WYJŚCIE); // wyjście sygnału do podświetlenia (reflektor)
pinMode (InputSignal, INPUT); // wejście dla czujnika Halla
}

void loop () // tutaj przetwarzamy sygnały z czujnika i sterowania reflektorów
{
if (Zaznacz) // uprawnienie do wykonania bloku if w ustalonym przedziale czasu
// wyślij liczbę obrotów
{
Serial.println (String (CountTurn) + ";"); // do debugowania
Zaznacz = fałsz; // przygotuj ślad. przedział czasu
CountTurn = 0; // wyzeruj liczbę obrotów po przesłaniu do smartfona
}

w przeciwnym razie // jeśli kleszcz jeszcze nie dotarł, kumulujemy liczbę obrotów, włącz / wyłącz reflektor
{
// akumulacja obrotów
if (analogRead (InputSignal) {
delay (DeltaT); // jeszcze niczego nie czytam
if (analogRead (InputSignal)> Treshold) // nadeszła krawędź spływu
{
CountTurn ++; // kumuluje liczbę obrotów po przybyciu krawędzi spływu
}
}

// sterowanie reflektorami
if (Serial.available ()> 0) // odczytać znak z BTSerial
{
polecenie char = Serial.read ();
przełącznik (polecenie)
{
przypadek „0”: digitalWrite (LED, LOW); break; // włącz reflektor
przypadek „1”: digitalWrite (LED, WYSOKI); break; // Wyłącz reflektor
}
}
}
}

void timer_handle_interrupts (int timer)
{
Zaznacz = prawda;
}

Radzimy przeczytać:

Podaj go do smartfona ...