A szervo csatlakoztatása a mikrokontrollerhez - blog az xelfaer

A hálózat egy csomó cikket a kapcsolathoz a hajtóművek a mikrokontroller, de alapvetően a legtöbb felhasználási már meglévő platformok, mint a Arduino vagy klónok, de kapcsolódik a normál MK elegendő információt szegény. A cikkek autója lapátolt, egy szervószobát égett (a bátor emberek halálát a túlhevülés miatt - de nem hiába a végén), és a célt elérték. Ebben a cikkben megpróbálom elmondani, hogy mi történt a végén és milyen problémákkal találkoztam.

Először is szükség van egy mikrokontrollerre. Mert az én ötleteim azt csak 2 PWM csatorna és az eredetileg kiválasztott MK Atmega8, de aztán úgy döntött, hogy Attiny2313, mivel a firmware fog nem sok helyet, és 4 PWM csatorna, így az ötlet tűnt jövedelmezőbb. A szervert a TowerPro SG90 vásárolta meg, amely csak a közelmúltban volt képes többé-kevésbé jó adatlap megtalálására. Árak összehasonlítása a különböző boltokban (a rádió valamilyen okból egyáltalán, vagy még nem hallott róluk, vagy nincs egyáltalán) hazánkban, a legolcsóbb az ára + szállítási elérte zelectro.

Az ábra mutatja az MK számára szükséges minimumot. Persze, hogy lehetséges, hogy dobja a kvarcrezonátor, és használja a belső óra MC, de mivel tudom használni maketku - úgy döntött, hogy használja a külső kristályt. A JP1 csatlakozó a szervo hajtás csatlakoztatására szolgál. Megkötése útján №1 JP1 csatlakozó köti össze a jelvezeték szervo megkötött №2 csatlakoztatva a + 5V egyetlen tápegység, és a kimeneti №3 - GND csatlakoztatni kell egy külön tápegység GND MC.
Azonnal érdemes megemlíteni, hogy miért használnak külön áramforrást: mivel a szervo meghajtó elég sokat fogyaszt, amikor a tápellátást a számítógép USB-portjából táplálja, a feszültség csökken, és a szervo tengely erőszakosan megreked.

Ezután elkezd írni firmware-t az MK számára. Először ki kell számolnia a PWM értékeit. A számításhoz használja a képletet:

Fpwm = Fosc / n * (1 + TOP);
ahol: Fosc a kvarc rezonátor frekvenciája, n a frekvenciaosztó


helyettesíti adatainkat a számításhoz:


PS. azok számára, akik túl lusta gondolkodni a mellékletben, számológép az érték kiszámításához.

Szintén szükségünk van a szervo hajtás szélső pozícióértékére, amelyet rendszerint a szervó adatlapja jelez. Erre a modellt kellett választani eljárás tudományos alapja mondta adatlap: 0 = 1000 és 180 = 3400. Az érthetőség kedvéért végre egy folyamatos forgás szervo tengely 0 ° és 180 ° és vissza.

Maga a firmware kód:

#include
#include

// *** Főprogram *** //
int fő # 40; űr # 41;
# 123;
DDRD = 0x00; // állítsa be az összes DDRD portot bemenetként
PORTD = 0x00; // állítsa be a logikai 0 értéket az összes DDRD portra

// állítsa az időzítőt1 a gyors PWM üzemmódba 14 (kimenet a PB3 portra)
TCCR1A = # 40; 1 < TCCR1B = # 40; 1 <

DDRB | = # 40; 1 <<3 ) ; //устанавливаем PB3 как выход

ICR1 = 29999; // periódus = 20 ms

míg # 40; 1 # 41;
# 123;
mert # 40; i = 1000; én <3400 ; i = i + 10 ) //перемещение вала сервы от 0 до 180 градусов
# 123;
OCR1A = i;
_delay_ms # 40; 10 # 41; ;
# 125;

mert # 40; i = 3400; i> 1000; i = i - 10 # 41; // a szervo tengely mozgatása 180 ° -ról 0 ° -ra
# 123;
OCR1A = i;
_delay_ms # 40; 10 # 41; ;
# 125;
# 125; ;
# 125;

Kapcsolódó cikkek