Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Komentator

Pomocna odpowiedź

tomeksa83, w takim razie wina leży po stronie baterii, chociaż bardzo dziwne, aby nowa robiła taki problem.

marek1707, oczywiście masz racje. W kursie pojawia się bateria 9V, bo tak najłatwiej zasilić "mobilnie" Arduino. W tej części bateria ta posłużyła do demonstracji, że takie podłączenie serwa działa. W kontynuacji kursu wprowadzimy inne zasilanie. Tak, czy inaczej, jeśli bateria jest nowa, to nie powinno być problemów z jednym, demonstracyjnym machnięciem microserwem, więc coś tu więcej jest nie tak.

Link do komentarza
Share on other sites

Ja mam tylko takie drobne pytanie może uwagę, dlaczego serwo podpinamy pod pin Vin w opisie Arduino na Botlandzie pisze że jest to wprowadzenie do zasilania, nie powinno się podpinać pod +5V?

Link do komentarza
Share on other sites

Crax, na pinie Vin mamy dostęp do napięcia, którym zasilana jest cała płytka, w tym wypadku będzie to około 9V z baterii. Tak jak pisałem w artykule, nie wolno podłączać serwomechanizmu do 5V z Arduino, ponieważ może to uszkodzić wiele rzeczy. Stabilizator umieszczony na płytce nie jest do tego przystosowany.

Link do komentarza
Share on other sites

Rozumiem, miałem plan połączenia serwa z potencjometrem i sterować ruchem serwa kręcąc potencjometrem. Ale wejście A5 na arduino jest do 5v...

Serwo zasilałem z Vin, przez stabilizator a potencjometr z 5V.

Czyli jak rozumiem mógłbym to uprościć i podłączyć potencjometr za stabilizatorem?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Crax, jedną skrajną nóżkę potencjometru podpinasz pod +5v(na arduino), a drugą skrajną nóżkę do GND. Ze środkowej nóżki wyprowadzasz sobie kabelek i wpinasz go w pin A5.

Podłączanie jednej z nóżek potencjometru do zasilania ze stabilizatora, a drugiej do GND, jest gorszym rozwiązaniem. Przetwornik analogowy jako punkt odniesienia bierze napięcie jakim zasilany jest uC. A niestety nic nie jest idealne i np stabilizator może dawać ci 5.5v a stabilizator wbudowany w płytkę, który zasila kontroler może dawać np 4.7v.

Link do komentarza
Share on other sites

Zadanie 5.1

Zmienna byte może przyjmowac wartosci jedynie od 0 do 255zatem wystarczy zapis:

#define niebieska 3       //definicja wyjścia
byte wypelnienie =0;  //zmienne
int zmiana = 5;  

void setup() {
pinMode(niebieska, OUTPUT);  //konfiguracja pinu

}

void loop() {
 analogWrite(niebieska, wypelnienie);   //              
 wypelnienie = wypelnienie + zmiana;         

 delay(20);

Nie zmienia to faktu ze mocno się zdziwiłem, że tak sama z siebie się zeruje po osiągnięciu swojej max wartości.

Zad 5.2

Najciekawszy efekt? Jak dla mnie to jest on nudny lub mniej nudny 🙂

Tak poważnie to zdziwiło mnie jak duża jest różnica pomiędzy 0ms a 1ms. Najciekawiej dioda pracuje przy zmianie ustawionej na 1 i czasach poniżej 10ms.

#define niebieska 3       //definicja wyjścia
byte wypelnienie =0;  //zmienne
int zmiana = 1;  

void setup() {
pinMode(niebieska, OUTPUT);  //konfiguracja pinu

}

void loop() {
analogWrite(niebieska, wypelnienie);                 //zapal diode z określonym wypełnieniem
   if( wypelnienie<255){                            //jeśli wypełnienie mniejsze od 255
       wypelnienie = wypelnienie + zmiana;          // to wypełnienie równe swojej wartosci plus zmiana
   }else{                                           // jesli wypelnienie równe 255 wykonaj pętle:
         while(wypelnienie > 0){                    //dopóki warunek spełniony
               wypelnienie = wypelnienie - zmiana;  //wygaszaj diode
               analogWrite(niebieska, wypelnienie);  
               delay (10);                          //opóżnienie
         }
     }
delay(10);

}
Link do komentarza
Share on other sites

Nie zmienia to faktu ze mocno się zdziwiłem, że tak sama z siebie się zeruje po osiągnięciu swojej max wartości.

Zapamiętaj, że zmienne się nie zerują, tylko przepełniają. Gdy przekroczysz zakres innej zmiennej (np. int), to po przekroczeniu maksymalnej wartości zamiast zera pojawią się tam wartości ujemne (ze skrajnego zakresu). Warto zrobić taki eksperyment i sprawdzać wynik przez UART. Dzięki temu można uniknąć przykrych niespodzianek w przyszłości 🙂

Link do komentarza
Share on other sites

Czyli te ujemne wartości rosną dalej do zera i cały cykl się powtarza?

Dobrze zrozumiałem?

No właśnie miałem ochotę sprawdzić, czy to tylko ta jedna zmienna się tak zachowuje, teraz już wiem że nie 🙂

Rzeczywiście w takim wypadku można się zdziwić...

Link do komentarza
Share on other sites

mechanik, tak dokładnie. Zmienna po przepełnieniu przyjmuję swoją skrajną wartość "z przeciwnej strony" i cykl się powtarza. To samo działa w drugą stronę.

Link do komentarza
Share on other sites

Czy stabilizator w tym przykładzie jest konieczny? Poszerzając swoja wiedzę o Arduino natknąłem sie na ten film na YT, tam autor go nie stosuje. Może to głupie pytanie ale nie jestem jeszcze tak obeznany z elektronika 🙂

Ok, znalazłem odpowiedz na poprzedniej stronie 🙂

Link do komentarza
Share on other sites

Czy te kondensatory wchodzą w skład zestawu z Botlandu? Bo widzę tylko dwa, ceramiczny i elektrolityczny a na rysunku z ćwiczenia z serwem mamy jakieś dwa niebieskie prostokąty. To są dwa takie jak ten ceramiczny, czy jakieś inne, czy co? Chyba trzeba będzie odwiedzić sklep 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.