Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'czujnik'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 12 wyników

  1. Witam. Mam problem z czujnikiem różnicowym. Muszę wykonać czujnik wykrywający położenie słońca na niebie. Wykorzystałem do tego 4 fotorezystory. Dwa odpowiedzialne za ruch wschód - zachód i dwa kolejne za góra - dół. Fotorezystory wpięte są w układzie mostka Wheatstone'a. Mostek zasilany jest napięciem 3,3 V i napięciem referencyjnym 1,7 V podawanym z wtórnika. Zastosowałem to po to, żeby na wyjściu czujnika napięcie zmieniało się w zakresie 0 V - 3,3 V. Po połączeniu układu na wyjściu wzmacniacza napięcie to wynosi przy równym oświetleniu 1,4 V, gdy zacieniony jest jeden fotorezystor 1,29 V, a gdy drugi to 2,8 V. Nie wiem dlaczego napięcie to nie spada w okolice 0 V przy oświetleniu jednego fotorezystora. Proszę o weryfikacje poprawnego połączenia na schemacie.
  2. Czujnik poprawnie wykrywa odległości na dystansie 6 - 100 cm. Przy przeszkodzie znajdującej się 2-5 cm od czujnika, otrzymywana wartość utrzymuje się na 6cm. Czy ktoś spotkał się kiedyś z podobnym problemem ? Czujnik: https://botland.com.pl/pl/ultradzwiekowe-czujniki-odleglosci/1420-ultradzwiekowy-czujnik-odleglosci-hc-sr04-2-200cm-5903351241366.html Sposób podłączenia: https://tutorials-raspberrypi.com/raspberry-pi-ultrasonic-sensor-hc-sr04/ Kod programu: import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO_TRIGGER = 2 GPIO_ECHO = 3 GPIO.setup(GPIO_TRIGGER, GPIO.OUT) GPIO.setup(GPIO_ECHO, GPIO.IN) def distance(): GPIO.output(GPIO_TRIGGER, False) time.sleep(0.1) GPIO.output(GPIO_TRIGGER, True) time.sleep(0.00001) GPIO.output(GPIO_TRIGGER, False) while GPIO.input(GPIO_ECHO) == 0: pulse_start = time.time() while GPIO.input(GPIO_ECHO) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = round(pulse_duration * 17150, 2) return distance if __name__ == '__main__': try: while True: dist = distance() print(dist) except KeyboardInterrupt: print("Measurement stopped by User") GPIO.cleanup()
  3. Mam do Was takie pytanie. Co sądzicie o tym czujniku (przetworniku) ciśnienia? https://www.dfrobot.com/product-1675.html#comment-4088894098 Zakupiłem go i próbuję podłączyć do Arduino . Producent jednak zaleca wstępną kalibrację przy ciśnieniu atmosferycznym na poniższym kodzie. /************************************************************ Water pressure sensor demo(Computer serial port) - Obtain the water pressure through the output voltage of the sensor. **************************************************************/ /************************************************************ Water Sensor Key Parameter - Parts No.:KY-3-5 - Sensing range: 0 - 1.6 MPa - Input Voltage: 5VDC - Output Voltage: 0.5 - 4.5 VDC (Linearly corresponding to 0 - 1.6 MPa) - Accuary: 0.5% - 1% FS **************************************************************/ /************************************************************ Water Sensor Calibration The output voltage offset of the sensor is 0.5V (norminal). However, due to the zero-drifting of the internal circuit, the no-load output voltage is not exactly 0.5V. Calibration needs to be carried out as follow. Calibration: connect the 3 pin wire to the Arduio UNO (VCC, GND and Signal) without connecting the sensor to the water pipe and run the program for once. Mark down the LOWEST voltage value through the serial monitor and revise the "OffSet" value to complete the calibration. After the calibration the sensor is ready for measuring! **************************************************************/ const float OffSet = 0.483 ; float V, P; void setup() { Serial.begin(9600); // open serial port, set the baud rate to 9600 bps Serial.println("/** Water pressure sensor demo **/"); } void loop() { //Connect sensor to Analog 0 V = analogRead(0) * 5.00 / 1024; //Sensor output voltage P = (V - OffSet) * 400; //Calculate water pressure Serial.print("Voltage:"); Serial.print(V, 3); Serial.println("V"); Serial.print(" Pressure:"); Serial.print(P, 1); Serial.println(" KPa"); Serial.println(); delay(500); } Wyniki które dostaje nie są jednak stabilne. Skaczą samoistnie o kilkadziesiąt kilo-paskali nawet. Sporo pomogła zmiana zasilania arduino ale nadal wynik nie jest stabilny. Zauważyłem też że podobny produkt został wycofany ze sklepu z którym współpracuje to forum. Botland.com. Nie wiem czy to ten sam czujnik ale jeśli tak to może ktoś zna przyczynę wycofania? Tu więcej danych na temat tego czujnika. https://wiki.dfrobot.com/Gravity__Water_Pressure_Sensor_SKU__SEN0257 Za wszelkie opinie, wskazówki, naprowadzenia lub sprostowania będę bardzo wdzięczny.
  4. Wie ktoś może czy toto działa przez metalowe ścianki pojemnika? https://botland.com.pl/pl/czujniki-poziomu-cieczy/6931-dfrobot-gravity-czujnik-poziomu-cieczy-bezkontaktowy.html
  5. Witam Próbuje zrobić sobie czujnik częstości oddechu opierając się o ten projekt: http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/f2012/htq2_mg573/htq2_mg573/index.htm Mógłby mi ktoś sprawdzić czy ten schemat jest dobry? Na razie nie ma części odpowiadającej za sprawdzanie napięcia baterii i sterowania wyświetlaczem oraz ładowania kondensatorów. Mógłby mi wytłumaczyć jak dodać ten fragment z ładowaniem kondensatorów do układu. Nie za bardzo rozumiem w które miejsce prowadzi to "to capacitors". Jak zasilić cały układ? Baterią 9V? Czy lepiej zasilać programatorem prosto z USB? Co z zasileniem wzmacniacza operacyjnego? W oryginalnym projekcie zastosowane są takie elementy. Mogę je zamienić na takie?: uC - ATmega1284p --> ATmega32A opAmp - LF353N --> TL072CP
  6. Witam, Wczoraj dużo czasu poświęciłem na szukanie błędu w kodzie bądź też w połączeniu przy komunikacji radiowej nadajnika rf fs1000A 433 MHz. Przejrzałem mnóstwo stron odnośnie tego nadajnika i jedna z osób dała super radę: do odbierania nie wolno używać pina 10. Sprawdziłem i... zadziałało. W kodzie zmieniłem tylko tą jedną rzecz. Połączenie przewodów nie zmieniło się ( poza zmienieniem pina 10 na 6 ). Wcześniej próbowałem testować na różnych odległościach ( 1 cm- 20 cm ) i nie działało. Teraz działa i na 25 cm. Czy ten pin 10 to jest jakiś specjalny pin, którego nie wolno używać do rf? Dziwnie się złożyło, że zarówno u mnie jak i u tej osoby, co napisała rozwiązanie akurat na 10 pinie nie działało. Miał ktoś podobnie z innymi rzeczami? Dlaczego się tak dzieje? Pozdrawiam
  7. Witam, Moim celem jest stworzenie 2 urządzeń: odbiornika oraz nadajnika. Urządzenie "Odbiornik": Ma się składać z Arduino Uno, odbiornika fs100A 433 MHz, wyświetlacza LCD oraz konwertera I2C. Urządzenie "Nadajnik": Ma się składać z Arduino Uno, nadajnika fs100A 433 MHz, wyświetlacza LCD, konwertera I2C oraz czujnika odległości HC-SR04. Jak to ma działać? Część nadawcza sprawdza odległość od danego przedmiotu, wyświetla ją u siebie na lcd oraz wysyła do odbiornika, który również u siebie wyświetla tą odległość. Problem: Do momentu, gdy nie podłączam do Urządzenia "Nadajnik" ( a także nie dodaję w kodzie odpowiednich poleceń ) nadajnika to wszystko działa. Mówię tutaj o mierzeniu odległości oraz wyświetlaniu jej na wyświetlaczu lcd. Gdy tylko dodam nadajnik ( oraz polecenia w kodzie ) to czujnik odległości za każdym razem pokazuje zero. Urządzenie "Nadajnik" też oczywiście nic nie odbiera, ale myślę, że warto zacząć od znalezienia przyczyny, dlaczego czujnik podaje złą odległość. Jednym z powodów może być połączenie. Aktualnie do VCC mam podłączone 3 rzeczy: wyświetlacz LCD, czujnik odległości oraz nadajnik i nie ma żadnego dodatkowego źródła zasilania ( baterii ). Tutaj kod: #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <VirtualWire.h> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Ustawienie adresu ukladu na 0x27 int trigPin=8; int echoPin=12; int transmit_pin=10; void setup() { lcd.begin(16,2); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); vw_setup(2000); vw_set_tx_pin(transmit_pin); } void loop() { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(10); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2.0) / 29.1; delay(500); lcd.clear(); lcd.setCursor(0,0); lcd.print(distance); String toSend=""; if(distance>200) distance=0; toSend = (String(distance, DEC)); // tekst wiadomości char msg[23]; // tworzymy tablicę typu char toSend.toCharArray(msg, toSend.length() + 1); // konwertujemy nasz tekst do tablicy charów vw_send((uint8_t *)msg, strlen(msg));// wysyłamy vw_wait_tx(); delay(2000); } Pozdrawiam
  8. Cześć, chciałbym przedstawić projekt, który wykonałem jako pracę inżynierską. Jej celem było skonstruowanie inklinometru (miernika służącego do pomiaru kąta przechyłu), w którym kąt wyznaczany był przy pomocy akcelerometru typu MEMS. Uzyskane wartości przyspieszenia i kąt przechyłu wyświetlane są na wyświetlaczu LCD. Jednym z założeń było wykorzystanie czujnika z wyjściem analogowym oraz czujnika z wyjściem cyfrowym. Dlatego do projektu wybrałem model MMA7361 oraz ADXL345. Innymi czynnikami wyboru tych elementów była m.in. dostępność, cena, nieduży zakres pomiarowy (aby uzyskać jak największą czułość) ale przynajmniej 1g (co odpowiada kątowi przechyłu 90°). Spis treści: Założenia Projekt struktury sprzętowej Projekt obwodu drukowanego Wykonanie i uruchomienie miernika przechyłu Wyznaczenie kąta, algorytm działania miernika i oprogramowanie Wyniki testów miernika ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. Założenia Koncepcja modułu inklinometru zakładała użycie mikrokontrolera, do którego podłączone zostały akcelerometry. Czujnik cyfrowy ADXL345 komunikuje się za pomocą magistrali I2C lub SPI, natomiast czujnik MMA7361 posiada wyłącznie wyjścia analogowe, dlatego konieczne było wykorzystanie przetwornika analogowo-cyfrowego. Dodatkowo mikrokontroler odpowiadał za obsługę przycisków, portu szeregowego i sterowanie wyświetlaczem. Działanie układu inklinometru oparto na popularnym mikrokontrolerze ATmega328 zaimplementowanym w module Uno Plus firmy WaveShare, który jest w pełni kompatybilny z Arduino Uno R3. Zdecydowałem się na wykorzystanie klonu Arduino z powodu zdecydowanie niższej ceny układu (w promocji zapłaciłem ok. 45 zł) i jednocześnie pewnych przydatnych rozwiązań w nim zastosowanych, m.in. popularniejsze złącze micro USB, przycisk reset naciskany z boku, przetwornik ADC, itd. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 2. Projekt struktury sprzętowej Na rysunkach poniżej przedstawiono wykorzystane wyprowadzenia platformy Uno Plus wraz ze złączami służącymi do podłączenia zaprojektowanych modułów. Do podłączenia wyświetlacza LCD ze sterownikiem HD44780 wykorzystano wyprowadzenia na listwę typu goldpin (złącza JP3 i JP4). W celu regulacji kontrastu użyto potencjometr o wartości 10kΩ (R2). Wyświetlacz zasilany jest napięciem 5V. Przyciski – podłączone do złącza JP5 zostały programowo „podciągnięte” do stanu wysokiego poprzez wyprowadzenia I/O mikrokontrolera. Rozpoznanie wciśnięcia przycisku występuje w chwili wykrycia stanu niskiego na linii portu, który występuje po zwarciu do masy. Czujnik ADXL345 zasilany jest napięciem 3,3V. Napięcie zasilające jest filtrowane przez kondensator tantalowy o wartości 10µF i dwa kondensatory 0,1µF. W celu uruchomienia komunikacji za pomocą magistrali I2C należało wybrać układ przez podanie stanu wysokiego na wejście CS oraz zapewnić stan wysoki na liniach SCL i SDA, co zrealizowano przez zastosowanie rezystorów podciągających o wartości 10kΩ. Podłączając pin SDO do masy (stan logiczny niski) wskazano, że układ posiada na magistrali I2C adres o wartości 0x53 (alternatywnie podając stan wysoki adres miałby wartość 0x1D). W układzie połączeń czujnika MMA7361 wejście Sleep jest wewnętrznie ustawione w stan niski, co wprowadza płytkę w stan uśpienia i niski pobór energii. Aby uruchomić czujnik należy do tego wejścia podać stan wysoki, np. za pomocą podłączenia do napięcia zasilania 3,3V, jak zostało zrobione to w projekcie. W przypadku potrzeby kontroli nad trybem Sleep należałoby podłączyć to wejście do mikrokontrolera za pomocą wyprowadzeń I/O i odpowiednio sterować (pamiętając o poziomach napięć, gdyż UNO PLUS pracuje z napięciem +5V). Podłączenie wejść g-Select i 0g-Detect jest opcjonalnie. Wejście g-Select jest wewnętrznie ustawione w stan niski, który odpowiada ustawieniu czułości na zakres ±1.5g (800 mV/g). Wejście 0g-Detect wystawia napięcie na poziom wysoki gdy wszystkie osie wskazują przyspieszenie równe 0g. Dzieje się tak kiedy płytka znajduje się w stanie spadku swobodnego. Z powodu braku potrzeby użycia tych funkcji (jak najmniejszy zakres pomiarowy jest bardziej odpowiedni w projekcie inklinometru) wejścia te pozostawiono niepodłączone. Wyjścia X, Y i Z akcelerometru zostały podłączone odpowiednio przez złącze JP2, do wejść A0, A1 i A2 mikrokontrolera, które są wejściami przetwornika A/C. Uwzględniając napięcie zasilania akcelerometrów (3,3V) oraz zakres analogowych sygnałów wyjściowych, dla przetwornika analogowo – cyfrowego wybrano zewnętrzne napięcie referencyjne o wartości 3,3 V (wejście AREF podłączono do napięcia 3,3V), a w oprogramowaniu mikrokontrolera wybrano zewnętrzne napięcie referencyjne. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 3. Projekt obwodu drukowanego Dla wybranych czujników przyspieszenia zaprojektowano i wykonano dwie osobne płytki PCB, o jednakowych wymiarach 40x30 mm. Wymiary płytek wynikały z potrzeby ich dopasowania do stanowiska testowego w laboratorium. Oba układy przetworników posiadają 14 wyprowadzeń i zamknięte są w obudowie LGA-14.W projekcie zastosowano elementy pasywne SMD. Z uwagi na małe rozmiary układów scalonych minimalna odległość między ścieżkami wynosi 10 mils. Ścieżki zasilające mają szerokość 24 mils, a ścieżki sygnałowe 20 mils. Na niewykorzystanej powierzchni płytka została wypełniona masą. Z płytki czujnika ADXL wyprowadzone są 4 sygnały: VCC (zasilanie układu), GND (masa układu), SCL (linia zegarowa) i SDA (linia danych). Z płytki czujnika MMA wyprowadzonych jest 5 sygnałów: VCC (zasilanie układu), GND (masa układu), A0 (wyjście napięciowe osi X), A1 (wyjście napięciowe osi Y) i A2 (wyjście napięciowe osi Z). ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 4. Wykonanie i uruchomienie miernika przechyłu Płytki PCB z czujnikami wykonano metodą termotransferu. Dodatkowo zostały umieszczone napisy na warstwie ścieżek w postaci nazwy wykorzystanego czujnika na danej płytce. Montaż elementów wykonano wykorzystując stację lutowniczą typu HotAir. Z powodu projektu płytki jednowarstwowej, dodatkowo dokonano potrzebne połączenia za pomocą przewodów. Do połączenia płytek czujników z układem mikrokontrolera zastosowano przewody ze złączami 6-pinowymi i gniazdami kątowymi typu goldpin przymocowanymi do nakładki prototypowej. Na nakładce prototypowej znalazły się również klawiatura, listwy służące do montażu wyświetlacza LCD i badania napięć wyjściowych czujnika analogowego oraz potencjometr do regulacji kontrastu wyświetlacza LCD. Rysunek poniżej przedstawia zmontowany i uruchomiony miernik przechyłu z podłączonymi czujnikami zasilany poprzez port micro USB. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 5. Wyznaczenie kąta, algorytm działania miernika i oprogramowanie Funkcja wyboru odczytu danych wykorzystuje trzy przyciski. Algorytm jest trochę ubogi ale do projektu wystarczył. Pomiar przyspieszenia z wykorzystaniem czujnika analogowego MMA7361 polega na wyznaczeniu wartości napięcia na wyjściach osi akcelerometru za pomocą 10-bitowego przetwornika analogowo-cyfrowego, a następnie wykonywane są obliczenia realizujące skalowanie czujnika. Wyznaczenie napięcia polega na pomnożeniu wyniku bitowego i napięcia referencyjnego, a następnie podzielenie przez 1023 (10-bitowy przetwornik, 210) xV_analog=(float(xADC)*3.3/1023); yV_analog=(float(yADC)*3.3/1023); zV_analog=(float(zADC)*3.3/1023); W celu otrzymania wartości przyspieszenia w jednostkach „g” dokonano odpowiedniego skalowania. Od zmierzonej wartości napięcia odjęto wartość 1,65 V, która jest połową wartości napięcia zasilania czujnika i odpowiada wartości napięcia przy przyspieszeniu wynoszącym zero. W następnym kroku uwzględniono czułość czujnika (800mV/g). Wartość przyspieszenia wyliczono posługując się wzorami: xG_analog=(xV_analog-1.65)/0.800; yG_analog=(yV_analog-1.65)/0.800; zG_analog=(zV_analog-1.65)/0.800; Czujnik cyfrowy ADXL345 do poprawnego działania, przed bezpośrednim odczytem danych, wymaga pewnych ustawień, które realizowane są na podstawie dostępnych w dokumentacji technicznej mapie i definicji rejestrów. Ustawienie to odbywa się poprzez zapis do rejestrów czujnika odpowiednich wartości bitowych i w programie przyjmował następujący format: ustawI2C(adres_czujnika, adres_rejestru, wartość); Adres akcelerometru ADXL345 to 0x53 i może dzielić magistralę z innymi urządzeniami dopóki ma unikalny adres. Wszystkie wartości liczbowe podawane są w systemie szesnastkowym: ustawI2C(0x53, 0x2D, 0x08); // do rejestru POWER_CTL, o adresie 0x2D, wpisano wartość 0x08, która inicjalizuje tryb gotowości do pomiaru, ustawI2C(0x53, 0x31, 0x08); // do rejestru DATA_FORMAT (adres 0x31) wpisano wartość 0x08 ustawiając wybrane parametry takie jak rozdzielczość i czułość czujnika, ustawI2C(0x53, 0x2C, 0x08); // do rejestru BW_RATE (adres 0x2C) wpisano wartość 0x08 ustawiając częstotliwość pomiaru na 50Hz. Dane wyjściowe z czujnika odczytywane są z sześciu 8-bitowych rejestrów, po dwa dla każdej osi. Każdy wynik jest reprezentowany za pomocą dwóch bajtów. Funkcja odczytu danych przez magistralę I2C ma postać: odczytI2C(0x53, 0x32, buffer, 6); - odczyt danych z czujnika zaczynając od rejestru DATAX0 (adres 0x32) i kończąc na rejestrze DATAZ1 (adres 0x37). Następnie za pomocą odpowiednich funkcji, dwa odczytane bajty dla danej osi czujnika łączone są w jedną zmienną. Uzyskana w ten sposób wartość bitowa mnożona jest przez współczynnik skali, wynoszący w tym przypadku 3,9 mg/LSB, i otrzymywana jest wartość przyspieszenia w jednostkach „g”. xG_digital = xBit_digital * 0.0039; // -256=-1g, 0=0g, 256=1g yG_digital = yBit_digital * 0.0039; zG_digital = zBit_digital * 0.0039; Na podstawie otrzymanych wartości przyspieszeń z czujników wyliczany jest kąt przechyłu wykorzystując odpowiednie wzory. Dokładny kąt nachylenia może być mierzony tylko wtedy, gdy na przyspieszeniomierz działa wyłączenie siła grawitacji. Działanie innych sił, np. ruchu, powoduje dodatkowe przeciążenia, uniemożliwiając prawidłowe ustalenie nachylenia. Pomiar przechyłu można dokonać wykorzystując nawet jedną oś, lecz wyniki naznaczone są pewnymi ograniczeniami, których opis może pominę. Wykorzystując trzy osie, do ustalenia orientacji czujnika względem ziemi, kąt nachylenia wektora siły grawitacji może być w pełni określony. Czułość jest stała dlatego kąty mogą być dokładnie zmierzone bez względu na położenie czujnika. Dane przesyłane pomiędzy interfejsem UART i USB przyjmują format opisany w tabeli. Wybierając polecenie uruchomienia transmisji pomiędzy urządzeniami aktualne wartości z czujników wysyłane są na bieżąco do momentu przerwania transmisji przez użytkownika. Wysyłane dane są w postaci znakowej i posiadają 4- znakowy nagłówek i pole danych. ASTY (ASensorTYpe) – oznaczający typ czujnika, BACC (BACCeleration) – oznaczający przyspieszenie, CANG (CANGle) – oznaczający kąt przechyłu. Po nagłówku wysyłany jest separator w postaci znaku „ ; ”, a następnie pole danych zakończone znakiem „ ; ”. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 6. Wyniki testów miernika Badania przeprowadzono na stanowisku przeznaczonym do badania czujników przechyłu – bazując na równi pochyłej. Wartości kąta przechyłu wyznaczone zostały na podstawie zależności trygonometrycznych w trójkącie prostokątnym. W skrócie. Dwie deski połączone zawiasem. Na jednej desce przyklejona miarka. Na drugiej desce na nitce o stałej długości zawieszony pion murarski. Podnosząc jedną deskę pion dzięki sile grawitacji tworzył kąt prosty, a z miarki odczytywano wartość wyznaczoną przez nić. Z otrzymanych proporcji wyliczano dokładny kąt. Z racji już długiego tekstu może pominę szczegółowy fragment kalibracji. Więc tak w skrócie: Akcelerometry MEMS w swojej strukturze zawierają elementy, które mogą swobodnie się poruszać, dlatego są o wiele bardziej wrażliwe na powstałe naprężenia mechaniczne niż inne elementy półprzewodnikowe. Naprężenia mogą powstawać m.in. podczas montażu czujnika i komponentów na obwodzie drukowanym. W celu wyeliminowania błędów w pomiarze należy wykonać kalibrację czujników. Dzięki rejestrom OFSX, OFSY i OFSZ możliwe jest wprowadzenie korekty wyników w czujniku cyfrowym ADXL345. Wartość przechowywana w tych rejestrach jest automatycznie dodawana do mierzonego przyspieszenia i kompensuje błędy pomiaru. Kalibracja czujnika analogowego polega na wyznaczeniu maksymalnych i minimalnych napięć pojawiających się na wyjściach osi pomiarowych poprzez obrót wokół ich płaszczyzn. Wartość maksymalna pojawi się gdy na oś będzie działać przyspieszenie +1g, natomiast wartość minimalna w przypadku działania przyspieszenia wynoszącego -1g. Zakładając, że czułość zmienia się symetrycznie, od 0 do +1g oraz od 0 do -1g, można wyznaczyć jej dokładną wartość dodając do siebie wartości napięcia maksymalnego i minimalnego, a następnie dzieląc je przez 2. Pomiary wykonano laboratoryjnym multimetrem cyfrowym. Wykonane badania wykazały, że maksymalna różnica pomiędzy kątami rzeczywistymi, a kątami wskazanymi przez inklinometr wynoszą maksymalnie 1°. Błąd pomiędzy wskazaniami miernika może wynikać m.in. z braku wykonania urządzenia w pełni profesjonalnych warunkach, a otrzymany wynik błędu jest satysfakcjonującym rezultatem. Dodatkowo do pełnego, stabilnego badania położenia i wyeliminowania błędów pomiaru należy zastosować połączenie akcelerometru, żyroskopu i magnetometru. Ostatnie zdjęcia prezentują działanie inklinometru. Na pierwszym zdjęciu pomiar dokonywany jest za pomocą czujnika MMA7361. Można zauważyć, że płytka leży prawie poziomo - kąt 6,8°. Z kolei na drugim zdjęciu płytka z czujnikiem ADXL345 ustawiona jest prawie pod kątem 45°. Dzięki za doczytanie do końca. Pozdrawiam :)
  9. Cześć. Dzisiaj chciałbym opisać mój moduł sprawdzania jakości powietrza. Czujnik postanowiłem zbudować z czystej ciekawości, jakim to powietrzem oddychamy w zimie. Wyniki niestety są zatrważające. Ale po kolei. Zastosowałem u w tym urządzeniu następujące elementy: czujnik PMS5003, nodeMCU wraz z podstawką, wyświetlacz LCD 16x2 , przetwornicę zasilającą, moduł przekaźników; czujnik DHT11, gniazdo USB, gniazdo zasilania, wentylator, serwomechanizmy, moduł RTC, i kilka drobiazgów, rurek, przewodów.... Czujnik został zbudowany jako osobne urządzenie ale połączone z moim "systemem" automatyki domowej. Urządzenie aktualnie jest zamontowane na półeczce na ścianie, przez którą są przeprowadzone przewody powietrzne dolotowy z zewnątrz i wylotowy. Takie rozwiązanie jest spowodowane tym, że zastosowany czujnik, zresztą podobnie jak wszystkie tego typu, przekłamuje wyniki w warunkach wysokiej wilgotności powietrza. Zamysł był więc taki, by obudowa z czujnikiem znajdowała się w ogrzewanym pomieszczeniu, a powietrze potrzebne do pomiaru urządzenie pobierało sobie samo z zewnątrz, po czym po samoistnym nagrzaniu w komorze czujnika, został wykonany pomiar i następnie wymiana powietrza w komorze pomiarowej urządzenia. Jak to wygląda w praktyce. Obudowa jest podzielona na dwie komory, w przedniej znajduje się cała elektronika, zasilanie, wyświetlacz, ta część jest wentylowana pprzez otwory w obudowie. Zaś w tylnej szczelnie odgrodzonej komorze znajduje się czujnik PMS i moduł przekaźnika. Do tej tylnej komory, doprowadzone są ww. przewody powietrzne, a w kanale dolotowym zamontowany jest wentylator. Dodatkowo za ścianą na tych kanałach zamontowane są zawory odcinające przepływ powietrza sterowane serwomechanizmami. Zawory te mają na celu uniemożliwienie samoczynnej cyrkulacji powietrza w kanałach, w czasie np. silnych wiatrów, a tym samym również wychładzania i komory czujnika i pomieszczenia w którym zamontowany jest wylot powietrza. Zasada działania. Cały proces zaczyna się od wykonaniu pomiaru przez czujnik DHT11, jeśli wilgotność powietrza jest niższa niż zadana(np.75%), zostaje wybudzony czujnik, pracuje przez 30 sekund, a następnie jest wykonywany pomiar. Po wykonaniu pomiaru czujnik jest usypiany, a do modułu zaworów odcinających zostaje podane napięcie. W następnym kroku serwomechanizmy otwierają dolot, wylot i zostaje włączony wentylator na minutę, by wymienić powietrze w komorze. Po minucie wyłączamy wentylator, zamykamy kanały i odcinamy zasialnie serw. Wszystkie te czynności są anonsowane na wyswietlaczu. Po całym tym etapie, wyświetlacz przechodzi w tryb standardowej pracy, t.j. naprzemiennego wyświetlania parametrów ostatniego odczytu i godziny oraz daty. W tym czasie co dwie minuty czujnik DHT11 dokonuje pomiarów. Jednakże dopiero po 10 minutach od uśpienia czujnika instrukcja warunkowa sprawdza czy wilgotność jest na odpowiednim poziomie i jeśli tak to wybudzamy czujnik i cały cykl zaczyna się od nowa. W urządzeniu jest wgrany szkic dzięki któremu nodeMCU wysyła dane na serwer Blynka, dzięki czemu mogę mieć dostęp do tych danych 24h/allOverThe World Udało mi się też po raz pierwszy zawrzeć w tym szkicu funkcjonalność OTA, czyli mam możliwość wgrywania oprogamowania poprzez wi-fi. Wprawdzie w czasie wstępnych prac zamontowałem z boku urządzenia gniazdo USB służące właśnie programowaniu, to dzięki OTA stało sie ono zbędne(?). Pomimo tego, że cała obudowa jest zamontowana do wspomnianych kanałów powietrznych, sposób przyłączenia (na wtyk), powoduje, że czujnik ten stał się również przenośny i może służyć do badania jakości powietrza w różnych dziwnych miejscach, w pracy, w kotłowni.... Kilka zdjęć: Oczywiście jest też filmik: Dziękuję za uwagę, pozdrawiam wszystkich forumowiczów Forbota którzy przyczynili się do powstania tego czujnika
  10. Jednym z moich pierwszych "poważniejszych" projektów, jakie zrealizowałem w ramach nauki programowania mikrokontrolerów był EtherGeiger - sieciowy detektor promieniowania jonizującego. Projekt stworzony w 2014 roku miał być swoistym żartem, nawiązującym swoją tematyką do Fallouta i post-apokaliptycznych filmów science-fiction. Wszystko zaczęło się od zakupionego na Allegro radzieckiego detektora Geigera typu STS-5. Przyrząd ten wymaga do działania wysokiego napięcia, w okolicy 400V. Jest ono wytwarzane przez przetwornicę typu flyback, pracującą na popularnym układzie MC34063A. Sercem pierwszej wersji urządzenia był mikrokontroler Atmega328, a za komunikację ze światem zewnętrznym odpowiadał układ ENC28J60, zwykle stosowany w popularnych modułach, tutaj przylutowany bezpośrednio do płytki urządzenia. Oprogramowanie sterujące pracą urządzenia zostało napisane w języku C, przy pomocy środowiska Atmel Studio. Poza pomiarem promieniowania tła urządzenie zbierało także informacje o temperaturze otoczenia, ciśnieniu atmosferycznym i wilgotności względnej. Wykorzystane zostały w tym celu moduły BMP280 oraz DHT11/DHT22. Wyniki pomiarów były przekazywane do serwera odpalonego na Raspberry Pi, który był odpowiedzialny za ich zapisywanie. W przypadku wykrycia wartości przekraczającej ustaloną wcześniej normę, oprogramowanie wysłałoby powiadomienie na telefon, za pośrednictwem serwisu Pushover. Projekt będący w zamierzeniach jedynie żartem (o pewnej wartości dydaktycznej) dwukrotnie okazał się być bardzo przydatny, gdy do mediów społecznościowych zaczęły trafiać fake newsy mówiące o awariach elektrowni atomowych i chmurze radioaktywnego pyłu, zmierzającego rzekomo nad Polskę. W ubiegłym roku projekt doczekał się nowej wersji, opartej na mikrokontrolerze PIC32MX270F265B. Pozwoliło to na dodanie nowych funkcji, m.in. wyposażenie urządzenia w PenDrive'a do lokalnego zapisywania pomiarów (w przypadku jego braku dane są zapisywane we wbudowanej pamięci SPI Flash). Zastosowany został także pojedynczy czujnik temperatury, ciśnienia i wilgotności, typu BME280. Planowana jest także rozbudowa tej wersji o dodatkową płytkę z wyświetlaczem LCD.
  11. Witam posiadam układ zasilany przez stabilizator który zasila cały układ wraz z arduino i czujnikiem. I czy jeśli pominę stabilizator bo chce przetestować działanie tylko czujników nie posiadam podłączonych reszty elementów i bezpośrednio zasilę arduino czy czujnik będzie działać bezproblemowo i układ nie będzie zagrożony zniszczeniem ?
  12. Cześć, posiadam analogowy czujnik odległości Sharp GP2Y0A41SK0F o zakresie 4-30cm. Czujnik jest podłączony jest do Arduino Uno. Problem widać na rysunku. Kolor niebieski to odległość odczytana z czujnika w mm. Zielony i czerwony to mniej lub bardziej udana implementacja filtra Kalmana. Czujnik działa w miarę stabilnie dla niewielkich odległości (do 100mm). Powyżej tej wartości przeważają szumy. Na zasilaniu próbowałem dać kondensator, sprawdzałem też wpływ światła i faktury materiału na który pada wiązka ale wynik zawsze ten sam.To wina czujnika czy mój błąd systematyczny? Jakieś wskazówki co robić?
×
×
  • Utwórz nowe...