Tartalomjegyzék:
- 1. lépés: Leírás
- 2. lépés: AVR időzítők - PWM mód
- 3. lépés: Fényintenzitás mérés - ADC és LDR
- 4. lépés: Vezérlő egyenáramú motor és kettős H-híd motorvezérlő modul L298N
- 5. lépés: Kód írása programhoz C -ben. HEX fájl feltöltése a mikrokontroller flash memóriájába
- 6. lépés: Az elektromos áramkör
Videó: AVR mikrovezérlő. Impulzus szélesség moduláció. Az egyenáramú motor és a LED -fényerősség vezérlője: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Üdv mindenkinek!
Az impulzusszélesség -moduláció (PWM) egy nagyon gyakori technika a távközlésben és a teljesítményszabályozásban. általánosan használják az elektromos készülékhez táplált teljesítmény szabályozására, legyen az motor, LED, hangszóró stb. Alapvetően modulációs technika, amelyben a vivőimpulzus szélessége az analóg üzenetjelnek megfelelően változik.
Egyszerű elektromos áramkört készítünk az egyenáramú motor forgási sebességének szabályozására fényintenzitástól függően. Fényfüggő ellenállást és AVR mikrokontroller funkciókat fogunk használni, mint például az analóg -digitális átalakítás a fényintenzitás mérésére. Továbbá a Dual H-Bridge motorvezérlő modult-L298N fogjuk használni. Általában a motorok fordulatszámának és irányának szabályozására szolgál, de más projektekhez is használható, például bizonyos világítási projektek fényerejének növeléséhez. Ezenkívül hozzáadott egy gombot az áramkörünkhöz a motor forgásirányának megváltoztatásához.
1. lépés: Leírás
Ezen a világon minden testnek van valamilyen tehetetlensége. A motor minden bekapcsoláskor forog. Amint ki van kapcsolva, hajlamos leállni. De nem áll meg azonnal, időbe telik. De mielőtt teljesen leállna, újra bekapcsolja! Így mozogni kezd. De még most is kell egy kis idő, hogy elérje teljes sebességét. De mielőtt ez megtörténne, ki van kapcsolva, és így tovább. Ennek a műveletnek az összhatása tehát az, hogy a motor folyamatosan, de kisebb sebességgel forog.
Az impulzusszélesség -moduláció (PWM) egy viszonylag új teljesítménykapcsolási technika, amely közepes mennyiségű elektromos energiát biztosít a teljesen be- és kikapcsolási szintek között. Általában a digitális impulzusoknak ugyanaz a be- és kikapcsolási időtartama, de bizonyos helyzetekben szükségünk van arra, hogy a digitális impulzusnak több/kevesebb legyen az ideje/kikapcsolási ideje. A PWM technikában digitális impulzusokat hozunk létre egyenlő mennyiségű be- és kikapcsolt állapotban, hogy megkapjuk a szükséges közbenső feszültségértékeket.
A működési ciklust a nagyfeszültség időtartamának százalékos aránya határozza meg egy teljes digitális impulzusban. Kiszámítható:
A munkaciklus % -a = T be /T (időszak idő) x 100
Vegyünk egy problémajelentést. 50 Hz -es PWM jelet kell generálnunk, 45% -os üzemidővel.
Frekvencia = 50 Hz
Időszak, T = T (be) + T (ki) = 1/50 = 0,02 s = 20 ms
Üzemidő = 45%
Így a fenti egyenlet szerint megoldva kapjuk
T (be) = 9 ms
T (ki) = 11 ms
2. lépés: AVR időzítők - PWM mód
A PWM készítéséhez az AVR külön hardvert tartalmaz! Ennek használatával a CPU utasítja a hardvert, hogy készítsen PWM -et egy adott ciklusban. Az ATmega328 6 PWM kimenettel rendelkezik, 2 az időzítő/számláló0 (8 bites), 2 az időzítő/számláló1 (16 bites), és 2 az időzítő/számláló2 (8 bites) helyen található. A Timer/Counter0 az ATmega328 legegyszerűbb PWM eszköze. A Timer/Counter0 3 üzemmódban képes működni:
- Gyors PWM
- Fázis és frekvencia korrigált PWM
- Fáziskorrigált PWM
ezen módok mindegyike fordított vagy nem invertált.
A Timer0 inicializálása PWM módban:
TCCR0A | = (1 << WGM00) | (1 << WGM01) - WGM beállítása: gyors PWM
TCCR0A | = (1 << COM0A1) | (1 << COM0B1) - állítsa be az A, B kimeneti mód összehasonlítását
TCCR0B | = (1 << CS02) - időzítő beállítása előskálázóval = 256
3. lépés: Fényintenzitás mérés - ADC és LDR
A fényfüggő ellenállás (LDR) egy jelátalakító, amely megváltoztatja ellenállását, ha a fény a felületére esik.
Az LDR -ek félvezető anyagokból készülnek, hogy fényérzékeny tulajdonságaik legyenek. Ezek az LDR -ek vagy FOTÓellenállások a „Photo Conductivity” elvén működnek. Ez az elv azt mondja, amikor a fény az LDR felületére esik (ebben az esetben) az elem vezetőképessége nő, vagy más szóval az LDR ellenállása csökken, amikor a fény az LDR felületére esik. Az LDR ellenállás csökkenésének ez a tulajdonsága azért érhető el, mert a felületen használt félvezető anyag tulajdonsága. Az LDR -t a legtöbb esetben a fény jelenlétének észlelésére vagy a fényerősség mérésére használják.
A külső folyamatos információk (analóg információk) digitális/számítási rendszerbe történő átviteléhez azokat egész (digitális) értékekre kell átalakítanunk. Ezt a fajta átalakítást az analóg -digitális átalakító (ADC) hajtja végre. Analóg digitális átalakítás néven ismert az analóg érték digitális értékké történő átalakításának folyamata. Röviden, az analóg jelek a valós világ jelei körülöttünk, mint a hang és a fény.
A digitális jelek analóg megfelelői digitális vagy numerikus formátumban, amelyeket jól értenek a digitális rendszerek, például a mikrokontrollerek. Az ADC egy ilyen hardver, amely analóg jeleket mér és ugyanazon jel digitális egyenértékét állítja elő. Az AVR mikrokontrollerek beépített ADC funkcióval rendelkeznek az analóg feszültség egész számgá alakítására. Az AVR átalakítja 10 bites tartományba, 0 és 1023 között.
A fényintenzitás mérésére LDV -elosztó áramkörből származó feszültségszint analóg -digitális átalakítóját használjuk.
Az ADC inicializálása:
TADCSRA | = (1 << ADEN) - Az ADC engedélyezése
ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1ADPS0) - állítsa be az ADC előskálázót = 128
ADMUX = (1 << REFS0) - feszültségreferencia beállítása = AVCC; - Beviteli csatorna beállítása = ADC0
Nézze meg a videót az ADC AVR mikrokontroller részletes leírásával: AVR Microcontroller. Fényintenzitás mérése. ADC és LDR
4. lépés: Vezérlő egyenáramú motor és kettős H-híd motorvezérlő modul L298N
DC motorvezérlőket használunk, mert a mikrovezérlők általában nem képesek 100 milliampernél nagyobb áramot leadni. A mikrokontrollerek okosak, de nem erősek; ez a modul bizonyos izmokat ad hozzá a mikrovezérlőkhöz nagy teljesítményű egyenáramú motorok meghajtásához. Egyidejűleg 2 egyenáramú motort tud vezérelni, akár 2 amper erejéig, vagy egy léptetőmotort. A fordulatszámot a PWM segítségével szabályozhatjuk, és a motorok forgásirányát is. Ezenkívül a LED szalag fényerejének növelésére használták.
Csap leírása:
OUT1 és OUT2 port, amely egyenáramú motor csatlakoztatására szolgál. OUT3 és OUT4 a LED szalag csatlakoztatásához.
Az ENA és az ENB engedélyező csapok: az ENA magas (+5 V) csatlakoztatásával lehetővé teszi az OUT1 és OUT2 portokat.
Ha az ENA érintkezőt alacsonyra (GND) csatlakoztatja, az letiltja az OUT1 és OUT2 kimenetet. Hasonlóképpen, az ENB és az OUT3 és OUT4 esetében.
IN1 - IN4 azok a bemeneti érintkezők, amelyek az AVR -hez csatlakoznak.
Ha IN1-magas (+5V), IN2-alacsony (GND), az OUT1 magasra, az OUT2 alacsonyra fordul, így meg tudjuk hajtani a motort.
Ha IN3-magas (+5V), IN4-alacsony (GND), az OUT4 magasra, az OUT3 alacsonyra kapcsol, így a LED szalagfény világít.
Ha meg akarja fordítani a motor forgásirányát, fordítsa meg az IN1 és IN2 polaritást, hasonlóan az IN3 és IN4 esetében.
Az ENA és az ENB PWM jelének használatával két különböző kimeneti porton szabályozhatja a motorok fordulatszámát.
A tábla névlegesen 7V és 12V között fogadhat.
Jumper: Három áthidaló csap van; 1. jumper: Ha a motornak több mint 12 V -os tápellátására van szüksége, akkor válassza le az 1. jumpert, és kapcsolja be a kívánt feszültséget (max. 35 V) a 12 V -os csatlakozóra. Hozzon egy másik 5 V -os tápfeszültséget és bemenetet az 5 V -os terminálra. Igen, 5 V -ot kell beírnia, ha 12 V -nál nagyobb feszültséget kell alkalmazni (amikor az 1 -es jumpert eltávolítják).
Az 5 V-os bemenet az IC megfelelő működéséhez szolgál, mivel az áthidaló eltávolítása letiltja a beépített 5 V-os szabályozót, és megvédi a 12 V-os terminál magasabb bemeneti feszültségétől.
Az 5 V -os csatlakozó kimenetként működik, ha a tápfeszültség 7 V és 12 V között van, és bemenetként működik, ha 12 V -nál nagyobb feszültséget alkalmaz, és a jumper eltávolításra kerül.
Jumper 2 és Jumper 3: Ha eltávolítja ezt a két jumpert, be kell írnia az engedélyezési és letiltási jelet a mikrokontrollerből, a legtöbb felhasználó inkább eltávolítja a két jumpert, és alkalmazza a jelet a mikrokontrollerből.
Ha megtartja a két jumpert, az OUT1 - OUT4 mindig engedélyezve lesz. Emlékezzen az ENA jumperre az OUT1 és OUT2 esetén. ENB jumper OUT3 és OUT4.
5. lépés: Kód írása programhoz C -ben. HEX fájl feltöltése a mikrokontroller flash memóriájába
Az AVR mikrokontroller alkalmazás írása és építése C kódban az Atmel Studio integrált fejlesztői platformja segítségével.
#ifndef F_CPU #define F_CPU 16000000UL // a vezérlő kristályfrekvenciájának megmondása (16 MHz AVR ATMega328P) #endif
#include // fejléc az adatáramlás vezérlésének engedélyezéséhez a csapok felett. Meghatározza a csapokat, portokat stb. #Include // fejléc a késleltetés funkció engedélyezéséhez a programban
#define BUTTON1 2 // gombkapcsoló a B port 2-es csatlakozójához csatlakoztatva
// Timer0, PWM Initialization void timer0_init () {// időzítő beállítása OC0A, OC0B pin kapcsoló módban és CTC mód TCCR0A | = (1 << COM0A1) | (1 << COM0B1) | (1 << WGM00) | (1 << WGM01); // időzítő beállítása előméretezővel = 256 TCCR0B | = (1 << CS02); // inicializáló számláló TCNT0 = 0; // inicializálja az összehasonlító értéket OCR0A = 0; }
// ADC inicializálás void ADC_init () {// ADC engedélyezése, mintavételi frekvencia = osc_freq/128 állítsa az előskálázót a maximális értékre, 128 ADCSRA | = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
ADMUX = (1 << REFS0); // Válassza ki a feszültségreferenciát (AVCC)
// Gombkapcsoló állapota unsigned char button_state () {
/ * a gomb megnyomásakor a BUTTON1 bit tiszta */
ha (! (PINB & (1 <
{
_delay_ms (DEBOUNCE_TIME);
ha (! (PINB & (1 <
}
visszatérés 0;
}
// Portok inicializálása void port_init () {DDRB = 0b00011011; // PB0-IN1, PB1-IN2, PB3-IN3, PB4-IN4, PB2-GOMBKAPCSOLÓ KÖZVETLEN PORTB = 0b00010110;
DDRD = 0b01100000; // PD5-ENB (OC0B), PD6-ENA (OC0A) PORTD = 0b00000000;
DDRC = 0b00000000; // PC0-ADC PORTC = 0b00000000; // Állítsa a PORTC összes csapját alacsonyra, ami kikapcsolja. }
// Ez a funkció beolvassa az analóg -digitális konvertálás értékét. uint16_t get_LightLevel () {_delay_ms (10); // Várjon egy kicsit, amíg a csatorna kiválasztja az ADCSRA | = (1 << ADSC); // Indítsa el az ADC átalakítást az ADSC bit beállításával. Írjon 1 -et az ADSC -hez
while (ADCSRA & (1 << ADSC)); // Várja meg, amíg a konverzió befejeződik
// Az ADSC addig ismét 0 lesz, folyamatosan futtassa a ciklust _delay_ms (10); visszatérés (ADC); // A 10 bites eredmény visszaadása
}
// Ez a funkció újra leképez egy számot az egyik tartományból (0-1023) a másikba (0-100). uint32_t térkép (uint32_t x, uint32_t in_min, uint32_t in_max, uint32_t out_min, uint32_t out_max) {return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }
int main (void)
{uint16_t i1 = 0;
port_init ();
timer0_init (); ADC_init (); // inicializálás ADC
míg (1)
{i1 = térkép (get_LightLevel (), 0, 1023, 0, 100);
OCR0A = i1; // A kimeneti összehasonlító regiszter A csatorna beállítása OCR0B = 100-i1; // A kimeneti összehasonlító regiszter B csatorna beállítása (invertált)
if (button_state ()) // Ha megnyomja a gombot, kapcsolja át a LED állapotát és a késleltetést 300 ms -ig (#define LOCK_INPUT_TIME) {PORTB ^= (1 << 0); // az IN1 érintkező aktuális állapotának átváltása. PORTB ^= (1 << 1); // az IN2 érintkező aktuális állapotának átváltása. Fordítsa meg a motor forgásirányát
PORTB ^= (1 << 3); // az IN3 csap aktuális állapotának átváltása. PORTB ^= (1 << 4); // a tű aktuális állapotának váltása IN4. A LED szalag ki/be van kapcsolva. _delay_ms (LOCK_INPUT_TIME); }}; visszatérés (0); }
A programozás befejeződött. Ezután a projektkód felépítése és fordítása hexa fájlba.
HEX fájl feltöltése a mikrokontroller flash memóriájába: írja be a DOS prompt ablakba a következő parancsot:
avrdude –c [programozó neve] –p m328p –u –U flash: w: [hexa fájl neve]
Az én esetemben ez:
avrdude –c ISPProgv1 –p m328p –u –U vaku: w: PWM.hex
Ez a parancs hex fájlt ír a mikrokontroller memóriájába. Nézze meg a videót a mikrovezérlő flash memóriájának égetésének részletes leírásával: A mikrokontroller flash memóriájának égetése…
Rendben! Most a mikrokontroller programunk utasításainak megfelelően működik. Nézzük meg!
6. lépés: Az elektromos áramkör
Csatlakoztassa az alkatrészeket a vázlatos rajz szerint.
Ajánlott:
Drone Quadcopter kefe nélküli egyenáramú motor futtatása a HW30A kefe nélküli motor fordulatszám -szabályozó és szervo tesztelő segítségével: 3 lépés
Drone Quadcopter kefe nélküli egyenáramú motor futtatása a HW30A kefe nélküli motor fordulatszám -szabályozó és szervo tesztelő használatával: Leírás: Ezt az eszközt szervomotor -tesztelőnek hívják, amely a szervomotor működtetésére használható a szervomotor egyszerű csatlakoztatásával és tápellátásával. A készülék az elektromos fordulatszám -szabályozó (ESC) jelgenerátoraként is használható, akkor
AVR mikrovezérlő. Ultrahangos távolságérzékelő. HC-SR04 az NOKIA 5110 LCD-n: 4 lépés
AVR mikrovezérlő. Ultrahangos távolságérzékelő. HC-SR04 az LCD-n NOKIA 5110: Üdv mindenkinek! Ebben a részben egyszerű elektronikus eszközt készítek a távolság érzékelésére, és ezek a paraméterek megjelennek az LCD NOKIA 5110-en. A paraméterek diagramként és számként jelennek meg. A készülék az AVR ATMEG mikrokontrollerre épül
AVR mikrovezérlő. Kapcsolja be a LED -eket nyomógombos kapcsolóval. Nyomógomb kikapcsolása: 4 lépés
AVR mikrovezérlő. Kapcsolja be a LED -eket nyomógombos kapcsolóval. Nyomógombos kikapcsolás: Ebben a részben megtanuljuk, hogyan kell C programprogramot készíteni az ATMega328PU számára, hogy a három LED állapotát a gombkapcsoló bemenete szerint változtassa meg. Ezenkívül megvizsgáltunk egy megoldást a „Switch Bounce” problémára. Mint általában, mi
A Drone Quadcopter kefe nélküli egyenáramú motor (3 vezetékes típus) vezérlése a HW30A motor fordulatszám -szabályozó és az Arduino UNO használatával: 5 lépés
A Drone Quadcopter kefe nélküli egyenáramú motor (3 vezetékes típus) vezérlése a HW30A motorfordulatszám-szabályozó és az Arduino UNO használatával: Leírás: A HW30A motorfordulatszám-szabályozó 4-10 NiMH/NiCd vagy 2-3 cellás LiPo akkumulátorral használható. A BEC akár 3 LiPo cellával is működőképes. Használható kefe nélküli egyenáramú motor (3 vezeték) fordulatszámának szabályozására, maximum 12 Vdc -ig
AVR mikrovezérlő. A LED -ek villognak az időzítő segítségével. Az időzítők megszakítanak. Időzítő CTC mód: 6 lépés
AVR mikrovezérlő. A LED -ek villognak az időzítő segítségével. Az időzítők megszakítanak. Időzítő CTC mód: Üdv mindenkinek! Az időzítők fontos fogalom az elektronika területén. Minden elektronikus alkatrész időalapon működik. Ez az időalap segít minden munkát szinkronban tartani. Minden mikrokontroller valamilyen előre meghatározott órajel -frekvencián működik, a