Съвети за програмиране на микроконтролери
220 волта без понижаващ трансформатор?
Можете да посъветвате доста проста схема за захранване на устройството от мрежата
220 волта, което осигурява ток на натоварване с посочените стойности на елементите до 100 mA, което е достатъчно в много случаи.
Резисторът R2 трябва да бъде проектиран за разсейване на мощност от поне 0,5 W, R3 може да бъде всичко. Кондензаторът C1 трябва да бъде проектиран за напрежение най-малко 250 V. Изходното напрежение се определя от ценеров диод VS1. Диод VD1 със средна мощност KD209A може да бъде заменен например с 1N4007 (често срещан внесен аналог).
ПРЕДУПРЕЖДЕНИЕ : Горната верига е галванично свързана към електрическата мрежа
220 V, следователно, когато настройвате и инсталирате устройството, спазвайте правилата за електрическа безопасност.

Защо възникват информационни повреди в EEPROM и как да се отървем от тях?
Когато използвате вътрешна или външна EEPROM, понякога има случаи на спонтанни промени в съдържанието на клетките на паметта. Това се случва главно в моментите на включване / изключване на захранващото напрежение. Може би причината е в случайния ход на изпълнение на програмата по време на преходни процеси. Между другото, този проблем е от значение и за микроконтролери от други производители, като ATMEL.
Ако захранването се изключи при достъп до EEPROM, както вътрешно (в PIC16F84 чипове), така и външно (като 24CXX и т.н.) с контролната шина I2C, тогава също има възможност за нарушаване на съхранената информация. Повреди могат да възникнат, когато импулсен шум проникне през захранващите вериги по време на работа. Мога да предложа няколко начина за повишаване на надеждността на безопасността на данните: софтуер и схеми.
По програмен начин, ако трябва да съхранявате само една или две клетки, тогава можетенапишете всяка стойност три пъти подред. При четене проверете по двойки за равенство и ако стойностите се различават, сравнете с третата и в зависимост от резултатите можете да определите в коя клетка данните са нарушени. Когато съхранявате област с данни, можете да направите следното: първо, съхранявайте две идентични области с данни (за да възстановите едната в случай на повреда във втората), и второ, с всяка промяна на данните, изчислявайте контролната сума на областта и я записвайте в отделни клетки на EEPROM. Когато четете, за да проверите целостта на информацията, трябва също да изчислите контролната сума и да сравните резултата със стойността, съхранена там. Можете да извършите такава операция по време на инициализация след веднъж включване на устройството или можете да го правите всеки път, когато четете данни.
С схемно решение могат да се добавят няколко елемента, както е показано в синьо на фигурата по-долу, за да се контролира моментът на изключване или прекъсване на захранването, за да не се чете или записва в EEPROM. По принцип решението за проектиране на схемата може да бъде всяко, направено както съгласно горната диаграма, така и с помощта на специализирани чипове за наблюдение на напрежението или по друг начин. Елементите трябва да бъдат избрани по такъв начин, че когато захранващото напрежение падне под праговото ниво, на PORTn пина на микроконтролера да се появи лог "0". И в процедурите за достъп до EEPROM, анкетирайте този изход, преди да започнете цикъла на запис или четене.

Друго възможно решение на този проблем, предложено от Жданов Михаил от Велики Новгород, почти напълно елиминира повреди. Това решение се основава на евтин чип LP2951. Сигналът за нулиране се изпраща към PIC, когато захранващото напрежение достигне 5,7 волта, както и когато е изключено (зададенодиод). Кондензаторът на VCC на PIC поддържа мощност за известно време чрез прекъсване на преходните процеси.

За надеждно нулиране на микроконтролера можете да използвате веригата на чипа Dallas DS1233 по-долу. Той надеждно следи захранването и стартира PIC микроконтролера 0,1 секунди след номиналната настройка. Така че смущенията в захранването не причиняват фалшиви нулирания на m / s, DS1233 се включва през веригата R1C1C2.

За да се намали влиянието на външни влияния, е желателно да се програмират неизползваните щифтове на микроконтролера като входове и да се свържат към захранващата или заземителната шина (това също намалява консумацията на енергия поради липсата на произволно превключване на входните клавиши на портовете). Можете също да оставите неизползваните пинове свободни, но все пак да ги програмирате като изходи. И при окабеляване на печатна платка е желателно да поставите филтриращ керамичен кондензатор с капацитет 0,01-0,1 микрофарада между захранващите проводници на микроконтролера. Обикновено тези изводи са разположени един срещу друг. Веригите на тактовия генератор (кварцов резонатор, RC верига) и веригите за нулиране на микроконтролера е най-добре да се поддържат възможно най-къси. Около печатната платка по периметъра е желателно да се проведе заземяваща шина. С тази конфигурация нито включването/изключването на няколко захранващи устройства, нито свързването на осцилоскоп ще доведе до фалшиви положителни резултати или нулиране на процесора. Има някои моменти, които трябва да се имат предвид при оформянето на печатната платка. Първо, входните сигнали трябва да се водят "към" микроконтролера, а не "през" него. Без да подавате сигнала към крака, препоръчително е да поставите малък керамичен филтърен кондензатор, така че кратък импулсен шум да отиде в земята. След това, за да ограничите тока, можете да поставите съпротивление. Второ, не е зле да оградите "земята" около микроконтролера.
Как да получа напрежение с отрицателна полярност?
Понякога се изисква напрежение с отрицателна полярност за захранване на операционни усилватели или компаратори. Можете да го получите просто като използвате един от портовете на PIC микроконтролера, като издавате непрекъсната импулсна поредица. Диаграмата е показана на фигурата по-долу:

Ето още една схема за получаване на напрежение с отрицателна полярност. По-просто е, няма индуктивност. Изходното напрежение е приблизително -3,5 волта при използване на силициеви диоди. Тази схема може да се използва там, където не се изисква стабилизирано напрежение, например за захранване на някои операционни усилватели или компаратори или за подаване на напрежение за регулиране на контраста на LCD модули. Понякога това се изисква при LCD модели, проектирани да работят при ниски температури.

Как да направите сензорен бутон в PIC устройство?
Възможно е да се замени механичен бутон в устройства на PIC микроконтролери с капацитивен сензорен бутон. Електрическа схема на снимките по-долу:

ОПЦИЯ 1: Сензорна подложка - всяка малка метална пластина (1-2 cm2). Идеята е, че когато докоснете сензора, общият капацитет се увеличава и времето за зареждане на кондензатора C1 се променя. Това се вижда от представените диаграми:

Когато програмирате, можете да направите следното: когато включите устройството, програмирайте горния изход според веригата като изход и го настройте на дневник. "0" и дъното като вход. След кратко забавяне задайте щифта, програмиран като изход, за регистриране. "1" и стартирайте таймера. Когато дневникът. На долния изход ще се появи "1", запомнете показанието на таймера. Това ще бъде константа за свободен сензор. Когато анкетата е в ходпрограма работи, за да направи същото и да сравни получената стойност със съхранената. Ако получената стойност надвишава константа, считайте, че има докосване до сензора. Регистър на разликата в закъснението за уреждане. "1" на входа между свободен сензор и натиснат е приблизително 1-2 µs.
ВАРИАНТ 2: Схемата работи по подобен начин, но вместо два порта се използва един, който превключва от изход към вход. В състояние на чакане щифтът на порта е програмиран като изход и е настроен да регистрира. "0". Кондензатор C2 е разреден. Кондензатор C1 служи за разделяне на потенциала на човешкото тяло и изходния потенциал на микроконтролера. При запитване изходът на PICA превключва на вход и се измерва времето, когато се появява дневникът. „1“ на този щифт. Времевата диаграма съответства на тази, която описва в горната диаграма (опция 1) изходния вход. След това измерената стойност се сравнява с константата, записана и измерена при инициализация (включване на устройството), както в първия случай.

Как да направите прост цифрово-аналогов преобразувател (DAC, DAC)?
Ако не се изисква висока точност на DAC, тогава можете да преминете по по-евтин начин, без използването на специализирани допълнителни микросхеми. Ето метод за 8-битов DAC, използващ резисторна матрица R-2R. Недостатъците включват факта, че за изпълнение са необходими 8 I / O порта. Грешката е 1 LSB.

Как да опростим работата с кристала за отстраняване на грешки и да удължим живота?
Има PIC (+5V) и има K561ID1 (декодер +12V). Как да съпоставим логически нива? Ще изгори ли PIC, ако се опитате да издърпате изходните линии на PIC до 12V чрез резистори?
Няма да е възможно да се изтегли, защото почти всички портове имат пълен CMOS драйвер при използване на портовекато изходи. И все пак, портовете имат защитни диоди за маса и захранване.

Някои контролери имат порт (например в PIC16F84 е RA4), направен по схемата "open drain". Може да се изтегли до 12V, но има само един такъв порт.