Skocz do zawartości

Adam_

Użytkownicy
  • Zawartość

    5
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Adam_ wygrał w ostatnim dniu 19 lutego 2018

Adam_ ma najbardziej lubianą zawartość!

Reputacja

3 Neutralna

O Adam_

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Koszalin
  • Zainteresowania
    elektronika, programowanie
  • Zawód
    Automatyk
  1. Witam. Jest konieczność zobienia ograniczenia prądowego podobnie jak mają wkrętarki. Trzeba dać rezystor pomiarowy sporej mocy 0.005 ohm pomiędzy wejściem mosfetu a masą. Mikrokontroler i silnik muszą mieć wspólną masę. Na rezystorze od strony mosfetu będzie występowało napięcie 0V - 0,5V (0A-100A). Przewód ten należy podłączyć do wejścia analogowego arduino. Programowo sprawa nie będzie już taka prosta; jeżeli arduino wykonuje więcej funkcji niż obsługa i załączanie silnika to trzeba będzie użyć przerwań mikrokontrolera i ręcznie stworzyć sygnał PWM z funkcją pomiaru prądu. Pomiar analogowy musi być dokonywany chwilę przed zanikiem stanu wysokiego na wejściu transoptora (0-0,5Vpomiar / 5Vin * 1024roz.analog da wynik analogRead w zakresie około 0-100 dla 0-100A)oraz przemnożyć ją przez analogRead * zadanaWartoscPwm/maksWartoscPWM, wtedy uzyskamy średni płynący prąd. Z uwagi na skonstruowany układ (z rezystorem i transoptorem) warto by sygnał PWM miał niską częstotliwość z powodu dużej pojemności bramki. Następnie trzeba napisać fragment kodu, który będzie ograniczał zadaną wartość PWM w przypadku przekroczenia maksymalnej dopuszczalnej wartości płynącego prądu po upływie określonego czasu np.0,5s. Proszę wrzucić szkic arduino to pomogę przerobić jeśli jest Pan zainteresowany tym rozwiązaniem. Pozdrawiam.
  2. //zalecam używanie #define zamiast zmiennych, jest to dobrym nawykiem ponieważ oszczędza pamięć mikrokontrolera #define przekaznikGen 10 // pin do sterowania przekaznikiem generatora(stan niski) #define przekaznikWen 11 // pin do sterowania przekaznikiem wentylatorow (stan niski) #define przycisk 9 // pin przycisku mono stabilnego sterowany masą #define startWent 20 #define stopWent 320 #define stopGen 300 int czas = 0; void setup() { pinMode(przekaznikGen,OUTPUT); //ustawienie pinu 10 wyjscie pinMode(przekaznikWen,OUTPUT); //ustawienie pinu 11 wyjscie pinMode(przycisk,INPUT_PULLUP); // pin 9 wejscie po nacisnieciu o przycisku digitalWrite(przekaznikGen, HIGH); // stan poczatkowy przekaznika wysoki >2,5V czy tu może być stan wysoki?? //może digitalWrite(przekaznikWen, HIGH); //stan poczatkowy przekaznika wysoki >2,5V czy tu może być stan wysoki?? //może } void loop() { //zalecam używanie timera, można go wykorzystywać do wieu rzeczy na raz i znacznie upraszcza obliczenia dalszej części kodu /////////////////////////////TIMER//////////////////////////////////////////////////////////////////////////////////////////////// static unsigned long zapamietanyCzas = 0; unsigned int roznicaCzasu = millis() - zapamietanyCzas; if(roznicaCzasu >= 1000) //co 1000ms { zapamietanyCzas = millis(); if(czas <= stopWent) czas++; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (! digitalRead(przycisk)) czas = 1;//wciśnięcie przycisku spowoduje przedłużenie czasu pracy // jeśli chcesz żeby przycisk reagował dopiero po upływie cyklu wykorzystaj poniższą funkcję // if ((! digitalRead(przycisk))&&((czas > stopWent))) czas = 1; //pamiętaj o korekcji stuków przycisków (ten program akurat nie wymaga tego) if((czas > startWent) && (czas <= stopWent))digitalWrite(przekaznikWen, LOW); else digitalWrite(przekaznikWen, HIGH); if((czas > 0) && (czas <= stopGen))digitalWrite(przekaznikGen, LOW); else digitalWrite(przekaznikGen, HIGH); } Mam nadzieję, że pomoże. Pozdrawiam. Ps. jeśli używasz przekaźników to pamiętaj żeby dać diodę równolegle do cewki podłączoną w kierunku zaporowym. Przekaźniki muszą być sterowane tranzystorami, bo wyjścia z arduino są za słabe. Jeśli masz pytania to zadawaj śmiało.
  3. Witaj Wpisz "step-up" na allegro i wyskoczy ci wiele tanich regulowanych przetwornic podwyższających napięcie.
  4. Witaj. Problemem jest to że duże płytki stykowe mają rozdzielone zasilanie w połowie i z tego powodu kondensatory przy rezonatorze nie są podłączone do masy(zobacz na zdjęcie). Daj kondensator 100uF na wyjściu stabilizatora. Pozdrawiam.
  5. Witam. Wypróbuj poniższy fragment kodu, x jest równy 0 po ponownym uruchomieniu kontrolera, więc powinien być najpierw odczytany z pamięci żeby go dodawać. Powinieneś również zamienić miejscami dodawanie x z zapisem. Pamiętaj też że eeprom ma żywotność 100 000 cykli zapis odczyt, powinieneś przerobić kod tak by cały czas nie odczytywał niepotrzebnie liczby z pamięci. if(digitalRead(7) == LOW){ delay(20); x = EEPROM.read(asd); x ++; EEPROM.write(asd, x); while(digitalRead(7) == LOW); delay(20); } } Pozdrawiam
×
×
  • Utwórz nowe...