Komparator czestotliwosci - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Komparator czestotliwosci (/watek-komparator-czestotliwosci) |
Komparator czestotliwosci - wowo - 27-12-2023 Witam Wszystkich Specjalistow Mozna by powiedziec ze przyszla znow koza do woza Moze pytanie jest proste ? Na wejscie IN doprowadzana jest czestotliwosc prostokatna o amplitudzie 3,3V i czestotliwosci 0-50HZ. Po przekroczeniu czestotliwosci zapisanej w programie (np. 10 HZ), wyjscie OUT usrtawiane jest na HIGH, wszystko ponizej tej czestotliwosci LOW. Bardzo prosze o te cudowne dwie linijki Pozdrawiam Serdecznie . RE: Komparator czestotliwosci - kaczakat - 27-12-2023 https://docs.arduino.cc/tutorials/zero/simple-audio-frequency-meter - nie testowałem, ale jak większość pytań o Arduino gotowa odpowiedź jest już w Google, tu drukuje coś na serial gdy Hz>0, to sobie to zmień na digitalWrite gdy >10, tylko zakres zmień od 0Hz. https://www.instructables.com/Arduino-Frequency-Counter/ https://www.youtube.com/watch?v=4tkyQ8n02Zg RE: Komparator czestotliwosci - wowo - 28-12-2023 Elektronicznie to to ogarne to nie problem dla mnie ale czy nie ma jakiegos prostego triku zeby takt dac na wejscie esp i na wyjsciu miec chciany sygnal?? Sprobuje to moze opisac po mojemu tak lopatologicznie : Jesli 2 impulsy mieszcza sie w przedziale czasu (timer) 100ms to wtedy wyjscie jest HIGH, jezeli nie mieszcza sie w przedziale 100ms wtedy LOW. Oczywiscie mam na mysli zbocza impulsow. i zeby permamentnie kontrolowalo to albo chociaz co sekunde RE: Komparator czestotliwosci - kaczakat - 28-12-2023 Nic nie wspominałeś o ESP, a z drugiego opisu wiem tyle co z pierwszego. 3.3V może i coś sugerowało, ale UNO sobie by poradziło z takim sygnałem. No to zmieniam szukany ciąg znaków z Arduino na ESP8266 Frequency Counter, znajduję pierwszy z brzegu: https://github.com/kapraran/FreqCountESP/blob/master/examples/FreqCountSerial/FreqCountSerial.ino Może zanim napiszesz kolejny post to wgraj bibliotekę i przetestuj przykład, zapytaj jak już będziesz miał faktyczne pytanie. Oczywiście nie trzeba do tego biblioteki, ale trzeba umieć mierzyć czas nie używając delay, tu wystarczy wpisać na tym forum wyszukanie w moich postach "funkcja czas". Potem trzeba zapisać stan przycisku i odczytać aktualny, jeśli aktualny jest inny niż poprzedni to był impuls i trzeba go zliczyć, zaktualizować stan poprzedni, jak minęło 100ms i zliczyłeś więcej niż 1 to znaczy, że częstotliwość jest większa. Albo inaczej jeśli między zliczeniami minęło mniej niż 100ms to od razu wiadomo, że jest więcej niż 10Hz. Jeśli nic więcej nie robisz w programie to będzie działać OK, ale jak robisz to lepiej użyć przerwań bo jak program gdzieś utyka na kilkanaście ms by coś pokazać np. na ekranie OLED i2c to może nie zauważyć krótkiego impulsu. Jest biblioteka, to skorzystaj. RE: Komparator czestotliwosci - wowo - 30-12-2023 Witam jeszcze raz w tym samym Roku i Zycze wpierw Zdrowego Szczesliwego Nowego! Nawiazujac do mojego problemiku j , nie Gram w Waszej Lidze, Wy gracie Szopena, a ja sie ucze "wlaz kotek na plotek". I dlaletego bardzo bym prosil zeby jakis magik przetlumaczyl mi to z fotki na arduino (ESP). Wejscie potem timer opuzniajacy wylaczenie za nim timer opuzniajacy wlaczenie i wyjscie. Wypije Wasze Zdrowie Jutro [attachment=1405] RE: Komparator czestotliwosci - wowo - 06-01-2024 Chociaz Jak napisac cos takiego ? A= (time(High) input , hal) ; if (A > timer(1000)); {digitalWrite(zas, LOW); } //zasilanie wylacz wiem ze to kompletnie nie tedy droga ! ale moze cos by szlo? RE: Komparator czestotliwosci - wowo - 06-01-2024 (06-01-2024, 09:10)wowo napisał(a): Chociaz RE: Komparator czestotliwosci - Irvin - 06-01-2024 Przykład jak zmierzyć czas stanu na pinie: Kod: const int led=4,input=6; RE: Komparator czestotliwosci - wowo - 09-01-2024 (06-01-2024, 15:18)Irvin napisał(a): Przykład jak zmierzyć czas stanu na pinie: RE: Komparator czestotliwosci - wowo - 01-02-2024 Zrobilem to tak jak ponizej, Program steruje moim prototypowym rowerem elektrycznym. Adoptowalem to od kolegi z postu powyzej , troszke pozmienialem i kompiluje sie tam jak jedynke zmienie na 0 to czeka na sygnal z krecenia, jak wpisze jeden to kreci sie od razu. WEJSCIE HALOTRONU TO hal input narazie steruje tym wyjscie hamout. dlugosc jedynki halotronu to mniej wiecej 1/10 okresu #define capin 25 #define lion 26 #define zas 33 #define lad 23 int hamin = 16; // LED an pin 13 int hamout = 32; // Taster an Digital-Pin 7 int hamuj = 0; // variable um den Pinstatus zu speichern #define capout 22 #define hal 15 #define go 18 int stanAktualnyhal, stanPoprzednihal, taktout, golow, gohigh ; uint32_t teraz, poprzednio, roznica; void setup() { pinMode(lion, INPUT) ; pinMode(zas, OUTPUT) ; pinMode(lad, OUTPUT) ; pinMode(hamout, OUTPUT); pinMode(hamin, INPUT); pinMode(capin, INPUT) ; pinMode (capout, OUTPUT); pinMode(hal, INPUT) ; pinMode(go, OUTPUT); //zmienna stanAktualnyhal ma poczatkowa wartosc 0, sprawdzdamy wstepnie co jest na pinie stanAktualnyhal= digitalRead(hal); stanPoprzednihal=stanAktualnyhal; } void loop() { teraz=millis(); //po wejsciu w loop patrzymy na pierwsza zmiane stanAktualnyhal= digitalRead(hal); if(stanAktualnyhal == stanPoprzednihal) { // stan sie nie zmienil, jesli to potrwa powyzej 100ms to mamy <10Hz if(( teraz-poprzednio)>100 ); taktout = 0; } else { if(( teraz-poprzednio)<=100); taktout = 1; //stan sie zmienil, zapiszmy czas poprzednio=teraz; } delay(100); // if (analogRead(lion) < 1750) //niski poziom +++++acu {digitalWrite(zas, LOW); } //zasilanie wylacz if (analogRead(lion) < 2200) { digitalWrite(lad, LOW) ; } //ladowanie wlacz delay(10); if (analogRead(lion) > 2100) //minimalny poziom acu { digitalWrite(zas, HIGH) ; } //zasilanie wlacz if (analogRead(lion) > 2500) // wysoki poziom Accu {digitalWrite(lad, HIGH) ; } //Ladowanie wylacz (HIGH) if (analogRead(capin) > 3500) // wysoki poziom condnsatora {digitalWrite(capout, HIGH) ; } //Ladowanie condensatora wlacz (HIGH) if (analogRead(capin) < 2300) // niski poziom condnsatora {digitalWrite(capout, LOW) ; } //Ladowanie condensatora wylacz (LOW) hamuj = digitalRead(hamin); if (taktout = 0) // TO TUTAJ TO 0 ALBO 1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! { digitalWrite (hamout, HIGH); } else { digitalWrite (hamout, LOW);} Prosze o porade } |