Аналогтық кіріс үшін аналогты-сандық түрлендіргішті,тартқыш резисторларын түсіндіріңіз.

Аналогты-сандық түрлендіргіш. Өлшенетін сигналдың дискретті аналогты мәндерін компьютерде өңдеу үшін оны сандық түрде берілуі тиіс, яғни, СА түрлендіргіш арқылы жасаймыз. САТ екі тәсіл арқылы жұмыс жасайды – параллельдік салыстыру және адымдық жақындау (аппроксимация).САТ та салыстыру тәсілімен жұмыс істеу (comparation), кіріс мәні кернеудің түрлі деңгейлерінде салыстырылады, ол негізі кернеуден және каскад кедергісі арқылы орындалады (сурет.2.9). Әр салыстыру сұлбаларында – компараторда 0 немесе 1 беріледі. Компратордың әр шығысы соңынан екілік код түрленеді. Мұндай САТ тез әрі жылдам әрекет етеді, бірақ компораторды қолданған себептен ол қымбаттау болады. АСТ адымдап жақындау принципі бойынша жұмыс істесе, ол САТ негізінде құрастырылған. Кіріс сигнал диапазоны 2n –1 интервалдарға бөлінген, мұндағы n –шығыс көздегі бит саны. Есептеуіш жылдам осы сандардың тізбегін басқарады, олар бірден аналогты мәнге түрленеді. Есептеуіш шығысты САТ – тағы шығыс және кіріс аналогты мәндерінің кернеулері рұқсат етілген қабілеттіліктен төмендегенінше ұлғайта береді.

Тартқыш резисторлары.Аналогты кірістердің шығыс ұяшықтарында сандық шығыстарда жұмыс жасайтындай тартқыш резисторлары бар. Осы резисторларды қосу үшін келесі команда орындалады:

digitalWrite(14, HIGH); әзірге шығыс ұяшықтары кіріс порттары ретінде қолданылып тұр. Резисторды қосқан кезде басқа датчиктерді пайдаланған analogRead() функциясының хабарлайтын мәндеріне әсер етеді. Пайдаланушылардың көпшілігі тартқыш резисторларды аналогтық кірістерді оның сандық режиміне шығару кезінде пайдаланады.

Arduino-да жылы импульстік модуляция деген не?

Ендік-импульстік молуляция

Ендік-импульстік молуляция PWM (Eng. PWM) болып қысқартылады.

Ендік-импульстік молуляцияда LED аналогты бағдарламасының шығуларын пайдалану мысалы Arduino ның Файл-> Sketchbook-> Examples-> менюі арқылы қол жетімді.

Ендік-импульстік молуляция немесе қысқышы ЕИМ дегеніміз сандық құрылғылар көмегімен түрлі аналогтық мәндерді шығаратын операция. Құрылғы үнемі жоғарғы және ең төменгі мөлшерлер арасындағы ауысатын тікбұрышты сигнал - құрылғылар импульсінің сигналдарын алу үшін пайдаланылады. Бұл сигнал ең жоғарғы 5В және ең төменгі 0В арасындағы кернеуді модельдей отырып, 5В ті 0В ке салыстырмалы түрде қосылу жылдамдығын өзгертіп отырады.Ең жоғарғы өлщемнің қосылу жылдамдығы импульстің ені деп аталады. Әр-түрлі аналогтық мәндерді алу барысында импульстің ені өзгеріп отырады. Тез-тез қосып-өшірудің жылдам өзгеруі кезінде светодиотқа үзіліссіз 0 және 5 В арасындағы сигналды беріп біз светодиоттың жарықтығын басқара аламыз.

Графикте жасыл сызықтармен тұрақты уақыт кезеңдері белгілеңеді. Уақыт ұзындығы жиілікке кері пропорционал. Яғни ЕИМ жиілігі 500HZ болса, жасыл сызықтар 2 миллисекунда әрбір аралықтарында толады. 0 мен 255 масштабы арасындағы Analog.Write() функциясын шақыру Analog.Write(255) мәні 100% ке сәйкес келеді, яғни 5В үзіліссіз қосылып тұрады. Сәйкесінше Analog.Write(177) 50% ке сәйкес болады.

Мысалы, сіз платформа алып, алға және артқа шайқаңыз. Біздің көз үшін, бұл қозғалыс жыпылықтап жарық диодтарының жылтыр желісіне айналады. LED үшін ендік-импульсті көбейту немесе азайту LED жылтыр желісінің төмендеуі болады.
41. Arduino жадының қандай түрлерін білесіз?

Ардуино платформасын қолданатын ATmega168 микроконтроллерінде жадының 3 түрі бар:

• Flash жады скетчтерді сақтау үшін пайдаланылады.

• RAM: айнымалыларды сақтау және жұмыс істеу үшін пайдаланылады.

• EEPROM: тұрақты ақпаратты сақтау үшін пайдаланылады.

Flash жады және EEPROM жады энерготәуелді жады болып саналады. RAM да сол сияқты ұшпа жады болып табылады. Ұшпа деп отырғанымыз, яғни энерготәуелді дегенді білдіреді.

Мироконтроллер ATmega168 келесі жадыларға ие:

• флеш жады 16 KB (оның ішінде жүктегіштер үшін пайдаланылатыны 2 KB)

• ОЗУ 1024 байт

• 512 байт EEPROM

ОЗУ дың шағын мөлшеріне назар аударуымыз шарт, себебі үлкен қатарлар көлемі оны толықтай иелеп алуы мүмкін. Мысалы, келесі түсіндірмені көре аламыз:

char message[] = "I support the Cape Wind project.";

Осы қатардың өзі жалпы көлемнің 32байтытан тұрады. Яңни әрбір символ 1 байтты алады. Егер үлкен колемдегі мәтін немесе таблицаны дисплейге шығаруда ОЗУ-дағы барлық 1024 байтты алуымызға тура келеді. Ал сол кезде жады жетпей калса, программа қате туралы хабарлайды. Мысалы ол программа жазады, бірақ жұмыс істемеуі мүмкін. Оны анықтау үшін жолдарды комментарийге аламыз немесе программа жолдарын тездетеміз. Егер осыдан кейін программа жұмыс істесе, онда оның орындалуына бүкіл ОЗУдың жады кеткен болып саналады.

Бұл проблеманы шешудің бірнеше жолдары бар:

- Программада скетчтармен жұмыс істегенде, Ардуиноға салмақ салмау үшін деректердің бір бөлігін компьютерге жүктесек болады.

- Егер сізде іздеу кестелері немесе басқа да ірі жиымдар бар болса, мәндерлі сақтау үшін ең аз деректер түрін пайдалануға болады.

- Ауыртыруға болмайьын жолдар немесе деректерді флеш жадыға сақтауға болады. Ол үшін PROGMEM кілтін қолдану қажет.

Ал EEPROM ді қолдану үшін EEPROM кітапханасына жүгінеміз.
42. Arduino үзілуі (Arduino Interrupts) қалай пайдаланылады?

Үзілу - ол қазір процессор не істеп жатқан болса, соны өшіріп оның жұмысын жақсартатын бірнеше операцияларды орындау керектігі жөнінде процессорға келетін сигналды айтамыз. Бүл процесс үзілуді өңдегіш (interrupt handler) деп аталады. Біз функцияны іске асыру және үзіліссіз оны қосатын болсақ, онда бұл функция әрбір уақытта сигнал деп аталады. Үзілу өңдегіші оралғаны туралы ақпарат келсе, процессор бұрынғы істеп жатқанын өңдеуді жалғастырады.

Үзуге бірнеше көздерден пайда болады:

• Ардуинодағы таймерлердің бірі, Үзілуді таймер арқылы қалыптасады;

• сыртқы кірудің өзгеруі нәтижесінде үзілу;

• ПИН тобының өзгерту арқылы.

Сіз үзілуді пайдалансаңыз, үнемі жоғары басымдылық жағдайын тексеретін цикл кодын жазудың қажеті жоқ. Баяу жауап немесе хабар-ошарсыз кеткен юасылған түймелер туралы алаңдап қажеті жоқ.

Процессор автоматты түрде ол істеп жатқанын тоқтатады және өз үзуге өңдеуші шақыруға болады. Сіз жай ғана ол туындаған кезде жауап кодын жазуыңыз керек.

Барлығы тегіс жұмыс істеу үшін, ол көп емес 10 түрлі үзілуді пайдалану ең жақсы болып табылады.

Үзілім өңдегіштері ғана басым, уақыт-сезімтал оқиғаларды өңдеуге пайдаланылуы тиіс. Сіз үзіліс өңдегіші кезінде үзілудің өшірілгенін есте сақтаңыз. Сіз Үзілу деңгейін тым көп жасауға тырыссаңыз, басқа үзілу туралы нашар жауап алатын боласыз.

Бағдарламада үзілісті өңдеу функциясы болғанда, басқа үзілуден ажыратылады. Бұның екі маңызды салдары бар:

• Атқарылып жатқан жұмыс қысқа болуы керек, себебі ол бірді бір үзілуді жіберіп алмауы қажет.

• Қолданылып жатқаг кодта үзілістердің белсендеуін шақыратын ештене болмауы тиіс, мысалы: delay ().

Бұл бағдарламаның қатып қалуына алып келеді.

loop () та ұзақ өңдеуді шегеріңіз.

Таймерді жасайтынан бұрын тексеру

Таймерлер шектеулі ресурс болып табылады. Arduino UNO барлық 3і де бар болып табылады және олар көптеген нәрселер үшін пайдаланылады. Егер таймер конфигурациясында сіз щатасатын болсаңыз, кейбір нәрселер жұмыс істемеуі мүмкін. Мысалы, Arduino Uno:

• Timer0 - millis (), micros (), delay () және PWM 5 және 6 пиндарда қолданылады.

• Timer1 - Servo, WaveHC библиотекасы және PWM 9 және 10 пиндарда қолданылады.

• Timer2 - Tone және PWM 11 және 13 пиндарда қолданылады.

Наши рекомендации