Elektronika     Prosty generator PWM (ATtiny25)        




Jest to bardzo prosty generator PWM (Pulse-Width Modulation), zasilany stabilizowanym napięciem
Vcc=2.7-5.5V. Na jego wyjściu uzyskuje się sygnał prostokątny o wybranej, stałej częstotliwości 1.25/
2.5/5/10/20/40/80 kHz i wypełnieniu regulowanym w zakresie 0-100%, z krokiem co 1%. Może przydać
się w pracowni każdego elektronika, np. podczas testowania różnych prototypowych układów cyfrowych
lub sprawdzania funkcji pomiaru wypełnienia sygnału w multimetrze.
Sercem generatora jest popularny mikrokontroler ATtiny25(V). Zamiast niego można użyć modeli
ATtiny45(V)/85(V), które różnią się jedynie większą ilością pamięci. Program sterujący napisałem
w asemblerze i jest on identyczny dla każdego z wymienionych mikrokontrolerów (zajmuje 226 bajtów
pamięci FLASH).
Mikrokontroler w wersji "V" wyróżnia się tym, że może pracować przy napięciu zasilania 1.8-5.5V z ma-
ksymalną częstotliwością taktowania 10 MHz. Oznacza to, że po użyciu mikrokontrolera ATtiny25V/
45V/85V, generator będzie działał przy minimalnym napięciu Vcc=2.4V, ale nie 1.8V. Jest to spowo-
dowane tym, że im mniejsze napięcie zasilania Vcc, tym niższa jest maksymalna częstotliwość z jaką
może pracować mikrokontroler. Dla Vcc=1.8V maksymalna częstotliwość taktowania wynosi 4 MHz,
dla Vcc=2.7V wynosi ona 10 MHz, a dla Vcc=4.5-5.5V jest to 20 MHz (nie dotyczy wersji "V").
Poniższy wykres przedstawia zależność maksymalnej częstotliwości taktowania Fmax mikrokontrolera
od jego napięcia zasilania Vcc.



Po włączeniu zasilania na wyjściu generatora (złącze CON2), uzyskuje się sygnał prostokątny o często-
tliwości 10 kHz, wypełnieniu 50% i poziomie zależnym od wartości napięcia zasilania Vcc. Aby zmniej-
szyć/zwiększyć wypełnienie sygnału o 1%, należy krótko (poniżej 250ms) nacisnąć przycisk (mikrostyk)
S1 (-)/S2 (+). Naciśnięcie i dłuższe przytrzymanie wciśniętego przycisku S1/S2, spowoduje ciągłe
zmniejszanie/zwiększanie wartości wypełnienia z szybkością ok. 4%/s, aż do osiągnięcia wartości
granicznej, czyli odpowiednio 0%/100%. Ustawienie wypełnienia o wartości 0%/100%, wymusi ciągły
niski/wysoki stan logiczny (GND/Vcc) na wyjściu generatora.
Aby zmienić częstotliwość sygnału, należy krótko (poniżej 1s) nacisnąć jednocześnie obydwa przyciski
S1 i S2. Wtedy częstotliwość zmieni wartość na następną w kolejności: 10/20/40/80/1.25/2.5/5 kHz i tak
w kółko. Naciśnięcie i dłuższe przytrzymanie wciśniętych jednocześnie przycisków S1 i S2, spowoduje
ciągłe zmienianie wartości częstotliwości z szybkością ok. 1x/s, aż do puszczenia przycisków. Po każdej
zmianie częstotliwości, początkowa wartość wypełnienia sygnału wynosi zawsze 50% (niezależnie od
wcześniejszego ustawienia).
Tranzystor T1 (MOSFET-P) zabezpiecza układ przed odwrotnym podłączeniem polaryzacji napięcia
zasilania. Specjalnie został wybrany model Si2305, który zaczyna przewodzić już przy napięciu bramki
Vgs=1.8V - ma to znaczenie, jeśli układ będzie zasilany niskim napięciem (np. 2.7V). Jako zamienników
T1 można użyć, m.in. następujących tranzystorów: DMP1045, FDN306, Si2315, IRLML6401. W przy-
padku braku odpowiedniego tranzystora można zrezygnować z tego zabezpieczenia - wtedy trzeba
zewrzeć pola lutownicze "D" i "S" w miejscu obudowy SOT-23.
Rezonator kwarcowy X1 taktuje pracę mikrokontrolera, dzięki czemu na wyjściu uzyskuje się sygnał
o dość dokładnej i stabilnej częstotliwości. Istnieje też możliwość taktowania mikrokontrolera jego
wewnętrznym oscylatorem RC, o nominalnej częstotliwości 8 MHz. Zaletą tego rozwiązania jest to,
że nie trzeba wtedy montować rezonatora X1 i kondensatorów C3/C4, ale dużą wadą jest niedokła-
dna i bardzo niestabilna częstotliwość sygnału wyjściowego. Kondensatory C1 i C2 filtrują napięcie
zasilania. Rezystor R2 ogranicza prąd pobierany bezpośrednio z pinu PB1 mikrokontrolera - zapobiega
jego uszkodzeniu w przypadku zwarcia wyjścia CON2.
Po wlutowaniu wszystkich elementów w typowej kolejności i upewnieniu się o braku zwarć, wkładamy
mikrokontroler w podstawkę. Następnie włączamy zasilanie i programujemy go wsadem przez złącze
CON3, przy użyciu dowolnego programatora ISP (In-System Programming). Złącze CON3 zawiera
sygnały rozmieszczone w standardowy sposób zalecany przez firmę Atmel, a pokazany na schemacie
ideowym. Konieczne jest również ustawienie odpowiednich wartości fuse i lock bitów. W przypadku,
gdy mikrokontroler będzie taktowany rezonatorem kwarcowym X1: FL (Fuse Low): $FF, FH (Fuse High):
$DF, FE (Fuse Extended): $FF, LB (Lock Bits): $FF. W przypadku, gdy mikrokontroler będzie taktowany
wewnętrznym oscylatorem RC: FL (Fuse Low): $E2, FH (Fuse High): $DF, FE (Fuse Extended): $FF,
LB (Lock Bits): $FF. Należy bardzo uważać, aby nie dokonać zmian w fuse/lock bitach, które uniemo-
żliwią dalsze programowanie mikrokontrolera. Po prawidłowym zaprogramowaniu mikrokontrolera,
odłączamy programator od generatora, który jest już gotowy do działania.
Generator można zasilać napięciem stałym Vcc=2.7-5.5V z zasilacza lub z baterii/akumulatorów (np.
z jednego ogniwa typu 18650). Pobór prądu przy napięciu Vcc=2.7/5V wynosi maksymalnie 2.5/5 mA
(sygnał 80kHz/99%, wyjście generatora nie obciążone).
Generator zmontowałem na płytce jednostronnej o wymiarach 40x40 mm, wykonanej metodą transferu
chemicznego. W jej rogach znajdują się cztery otwory montażowe o średnicy 3 mm, dzięki którym płytkę
można przykręcić do obudowy lub zamontować w nich jakieś nóżki, na których będzie ona stała.

SPIS ELEMENTÓW:

Rezystory:
R1 - 10k
R2 - 220

Kondensatory:
C1 - 100u/10V
C2 - 100n
C3, C4 - 22p
Tranzystory:
T1 - Si2305 (lub zamiennik,
patrz opis)

Układy scalone:
U1 - ATtiny25/45/85

Rezonatory:
X1 - kwarcowy 8 MHz
Przełączniki:
S1, S2 - mikroprzełącznik

Złącza:
CON1, CON2 - goldpin 2x1 (męskie)
CON3 - goldpin 3x2 (męskie)

Inne:
U1 - podstawka DIP8 zwykła