
- •Предисловие
- •Часть 1. Электроника для начинающих
- •Глава 1. Что на плате электронного устройства?
- •Резистор
- •Конденсатор и индуктивность
- •Диод и транзистор
- •Глава 2. Программы и схемы
- •PSIM в Linux
- •Qucs в Linux
- •Операционный усилитель
- •Цифровая микросхема
- •Глава 3. Путешествие по плате с осциллографом
- •Что такое осциллограф?
- •Что такое сигнал?
- •Что я увидел на плате с помощью осциллографа?
- •Глава 4. Электричество и магнетизм
- •Глава 5. Сигналы или переменный ток на практике
- •Разные законы изменения переменного тока
- •Генерация сигналов
- •Использование сигналов
- •Глава 6. С чего начать свой первый проект?
- •Усилитель мощности
- •Светофор
- •Блок питания
- •Глава 7. Усилитель
- •Включение транзистора с общей базой
- •Включение транзистора с общим коллектором
- •Включение транзистора с общим эмиттером
- •Определение зависимости тока базы от напряжения
- •Частотные характеристики усилителя
- •Стоп, стоп, стоп!
- •Глава 8. Бабахать или нет – вот в чем вопрос
- •Разговоры, разговоры
- •Проект «Громкоговоритель»
- •Глава 9. Теплоотвод
- •Разные режимы работы оконечных каскадов
- •Тепло. Что с ним делать?
- •Глава 10. Сигналы, немного больше
- •Прямоугольные импульсы
- •Получение импульсов некоторых видов из простых сигналов
- •Немного о сигналах и линиях
- •Больше об амплитудной модуляции
- •Другие преобразования напряжений
- •Глава 11. Немного больше об усилителях
- •Усилители в радиоприемнике
- •Предварительный усилитель НЧ
- •Снижение шумов и автоматическая регулировка
- •Глава 12. Автоматика, и зачем она нужна
- •Обогреватель-автомат или простые устройства автоматики
- •Автоматическая нянька для рассеянных
- •Глава 13. Один интересный преобразователь
- •Преобразователи постоянного напряжения в переменное
- •Разные типы современных преобразователей
- •Проблемы симуляции электрических схем
- •Глава 14. Как считает домашний компьютер
- •Пример расчета максимальной выходной мощности
- •Пример расчета схемы стабилизатора
- •Примеры соотношений в транзисторных схемах
- •Программы для более сложных расчетов
- •Глава 15. Микропроцессор и программирование
- •Галопом по европам
- •Как организована работа процессора
- •Что такое программа?
- •Глава 16. Микроконтроллеры
- •Что нужно для работы с микроконтроллером?
- •Завершение проекта «Светофор»
- •Некоторые особенности работы с программатором
- •Завершение проекта «Автомат для рассеянных»
- •Завершение проекта «Электроника для начинающих»
- •Глава 17. Измерения в электрических цепях
- •Схема коммутатора к осциллографу
- •Схема приставки к мультиметру для измерения L и C
- •Схема регулировки яркости светильника
- •Глава 18. Организация собственной разработки
- •Часть 2. Игра в программирование
- •Глава 1. Поиск печки, от которой танцевать
- •Два берега
- •Первое знакомство с Gambas
- •Компьютер может помочь с программированием
- •Почему Емеля ездил на печи?
- •А можно с этого места поподробнее?
- •Первый блин
- •Глава 2. Бряцая железом
- •Хорошее начало
- •Возвращение
- •Отладка в gpsim
- •Глава 3. У камелька
- •Начало проекта «Машинистка»
- •Развиваем успех
- •Заметки и пометки «на память»
- •Глава 4. Охота на кентавра
- •Засада в интерфейсе
- •Железное решение
- •Лирическое отступление
- •Грустное завершение рассказа о счетчике
- •Глава 5. Сказка о неудачливом радиолюбителе
- •Возвращение на круги своея
- •Расширение кругов (на воде?)
- •gpsim как зерцало грешника
- •Вялая попытка оправдаться
- •И оргвыводы
- •Глава 6. Сказка о ловком программисте
- •Предварительное рассмотрение проекта «Генератор»
- •Продолжение работы над проектом «Генератор»
- •Завершение
- •Конспекты
- •Gambas дружелюбен к пишущим на VB, но используя Linux
- •Разработка приложений в Gambas
- •Часть 3. Proteus в любительской практике
- •Что такое интегрирующая и дифференцирующая цепь?
- •Почему не выпрямляет диод?
- •Как работает транзистор?
- •Микроконтроллеры и Proteus
- •Как работать с линиями?
- •Помогите найти схему внешнего генератора импульсов 4-8 MHZ (например на 555ЛН1).
- •Собрал одно, собрал другое — не работает. Что делать?
- •Почему я работаю с AVR?
В.Н. Гололобов |
Экскурсия по электронике |
546 |
Микроконтроллеры и Proteus
На одном из форумов я встретил сообщение о разочаровании в Pic-контроллерах, человек, отправивший это сообщение, решил перейти на AVR-контроллеры.
Не знаю, что вызвало его разочарование, но сама постановка вопроса мне не кажется правильной. Попробую пояснить, что я имею ввиду.
Как любой компонент электронной схемы: транзистор, резистор, индуктивность и т.д., — микроконтроллер выбирается на соответствующем этапе разработки устройства. При выборе учитываются многие факторы, порой выбор зависят от храктера предприятия, осуществляющего проект. Один из факторов при выборе конкретного типа — это выполнение задачи данным элементом. Если он выполняет свою задачу, не выходит ни по стоимости, ни по габаритам за пределы заданных параметров, то выбор между PIC и AVR контроллером может определяться только тем, что специалисты предприятия имеют большой опыт работы с одним типом и малый с другим, что совсем не характерно даже для предприятия среднего размера. Или выбор может быть обусловлен возможностями постоянного поставщика элементной базы. Но в любом случае невозможно говорить о разочаровании. Другое дело, если предприятие-изготовитель микроконтроллера рекламировало его, делая упор на свойствах, которых не обнаруживается в готовом изделии. Здесь вполне уместно говорить о разочаровании.
Вместе с тем, вопрос о микроконтроллерах дает возможность поговорить о тех свойствах программы Proteus, которые лично меня очаровывают, я не побоюсь этого слова.
Я пока оставлю вопрос о возможности полной разработки электронной схемы, базирующейся на микроконтроллере, включая написание и отладку программы на ассемблере или языке высокого уровня для микроконтроллера, с тем, чтобы вернуться к нему позже. Но даже если для создания программы использовать, положим, MPLAB или Piklab для Pic-контроллера, программа ISIS, составная часть Proteus, позволяет проверить работу не только контроллера, но всего устройства. Для начала очень простой пример. В программе KTechlab я некогда приводил пример создания работающей программы для игрушечного светофора. Нет сомнений, что не составляет особого труда проверить работу этой программы в средствах отладки той программы, в которой код получен, но меня очень порадовало, что в Proteus есть такой элемент, как симулятор светофора. Достаточно выбрать в компонентах микроконтроллер PIC16F628A, для которого создавалась программа светофора, найти в разделе Miscellaneous библиотеки компонентов элемент TRAFFIC LIGHTS, чтобы после добавления hex-файла программы с помощью диалогового окна свойств микроконтроллера (щелчок правой клавишей мышки и выбор Edit Properties из выпадающего меню), где файл добавляется обычным образом через проводник, если воспользоваться кнопкой с иконкой папки в наборе для Programm File:, и соединения выводов запустить симуляцию и увидеть воочию работу светофора.
И не то, чтобы это было целью, не то, чтобы я хотел показать безграничные возможности среды разработки Proteus, но легче оценить работу программы при полной симуляции работы устройства, и приятно, что разработчики среды проектирования учитывают нужды даже потребителей простых решений.

В.Н. Гололобов |
Экскурсия по электронике |
547 |
Рис. 4.1. Симуляция работы устройства с микроконтроллером
Чтобы показать, что возможности проверки в Proteus позволяют быть применены к более сложным решениям, я использую другую программу, созданную ранее для PIC16F628A. Несколько предварительных слов о программе и схеме.
Схема на рисунке ниже и программа для микроконтроллера предназначались для демонстрации начинающим любителям электроники, что они могут не только повторять готовые простые электрические схемы, но и подступиться к разработке более сложных устройств. Устройств, которые можно реализовать в виде готового изделия, чтобы порадовать младшего брата или сестру в качестве забавной игрушки, или могут быть использованы для автоматизации каких-то домашних процессов. Само устройство, к проверке которого в Proteus я перехожу, это релейный модуль. Он должен получать команды извне по интерфейсу RS485 в виде строк R00$0N от компьютера или центрального управляющего устройства, по которым включать (или выключать) соответствующее реле. Последнее, если выбрать реле с контактами, способными коммутировать, например, обычную лампу для освещения, будет включать или выключать свет. Команда вида R00$0S запрашивает состояние соответствующего реле, на которое контроллер отвечает R00#0N, если реле включено, или R00#0F, если выключено. Для упрощения рисунка я не добавлял микросхему интерфейса RS485, но это мало влияет на конечный результат. Схема изображена с двумя реле, лампы на схеме, опять-таки для упрощения схемы, 12-вольтовые и подключены к тому же источнику питания, что и реле. В качестве источника команд использован терминал программы Proteus, а сигналы команд в линии отображаются на экране осциллографа.
Более подробное (может быть, излишне подробное) описание модулей есть в моей книге «Умный дом своими руками», и здесь я опущу все детали, включая программу, но результат эксперимента в программе Proteus приведу. Мне нравится то, как Proteus справляется с

В.Н. Гололобов |
Экскурсия по электронике |
548 |
задачей.
Рис. 4.2. Эмуляция работы релейного модуля на PIC16F628A
Как видно на рисунке лампа послушно включается и выключается командами терминала системы проектирования Proteus.
Ядопускаю, что профессионалов может что-то не устраивать в работе программы. Возможно, никакая программа не может быть столь универсальна, чтобы удовлетворить всем потребностям всех профессионалов, но мне она очень нравится, и я пока не придумал, что бы такого она не могла сделать. Более того, ранее мой знакомый, занимавшийся конвертером Чука, сообщил мне, что симуляция этого конвертера в программе Qucs не проходит. Собственно, уж не знаю правильно ли в количественном плане, но в качественном и в программе Qucs симуляция проходит, но без применения источника переменного напряжения
ивыпрямителя. Профессионалы, работающие с силовой электроникой, справедливо предпочитают такие программы, как PSIM и SwCADIII, специализирующиеся на этих задачах, но меня заинтересовало, пройдет ли симуляция в Proteus.
Явновь не готов утверждать, что графика в точности соответствует реальной работе устройства, для этого мне понадобилось бы потратить некоторое время на чтение документации по этому вопросу, что не отвечает моим намерениям, но симуляция этой схемы проходит, а результаты очень похожи на те, что получены в других программах.

В.Н. Гололобов |
Экскурсия по электронике |
549 |
Рис. 4.3. Симуляция работы конвертера Чука в программе Proteus
Столь обширная область применения Proteus, по моему мнению, должна в полной мере удовлетворять запросам любителей. Профессионалы, я думаю, с удовольствием будут использовать программу там, где она их устраивает, и искать другие решения, там где они хотели бы большего, в частности создавая свои версии САПР. Но для этого должны быть серьезные причины.
Однако вернемся к микроконтроллерам. В поставку системы Proteus входит множество примеров и, в частности, программа для микроконтроллера PIC16F84. Следуя руководству пользователя, находим раздел SAMPLES, затем Tutorials. В нем готовый проект Traffic.DSN и исходный текст на ассемблере TL.ASM:
LIST |
p=16F84 ; PIC16F844 is the target processor |
#include "P16F84.INC" ; Include header file CBLOCK 0x10 ; Temporary storage
state l1,l2 ENDC
|
org |
0 |
; Start up vector. |
|
goto |
setports |
; Go to start up code. |
halt |
org |
4 |
; Interrupt vector. |
goto |
halt |
; Sit in endless loop and do nothing. |
|
setports |
clrw |
PORTA |
; Zero in to W. |
|
movwf |
; Ensure PORTA is zero before we enable it. |
|
|
movwf |
PORTB |
; Ensure PORTB is zero before we enable it. |
В.Н. Гололобов |
|
|
Экскурсия по электронике |
|
550 |
||
|
bsf |
STATUS,RP0 |
; Select Bank 1 |
|
|
||
|
clrw |
TRISB |
; Mask for all bits as outputs. |
|
|||
|
movwf |
; Set TRISB register. |
|
|
|||
|
bcf |
STATUS,RP0 |
; Reselect Bank 0. |
|
|
||
initialise |
clrw |
state |
; Initial state. |
|
|
||
|
movwf |
; Set it. |
|
|
|||
loop |
call |
getmask |
; Convert state to bitmask. |
|
|||
|
movwf |
PORTB |
; Write it to port. |
|
|
||
|
incf |
state,W |
; Increment state in to W. |
|
|||
|
andlw |
0x04 |
; Wrap it around. |
|
|
||
|
movwf |
state |
; Put it back in to memory. |
|
|||
|
call |
wait |
; Wait :-) |
|
|
||
|
goto |
loop |
; And loop :-) |
|
|
||
state. |
; |
Function to return bitmask for output port for |
current |
||||
; |
The top nibble contains the bits for one set of lights and |
||||||
the |
|||||||
; |
lower nibble the bits for the other set. Bit 1 is red, 2 is |
||||||
amber |
|||||||
; and bit three is green. Bit four is not used. |
|
||||||
getmask |
|
||||||
movf |
state,W |
; Get state in to W. |
|
|
|||
|
addwf |
PCL,F |
; Add offset in W to PCL to calc. goto. |
||||
|
retlw |
0x41 |
; state==0 is Green and Red. |
|
|||
|
retlw |
0x23 |
; state==1 is Amber and Red/Amber |
||||
|
retlw |
0x14 |
; state==3 is Red |
and Green |
|
||
|
retlw |
0x32 |
; state==4 is Red/Amber and Amber. |
||||
wait |
; Function using two loops to achieve a delay. |
|
|||||
movlw |
5 |
|
|
|
|||
|
movwf |
l1 |
|
|
|
||
w1 |
call |
wait2 |
|
|
|
||
|
decfsz |
l1 |
|
|
|
||
|
goto |
w1 |
|
|
|
||
|
return |
|
|
|
|
||
wait2 |
clrf |
l2 |
|
|
|
||
w2 |
decfsz |
l2 |
|
|
|
||
|
goto |
w2 |
|
|
|
||
|
return |
|
|
|
|
||
|
END |
|
|
|
|
Далее, следуя инструкции, выберем исходный файл (если это уже не сделано в проекте): раздел основного меню Source пункт Add/Remove Source Files, где в окне диалога можно выбрать и исходный файл, и нужный компилятор.

В.Н. Гололобов |
Экскурсия по электронике |
551 |
Рис. 4.4. Диалоговое окно выбора исходного файла и компилятора
И завершает подготовку добавление hex-файла к схеме через выпадающее меню и раздел редактирования свойств компонента, где можно указать файл TL.HEX.
Программа содержит преднамеренную ошибку, о чем есть предупреждение в руководстве:
There is, in fact, a deliberate mistake in the above code...
Кроме того, руководство сообщает, что hex-файл получен с помощью MPASM, и в случае использования другого компилятора, вам следует:
Note that If you are planning to use a new assembler or compiler for the first time, you will need to register it using the Define Code Generation Tools command.
Заметьте, что если вы намерены использовать новый ассемблер или компилятор, вначале вам нужно зарегистрировать его, используя команду Define Code Generation Tools.
Запуск симуляции клавишей Play приводит к тому, о чем сообщает руководство, зажигаются два огня светофоров и ничего больше не происходит — работает преднамеренная ошибка.

В.Н. Гололобов |
Экскурсия по электронике |
552 |
Рис. 4.5. Пример для отлаживания программы из набора Proteus
Последуем далее за руководством. Для отладки рекомендуется нажать Ctrl+F12 или выбрать соответствующий пункт в разделе основного меню Debug. В этом же разделе после того, как откроется окно с кодом ассемблера можно открыть другие окна отладки: окно состояния регистров, наблюдения и т.д. Откроем рекомендуемые руководством окна наблюдения.

В.Н. Гололобов |
Экскурсия по электронике |
553 |
Рис. 4.6. Окна наблюдения за состоянием микроконтроллера при отладке
В окне с исходным кодом можно задать или снять точку останова, используя клавишу F9 или выбирая эту команду из выпадающего меню, получаемого после выделения левой клавишей мышки нужной строки, по которой следует щелкнуть правой клавишей мышки. Руководство рекомендует выбрать строку 000E, где начинается цикл (отмеченный в ассемблерном коде loop). После задания точки останова клавишей F12 запускается симуляция, доходящая до точки останова, что можно видеть в строке состояния, где показано, что остановка симуляции по точке останова произошла при состоянии счетчика контроллера 000E, что соответствует заказанной строке для остановки. Клавиша F11 или соответствующий пункт в меню Debug позволяют сделать шаг внутрь цикла, красная стрелка, отмечающая перемещения в окне исходного кода, переместится соответственно ниже. При этом, если посмотреть на регистр w в окне отображения состояния регистров контроллера, то можно увидеть, что регистр очистился, что соответствует выполнению команды clrw.
Далее программа должна перенести содержимое регистра w в PORT A, то есть, очистить порт А. Продолжая выполнение инструкций можно в этом убедиться. Кроме использования основного меню и горячих клавиш для пошаговой отладки можно использовать инструментальное меню окна исходного кода. В окно наблюдения, используя выпадающее меню, можно добавить наблюдение за определенным адресом или именованной переменной, выбирая формат отображения. Как описывается далее в руководстве, предопределенная ошибка находится по адресу 0011, где операция andlw записана в виде 0x4 вместо 0x3.
Система имеет встроенный текстовый редактор, открывающийся после двойного щелчка по имени ассемблерного файла в пункте основного меню Source. В Linux это не получается, появляющийся редактор исчезает немного «помучившись». Но текст ассемблера можно

В.Н. Гололобов |
Экскурсия по электронике |
554 |
открыть любым другим редактором, тем более, что после исправления его предстоит транслировать с помощью, я полагаю, MPASMWIN. Возможно, встроенный редактор позволяет сделать это без выхода из Proteus, но невелик труд использовать и внешние средства. Правда, пакет MPASM, входящий в поставку системы, который можно найти в папке Tools, приходится перенести на диск С:. Без этой процедуры появляется ошибка при трансляции, но, тем не менее, ошибка исправлена, текст оттранслирован. Теперь в программе Proteus можно заменить hex-файл новым и запустить программу на исполнение.
Рис. 4.7. Выполнение демонстрационной программы после исправления ошибки
Программа работает, огни светофора последовательно переключаются. При необходимости в отладочных операциях, а иногда такая необходимость возникает, можно использовать для наблюдения сигналов осциллограф или графические средства отображения сигналов после расстановки пробников напряжения в нужные точки, например, на выводы микроконтроллера. При выборе типа отображения графика для демонстрационной программы естественно применить DIGITAL. Дальнейшая работа с графиком проводится обычным образом: рисуется окно графики, добавляются трассы наблюдения и запускается симуляция графика. Для удобства наблюдения сигналов в свойствах микроконтроллера можно изменить частоту с 10 кГц на 1 МГц.

В.Н. Гололобов |
Экскурсия по электронике |
555 |
Рис. 4.8. Наблюдение сигналов на выводах контроллера с помощью осциллографа
Словом, среда разработки Proteus предлагает все удобные средства для разработки устройств, использующих микроконтроллеры, включая средства отладки программы. В простых случаях, как в демонстрационной программе, преимущества Proteus не столь очевидны, но если вы используете достаточно много дополнительных элементов, возможность увидеть не только сигналы на выводах микроконтроллера, но и их «дальнейшую судьбу», невозможно переоценить.
Остается добавить, что я использовал систему Proteus в Linux под эмулятором Wine, который изначально предназначался для Windows игр. Система разработки достаточно сложна, она никак не задумывалась для запуска в Linux, в Windows ее работа значительно удобнее, например, в плане исправления ошибок в тексте во внутреннем редакторе — достаточно исправить ошибку, запустить команду Build All в разделе Source, чтобы получить все необходимые для дальнейшей работы файлы.
Использование Proteus в Linux, готов согласиться, чистейшей воды спекуляция. Но даже то, что удалось попробовать, а в этом я убедился собственноручно, вполне достаточно для любительской практики. Мне кажется, если купить Proteus, то будет смысл «повозиться» с тем, что не работает в Linux, возможно, оно заработает. Например, не слишком утруждая себя можно заменить встроенный редактор на внешний, в качестве которого подойдет notepad, блокнот Windows. Достаточно в разделе Source основного меню зайти в диалог настройки с помощью пункта Set External Text Editor..., где указать блокнот в качестве внешнего редактора и теперь можно открыть ассемблерный текст для правки в блокноте. Или, не

В.Н. Гололобов |
Экскурсия по электронике |
556 |
проходит трансляция исходного текста, значит можно использовать MPASMWIN и MPASDDX из перенесенной в корневой каталог диска C:\ папки MPASM. Эти изменения производятся в диалоговом окне настроек через раздел Source основного меню, где есть пункт Define Cod Generation Tools... Диалоговое окно после внесенных изменений может выглядеть следующим образом:
Рис. 4.9. Диалоговое окно настроек компилятора ассемблера
Кроме этих изменений лучше, хотя это может получаться только у меня, но лучше перенести файл проекта и все файлы исходного текста в свою папку, например, /home/vladimir/asm.
Теперь можно открыть и поправить текст, сохранить его, оттранслировать его, включить файл ассемблерного текста для отладки и загрузить после компиляции (Build All) hex-файл в микроконтроллер. Работает отладка, работает контроллер. Остались проблемы с окном наблюдения, оно отказывается работать, но это не самое ужасное.
Повторюсь еще раз, все это чистейшей воды спекуляции, но кто сказал, что этого нельзя делать, если программа работает, а меня больше устраивает работать с ней в Linux? Будут серьезные проблемы, последуют «оргвыводы», не возникнет серьезных проблем, отчего бы нет? Главным остается то, что система проектирования Proteus имеет все необходимые средства работы и микроконтроллерами!