Лекция 2

Здесь мы перечислим несколько интересных проектов, которые можно выполнить с помощью 8-битных микроконтроллеров PIC.

Скачать файлы asm для прошивки можно здесь.

______
Asm файлы можно редактировать обычным блокнотом. А чтобы создать из asm файла hex – воспользуйтесь программой MPASMWIN, также вам понадобиться файл с расширением inc – все это для PIC12F629 находиться – здесь. Перед конвертацией в hex – создайте папку и закиньте в нее asm и inc файл.

Кухонный Таймер

Кухонный таймер – это таймер, который позволяет установить время в минутах до 63 минут. Когда время истекает, раздается звуковой сигнал. Мы используем микроконтроллер PIC16f690. Оставшееся время отображается в двоичном формате с помощью светодиодов. Есть 6 светодиодов для минут (контакты 14-19) и 5 светодиодов для секунд (контакты 2,3,5,6,7). Контакт 11 соединен с зуммером. Контакт 10 соединен с кнопкой, которая позволяет пользователю добавить минуту к таймеру.

Для секунд наиболее значимым битом является вывод 7, а для минут наиболее значимым битом является вывод 14. Второй индикатор считает до 30, а затем возвращается к нулю в двоичном формате. Таймер начинается с одной минуты, и можно нажать кнопку, чтобы добавить к таймеру еще несколько минут.

Код сборки для таймера – kitimer2.asm . Минуты отображаются в двоичном формате на выводах 19 -> 14, причем младшим значащим битом является вывод 19. Секунды отображаются на выводах 7,6,5,3,2, причем младший значащий бит равен 2. Резистор 10 Ком на выводе 10 используется в качестве “подтягивающего” резистора для кнопки. Когда кнопка нажата, вывод 10 заземляется, что приводит к “нулю”.

_________________________

Генератор Прямоугольных Волн

Генератор прямоугольных волн создает простую прямоугольную волну, и для этого проекта мы используем простейшую микросхему PIC12F629, имеющую всего 8 контактов. Код сборки для генератора прямоугольных волн – sqwave.asm. Прямоугольный выходной сигнал находится на выводе 5. Выходной сигнал на выводе 5: + 3 В в течение примерно 10 мс, 0 В в течение примерно 10 мс и т.д. Вы можете изменить синхронизацию прямоугольной волны, настроив параметры в подпрограмме delay1.
После компиляции ассемблерного кода в hex с помощью MPLAB я загружаю программу на чип с помощью pickit2 через программное обеспечение “pik2cmd”. Это можно сделать в терминале Linux, набрав
“pk2cmd -PPIC12F629 -M -F./* .hex”.

________________________

Спортивный таймер

Спортивный таймер издает “звуковые сигналы” каждую минуту, которые показывают, сколько минут прошло. Для этого проекта мы используем PIC12F629. Ассемблерный код для таймера – jogtime2.asm . Примечание: delay2 – это подпрограмма для задержки на одну минуту. Для наших чипов PIC12F629 кристалл не опережал встроенные часы ровно на 2 микросекунды, поэтому нам пришлось скорректировать наше время. Обязательно проверяйте время при программировании PIC12F629.

Каждую минуту таймер издает 6 звуковых сигналов с пьезозвуком. Каждый тон – это либо низкая нота = ноль, либо высокая нота = единица. Таким образом, пользователь услышит 6 последовательных битов. После первых двух битов наступает короткая пауза. Чтобы преобразовать 6 бит в количество минут, мы использовали модифицированную двоичную схему. Первые два бита определяют четверть часа. То есть 00 – это первая четверть, 01 – вторая четверть (или 15 минут), 10 – третья четверть (или 30 минут), а 11 – четвертая четверть (45 минут). Следующие 4 бита определяют количество минут после окончания четверти. Например, 01 1001 будет переведено в 15 + 9 = 24 минуты. Наибольшее число равно 11 1110 и равно 45 = 14 = 59 минутам. После 59-й минуты таймер снова запускает цикл с 00 0000. Когда переключатель закрыт для включения таймера, таймер подает звуковой сигнал 6 низких нот, 00 0000, что соответствует нулю минут.

___________________________

Приемник Нагрудного Ремня Polar

Я хотел сделать простой приемник для передатчика на нагрудном ремне Polar T31, который указывал бы на обнаружение сердцебиения. Для этой задачи мы используем 8-контактный разъем PIC12F629 и используем его функцию сравнения напряжения. Код сборки – hrbeat.asm, а схема показана ниже.

Ремень T31 передает сигнал с частотой 5 кГц, который длится 7 мс каждый раз, когда происходит сердцебиение (т.е. Пик R). Для приема сигнала используется катушка. Катушка подключена параллельно конденсатору к контакту 7 микросхемы. Катушка и конденсатор выбраны так, чтобы иметь резонансную частоту 5 кГц. Два резистора соединены последовательно с выводом 6 микросхемы и действуют как делитель напряжения, обеспечивая напряжение сравнения около 0,1 вольта на выводе 6. Когда напряжение на выводе 7 становится больше, чем на выводе 6, 6-й бит CMCOM становится высоким. Затем светодиод на выводе 3 горит около 10 мс.
Как и в случае с генератором прямоугольных волн, ассемблерный код компилируется в шестнадцатеричный формат с помощью MPLAB. Затем программа загружается на чип с помощью pickit2 через программное обеспечение “pik2cmd”. Это можно сделать в терминале Linux, набрав
“pk2cmd -PPIC12F629 -M -F./* .hex”.

______________________________

RR-Интервальный таймер

С помощью таймера RR-интервала можно записывать и сохранять время между ударами сердца, RR-интервал, используя нагрудный ремень polar T31. PIC16F690 запрограммирован на обнаружение сигнала от полярного пояса, как указано выше. Затем чип записывает время и отправляет данные через usb на ПК для анализа. В проекте используются три компьютерные программы: ассемблерный код для микросхемы PIC, программа nodejs для записи и сохранения данных и программа html-браузера для анализа данных. Код сборки PIC: rrinterval.asm, а схема для микросхемы

Как и прежде, катушка датчика подключена параллельно конденсатору и подключена к контакту 19. Катушка и конденсатор имеют резонансную частоту 5 кГц. Два резистора, 15 Ком и 470 Ом, подключены последовательно к контакту 18 микросхемы и действуют как делитель напряжения, обеспечивая напряжение сравнения около 0,1 вольта на выводе 18. Когда напряжение на выводе 19 становится больше, чем на выводе 18, бит C1OUT CM1COM0 становится высоким. Временная метка записывается с использованием байтов TMR0, T1, T2 и T3. Четыре временных байта передаются через usb на компьютер. Наконец, светодиод на выводе 5 загорается примерно на 10 мс.
Как и в случае с генератором прямоугольных волн, ассемблерный код компилируется в шестнадцатеричный формат с помощью MPLAB. Затем программа загружается на чип с помощью pickit2 через программное обеспечение “pik2cmd”. Это можно сделать в терминале Linux, набрав “pk2cmd -PPIC16F690 -M -F./* .hex”. Данные принимаются и записываются с помощью программы nodejs: rrheart.js. Чтобы установить и запустить программы nodejs, см. nodeprogs.html. Программа сохраняет данные RR-интервала в единицах миллисекунд в файл dataout.txt . Данные могут быть проанализированы с помощью приложения rrbasic.html.

“cpp.edu/~pbsiegel/picprogs/picprojects.html”

Добавить комментарий