Բովանդակություն:
- Քայլ 1: Նկարագրություն
- Քայլ 2: Խնդրի հայտարարություն 1. Եկեք լուսավորենք առաջին LED- ը (կանաչ) յուրաքանչյուր 50 Տ
- Քայլ 3: Խնդրի հայտարարություն 2. Եկեք յուրաքանչյուր 1 վայրկյանը լուսավորենք երկրորդ LED- ը (կապույտ)
- Քայլ 4. Խնդրի հայտարարություն 3. Եկեք լուսավորենք երրորդ LED- ը (կարմիր) յուրաքանչյուր 16ms- ում
- Քայլ 5. Codeրագրի համար ծածկագիր գրելը C. Բեռնել HEX ֆայլը միկրոկառավարիչի ֆլեշ հիշողության մեջ
- Քայլ 6: Էլեկտրական շղթայի պատրաստում
Video: AVR միկրոկոնտրոլեր: LED- ները փայլեցնում են ժմչփի միջոցով: Ersամաչափերի ընդհատումներ: Erամաչափ CTC ռեժիմ `6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Ողջույն բոլորին!
Ersամաչափերը կարևոր հասկացություն են էլեկտրոնիկայի ոլորտում: Յուրաքանչյուր էլեկտրոնային բաղադրիչ աշխատում է ժամանակի վրա: Այս ժամանակային բազան օգնում է բոլոր աշխատանքները համաժամեցնել: Բոլոր միկրոկոնտրոլերներն աշխատում են ժամացույցի որոշակի կանխորոշված հաճախականությամբ, նրանք բոլորն ունեն ժամաչափ սահմանելու դրույթ: AVR- ն կարող է պարծենալ, որ ունի շատ ճշգրիտ, ճշգրիտ և հուսալի ժամաչափ: Այն առաջարկում է բազմաթիվ հնարավորություններ դրանում ՝ դրանով իսկ դարձնելով այն լայն թեմա: Լավագույնն այն է, որ ժամաչափը ամբողջովին անկախ է պրոցեսորից: Այսպիսով, այն աշխատում է պրոցեսորին զուգահեռ և չկա պրոցեսորի միջամտություն, ինչը ժամաչափը դարձնում է բավականին ճշգրիտ: Այս բաժնում ես բացատրում եմ AVR ժամաչափերի հիմնական հասկացությունները: Ես գրում եմ պարզ ծրագիր C կոդով ՝ LED լուսաշողերը կառավարելու համար ՝ օգտագործելով ժամաչափեր:
Քայլ 1: Նկարագրություն
ATMega328- ում կա երեք տեսակի ժամաչափ
Erամաչափ/Counter0 (TC0) - ընդհանուր նշանակության 8 -բիթ ժամաչափ/հաշվիչ մոդուլ է ՝ երկու անկախ OutputCompare միավորով և PWM աջակցությամբ;
Erամաչափ/Հաշվիչ 1 (TC1) - 16 -բիթանոց erամաչափ/Հաշվիչ միավորը թույլ է տալիս ծրագրի կատարման ճշգրիտ ժամկետները (իրադարձությունների կառավարում), ալիքների առաջացման և ազդանշանների ժամանակաչափի չափումը
Erամաչափ/Counter2 (TC2) -ընդհանուր նպատակի, ալիքի, 8 -բիթանոց ժամաչափի/հաշվիչի մոդուլ է PWM- ով և ասինխրոն գործողությամբ;
Քայլ 2: Խնդրի հայտարարություն 1. Եկեք լուսավորենք առաջին LED- ը (կանաչ) յուրաքանչյուր 50 Տ
Մեթոդաբանությունը:
- օգտագործելով Timer0 նախալեզվիչ `բարձր հաճախականության էլեկտրական ազդանշանը ավելի ցածր հաճախականության իջեցնելու համար` ամբողջ թվերի բաժանմամբ.
- ընդմիջում օգտագործելով ամեն անգամ, երբ Timer0- ը գերբեռնվում է.
Erամաչափ 0 (8 բիթ) այն հաշվում է 0 -ից 255 -ից հետո, դրանք լցվում են, այս արժեքը փոխվում է յուրաքանչյուր ժամացույցի զարկերակին:
F_CPU = 16 ՄՀց. Ockամացույցի ժամանակահատված = 1000 մ / 16000000 Հց = 0.0000625 մգ
Erամաչափի հաշվարկ = (Պահանջվող ուշացում / ժամացույցի ժամանակաշրջան) -1 = (50 մգ / 0.0000625 մգ) = 799999
Theամացույցն արդեն թակել է 799999 անգամ, ինչը հետաձգում է ընդամենը 50 ms:
Մենք կարող ենք օգտագործել հաճախականությունների բաժանման տեխնիկան, որը կոչվում է նախալայնացում `ժամաչափի քանակը նվազեցնելու համար: AVR- ն մեզ առաջարկում է նախընտրական սակարկիչի հետևյալ արժեքները `8, 64, 256 և 1024: Տե՛ս աղյուսակը ամփոփում է տարբեր prescaler- ների օգտագործման արդյունքները:
Հաշվիչի արժեքը միշտ պետք է լինի ամբողջ թիվ: Եկեք ընտրենք նախնական սերիա 256:
Միկրոկոնտրոլերների մեծ մասում կա մի բան, որը կոչվում է ընդհատում: Այս ընդհատումը կարող է արձակվել, երբ որոշակի պայմաններ են բավարարվում: Այժմ, երբ ընդհատում է արձակվում, AVR- ն դադարում և պահպանում է հիմնական ռեժիմի կատարումը, հետևում է ընդհատման զանգին (կատարելով հատուկ ռեժիմ, որը կոչվում է «Ընդհատվող ծառայության ռեժիմ», ISR) և երբ դա արվի, վերադառնում է հիմնական առօրյան և շարունակում է այն կատարել:
Քանի որ պահանջվող ուշացումը (50 մգ) ավելի մեծ է, քան հնարավոր առավելագույն ուշացումը `4, 096 մմ = 1000 մ / 62500 Հց * 256, ակնհայտ է, որ ժամաչափը կհորդի: Եվ ամեն անգամ, երբ ժմչփը գերհոգնում է, ընդհատում է արձակվում:
Քանի՞ անգամ պետք է ընդհատումը կրակել:
50ms / 4.096ms = 3125 /256 = 12.207 Եթե ժամաչափը 12 անգամ թռիչք կատարեր, 12 * 4.096ms = 49.152ms կանցներ: 13 -րդ կրկնության դեպքում մեզ անհրաժեշտ է 50 մգ ուշացում `49.152 մմ = 0.848 մգ:
62500 Հց հաճախականությամբ (նախնական չափիչ = 256), յուրաքանչյուր տիզ տևում է 0,016 մկմ: Այսպիսով, 0.848 մ ուշացում հասնելու համար կպահանջվի 0.848 մ / 0.016 մ = 53 տիզ: Այսպիսով, 13 -րդ կրկնում, մենք թույլ ենք տալիս միայն ժամաչափը հաշվել մինչև 53, այնուհետև այն վերականգնել:
Initialize Timer0/Counter (տես նկարը)
TCCR0B | = (1 << CS02] // ժամանակաչափ սահմանել նախալեզվիչով = 256 TCNT0 = 0 // սկզբնական հաշվիչ TIMSK0 | = (1 << TOIE0] // միացնել overflow ընդհատման sei () // միացնել գլոբալ ընդհատումները tot_overflow = 0 // սկզբնավորել արտահոսքի հաշվիչի փոփոխականը
Քայլ 3: Խնդրի հայտարարություն 2. Եկեք յուրաքանչյուր 1 վայրկյանը լուսավորենք երկրորդ LED- ը (կապույտ)
Մեթոդաբանությունը:
- օգտագործելով բարձրաչափ հաճախականությամբ էլեկտրական ազդանշանը ավելի ցածր հաճախականության ՝ ամբողջ թվերի բաժանման միջոցով Timer1 նախալեզվիչ օգտագործելու համար.
- Clear Timer on Compare (CTC) ռեժիմի օգտագործում;
- օգտագործելով ընդհատումներ CTC ռեժիմով;
Erամաչափ 1 (16 բիթ) այն հաշվում է 0 -ից 65534 -ից հետո, դրանք վարարում են: Այս արժեքը փոխվում է յուրաքանչյուր ժամացույցի զարկերակին:
F_CPU = 16MHz: ockամացույցի ժամանակաշրջան = 1000ms / 16000000Hz = 0.0000625ms imամաչափի հաշվարկ = (Պահանջվող ուշացում / ժամացույցի ժամանակաշրջան) -1 = (1000ms / 0.0000625ms) = 15999999
Theամացույցն արդեն 15999999 անգամ թակել է ՝ 1 վայրկյան ուշացում տալու համար:
Մենք կարող ենք օգտագործել հաճախականությունների բաժանման տեխնիկան, որը կոչվում է նախալայնացում `ժամաչափի քանակը նվազեցնելու համար: AVR- ն մեզ առաջարկում է նախընտրական սակարկիչի հետևյալ արժեքները `8, 64, 256 և 1024: Տե՛ս աղյուսակը ամփոփում է տարբեր prescaler- ների օգտագործման արդյունքները: Հաշվիչի արժեքը միշտ պետք է լինի ամբողջ թիվ: Եկեք ընտրենք նախնական համար 256:
Համեմատել (CTC) ռեժիմում Clear timer- ում հաշվիչի բանաձևը շահարկելու համար օգտագործվում են OCR1A կամ ICR1 գրանցամատյանները: CTC ռեժիմում հաշվիչը մաքրվում է զրոյի, երբ հաշվիչի արժեքը (TCNT1) համընկնում է կամ OCR1A- ի կամ ICR1- ի հետ: OCR1A- ն կամ ICR1- ը սահմանում են հաշվիչի հիմնական արժեքը, հետևաբար նաև դրա լուծումը: Այս ռեժիմը թույլ է տալիս ավելի մեծ վերահսկողություն համեմատել համընկնումների ելքային հաճախականության հետ: Այն նաև պարզեցնում է արտաքին իրադարձությունների հաշվման աշխատանքը: Մենք պետք է AVR- ին ասենք, որ վերականգնի erամաչափ 1/Հաշվիչը, երբ դրա արժեքը հասնի 62500 արժեքի, դրանով իսկ հասնելով 1 վ ուշացման:
Initialize Timer1/Counter (տես նկարը)
TCCR1B | = (1 << WGM12] | (1 << CS12) // կարգավորել ժամանակաչափ նախալեզվիչով = 256 և CTC ռեժիմով TCNT1 = 0 // սկզբնական հաշվիչ TIMSK1 | = (1 << OCIE1A) // միացնել համեմատել ընդհատումը OCR1A = 62500 // սկզբնական համեմատել արժեքը
Քայլ 4. Խնդրի հայտարարություն 3. Եկեք լուսավորենք երրորդ LED- ը (կարմիր) յուրաքանչյուր 16ms- ում
Մեթոդաբանությունը:
- օգտագործելով բարձրաչափ հաճախականությամբ էլեկտրական ազդանշանը ավելի ցածր հաճախականության `ամբողջ թվերի բաժանմամբ` Timer2 նախալեզվիչ սարքի օգտագործմամբ.
- Clear Timer on Compare (CTC) ռեժիմի օգտագործում;
- օգտագործելով ապարատային CTC ռեժիմ ՝ առանց ընդհատումների.
Timer2 (8 բիթ) այն հաշվում է 0 -ից մինչև 255 -ը դրանից հետո, դրանք լցվում են: Այս արժեքը փոխվում է յուրաքանչյուր ժամացույցի զարկերակին:
F_CPU = 16 ՄՀց. Ockամացույցի ժամանակահատված = 1000 մ / 16000000 Հց = 0.0000625 մգ
Erամաչափի հաշվարկ = (Պահանջվող ուշացում / ժամացույցի ժամանակաշրջան) -1 = (16 մգ / 0.0000625 մգ) = 255999
Theամացույցն արդեն 255999 անգամ թակել է ՝ 16 մգ ուշացում տալու համար:
Տես աղյուսակը, որն ամփոփում է տարբեր նախնական սակարկիչների օգտագործման արդյունքները: Հաշվիչի արժեքը միշտ պետք է լինի ամբողջ թիվ: Եկեք ընտրենք նախնական սալիկ 1024:
CTC ռեժիմում հաշվիչը մաքրվում է զրոյի, երբ հաշվիչի արժեքը (TCNT2) համընկնում է կամ OCR2A- ի կամ ICR2- ի հետ: Pin PB3- ը նաև TIMER2 - OC2A- ի արտադրանքի համեմատման քորոցն է (տես դիագրամ):
Erամաչափ/Counter2 Control Register A - TCCR2A Bit 7: 6 - COM2A1: 0 - Համեմատեք A միավորի համադրման ելքային ռեժիմը: Քանի որ մենք պետք է միացնենք LED- ը, մենք ընտրում ենք տարբերակը. Toggle OC2A on Compare Match Ամեն անգամ, երբ համընկնում է տեղի ունենում, OC2A կապը ինքնաբերաբար փոխարկվում է: Կարիք չկա ստուգել դրոշի որևէ բիթ, կարիք չկա ուշադրություն դարձնել որևէ ընդհատման:
Initialize Timer2/Counter
TCCR2A | = (1 << COM2A0] | (1 << WGM21) // կարգավորել ժմչփ OC2A կապը միացման ռեժիմում և CTC ռեժիմում TCCR2B | = (1 << CS22] | (1 << CS21) | (1 << CS20) // կարգավորել ժամանակաչափ նախալեզվիչով = 1024 TCNT2 = 0 // սկզբնական հաշվիչ OCR2A = 250 // սկզբնական համեմատել արժեքը
Քայլ 5. Codeրագրի համար ծածկագիր գրելը C. Բեռնել HEX ֆայլը միկրոկառավարիչի ֆլեշ հիշողության մեջ
AVR միկրոկառավարիչի կիրառումը C կոդի մեջ գրելն ու կառուցելը `օգտագործելով ինտեգրված զարգացման պլատֆորմը` Atmel Studio:
F_CPU- ն սահմանում է ժամացույցի հաճախականությունը Հերցում և տարածված է avr-libc գրադարանից օգտվող ծրագրերում: Այս դեպքում այն օգտագործվում է հետաձգման ռեժիմի կողմից `որոշելու, թե ինչպես հաշվարկել ժամանակի ուշացումները:
#ifndef F_CPU
#սահմանել F_CPU 16000000UL // պատմող վերահսկիչ բյուրեղային հաճախականություն (16 ՄՀց AVR ATMega328P) #endif
#include // header ՝ կապերի վրա տվյալների հոսքի վերահսկումը միացնելու համար: Սահմանում է կապում, նավահանգիստներ և այլն:
Առաջին ներառող ֆայլը avr-libc- ի մի մասն է և կօգտագործվի գրեթե ցանկացած AVR նախագծում, որի վրա աշխատում եք: io.h- ն կորոշի ձեր կողմից օգտագործվող պրոցեսորը (դրա համար էլ կազմման ժամանակ նշում եք մասը) և իր հերթին կներառի համապատասխան IO սահմանման վերնագիրը այն չիպի համար, որը մենք օգտագործում ենք: Այն պարզապես սահմանում է ձեր բոլոր կապումների, նավահանգիստների, հատուկ գրանցամատյանների և այլնի հաստատունները:
#include // header ընդհատումը միացնելու համար
անկայուն uint8_t tot_overflow; // գլոբալ փոփոխական `հոսքերի քանակը հաշվելու համար
Խնդրի ձևակերպման մեթոդաբանություն. Flash առաջին (կանաչ) LED յուրաքանչյուր 50 ms
- օգտագործելով Timer0 նախալեզվիչ `բարձր հաճախականության էլեկտրական ազդանշանը ավելի ցածր հաճախականության իջեցնելու համար` ամբողջ թվերի բաժանմամբ.
- ընդմիջում օգտագործելով ամեն անգամ, երբ Timer0- ը գերբեռնվում է.
void timer0_init () // նախաստորագրել timer0, ընդհատում և փոփոխական
{TCCR0B | = (1 << CS02); // տեղադրեք ժամանակաչափ նախալեզվիչով = 256 TCNT0 = 0; // սկզբնական հաշվիչ TIMSK0 | = (1 << TOIE0]; // միացնել overflow nterrupt sei (); // միացնել գլոբալ ընդհատումները tot_overflow = 0; // սկզբնավորել արտահոսքի հաշվիչի փոփոխականը}
Խնդրի ձևակերպման մեթոդաբանություն. Flash երկրորդ LED (կապույտ) յուրաքանչյուր 1 վայրկյանում
- օգտագործելով բարձրաչափ հաճախականությամբ էլեկտրական ազդանշանը ավելի ցածր հաճախականության ՝ ամբողջ թվերի բաժանման միջոցով Timer1 նախալեզվիչ օգտագործելու համար.
- Clear Timer on Compare (CTC) ռեժիմի օգտագործում;
- օգտագործելով ընդհատումներ CTC ռեժիմով;
void timer1_init () // սկզբնականացնել ժամաչափ 1, ընդհատել և փոփոխել {TCCR1B | = (1 << WGM12) | (1 << CS12); // կարգավորեք ժամանակաչափ նախալեզվիչով = 256 և CTC ռեժիմով TCNT1 = 0; // սկզբնական հաշվիչ OCR1A = 62500; // սկզբնականացնել համեմատել արժեքը TIMSK1 | = (1 << OCIE1A); // միացնել համեմատության ընդհատումը}
Խնդրի ձևակերպման մեթոդաբանություն. Flashրամեկուսացման երրորդ LED (կարմիր) յուրաքանչյուր 16ms- ում
- օգտագործելով Timer2 նախալեզվիչ `բարձր հաճախականության էլեկտրական ազդանշանը ավելի ցածր հաճախականության իջեցնելու համար` ամբողջ թվերի բաժանմամբ.
- Clear Timer on Compare (CTC) ռեժիմի օգտագործում;
- օգտագործելով ապարատային CTC ռեժիմ ՝ առանց ընդհատումների.
void timer2_init () // նախաստորագրել timer2 {TCCR2A | = (1 << COM2A0] | (1 << WGM21); // սահմանել ժմչփ OC2A կապը միացման ռեժիմում և CTC ռեժիմում TCCR2B | = (1 << CS22] | (1 << CS21) | (1 << CS20); // տեղադրեք ժամանակաչափ նախալեզվիչով = 1024 TCNT2 = 0; // սկզբնական հաշվիչ OCR2A = 250; // սկզբնական համեմատել արժեքը}
TIMER0 գերհոսքի ընդհատման ծառայության ռեժիմը կոչվում է ամեն անգամ, երբ TCNT0- ը դուրս է գալիս.
ISR (TIMER0_OVF_vect)
{tot_overflow ++; // հետևել հեղեղումների քանակին}
Այս ISR- ն արձակվում է ամեն անգամ, երբ հանդիպում է տեղի ունենում, անջատումն առաջնորդվում է այստեղ.
ISR (TIMER1_COMPA_vect) {PORTC ^= (1 << 1); // անջատել led- ը այստեղ}
int հիմնական (անվավեր)
{DDRB | = (1 << 0); // միացնել 1 (կանաչ) led դեպի pin PB0 DDRC | = (1 << 1); // միացնել 2 (կապույտ) led to pin PC1 DDRB | = (1 << 3); // միացրեք 3 (կարմիր) հանգեցրեց PB3 (OC2A) timer0_init () կապին // նախաստորագրել timer0 timer1_init (); // սկզբնականացնել timer1 timer2_init (); // սկզբնականացնել ժմչփը 2 իսկ (1) // հանգույց ընդմիշտ {
Եթե Timer0- ը 12 անգամ թռիչք կատարեր, 12 * 4.096ms = 49.152ms կանցներ: 13 -րդ կրկնության դեպքում մեզ անհրաժեշտ է 50 մգ ուշացում `49.152 մմ = 0.848 մգ: Այսպիսով, 13 -րդ կրկնում, մենք թույլ ենք տալիս միայն ժամաչափը հաշվել մինչև 53, այնուհետև այն վերականգնել:
եթե (tot_overflow> = 12) // ստուգեք, եթե ոչ: of overflows = 12 ՈEՇԱԴՐՈԹՅՈՆ. '> =' օգտագործվում է
{if (TCNT0> = 53) // ստուգեք ՝ ժամաչափի թիվը հասնում է 53 -ի {PORTB ^= (1 << 0); // միացնում է led TCNT0 = 0; // զրոյական հաշվիչ tot_overflow = 0; // վերակայել արտահոսքի հաշվիչը}}}}
HEX ֆայլը միկրոկառավարիչի ֆլեշ հիշողության մեջ բեռնելը
մուտքագրեք DOS հուշման պատուհանում հրամանը.
avrdude –c [ծրագրավորողի անունը] –p m328p –u –U flash: w: [ձեր վեցանկյուն ֆայլի անունը] Իմ դեպքում դա է ՝ avrdude –c ISPProgv1 –p m328p –u –U flash: w: Timers.hex
Այս հրամանը գրում է վեցանկյուն ֆայլ միկրոկառավարիչի հիշողության մեջ: Դիտեք տեսանյութը միկրոկառավարիչի ֆլեշ հիշողության այրման մանրամասն նկարագրությամբ.
Միկրոկառավարիչի ֆլեշ հիշողությունը այրվում է…
Լավ! Այժմ, միկրոկառավարիչը աշխատում է մեր ծրագրի ցուցումներին համապատասխան: Եկեք ստուգենք այն:
Քայլ 6: Էլեկտրական շղթայի պատրաստում
Միացրեք բաղադրիչները սխեմատիկ սխեմայի համաձայն:
Խորհուրդ ենք տալիս:
Երկու ռեժիմ ESP8266 (AP և հաճախորդի ռեժիմ) ՝ 3 քայլ
Երկուսն էլ ռեժիմ ESP8266 (AP և հաճախորդի ռեժիմ). Նախորդ հոդվածում ես պատրաստել եմ ձեռնարկ, թե ինչպես կարգավորել ռեժիմը ESP8266- ում, որը որպես մուտքի կետ կամ wifi կայան է և որպես wifi հաճախորդ: այս հոդվածում ես ձեզ ցույց կտամ, թե ինչպես ESP8266 ռեժիմը երկու ռեժիմ դարձնելու համար: Այսինքն, այս ռեժիմում ESP8266- ը կարող է
AVR միկրոկոնտրոլեր: Ուլտրաձայնային հեռավորության սենսոր: HC-SR04 LCD NOKIA 5110: 4 քայլ
AVR միկրոկոնտրոլեր: Ուլտրաձայնային հեռավորության սենսոր: HC-SR04 LCD NOKIA 5110. Բարև բոլորին: Այս բաժնում ես պարզ էլեկտրոնային սարք եմ պատրաստում հեռավորությունը և այդ պարամետրերը ցուցադրվում են LCD NOKIA 5110-ում: Պարամետրերը ցուցադրվում են որպես դիագրամ և թվեր: Սարքը հիմնված է AVR ATMEG միկրոկառավարիչի վրա
AVR միկրոկոնտրոլեր: Իմպուլսի լայնության մոդուլյացիա: DC շարժիչի և LED լույսի ինտենսիվության վերահսկիչ. 6 քայլ
AVR միկրոկոնտրոլեր: Իմպուլսի լայնության մոդուլյացիա: DC շարժիչի և LED լույսի ինտենսիվության վերահսկիչ. Բարև բոլորին: Pulse Width Modulation (PWM) շատ տարածված տեխնիկա է հեռահաղորդակցության և էներգիայի կառավարման մեջ: այն սովորաբար օգտագործվում է էլեկտրական սարքի սնուցվող հզորությունը վերահսկելու համար ՝ լինի դա շարժիչ, LED, բարձրախոս և այլն: Հիմնականում դա մոդուլ է
NE555 erամաչափ - NE555 ժմչփի կազմաձևումը անկայուն կազմաձևում `7 քայլ
NE555 Timամաչափ | NE555 ժմչփի կազմաձևումը անկայուն կազմաձևում. NE555 ժմչփը էլեկտրոնիկայի աշխարհում ամենատարածված IC- ներից մեկն է: Այն DIP 8 տեսքով է, ինչը նշանակում է, որ այն պարունակում է 8 կապում
Smart Master/Slave Power Strip ձեր համակարգչի համար [ռեժիմ] (ինքնասպասարկում, բայց զրոյական սպասման ռեժիմ). 6 քայլ (նկարներով)
Smart Master/Slave Power Strip ձեր համակարգչի համար [ռեժիմ] (ինքնասպասարկում, բայց զրոյական սպասում). Անջատումը պետք է անջատված լինի: Եվ օգտագործելիությունը պետք է լավ լինի: Կարճ ասած. Մենք այնտեղ ճիշտ արտադրանք չգտանք, ուստի ավարտեցինք մոդելի մոդելը: Մենք գնեցինք որոշ " էներգախնայող " էլեկտրական ժապավեններ Zweibrueder- ից: Սարքերը շատ ամուր են և ոչ շատ