Изработка на дигитален кантар

От появата на радиотехниката и електрониката Обратна връзкаелектронно устройство и човек беше придружен от различни сигнални светлини, бутони, превключватели, звънци (сигнал за готовност на микровълновата печка - динг!). Някои електронни устройства дават минимум информация, защото повече би било излишно. Например, светещ светодиод на зарядното за вашия китайски телефон показва, че зарядното устройство е свързано към мрежата и към него се подава напрежение. Но има и параметри, за които би било по-удобно да се даде обективна информация. Например температурата на въздуха навън или времето на будилника. Да, всичко това може да се направи и със светещи крушки или светодиоди. Един градус - един горящ диод или крушка. Колко градуса - толкова горящи индикатори. Броенето на тези светулки е обичайно нещо, но отново, колко такива светлини ще са необходими, за да покажат температурата с точност до най-близката десета от градуса? И изобщо каква площ ще заемат тези светодиоди и крушки на електронно устройство?

И в началото на ХХ век, с появата на електронните тръби, се появяват първите газоразрядни индикатори.

С помощта на такива индикатори беше възможно да се покаже цифрова информация с арабски цифри. Преди това на тези лампи бяха направени различни индикации за инструменти и други електронни устройства. В момента газоразрядните елементи почти никога не се използват никъде. Но ретрото винаги е модерно, така че много радиолюбители събират за себе си и своите близки прекрасни часовници на газоразрядници.



Недостатъци на газоразрядните лампи - ядат много. Издръжливостта е спорна. В нашия университет в лабораторните стаи все още се използват честотомери на газоразрядници.

С появата на светодиодите ситуацията се промени драматично. Светодиодите черпят малко ток сами по себе си. Ако ги поставите в желана позиция, тогава можете да покажете абсолютно всяка информация. За да се подчертаят всички арабски цифри, беше достатъчно само нещо седем (оттук и името седемсегментен индикатор) светещи LED ленти, експонирани по определен начин:

към почти всички такива седемсегментни индикатори се добавя и осми сегмент - точка, за да може да се покаже целочислената и дробната стойност на всеки параметър

на теория се получава осемсегментен индикатор, но по стария начин го наричат ​​и седемсегментен индикатор и в това няма грешка.

Накратко, седемсегментният индикатор е светодиоди, разположени един спрямо друг в определен ред и затворени в един корпус.

Ако разгледаме схемата на един седемсегментен индикатор, тогава тя изглежда така:



Както виждаме, седемсегментният индикатор може да бъде или с общ анод (OA), така че с общ катод (ОК). Грубо казано, ако имаме седем сегмента с общ анод (OA), тогава във веригата трябва да окачим "плюс" на този изход, а ако с общ катод (OK), тогава "минус" или земя . Към кой изход прилагаме напрежение, такъв светодиод ще светне с нас. Нека демонстрираме всичко това на практика.

Разполагаме със следните LED индикатори:



Както виждаме, седемсегментите могат да бъдат едноцифрени и многоцифрени, тоест два, три, четири седемсегмента в един пакет. За да проверим модерен седемсегментен, за нас е достатъчен мултиметър с функция за непрекъснатост на диода. Търсим общо заключение - може да бъде OA или OK - като напишем и след това вече гледаме представянето на всички сегменти на индикатора. Проверяваме трицифрения седемсегмент:



Опанки, горим един сегмент, по същия начин проверяваме и други сегменти.

Понякога напрежението на карикатурата не е достатъчно за проверка на сегментите на индикатора. Затова вземаме захранването, настройваме го на 5 волта, придържаме се към един терминал на захранването резистор 1-2 kiloOhm и започнете да проверявате седемсегмента.



Защо се нуждаем от резистор? Когато се приложи напрежение към светодиода, той започва рязко да яде ток, когато е включен. Следователно в този момент може да изгори. За ограничаване на тока, резистор е свързан последователно към светодиода. Повече подробности можете да намерите в тази статия.

По същия начин проверяваме четирицифрен седем сегмент от китайско радио



Не мисля, че трябва да има голям проблем с това. Във веригите седемсегментът се придържа към резистори на всеки изход. Това се дължи и на факта, че светодиодите, когато към тях се приложи напрежение, неистово консумират ток и изгарят.

В нашия модерен свят седемсегментните вече се заменят с LCD индикатори, които могат да показват напълно различна информация.

но за да ги използвате, имате нужда от определени умения в схемата на такива устройства. Досега няма нищо по-просто и по-евтино от LED седемсегментни индикатори.

Светодиод (или диод, излъчващ светлина) е оптичен диод, който излъчва светлинна енергия под формата на "фотони", когато е предубеден. В електрониката наричаме този процес електролуминесценция. Цветът на видимата светлина, излъчвана от светодиодите, варира от синьо до червено и се определя от спектралното излъчване на светлината, което от своя страна зависи от различните примеси, които се добавят към полупроводниковите материали по време на тяхното производство.

Светодиодите имат много предимства пред традиционните лампи и осветителни тела и може би най-важното от тях е техният малък размер, издръжливост, различни цветове, ниска цена и лесна наличност, възможност за лесно свързване с различни други електронни компоненти в цифрови схеми.

Но основното предимство на светодиодите е, че поради малкия си размер някои от тях могат да бъдат концентрирани в един компактен пакет, образувайки така наречения седемсегментен индикатор.

Седемсегментният дисплей се състои от седем светодиода (оттук и името му), подредени в правоъгълник, както е показано на фигурата. Всеки от седемте светодиода се нарича сегмент, защото когато свети, сегментът представлява част от цифра (десетична или шестнадесетична). 8-ми допълнителенСветодиод. Той служи за показване на десетичната запетая (DP), като по този начин позволява да бъде показана, ако два или повече 7-сегментни дисплея са свързани заедно, за да представят числа, по-големи от десет.

Всеки от седемте LED сегмента на дисплея е свързан към съответната площадка от контактния ред, разположена директно върху правоъгълния пластмасов корпус на индикатора. LED изводите са маркирани с етикети от a до g, представляващи всеки отделен сегмент. Останалите контакти на светодиодните сегменти са свързани помежду си и образуват общ изход.

И така, пристрастяване напред, приложено към съответните щифтове на светодиодните сегменти в определен ред, ще накара някои сегменти да светят, а останалите да останат затъмнени, което ви позволява да маркирате желания знак от цифровия модел, който ще бъде показан на дисплей. Това ни позволява да представим всяка от десетте десетични цифри от 0 до 9 на 7-сегментен дисплей.

Общият щифт обикновено се използва за определяне на типа 7-сегментен дисплей. Всеки светодиод на дисплея има два свързващи проводника, единият от които се нарича "анод", а другият, съответно, се нарича "катод". Следователно седемсегментният светодиоден индикатор може да има два типа схема - с общ катод (ОК) и с общ анод (ОА).

Разликата между тези два типа дисплеи е, че при дизайна OK катодите на всичките 7 сегмента са директно свързани един с друг, докато при дизайна с общ анод (OA) анодите на всичките 7 сегмента са свързани един към друг. И двете схеми работят по следния начин.

  • Общ катод (ОК) - взаимосвързаните катоди на всички LED сегменти имат логическо ниво "0" или са свързани към общ проводник. Индивидуалните сегменти се осветяват чрез прилагане на "високо" логическо ниво или логическа "1" сигнал към техния аноден изход чрез ограничаващ резистор, за да се създаде преднапрежение на отделните светодиоди.
  • Общ анод (OA) - анодите на всички LED сегменти са комбинирани и имат логическо ниво "1". Отделните сегменти на индикатора светят, когато всеки отделен катод е свързан към маса, логическа "0" или нископотенциален сигнал през съответния ограничаващ резистор.

Като цяло седемсегментните индикатори с общ анод са по-популярни, тъй като много логически схеми може да изискват по-актуаленотколкото може да достави захранването. Също така имайте предвид, че дисплеят с общ катод не е директен заместител във веригата за дисплея с общ анод. И обратното - това е еквивалентно на включване на светодиодите в обратна посока и следователно няма да се получи излъчване на светлина.

Въпреки че 7-сегментният индикатор може да се разглежда като един дисплей, той все още се състои от седем отделни светодиода в един пакет и като такива тези светодиоди трябва да бъдат защитени от свръхток. Светодиодите излъчват светлина само когато са предубедени и количеството светлина, което излъчват, е пропорционално на тока напред. Това означава само, че интензитетът на светодиода нараства приблизително линейно с увеличаване на тока. Така че, за да се избегне повреда на светодиода, този прав ток трябва да се контролира и ограничава до безопасна стойност от външен ограничаващ резистор.

Такива седемсегментни индикатори се наричат ​​статични. Основният им недостатък е голям бройизходи в пакета. За да се отстрани този недостатък, се използват динамични схеми за управление на седемсегментни индикатори.

Седемсегментният индикатор стана много популярен сред радиолюбителите, защото е лесен за използване и лесен за четене.

Автор Белов А.В.

Тази статия обсъжда различни начини за свързване на седемсегментни LED индикатори към микроконтролера.

За да може микропроцесорното устройство да показва информация под формата на цифри и знаци, е удобно да се използват седемсегментни LED индикатори. Има огромно разнообразие различни модели LED индикатори, различни размери, цветове на светене. Има както индикатори, представляващи отделна единична цифра, за показване само на една цифра, така и многоцифрени индикаторни панели. В зависимост от модела и схемата на свързване може да е различна. Освен това всички показатели са разделени на две големи групи. Това са индикатори с общ анод и индикатори с общ катод. Схемата на свързване на един индикатор с общ анод е показана на фигура 1.

Ориз. 1. Свързване на един индикатор

Сегментите на индикатора са свързани директно всеки към своя изход на PB порта на микроконтролера. Общият анод на всички сегменти е свързан към източник на захранване. Диаграмата показва възможността за захранване на индикатора от същия източник + 5V, от който се захранва самият микроконтролер. За да намалите натоварването на стабилизатора на напрежението, можете да захранвате индикатора преди стабилизатора. За да подчертае тази или онази цифра на индикатора, микроконтролерът просто програмира всички щифтове на PB порта към изхода и след това, ако е необходимо, извежда кода, съответстващ на избрания символ към порта. В този случай всеки бит от порта отговаря за своя сегмент от индикатора. Ако логическа единица е изведена в съответния бит, тогава сегментът остава угасен. Ако към бита се изведе логическа нула, тогава съответният сегмент свети. Остава да изберете кодовете по такъв начин, че осветените цифри да подчертават символа, от който се нуждаем.

В повечето случаи една цифра от индикатора очевидно не е достатъчна. Свързването на няколко изхвърляния, всяко със свои собствени заключения, очевидно няма да работи. Дори най-големият AVR микроконтролер има само четири пълни I/O порта. Следователно, единственият начин за свързване на многоцифрени седем сегментни индикатори към микроконтролера е матричният метод. Този метод е много подобен на матричното свързване на бутоните на клавиатурата, което е описано подробно в статията "Свързване на бутони". Фигура 2 показва една от опциите за свързване на дисплей от два седемсегментни индикатора.


Ориз. 2. Свързване на дисплея

Горната схема е предназначена за леки седемсегментни индикатори с ниска мощност с консумация на ток не повече от 40 mA. За по-мощни индикатори трябва да използвате транзисторни ключове. Моля, обърнете внимание, че всеки от изходите на PB порта на микроконтролера е свързан към едноименните сегменти на двата индикатора. Така изходът PB0 през резистора R1 е свързан към изхода на сегмент А на индикатора HL1 и индикатора HL2. Изходът на PB1 през резистора R2 е свързан към сегменти B на двата индикатора и т.н. Изборът на един от индикаторите се извършва с помощта на двата най-значими бита на порта PD. Общият анод на индикатора HL1 е свързан към изхода PD6, а общият анод на индикатора HL2 е свързан към изхода PD5. Такава схема на включване се нарича матрица. Щифтовете на PB порта могат да се разглеждат като осем хоризонтални линии, а двата щифта на PD порта като вертикални линии на матрицата. В пресечните точки на всяка линия се включва по един светодиоден сегмент.

Такава схема за включване на индикатора винаги работи в режим на динамична индикация. Динамичната индикация се състои в това, че микропроцесорът постоянно показва символ с достатъчно висока честота, първо в първата, а след това във втората цифра на индикатора. При честота на превключване над 24 херца окото не забелязва трептене и възприема изображението на двата индикатора като едно статично изображение. Повечето от седемсегментните дисплеи в голямо разнообразие от електронни устройства отдавна работят на този принцип.

За да реализира режима на динамична индикация, процесорът трябва да организира постоянен цикъл. Обикновено за това се използва вграден таймер. Таймерът е конфигуриран по такъв начин, че да издава прекъсване на определена честота, избрана за динамична индикация. Всеки път, когато се извика прекъсване, контролерът извежда символно изображение към нов бит на индикатора. За да направи това, контролерът задава кода, съответстващ на желания знак, на PB порта и задава логическа единица на съответния бит на PD порта (PD5 или PD6). Към бита, който трябва да бъде изгасен, се прилага логическа нула. Това завършва обработката на прекъсването, контролерът преминава към изпълнение на основната програма, а сигналите, зададени на изводите на порта, остават до следващото прекъсване. И през цялото това време желаният символ се показва в съответната цифра. Когато възникне следващото прекъсване, сигналите се извеждат към портовете, които показват изображението на друг бит от индикатора.

Фигура 2 показва схема, съдържаща само два бита индикация. По същия начин можете да свържете три, четири или повече цифри. В случай на използване на микроконтролера ATtiny2313, максималният брой битове е 7. Тъй като PD портът на този контролер има само седем пина. В този случай по време на процеса на индикация само един от битовете на PD порта се захранва с логическа единица, а всички останали са логическа нула.

Трябва да се отбележи, че в тази схема изходите PD5 и PD6, към които са свързани общите аноди на индикаторите, са подложени на най-голямо натоварване. Токът, протичащ през всеки от тях, зависи от показания символ и в случай, че всички сегменти светят едновременно, осем пъти повече от тока на един сегмент. Такъв ток може лесно да надхвърли максимално допустимия ток за единичен изход. Въпреки това, първо, този ток има импулсен характер и средната стойност на тока е много по-малка. И второ, практиката показва, че AVR микроконтролерите имат значителен резерв на мощност и могат лесно да издържат на такива натоварвания.

Всичко по-горе се отнася за индикатора с общ анод. За да светнат такива индикатори, трябва да се приложи плюс на източника на захранване към общия проводник и минус към изходите на сегмента (свържете се към общия проводник). Но има и други индикатори, изградени по схемата с общ катод. Нека да разгледаме как да използваме този тип индикатори. Веригата на фигура 1 ще трябва да бъде леко преработена. Промяната ще се сведе само до факта, че общият анод на индикатора трябва да бъде изключен от източника + 5V и свързан към общ проводник. Алгоритъмът на работа също ще се промени малко. Сега, за да запалите сегмент, трябва да приложите към него логическа единица, а за да го изгасите - логическа нула. Схемата на фиг. 2 не е необходимо да се променя. Ще се промени само алгоритъмът. Просто фазата на всички сигнали трябва да се промени. Там, където преди давахме нула, сега трябва да дадем единица и обратно.

Контрол на ЖКИ (LCD) индикатори

Автор Белов А.В.

Тази статия разглежда пример за свързване на течнокристален дисплей (LCD или LCD за кратко) към микроконтролер.

Днес на пазара на електронни компоненти можете да намерите огромен брой индикатори на различни компании и модификации. Всеки индикатор има свои собствени характеристики, собствена вътрешна архитектура и собствен интерфейс за свързване към микроконтролера. въпреки това основни принципивръзките са почти еднакви. Веднага отбелязваме, че всички LCD могат да бъдат разделени на индикатори с вграден контролер и прости индикаторибез микроконтролер. Индикаторите с микроконтролер са по-предпочитани за самостоятелна употреба. Вграденият микроконтролер вече съдържа сложни програми, които изпълняват повечето от операциите за показване на изображение върху индикатора и отчитат всички специфични характеристики на този конкретен индикаторен панел. А комуникационният интерфейс на вградения контролер обикновено не е никак сложен и улеснява свързването му към всеки универсален контролер. Вземете например руски микроконтролер MT-10T7-7. Това е прост индикатор, чийто дисплей е ред от десет седемсегментни знака. Захранващото напрежение на такъв индикатор е от 3 до 5 волта. Консумация на ток 30 uA. Размери 66 X 31,5 X 9,5 мм. Диаграмата на свързване на такъв индикатор към микроконтролера е показана на фигура 1.

Ориз. 1. Свързване на LCD към микроконтролера

Портът PB се използва за управление на индикатора. Линиите PB0...PB3 образуват шината за данни/адрес. И линията PB4 се използва за предаване на сигнал за запис към индикатора. Изходът PB6 се използва за избор на адрес/данни. Командите за управление се предават на индикатора, както следва. Първо, трябва да подадете адреса на бита, където искаме да напишем кода на следващия изходен знак. Адресът се състои от едно четирибитово двоично число. Цифрите са номерирани отляво надясно. Най-лявата (най-значимата) цифра има адрес 0 (00002). Следващата цифра е с адрес 1 (00012). Последната, най-дясна, десета цифра има адрес 9 (10012). За да се запише адреса в контролера на индикатора, е необходимо на неговия A0 да има сигнал за логическа нула. Стойността на адреса се задава на изходи PB0...PB3. И тогава единичен сигнал се прилага за кратко към изхода PB4, който се подава към входа WR1 на индикатора. На границата на този импулс адресът се записва на индикатора и се съхранява във вътрешната му памет. Сега, ако байт данни бъде записан в индикатора, той ще пристигне точно на този адрес.

Байтът с данни определя символното изображение, което ще се покаже в съответния бит на индикатора. Всеки бит от този байт отговаря за свой собствен сегмент в поле от седем сегмента. Осмият бит е отговорен за подчертаването на десетичната точка. За да се прехвърли байт данни, трябва да има логическа единица на входа A0 и следователно на изхода PB6. Байтът с данни се прехвърля към индикатора на две стъпки. Първо, ниската хапка се задава на щифтове PB0...PB3. При сигнал към WR1 се записва в паметта на индикатора. След това на същите изходи (PB0...PB3) се задава най-високата хапка и също се записва на WR1 чрез сигнал. След записване на втория (най-висок) нибъл, изображението се появява в съответната цифра на индикатора, а адресът във вътрешната памет на индикатора автоматично се увеличава с единица. По този начин, за да запишете данни в следващата цифра на индикатора, вече не е необходимо да прехвърляте адрес към него. Целият процес на записване на адреса и данните в индикатора е показан на фигура 2.


Ориз. 2. Схема на работа на индикаторния интерфейс

Тази фигура показва две опции за работа с индикатора. Записване на едно запознаване и записване на няколко запознанства подред. Променливият резистор R1 (виж диаграмата на фиг. 1) е предназначен за регулиране на контраста на дисплея. За да бъде изображението на индикатора ясно видимо, трябва да зададете най-подходящия контраст, докато наблюдавате изображението на екрана на индикатора. За различно осветление и различни ъгли на видимост копчето ще трябва да бъде настроено на различни позиции. Добре видимо изображение в други, при променящи се условия на наблюдение, може да стане напълно невидимо. За да го видите, трябва да завъртите копчето на регулатора в различни посоки.

В заключение искам да отбележа, че тези щифтове на порта за управление на индикатора са избрани абсолютно произволно. В този случай авторът се ръководи от удобството на окабеляването печатна електронна платка. Можете да изберете всякакви други пинове и дори различен I/O порт на микроконтролера.

Последна актуализация (01.05.2008 г.)

Връзка с енкодер

Автор Белов А.В.

В тази статия ще научите какво е енкодер, как се различава от променлив резистор и как помага да въведете информация в микроконтролера с просто завъртане на копчето.

Във връзка с пълния преход към микропроцесорно управление на битови и други електронни устройства се промениха и регулиращите органи, използвани в тези устройства. Ако по-рано, за да регулирате силата на звука на радиото или телевизора, трябваше просто да завъртите съответния бутон, сега често сте принудени да използвате два бутона: "Сила на звука +" и "Сила на звука -". И ако трябва да регулирате не само силата на звука? За много потребители това просто не е удобно. В допълнение, ефективността на настройката страда. Като натиснете бутона за намаляване на звука, все още трябва да изчакате известно време, докато силата на звука достигне желаното ниво. И през цялото това време трябва да страдате от силен звук. За да комбинираме предимствата на традиционните регулатори и в същото време да не губим новите възможности, които ни дават микроконтролерите, се нарича ново устройство за въвеждане на информация, което се нарича енкодер. По външен вид и монтажни размери енкодерът е много подобен на конвенционалния енкодер. променлив резистор, който се използва в традиционните аналогови устройства. Но на вътрешно устройствотя е драстично различна. Енкодерът, подобно на резистора, има изпъкнала ос, върху която можете да поставите същата дръжка, която обикновено се поставя на резистора. Въртенето на копчето на енкодера води до генериране на поредица от импулси, които след това отиват към микроконтролера и му дават информация колко да намали или увеличи тази или тази стойност. Например колко трябва да увеличите или намалите силата на звука на сигнала и т.н. Освен това енкодерът е такъв, че микроконтролерът може да различи не само количеството, с което параметърът трябва да бъде променен, но и посоката на тази промяна. Това позволява например завъртане на оста на енкодера в една посока, за да се увеличи силата на звука, и завъртане в другата посока, за да се намали.

Ориз. 1. Как работи енкодерът

Помислете как работи енкодерът. Фигура 1 показва дизайна на прост механичен енкодер. Както се вижда от фигурата, основата на енкодера е диск, изработен от изолационен материал, фиксиран върху оста, върху която е монтирана дръжката за нейното въртене. Специални слотове са разположени равномерно по периметъра на диска. Слотовете разделят цялата обиколка на няколко (обикновено 6-8) равни сектора. Освен това ширината на прорезите е равна на ширината на празнините между тях. Освен това има две групи контакти, които са инсталирани по такъв начин, че когато дискът се върти, те или се затварят, когато попаднат в слота, или се отварят в пролуката между слотовете. Местоположението на тези двойки контакти спрямо слотовете е много важно. Контактите са подредени по такъв начин, че в момента, когато едната двойка е на ръба на слот, втората двойка контакти е точно по средата между два съседни слота. Тази подредба е показана на фигурата. В резултат на това се прилага следният ред на затваряне/отваряне на контакти:

Първата група контакти се затваря

Затваря втората група контакти

Отваря се първата група контакти

Отваря се втората група контакти

5. Всичко се повтаря отначало.

Ориз. 2. Схема на енкодер 3. Работна схема

Фигура 2 показва вътрешния електрическа схемапрост механичен енкодер. Енкодерът има само три пина (което го прави още повече като променлив резистор). Долният изход според диаграмата е общ за двете двойки контакти. В резултат на това, когато дръжката на енкодера се завърти, ще получим две последователности от импулси на изхода. При равномерно въртене в една посока това ще бъдат два меандъра, изместени във фаза на 90 градуса. За по-голяма яснота този процес е показан на фигура 3. Надявам се, че е ясно как микроконтролерът определя ъгъла на въртене на оста на енкодера. Той просто отчита броя на импулсите. Освен това е възможно да се преброят импулсите, идващи от всеки от групата контакти. Основният фокус е как да се определи посоката на въртене. Тук помага последователността на затваряне и отваряне на контакти. Когато оста на енкодера се завърти на една от страните, всеки път, когато първата група контакти премине от затворена към отворена, втората група контакти се затваря. Освен това моментът на преход на първата група попада точно в средата на интервала от време, когато втората група е затворена. Тоест отскокът вече е приключил и всички преходни процеси са затихнали. При въртене в обратна посока редът на отваряне и затваряне се обръща. Следователно, в момента, когато първата група контакти премине от затворена в отворена, втората група винаги е отворена. Именно поради този факт микроконтролерът определя посоката на въртене.

Ориз. 4. Схема на свързване на енкодера към микроконтролера

Фигура 4 показва схемата на свързване на енкодера към микроконтролера. Контактите на енкодера са свързани по същия начин като обикновен отделен бутон(вижте статията "Свързване на бутони"). Портовите линии PD2 и PD3 трябва да бъдат конфигурирани като входове и вътрешният терминиращ резистор и на двата входа трябва да бъде разрешен. За повече информация относно настройването на линиите на портовете и вътрешните крайни резистори вижте статията „Окабеляване на бутони“, спомената по-горе. Общият изход на енкодера, както се вижда от диаграмата, е свързан към общия проводник на цялото устройство.

Програмата за обработка на сигнала на енкодера е изключително проста. Моля, обърнете внимание, че на диаграмата (фиг. 4) линиите PD2 и PD3 са избрани за свързване на енкодера. И това не е случайно. На микроконтролера ATtiny2313 тези щифтове последователно функционират като външни входове за прекъсване INT0 и INT1. За работа с енкодера се използва едно от тези прекъсвания. Например, можете да използвате прекъсване на външния вход INT0. Тоест на входа PD2 (щифт 6). От какво се състои програмата? Е, първо, първо трябва да разрешите прекъсването на INT0. Освен това е необходимо да се избере такъв режим, когато прекъсването се случи по предната част (или спад) на импулса на този вход. Е, тогава все още се нуждаете от най-простата подпрограма за обработка на това прекъсване. Тази подпрограма трябва просто да провери стойността на линията на порта PD3 и в зависимост от това дали е нула или единица, да намали или увеличи регулируемата стойност.

Нека разгледаме това по-подробно. Да кажем, че сме избрали режим на прекъсване на ръба на импулса. Представете си, че контролерът изпълнява основна програма, която не е свързана с енкодера. В даден момент потребителят завърта копчето на енкодера например наляво. Контактите започват да се затварят и отварят. На ръба на импулса на входа INT0 в микроконтролера се извиква прекъсване. Това означава, че работата на основната програма временно се прекъсва и контролерът преминава към рутинната услуга за прекъсване. Тази подпрограма чете информация от PD порта и оценява съдържанието на бит PD3. Тъй като дръжката на енкодера беше обърната (съгласихме се) надясно, микроконтролерът ще открие логическа единица в този бит. След като намери единица, манипулаторът на прекъсванията увеличава стойността на специална клетка, където се съхранява кодът, съответстващ на текущия обем. Кодът се увеличава с единица. След това подпрограмата приключва работата си. Микроконтролерът се връща към изпълнение на основната си програма. Ако въртенето в същата посока продължи, прекъсването ще се задейства отново на ръба на следващия импулс на INT0 и стойността на звука отново ще се увеличи с единица. И така, докато въртенето на ръкохватката на енкодера спре или стойността на силата на звука прелее. Подпрограмата трябва да провери тази стойност и да не увеличава силата на звука, ако е достигнала максимума.

Ако роторът на енкодера се завърти в обратна посока, тогава същата процедура за обработка на прекъсване, извикана на границата на сигнала на входа NT0, ще открие стойност на логическа нула на входа PD3. След като намери тази нула, подпрограмата трябва да намали стойността на кода в клетката за обем с единица. Ако въртенето продължи, тогава на ръба на всеки импулс на входа INT0 това прекъсване ще бъде извикано и всеки път стойността на звука ще намалява. И в този случай програмата вече трябва да контролира минималната стойност на звука. И при достигане на нула, програмата вече не трябва да изпълнява процедурата за изваждане.

Досега говорихме за прост механичен енкодер. Но наличието на механични контакти винаги е свързано с явления като бърборене, както и смущения, причинени от лош контакт поради запушване или износване. Всичко това води до ниска надеждност на механичния енкодер. Ето защо напоследък оптоелектричните енкодери стават все по-популярни. В оптоелектрически енкодер вместо механични контакти се използват оптрони: LED-фотодиод. Такъв енкодер изисква доп външно захранване, така че има още един щифт - захранващият щифт. Тези енкодери обикновено се захранват от стабилизиран +5V източник и изходни сигнали, близки до стандартните логически нива. В тази връзка не е необходимо да се включват вътрешни товарни резистори за тези входове на микроконтролера, към които е свързан такъв енкодер. В противен случай работата с оптоелектронни енкодери е подобна на работата с прости механични модели. За съжаление използването на оптоелектронни енкодери е ограничено от високата им цена.

Последна актуализация (04.05.2008 г.)

Практически примери USB-AVR приложения

Проектът USB-AVR се хареса на много любители дизайнери от повечето различни страниспокойствие. Компанията за развитие на Objective насърчава на своя уебсайт всеки, който е разработил собствен дизайн, използвайки тяхната технология, да изпрати описанието му или линк към сайт с такова описание и с желание поставя всички тези връзки на сайта си.

ТОГАВА. фактът, че проектът включваше представители от различни страни, доведе до факта, че се дават различни описания на различни езици. Основно на английски, немски, италиански. За съжаление все още няма проекти на руски език. Нашият сайт обаче планира да преведе описания на най-интересните проекти.

Нещо дълго време нямаше отзиви за Arduino-малки неща.
Днес се докопах до тези детайли и реших да ги "проучвам".

Тези, които се страхуват от ужасни думи от радиотехниката - моля, не гледайте под разреза. за да не губите ценното си време напразно.

За малки плавателни съдове с Arduino-образни и други контролери има много решения за показване на информация.


Можете да инсталирате от най-простите светодиоди до сложни дисплеи и сензорни панели.
Лично аз харесах седемсегментните LED индикатори с необходимата битова дълбочина.
Те са достатъчно ярки, виждат се добре на голямо разстояние и се работи доста лесно.

Ако свържете такъв индикатор директно към микроконтролера, много дискретни изходи се губят. За свързване на седемсегментни и матрични индикатори чрез 3 проводника MAXIM разработи контролерите MAX7219/MAX7221. Тази връзка ще бъде моето ревю.

Веднага трябва да кажа, че за тези, които не обичат да запояват, те се продават



Използвах и този, но не ми харесаха големите размери на дисплея (особено във височина).

Индикаторите пристигнаха в Перм за 33 дни. Бяха опаковани в обикновена мека опаковка. Краката се забиват в парче пяна. Руски пощи ги пощадиха:


Размери 40х16. Размер на цифрата около 10 мм










Брой крака - 12: 7 сегмента / аноди + точков анод + 4 общи катода според броя на разрядите
Разстояние между краката 2.54мм

Pinout на краката на индикатора


Драйверите MAX7219 пристигнаха за 35 дни, също в малък пакет, закрепени за пяната.


Смятам да купя +47 Добави към любими Рецензията ми хареса +37 +97

По молба на работниците реших да говоря за едно прекрасно нещо, наречено 7-сегмент Лед индикатор. Да започнем с това какво е. Ето такова нещо. Това е една цифра, има и две цифри, три и четири цифри. Видях още шест цифри. Всяка цифра е последвана от десетична точка. Ако има четири цифри, тогава най-често след втората цифра можете да намерите двоеточие, за да посочите секунди, когато показвате времето. След като се справихме с парчетата желязо, нека да преминем към изучаване на веригата. Какво е динамичен дисплей и защо е необходим. Тъй като индикаторът е 7-сегментен, само 7 сегмента се използват за показване на числото. Те винаги се обозначават с латински букви. A, B, C, D, E, F, G и DPГледаме снимката. Под всеки сегмент има светодиод. Всички светодиоди са свързани в единия край. Аноди или катоди, а противоположните краища се извеждат навън. Лесно се вижда, че трябва да се използват 8 пина, за да се покаже число. Един общ и седем за сегменти. Ако това се отнася за едно изхвърляне, тогава няма какво да мислим, просто окачваме всичко на един порт. Ами ако има четири цифри? Осем по четири е тридесет и две. О ... Да, 32 мега ще бъде единственият, който ще се замисли над такъв показател. Така няма да станат нещата. Има две решения. Нашата с вас динамична индикация или статична. За да разберем по-нататък, нека да разгледаме схемата за превключване на индикатора.


Тази схема предполага динамична индикация. Да, цялата съм динамична и статична. Каква е разликата?. Статичната индикация е, когато задаваме всяка цифра на нейната собствена цифра и тя е постоянно включена, а динамичната е, когато показваме цифрата в първата цифра, след това я гасим и я извеждаме към втората цифра, след това я гасим и я показваме в третата цифра и така нататък, докато ранговете не свършат. След последния разряд се връщаме към първия и така в кръг. Ако това се прави бавно, тогава ще бъде възможно да видите цифрова движеща се линия и ако увеличите скоростта, например до 50 Hz, тогава няма да видите мигането на очите си. Ето как работи динамичният дисплей. Нека сега да разгледаме диаграмата. Отляво на ATmega8 MK, зад него, чипът 74ALS373 виси на порт D. Защо е нужна тя? Факт е, че индикаторът е само 8 светодиода, събрани в определена матрица. Тоест индикаторът може да бъде представен като линия от 8 светодиода. И както знаете, светодиодите ядат много по отношение на MK. Разбира се, не е забранено да се свързва директно, но е по-добре да поставите някакъв повторител между MK и индикатора. За тези цели реших да използвам 8-битов фиксиращ буфер. Защо него. Като се има предвид факта, че използвам индикатора с общ анод, т.е. за цифровата задача, активното ниво е 0, би било безопасно да използвам чипа ULN2003A (7 транзисторни възли според схемата на Дарлингтън), а не притеснявайте се за буфера, но ... Но факт е, че ULN2003A има на борда само NPN транзистории индикатора мога да го ползвам само с общ анод, но ако трябва да го сложа с общ катод? Това е мястото, където буферът ще помогне, тъй като това, което пиша там, ще бъде изходът. Искате 0, искате 1. Контролните крака са свързани в режим на преводач. Тоест, буферът извежда същия изход като входа. Ала псевдогалванична изолация. Буферът е последван от токоограничаващи резистори. Не забравяйте, че това са светодиоди и ще изгорят без резистори. Стойността на резисторите трябва да бъде избрана малко по-малка от допустимата. Факт е, че динамичната индикация показва символи с определена честота и тя е свързана с ШИМ, тоест колкото по-висока е честотата, толкова по-висок е контрастът, така да се каже. И с най-удобния контраст, числата ще светят малко по-слабо. Следователно резисторите трябва да бъдат взети малко по-ниска стойност. Ползвах 360 ома само защото ги имах в наличност. Следващият след резисторите е нашият индикатор. От друга страна, къде са анодите, свързах първите четири бита на порт С. И така, някак разбрахме веригата. Сега нека обсъдим алгоритъма на програмата. За да включим цифрите на индикатора на свой ред, ще напишем отделна функция и ще я извикаме безкрайно в основното тяло на програмата. По-конкретно, функцията ще вземе число от 0 до 9999, ще го анализира на цифри и след това ще изведе всяка цифра на нейно място. Ако числото има по-малко от 4 цифри, празните полета отляво ще бъдат запълнени с нули. Нареждаме се на десния ръб. Ще тичаме през редиците отляво надясно. За да видим каквито и да е действия, тогава използвайки прекъсвания от брояча, веднъж в секунда ще увеличаваме показаното число с едно. Така че задачата е поставена, за битка. #define F_CPU 7372800UL // Кварцова честота #включи #включи #включи volatile unsigned int test = 9980; // Променлива за изход към индикатора ISR(TIMER1_COMPA_vect) // Обработчик на прекъсване при съвпадение на таймер 1 (тест++; // Увеличаване на изходния номер ако (тест > 9999) тест = 0; // Ако е извън четири цифри, нулиране TCNT1H=0x00; // Нулиране на регистъра TCNT1L=0x00; // сметки ) void dig_out(int num); // Деклариране на функция за показване на индикатор int main(void) ( DDRC = 0x0F; // Настройка на портове DDRD=0xFF; // за работа с индикатора Port C за цифри, Port D за числа TCCR1A=0x00; // Настройка на таймера TCCR1B=0x04; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x70; OCR1AL=0x80; TIMSK=0x10; sei(); // Разрешаване на прекъсвания докато (1) ( dig_out (тест); //Постоянно извикване на функцията за показване на текущия номер ) ) void dig_out(int num) // Функция за извеждане индикатор 4изхвърляния ( unsigned char i = 0; // променлива на брояча неподписан charraz = 1; // Цифрено число unsigned char dig_num = (0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10); // Цифрови кодове за индикатора с общ анод unsigned char dig = (0, 0, 0, 0); // Масив за битова стойност ако (бр ( dig =0; dig =0; dig =0; ) if(num // За запълване на левите цифри с нули ( dig =0; dig =0; ) if(num // За запълване на левите цифри с нули (dig =0;) докато (число > 999) // Вземете броя на хилядите (dig++; num -= 1000; ) докато (num > 99) // Вземете броя на стотиците (dig++; num -= 100; ) докато (num > 9) // Вземете броя на десетиците (dig++; num -= 10; ) dig = num; // Вземете броя на единиците докато (раз // Завъртане, докато всичките 4 бита се запълнят (PORTC=raz; // Изберете малко PORTD = dig_num]; // Изведе число raz = raz// Преминаване към следващата цифра i++; // Увеличаване на индекса на следващата цифра _закъснение_ms(1); // Закъснение 1ms } } Това е целият код. Няма да го рисувам, защото има коментари на всеки ред. По-долу можете да изтеглите архива с проекта под AtmelStudio6.2 Ако все още имате въпроси, тогава сте добре дошли във форума. Е, за най-претенциозните, по-долу е видеото на цялата тази балалайка))).