Skocz do zawartości

adamsm

Użytkownicy
  • Zawartość

    7
  • Rejestracja

  • Ostatnio

Posty napisane przez adamsm


  1. Ok, właśnie przetestowałem zmianę pinu PWM na 6 w programie tak jak pisaliśmy wyżej i regulacja prędkości działa, tylko nie idealnie tak jak sobie to wyobrażałem.

    Mianowicie dopiero gdy ustawie potencjometr na max wskazanie 5V to po chwili startuje, natomiast przy zmniejszaniu napięcia jest OK - powoli płynie zmniejszają się obroty i poniżej 2V wentylator się zatrzymuje, jeśli jest w tym zakresie 2-5V to regulacja działa super w obie strony, problem jest jednak taki, że jak już się zatrzyma przy wartości poniżej 2V to nie startuje z powrotem powyżej tej granicy, lecz dopiero jak dam potencjometr na max w prawo do 5V i po chwili rusza.

    Myślicie, że jest to kwestia napięcia progowego tego wentylatora? Jego parametry to DC 5V, 0.7W


  2. Dzięki za odpowiedź !

    W przypadku programu z pętlą for z kursu z płynnym przyspieszaniem i hamowaniem silnika  gdzie prędkość obrotowa była regulowana przez PWM - pin 6 w programie wszystko było OK, jednak przy pomocy potencjometru już nie mogę uzyskać tego efektu.

    "Czy próbowałeś wypisać sobie wartość zmiennej pwm (przed i po użyciu funkcji map)? Możesz do tego wykorzystać podłączony LCD lub np. UART. Daj znać jakie wyniki 😉"

    Możesz wytłumaczyć co dokładnie masz na myśli na przykładzie kodu?

    Dzięki z góry !


  3. Witam,

    Piszę program, który ma na celu płynną regulację prędkości silnika dc(wentylatora 5V) za pomocą potencjometru oraz wyświetlanie napięcia regulowanego przez potencjometr na lcd, jednak napotkałem na problem, który nie wiem jak rozwiązać - przy regulacji potencjometrem silnik nie przyspiesza i hamuje płynnie, tylko skokowo(0,1)załącza się przy ok. 2,5V i do 5V prędkość jest bez zmian, przy zejściu poniżej 2,5V silnik po prostu się wyłącza.

    Prośba o pomoc, wielkie dzięki z góry.

    Kod

    #include <LiquidCrystal.h> //Dołączenie bilbioteki
    LiquidCrystal lcd(2, 3, 4, 5, 11, 12);
    
    void setup() {
      lcd.begin(16, 2); //Deklaracja typu
      lcd.clear();
      lcd.setCursor(0, 0); //Ustawienie kursora
      lcd.print("VOLTAGE"); //ustawienie lcd
      lcd.setCursor(0,1);
      lcd.print("0.00V"); 
    
    pinMode(6, OUTPUT); //Sygnal PWM silnika nr1
    digitalWrite(6, HIGH); //ustawiamy na stale stan wysoki na 6 pinie
    pinMode(A0, INPUT);//potencjometr
    pinMode(7, OUTPUT); //Sygnaly sterujace kierunkiem obrotow silnika
    pinMode(8, OUTPUT);
    }
    double odczyt;
    
    void loop()
    {
     odczyt = analogRead(A0)*5.0/1024.0; //Wartość napięcia
     lcd.setCursor(0, 1); //Ustawienie kursora w odpowiednim momencie
     lcd.print(odczyt); //Wyświetlenie tekstu
     delay(250); //Opóźnienie
     
      int pwm = analogRead(A0); //regulacja pr. obr. za pomocą potencjometru
      pwm = map(pwm,1023,0,0,255);
      analogWrite(7, pwm);
      digitalWrite(8, HIGH);
      delay(25);
      }


     
      

×
×
  • Utwórz nowe...