Jaki jest najprostszy sposób na wygenerowanie PWM bez mikrokontrolera?

15

Jaki jest szybki i elegancki sposób generowania PWM bez mikrokontrolera do sterowania serwosilnikiem? Za pomocą potencjometru lub innych sposobów kontrolowania cyklu pracy z ustalonym okresem.

  • przepraszam za bałagan, chcę kontrolować serwo hobby.
pstan
źródło
Czy naprawdę masz na myśli sterowanie silnikiem jako część układu sterowania serwomechanizmem, czy pytasz o sterowanie „serwo hobby”? Zobacz dodatek do mojej odpowiedzi.
Olin Lathrop
1
Dlaczego chcesz PWM? PWM jest często tylko sposobem na przybliżenie mikro do analogowej funkcji sterowania. Jeśli tak naprawdę chcesz analogowego napięcia lub prądu, prawdopodobnie są na to znacznie lepsze sposoby.
Photon
2
@ThePhoton Jeśli kontroluje serwo hobby, PWM jest wymagany jako sygnał kontrolny.
Nick Johnson
Jeśli zrzucisz wymóg ustalonego okresu, oscylator delta-sigma byłby bardzo prostym rozwiązaniem. Widziałem implementacje z pojedynczym opampem i garstką rezystorów / kondensatorów. Zakłada się, że nie mówisz o serwo RC.
jippie
1
@jippie - Co to jest oscylator delta-sigma? Wiem, że ADC typu delta-sigma potrzebuje oscylatora, ale zawsze zakładałem, że było to powszechne, ponieważ tak naprawdę nie jest częścią samego konwertera.
stevenvh

Odpowiedzi:

25

Polecam (GASP!) 555 Timer w trybie „astable” . W linku znajdziesz wszystko, czego potrzebujesz, ale skopiowałem je tutaj tylko dla Ciebie!

Tryb Astable daje zmienną częstotliwość PWM i pozwala również na regulację cyklu pracy (równania czasowy i czasowy w łączu).

Obwód:

555 Timer, astable mode

Uwaga: Dodałbym elektrolityczny korek na Vcc (ołów dodatni) i GND (ołów ujemny), aby zmniejszyć wpływ zapadów na napięcie zasilające.

Częstotliwość PWM:

Output frequency of 555 Timer in astable mode

Trochę obrony dla mojej odpowiedzi w porównaniu do innych w tym poście. Większość innych odpowiedzi wymaga fali pośredniej do wygenerowania zmiennego sygnału PWM, takiego jak metoda wspólnej fali trójkątnej / komparatora. Nie widzę sensu w tworzeniu generatora fal trójkątnych (sam w sobie znaczący obwód) jako pośredniego kroku do rozwiązania twojego problemu.

555 to świetny układ analogowy i robi dokładnie to, czego potrzebujesz. Chciałbym, żeby ludzie tak bardzo ich nie nienawidzili.

kevlar1818
źródło
2
Lubię 555s, ale myślę, że @supercat ma rację, ponieważ pojedynczy 555 nie będzie w stanie dać ci sygnału o stałej częstotliwości i zmiennym współczynniku wypełnienia. C zostaje naładowany przez R1 + R2 i rozładowany przez R2. Jeśli zwiększysz R2, zwiększysz czas włączenia i wyłączenia, a tym samym okres. Jeśli zwiększysz R1, zwiększysz tylko czas, ale także okres. Jeśli zwiększysz C, zwiększysz cały czas, łącznie z okresem. Potrzebujesz dwóch 555. Jeden, w trybie astabilnym, który określi okres, wyzwalając drugi, w trybie monostabilnym, który określi współczynnik wypełnienia.
Telaclavo
5
„W linku znajdziesz wszystko, czego potrzebujesz”. Nie. To nie jest właściwy sposób na odpowiedź. Podaj szczegóły tutaj.
stevenvh
1
Nie nienawidzę 555, chciałbym tylko, żeby ludzie nie nazywali ich najlepszym rozwiązaniem do wszystkiego . Pojedynczy 555 nie jest najlepszym sposobem na kontrolowanie serwomechanizmu.
stevenvh
1
@Telaclavo - Masz rację; nie można zmieniać cyklu pracy i utrzymywać stałej częstotliwości. Jednak, jak wspomina WoutervanOoijen, nie potrzebujesz sztywno ustalonej częstotliwości do uruchomienia serwomechanizmu. Zmiana cyklu pracy prawdopodobnie powoduje wahania częstotliwości pulsowania o około 10-20% (przybliżone oszacowanie), co powinno być wystarczająco dokładne dla większości serwomechanizmów. Z drugiej strony tak naprawdę nie trzeba tak dostosowywać cyklu pracy, aby sterować serwomechanizmem.
kevlar1818
2
@stevenvh Dajesz mi znać, kiedy umiera Wikipedia. Nawet jeśli tak się stanie, jak pokazał Dean z powyższym komentarzem, 555 jest (był) tak wszechobecny, że trudno byłoby znaleźć starą książkę, mały blog lub stronę hobby z informacjami o nich.
kevlar1818
8

Wyprofilowany sposób Ye Olde na PWM z analogowym cyklem roboczym polega na porównaniu analogowego sygnału sterującego z falą trójkątną. Tworzysz generator fal trójkątnych, który działa z pożądaną częstotliwością PWM. Jest on doprowadzany do ujemnego wejścia komparatora, a analogowy sygnał sterujący do dodatniego wejścia. Wynik jest albo całkowicie wysoki, albo całkowicie niski, ale cykl pracy jest liniowo proporcjonalny do sygnału sterującego. Na przykład wzmacniacze audio z wczesnej klasy D działały na tej zasadzie.

W wielu przypadkach PWM nie musiał być super liniowy, więc fala trójkąta nie musi mieć idealnie prostych krawędzi. Zezwolenie na ich niewielki wykładniczy może uprościć obwód.

Dodany:

Mark Rages zwrócił uwagę, że mówiąc „silnik serwo”, możesz odnosić się do małych silników hobby sterowanych pozycją, używanych w modelach samolotów i tym podobnych. Moja odpowiedź dotyczy sterowania silnikiem, zakładając, że masz napięcie analogowe proporcjonalne do tego, jak mocno chcesz napędzać silnik. Nie dotyczy to „serwomechanizmów hobby”. Nie są one kontrolowane przez PWM w powszechnym tego słowa znaczeniu, ale przez szerokość impulsów, które zwykle muszą wynosić od 1 do 2 ms powtarzanych co około 20 do 50 ms. Jeśli to pytanie naprawdę dotyczy serwomechanizmów hobbystycznych, należy to wyjaśnić.

Olin Lathrop
źródło
Chociaż to robi zadanie, należy zauważyć, że @pstan chce sterować serwomechanizmem, więc posiadanie generatora funkcji w jego implementacji prawdopodobnie nie będzie zbyt przenośne.
kevlar1818
1
Cykle pracy silnika serwo są na ogół dość niskie, na przykład 10% lub mniej. A serwo wykorzystuje szerokość impulsu bezpośrednio, a nie średnią wartość, dlatego lepiej jest użyć obwodu, który oddziela szerokość impulsu od częstotliwości powtarzania.
markrages
1
@kevlar: Ponownie sprawdziłem swoją odpowiedź i nadal nie widzę tam wzmianki o generatorze funkcji. Powiedziałem tylko, że potrzebujesz fali trójkąta lub czegoś wystarczająco blisko. Na pewno nie potrzebujesz generatora funkcji, aby stworzyć jeden z nich.
Olin Lathrop
@Markrages: Huh? Silniki widzą średnią ciągu impulsów, jeśli jest wystarczająco szybki. Kilka 100 Hz jest wystarczająco dobre pod tym względem dla większości silników. Część serwomechanizmu realizowana jest przez schemat sterowania, o który OP nie pytał. Wygląda na to, że ma już poziom analogowy proporcjonalny do tego, jak mocno silnik ma być napędzany.
Olin Lathrop
@ Markrages: Właśnie przyszło mi do głowy, że mówisz o serwo hobbystyczne, które potrzebują impulsu 1-2 ms co około 20 ms? Twój komentarz ma w tym świetle sens, ale OP w ogóle nie wspomniał o serwomechanizmach.
Olin Lathrop
7

Fala trójkątna. Komparator Próg kontrolny. To podstawowy sposób na zrobienie tego.

PP

enter image description here

Najpierw wygeneruj falę prostokątną 50 Hz. Najprostszy sposób:

enter image description here

Ω rezystor i kondensator 100 nF da ci okres 20 ms.

REXTCEXT

T=REXT×CEXT

μΩ

ΩΩ

Mógłbym to zrobić z dwoma LM555, ale potrzebowałbym więcej komponentów zewnętrznych.

edytuj (o mikrokontrolerach)
Zgadzam się z Olinem (patrz komentarze), że wykluczenie mikrokontrolera jest krótkowzroczne (Olin powiedział „głupie”). Był czas, kiedy tworzenie mikrokontrolera było skomplikowane, ale dziś to już nie prawda. Możesz też mieć interfejs programowania za kilka euro. Rozwiązanie wyglądałoby wtedy tak łatwo, że żadne rozwiązanie nie będące kontrolerem nie może z nim konkurować: bierzesz ATTiny5 (Olin bierze PIC10F220) w SOT23-6. Podłącz kondensator odsprzęgający do połączeń zasilania, a potencjometr do wejścia ADC. Otóż ​​to! 3 (trzy) elementy. Przekształcanie odczytu ADC na wyjście o szerokości impulsu jest tak łatwe, że jest wręcz absurdalne, nawet dla początkującego programisty.

Kiedy zaczniesz z nimi korzystać, przekonasz się, że mikrokontrolery często oferują prostsze i bardziej elastyczne rozwiązanie niż w przypadku innych układów scalonych lub dyskretnych komponentów.

notatka
z innych kwestii widzę, że zrobić zastosowania mikrokontrolerów. Dlaczego chcesz ich tutaj unikać?

stevenvh
źródło
Jak uzyskać falę trójkąta?
m.Alin
1
@ m.Alin - Jeśli chcesz bardzo czyste trójkąt ten jest właściwy sposób. Ale wejście falownika w moim oscylatorze również zbliża się do trójkąta, chociaż nachylenia są naprawdę wykładnicze.
stevenvh
1
lokalnie mówiąc, 555 jest tutaj tańszy niż 74HCT1G14. +1 BTW. \
Standard Sandun
3
@stevenvh „Jeśli chcesz bardzo czysty trójkąt, jest to właściwy sposób”. Według twojej logiki jest to całkowicie niedopuszczalne. Prosimy o uwzględnienie tego w pełnej informacji i pełnej odpowiedzi.
kevlar1818
2
@pstan - Jeśli twoje specyfikacje nie są zbyt wysokie, prawdopodobnie użyłbyś obwodu 555. Jest daleki od ideału: częstotliwość zmienia się w zależności od cyklu pracy, a sterowanie nie jest liniowe. Trójkąt generatora + komparator rozwiązuje te wady.
stevenvh
4

Najprostszym sposobem wygenerowania sygnału PWM jest doprowadzenie fali piłokształtnej lub fali trójkątnej do jednego wejścia komparatora analogowego, a napięcie sterujące do drugiego. Jeśli nie można uzyskać fali czystego trójkąta, można ją w przybliżeniu przybliżać, przepuszczając falę kwadratową przez filtr RC, tak że moc wyjściowa filtra waha się między około 1 / 4VDD a 3 / 4VDD, a następnie skaluje napięcie sterujące do komparatora, aby napięcie sterujące, które powinno dać cykl pracy 0,01%, zostało przeliczone na najniższe napięcie filtrowanej fali kwadratowej, a napięcie sterujące, które powinno dać cykl pracy 99,99%, zostało przeliczone na najwyższe napięcie filtrowanego kwadratowa fala. To da szerokość impulsu, który nie jest całkiem liniowo proporcjonalny do amplitudy, ale jest wystarczająco blisko do wielu celów.

supercat
źródło
1
I dokładnie to robi obwód NE555, jak zaproponował kevlar1818 ...
Cees Meijer
2
@CeesMeijer: Plakat poprosił o zmienny cykl pracy i ustalony okres. Nie znam żadnego sposobu użycia pojedynczego 555 do przekształcenia napięcia sterującego w falę cyklu o zmiennej częstotliwości o stałej częstotliwości. Może jednak bardzo dobrze służyć do generowania fali trójkątnej, która zasila komparator.
supercat
Minęło 20 lat, odkąd zbudowałem ten obwód, więc musiałem to sprawdzić. I rzeczywiście masz rację. Użyłem zewnętrznego wyzwalacza, aby uzyskać stałą częstotliwość. Możesz jednak użyć do tego drugiego 555.
Cees Meijer
2

Polecam stosowanie układu sterowania zasilaniem niskiego napięcia (BiCMOS), takiego jak UCC3803 . Częstotliwość roboczą można łatwo ustawić za pomocą prostego R i C, a kontrolę cyklu pracy można łatwo wykonać za pomocą potencjometru. Będzie działał na szynie 5 V.

excerpt from TI UC3842 data sheet

UCC3803 jest kompatybilny z pinami sterowników serii PWM UCx84x. Jeśli chcesz zrobić łatwą PWM, możesz użyć powyższego schematu, pomijając R1, 2N2222 i 5k ISENSE regulację puli (po prostu przymocuj pin 3 do ziemi). Prawdopodobnie można również pominąć dwa rezystory 4,7k szeregowo z pulą regulacji wzmacniacza błędów i przejść bezpośrednio do Vref i Gnd lub użyć wyraźnego dzielnika napięcia, jeśli regulacja nie jest konieczna. (Nie określono, czy należy łatwo zmienić cykl pracy).

Układ scalony jest w stanie pobić około 1A prądu. (Jeśli twój serwomotor ma wejście PWM, jest to kwestia sporna.)

Adam Lawrence
źródło
„może potrzebować zewnętrznego sterownika do faktycznego zasilania silnika”. Jesteś pewny? Zawsze myślałem, że wejście PWM to tylko niski poziom sygnału. W przypadku zasilania serwo ma trzecie połączenie.
stevenvh
Pamiętam też, że cykl pracy wynosi tylko od 5 do 10%. To może być właściwy sposób dostarczania energii.
stevenvh
To jest miłe. Ale wciąż liczy wiele zewnętrznych komponentów.
Standard Sandun
Wygląda bardziej jak UEMIG: niepotrzebny generator EMI. :-(
stevenvh
Wydaje się również, że potrzebuje minimum 10 V. Może nie najlepszy wybór ...
stevenvh