- Mi az a DC motor?
- Szükséges alkatrészek
- Kördiagramm
- Az Atmega16 programozása az egyenáramú motor vezérléséhez
Az egyenáramú motorok a legszélesebb körben használt motorok. Ezek a motorok szinte mindenhol megtalálhatók a kis projektektől a fejlett robotikáig. Korábban összekötöttük az egyenáramú motort sok más mikrovezérlővel, például az Arduino-val, a Raspberry pi-vel, és számos robotprojektben használtuk. Ma megtanuljuk az egyenáramú motor vezérlését az AVR Atmega16 mikrokontrollerrel. De mielőtt folytatnánk, tudjunk meg többet az egyenáramú motorról.
Mi az a DC motor?
A DC motor olyan eszköz, amely az elektromos energiát mechanikai energiává alakítja. Pontosabban, egy egyenáramú motor egyenáramot használ az elektromos energia mechanikai energiává történő átalakítására. A motor alapelve a mágneses mező és az áram kölcsönhatása, amely olyan erőt eredményez a motoron belül, amely elősegíti a motor forgását. Tehát amikor az elektromos áramot egy tekercsen vezetjük át egy mágneses mezőben, mágneses erő keletkezik, amely olyan nyomatékot eredményez, amely a motor mozgását eredményezi. A motor irányát az áram megfordításával lehet szabályozni. Szintén sebessége változtatható a táplált feszültség változtatásával. Mivel a mikrovezérlők PWM csapokkal rendelkeznek, így felhasználhatók a motor sebességének szabályozására.
Ebben az oktatóanyagban az egyenáramú motor működését az Atmega16 segítségével mutatjuk be. Az L293D motorvezérlőt az áram irányának, így a mozgás irányának megfordítására használják. Az L293D motorvezérlő a H-Bridge áramkör konfigurációt használja, amely a szükséges áramot adja ki a motornak. Két nyomógomb segítségével választhatja ki a motor irányát. Az egyik nyomógomb az óramutató szerinti forgatás kiválasztására szolgál, a másik pedig az egyenáramú motor óraellenes működésének kiválasztására szolgál.
Szükséges alkatrészek
- DC motor (5V)
- L293D motorvezérlő
- Atmega16 mikrokontroller IC
- 16Mhz kristályoszcillátor
- Két 100nF kondenzátor
- Két 22pF kondenzátor
- Nyomógomb
- Jumper huzalok
- Kenyérlemez
- USBASP v2.0
- Led (bármilyen színű)
Kördiagramm
Az Atmega16 programozása az egyenáramú motor vezérléséhez
Itt az Atmega16 programozható az USBASP és az Atmel Studio7.0 használatával. Ha nem tudja, hogyan kell programozni az Atmega16-ot az USBASP használatával, akkor látogasson el a linkre. A teljes program a projekt végén található, töltse fel a programot az Atmega16-ba, és a két nyomógombbal forgassa el az egyenáramú motort az óramutató járásával megegyező és az óramutató járásával ellentétes irányba.Az egyenáramú motor összekapcsolása az L293D motor meghajtóval történik. Az egyenáramú motor két irányban forog, amikor megnyomják a megfelelő nyomógombot. Az egyik nyomógombot az egyenáramú motor forgatásához használják Óra irányába, a másik nyomógombot pedig az egyenáramú motor forgatásához az Óra számláló irányába. Először határozza meg a mikrovezérlő CPU-frekvenciáját, és tartalmazza az összes szükséges könyvtárat.
#define F_CPU 16000000UL #include #include
Ezután használjon egy változót a nyomógomb lenyomásának nyomon követéséhez. Ez a változó a motor irányának meghatározására szolgál.
int i;
Válassza ki a GPIO bemeneti / kimeneti módját az adatirányregiszter segítségével. Kezdetben tegye a Motor csap kimenetét olyan alacsonyra, hogy elkerülje a motor indítását a nyomógomb megnyomása nélkül.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Ellenőrizze, hogy 1 -jén gomb megnyomásakor csatlakozik PORTA4 a Atmega16 és tárolja az állapota nyomógombbal változtatható.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); késedelem_ms (1000); }
Hasonlóképpen ellenőrizze, 2 nd gomb megnyomásakor csatlakozik PORTA5 a Atmega16 és tárolja az állapota nyomógombbal változtatható.
else if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); késedelem_ms (1000); }
Ha állapota a 1 st gomb igaz, akkor forgassa DC motor Óra járásával megegyező irányban, és ha állapota a második nyomógomb igaz, akkor forgassa egyenáramú motor anti-nappal bölcs.
if (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
A motorcsapokat bármely GPIO-tűhöz csatlakoztathatja, a használt GPIO-tól függően. Fontos továbbá a Motor Driver IC használata a mikrovezérlő terhelésének csökkentése érdekében, mivel a mikrovezérlők nem képesek biztosítani az egyenáramú motorok működtetéséhez szükséges áramot. További részletekért és az egyenáramú motorokon alapuló egyéb projektekért látogasson el a megadott linkre.
A teljes kód és a bemutató videó az alábbiakban található.