Sadržaj:
- Korak 1: Opis
- Korak 2: AVR mjerači vremena - PWM način rada
- Korak 3: Mjerenje intenziteta svjetlosti - ADC i LDR
- Korak 4: Jednosmjerni motor kontrolera i modul pogona motora s dvostrukim H-mostom-L298N
- Korak 5: Zapisivanje koda za program na C. Prijenos HEX datoteke u flash memoriju mikrokontrolera
- Korak 6: Električni krug
Video: AVR mikrokontroler. Modulacija širine impulsa. Kontroler istosmjernog motora i intenziteta LED svjetla .: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Pozdrav svima!
Modulacija širine impulsa (PWM) vrlo je česta tehnika u telekomunikacijama i kontroli snage. obično se koristi za upravljanje napajanjem električnog uređaja, bilo da se radi o motoru, LED diodi, zvučnicima itd. U osnovi je to modulacijska tehnika u kojoj se širina impulsa nositelja mijenja u skladu s analognim signalom poruke.
Izrađujemo jednostavan električni krug za kontrolu brzine vrtnje istosmjernog motora ovisno o intenzitetu svjetlosti. Za mjerenje intenziteta svjetlosti koristit ćemo značajke otpornika ovisne o svjetlu i mikrokontrolera AVR, poput analogno -digitalne konverzije. Također ćemo koristiti Dual H-Bridge motor Driver Module-L298N. Obično se koristi za kontrolu brzine i smjera motora, ali se može koristiti i za druge projekte, kao što je povećanje svjetline određenih projekata rasvjete. Također, dodali smo gumb u naš krug za promjenu smjera rotacije motora.
Korak 1: Opis
Svako tijelo na ovom svijetu ima neku inerciju. Motor se okreće kad god je uključen. Čim se isključi, nastojat će prestati. Ali to ne prestaje odmah, potrebno je neko vrijeme. No, prije nego što potpuno prestane, ponovno se uključuje! Tako se počinje kretati. Ali čak i sada treba neko vrijeme da se postigne puna brzina. No prije nego što se to dogodi, isključuje se i tako dalje. Dakle, ukupni učinak ove radnje je da se motor neprestano okreće, ali manjom brzinom.
Modulacija širine impulsa (PWM) relativno je novija tehnika uključivanja i isključivanja za pružanje srednjih količina električne energije između potpuno uključenih i potpuno isključenih razina. Obično digitalni impulsi imaju isto vrijeme uključivanja i isključivanja, ali u nekim nam je situacijama potreban digitalni impuls kako bi imali više/manje vremena/vremena. U PWM tehnici stvaramo digitalne impulse s nejednakom količinom stanja uključivanja i isključivanja kako bismo dobili potrebne vrijednosti srednjeg napona.
Radni ciklus definiran je postotkom trajanja visokog napona u potpunom digitalnom impulsu. Može se izračunati prema:
% radnog ciklusa = T uključeno /T (razdoblje) x 100
Uzmimo izjavu o problemu. Moramo generirati PWM signal od 50 Hz koji ima radni ciklus od 45%.
Frekvencija = 50 Hz
Vremensko razdoblje, T = T (uključeno) + T (isključeno) = 1/50 = 0,02 s = 20 ms
Radni ciklus = 45%
Dakle, rješavajući prema gore navedenoj jednadžbi, dobivamo
T (uključeno) = 9 ms
T (isključeno) = 11 ms
Korak 2: AVR mjerači vremena - PWM način rada
Za izradu PWM -a, AVR sadrži zasebni hardver! Koristeći ovo, CPU upućuje hardver da proizvodi PWM određenog radnog ciklusa. ATmega328 ima 6 PWM izlaza, 2 se nalaze na mjeraču vremena/brojaču 0 (8 bita), 2 se nalaze na mjeraču vremena/brojaču1 (16 bita), a 2 se nalaze na mjeraču vremena/brojaču 2 (8 bita). Timer/Counter0 je najjednostavniji PWM uređaj na ATmega328. Timer/Counter0 može raditi na 3 načina:
- Brzi PWM
- PWM sa fazom i frekvencijom
- PWM s faznom korekcijom
svaki od ovih načina može biti obrnut ili neobrnut.
Pokretanje Timer0 u PWM načinu rada:
TCCR0A | = (1 << WGM00) | (1 << WGM01) - postavite WGM: Brzi PWM
TCCR0A | = (1 << COM0A1) | (1 << COM0B1) - postavite način uspoređivanja izlaza A, B
TCCR0B | = (1 << CS02) - postavite mjerač vremena s predmjeračem = 256
Korak 3: Mjerenje intenziteta svjetlosti - ADC i LDR
Otpornik ovisan o svjetlu (LDR) je pretvarač koji mijenja svoj otpor pri promjeni svjetlosti na njegovu površinu.
LDR -ovi su izrađeni od poluvodičkih materijala kako bi im se omogućilo da imaju svojstva osjetljiva na svjetlost. Ovi LDR -ovi ili FOTO OTPORI rade na principu "fotovodljivosti". Ono što ovo načelo kaže je kad god svjetlost padne na površinu LDR -a (u ovom slučaju) povećava se vodljivost elementa ili drugim riječima otpor LDR -a se smanjuje kada svjetlost padne na površinu LDR -a. Ovo svojstvo smanjenja otpora za LDR postiže se jer je to svojstvo poluvodičkog materijala koji se koristi na površini. LDR se najčešće koristi za otkrivanje prisutnosti svjetla ili za mjerenje intenziteta svjetlosti.
Za prijenos vanjskih kontinuiranih informacija (analognih informacija) u digitalni/računalni sustav moramo ih pretvoriti u cjelobrojne (digitalne) vrijednosti. Ovu vrstu pretvorbe provodi analogno -digitalni pretvarač (ADC). Postupak pretvaranja analogne vrijednosti u digitalnu vrijednost poznat je kao analogno -digitalna pretvorba. Ukratko, analogni signali su signali iz stvarnog svijeta oko nas poput zvuka i svjetla.
Digitalni signali analogni su ekvivalenti u digitalnom ili numeričkom formatu koje digitalni sustavi poput mikrokontrolera dobro razumiju. ADC je jedan takav hardver koji mjeri analogne signale i proizvodi digitalni ekvivalent istog signala. AVR mikrokontroleri imaju ugrađen ADC uređaj za pretvaranje analognog napona u cijeli broj. AVR ga pretvara u 10-bitni broj raspona od 0 do 1023.
Za mjerenje intenziteta svjetlosti koristimo analogno -digitalno pretvaranje razine napona iz razdjelnog kruga s LDR -om.
Pokretanje ADC -a:
TADCSRA | = (1 << ADEN) - Omogući ADC
ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1ADPS0) - postavite pretkaler ADC -a = 128
ADMUX = (1 << REFS0) - postavljanje referentnog napona = AVCC; - postavite ulazni kanal = ADC0
Pogledajte video s detaljnim opisom ADC AVR mikrokontrolera: AVR mikrokontroler. Mjerenje svjetlosnog intenziteta. ADC i LDR
Korak 4: Jednosmjerni motor kontrolera i modul pogona motora s dvostrukim H-mostom-L298N
Koristimo upravljačke programe istosmjernih motora jer mikrokontroleri ne mogu isporučiti struju općenito ne veću od 100 miliampera. Mikrokontroleri su pametni, ali nisu jaki; ovaj modul će dodati neke mišiće mikrokontrolerima za pogon istosmjernih motora velike snage. Može upravljati 2 istosmjerna motora istovremeno do 2 ampera svaki ili jednim koračnim motorom. Brzinu možemo kontrolirati pomoću PWM -a, a također i smjer okretanja motora. Također, koristi se za povećanje svjetline LED trake.
Opis pribadače:
OUT1 i OUT2 priključak, koji služi za spajanje istosmjernog motora. OUT3 i OUT4 za spajanje LED trake.
ENA i ENB omogućuju pinove: povezivanjem ENA na visoki (+5V) omogućuje priključke OUT1 i OUT2.
Ako spojite ENA pin na niski (GND), onemogućit će se OUT1 i OUT2. Slično, za ENB i OUT3 i OUT4.
IN1 do IN4 su ulazni pinovi koji će biti spojeni na AVR.
Ako je IN1 visok (+5V), IN2 nizak (GND), OUT1 postaje visok, a OUT2 nizak, pa možemo pokretati motor.
Ako je IN3 visok (+5V), IN4 nizak (GND), OUT4 postaje visok, a OUT3 nizak, pa svijetli LED traka.
Ako želite promijeniti smjer rotacije motora, samo obrnite polaritet IN1 i IN2, slično za IN3 i IN4.
Primjenom PWM signala na ENA i ENB možete kontrolirati brzinu motora na dva različita izlazna priključka.
Ploča može prihvatiti nominalno od 7V do 12V.
Džemperi: Postoje tri igle za kratkospojnike; Kratkospojnik 1: Ako je vašem motoru potrebno više od 12 V napajanja, morate odspojiti kratkospojnik 1 i primijeniti željeni napon (max 35 V) na priključku od 12 V. Dovedite još 5V napajanje i ulaz na 5V terminal. Da, morate unijeti 5V ako trebate primijeniti više od 12V (kada je uklonjen kratkospojnik 1).
5V ulaz služi za ispravno funkcioniranje IC-a, budući da će uklanjanje kratkospojnika onemogućiti ugrađeni regulator 5V i zaštititi od većeg ulaznog napona s priključka 12V.
5V terminal djeluje kao izlaz ako je opskrba između 7V i 12V, a djeluje kao ulaz ako primijenite više od 12V, a kratkospojnik je uklonjen.
Kratkospojnik 2 i Kratkospojnik 3: Ako uklonite ova dva kratkospojnika, morate unijeti signal za omogućavanje i onemogućavanje iz mikrokontrolera, većina korisnika radije uklanja dva skakača i primjenjuje signal iz mikrokontrolera.
Ako zadržite dva kratkospojnika, OUT1 do OUT4 će uvijek biti omogućeni. Zapamtite ENA kratkospojnik za OUT1 i OUT2. ENB kratkospojnik za OUT3 i OUT4.
Korak 5: Zapisivanje koda za program na C. Prijenos HEX datoteke u flash memoriju mikrokontrolera
Pisanje i izrada aplikacije AVR mikrokontrolera u C kodu pomoću Integrirane razvojne platforme - Atmel Studio.
#ifndef F_CPU #define F_CPU 16000000UL // govori frekvencija kristala kontrolera (16 MHz AVR ATMega328P) #endif
#include // zaglavlje za omogućavanje kontrole protoka podataka preko pinova. Definira pinove, priključke itd. #Include // zaglavlje za omogućavanje funkcije odgode u programu
#define BUTTON1 2 // prekidač gumba spojen na priključak B pin 2 #define DEBOUNCE_TIME 25 // vrijeme čekanja dok gumb "de-bouncing" #define LOCK_INPUT_TIME 300 // vrijeme čekanja nakon pritiska tipke
// Timer0, PWM Initialization void timer0_init () {// postavljanje timera OC0A, OC0B pin u preklopnom načinu i CTC načinu rada TCCR0A | = (1 << COM0A1) | (1 << COM0B1) | (1 << WGM00) | (1 << WGM01); // postavljanje mjerača vremena s predkalerom = 256 TCCR0B | = (1 << CS02); // inicijaliziranje brojača TCNT0 = 0; // inicijalizira vrijednost uspoređivanja OCR0A = 0; }
// ADC Initialization void ADC_init () {// Omogući ADC, uzorkovanje freq = osc_freq/128 postavi pretkaler na maksimalnu vrijednost, 128 ADCSRA | = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
ADMUX = (1 << REFS0); // Odabir reference napona (AVCC)
// Status prekidača gumba unsigned char button_state () {
/ * tipka se pritisne kada je BUTTON1 bit jasan */
ako (! (PINB & (1 <
{
_kašnjenje_ms (DEBOUNCE_TIME);
ako (! (PINB & (1 <
}
return 0;
}
// Inicijalizacija portova void port_init () {DDRB = 0b00011011; // PB0-IN1, PB1-IN2, PB3-IN3, PB4-IN4, PB2-DUGMETNI PREKIDAČ DIREKTNI PORTB = 0b00010110;
DDRD = 0b01100000; // PD5-ENB (OC0B), PD6-ENA (OC0A) PORTD = 0b00000000;
DDRC = 0b00000000; // PC0-ADC PORTC = 0b00000000; // Sve pinove PORTC -a postavite na nisko što ga isključuje. }
// Ova funkcija čita vrijednost analogno -digitalnog pretvaranja. uint16_t get_LightLevel () {_delay_ms (10); // Pričekajte neko vrijeme da kanal odabere ADCSRA | = (1 << ADSC); // Pokretanje ADC konverzije postavljanjem ADSC bita. Napišite 1 u ADSC
while (ADCSRA & (1 << ADSC)); // Pričekajte da se konverzija dovrši
// ADSC do tada ponovno postaje 0, kontinuirano izvodi petlju _delay_ms (10); povrat (ADC); // Vraća 10-bitni rezultat
}
// Ova funkcija preslikava broj iz jednog raspona (0-1023) u drugi (0-100). uint32_t karta (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 (); // inicijalizacija ADC -a
dok (1)
{i1 = karta (get_LightLevel (), 0, 1023, 0, 100);
OCR0A = i1; // Postavljanje izlaznog kanala za usporedbu izlaznog kanala A OCR0B = 100-i1; // Postavljanje izlaznog kanala usporedbe kanala B (obrnuto)
if (button_state ()) // Ako je gumb pritisnut, promijenite stanje LED diode i odgodite 300 ms (#define LOCK_INPUT_TIME) {PORTB ^= (1 << 0); // prebacivanje trenutnog stanja pina IN1. PORTB ^= (1 << 1); // prebacivanje trenutnog stanja pina IN2. Obrnite smjer okretanja motora
PORTB ^= (1 << 3); // prebacivanje trenutnog stanja pina IN3. PORTB ^= (1 << 4); // prebacivanje trenutnog stanja pina IN4. LED traka je isključena/uključena. _odgoda_ms (LOCK_INPUT_TIME); }}; return (0); }
Programiranje je dovršeno. Zatim, sastavljanje i prevođenje projektnog koda u hex datoteku.
Prijenos HEX datoteke u fleš memoriju mikrokontrolera: unesite DOS prozor sa naredbom:
avrdude –c [ime programera] –p m328p –u –U bljesak: w: [naziv vaše heksadecimalne datoteke]
U mom slučaju to je:
avrdude –c ISPProgv1 –p m328p –u –U bljeskalica: w: PWM.hex
Ova naredba zapisuje heksadecimalnu datoteku u memoriju mikrokontrolera. Pogledajte video zapis s detaljnim opisom snimanja flash memorije mikrokontrolera: Bljesak memorije mikrokontrolera gori …
U redu! Sada mikrokontroler radi u skladu s uputama našeg programa. Idemo provjeriti!
Korak 6: Električni krug
Spojite komponente u skladu sa shematskim dijagramom.
Preporučeni:
Eksperimenti s slučajnim PWM motorom istosmjernog motora + Enkoder Rješavanje problema: 4 koraka
Eksperimenti s slučajnim PWM motorom na istosmjernoj struji + Enkoder Rješavanje problema: Često postoje slučajevi kada je nečije smeće tuđe blago, a ovo je bio jedan od onih trenutaka za mene. Ako ste me pratili, vjerojatno znate da sam se prihvatio velikog projekta stvaranja vlastitog CNC 3D printera od otpada. Ti su komadi bili
Arduino kontrola brzine i smjera istosmjernog motora pomoću potenciometra, OLED zaslona i tipki: 6 koraka
Arduino kontrola brzine i smjera istosmjernog motora pomoću potenciometra, OLED zaslona i gumba: U ovom ćemo vodiču naučiti kako koristiti upravljački program L298N DC MOTOR CONTROL i potenciometar za kontrolu brzine i smjera istosmjernog motora s dva gumba i prikazati vrijednost potenciometra na OLED zaslonu.Gledajte demonstracijski video
Osnovna Arduino lampa intenziteta svjetla!: 5 koraka
Osnovna Arduino lampa intenziteta svjetla !: Današnji krug zabavan je mali Arduino projekt za karantenu! Ovaj se krug usredotočuje na dva zanimljiva materijala; relej SPDT & Fotootpornik. Štoviše, svrha releja je biti elektronički prekidač u krugu. Nadalje, fotoreporter
Arduino lampa intenziteta svjetla - Jasdeep: 6 koraka
Arduino lampa intenziteta svjetla - Jasdeep: Pregled: U ovom projektu stvorit ćemo jednostavan sklop u kojem će se žarulja uključiti ako je tamna. Međutim, kada je svijetla, žarulja će se isključiti
OLED krug svjetla svijeća s fotootpornošću za kontrolu intenziteta (TfCD): 4 koraka (sa slikama)
OLED svjetlosni krug svijeća s fotootpornošću za kontrolu intenziteta (TfCD): U ovom uputstvu pokazat ćemo vam kako napraviti krug koji prikazuje (O) LED kako treperi poput svijeće i reagira na intenzitet okoliša. S manjim intenzitetom svjetlosti potreban je manji izlaz svjetlosti iz izvora svjetlosti. Uz ovu aplikaciju