Главная » Статьи » Программирование » Программирование в BascomAVR

В категории материалов: 16
Показано материалов: 1-10
Страницы: 1 2 »

Сортировать по: Дате · Названию
   Энкодер - оптоэлектронный датчик для определения отрезков траектории, частоты вращения, позиционирования и тп. Такие, например, стоят в колесиках на мышках, цифровых регуляторах громкости на усилителях и в куче других устройств с регулируемыми параметрами. Это очень удобный тип переключателей, в которых шаг изменения параметра не зависит от диапазона, как в случае с переменными резисторами и АЦП. К тому же энкодеры вращаются "бесконечно". Энкодеры делятся на два вида: механические и оптические.


   Пока решил опробовать механический энкодер. Взял я 5 контактный. 2 контакта для замыкания энкодера, то есть можно нажать как на кнопку. 2 контакта - это выходы энкодера A и B, которые переклчаются при повороте ручки:

Программирование в BascomAVR | Просмотров: 2678 | Автор: Space | Добавил: Space | Дата: 25.09.2011 | Комментарии (0)

   Я уже рассказывал в статье про RC5 как сделать управление на примере со светодиодами. Теперь рассмотри вариант управления моторами. Разницы в программе почти нет, лишь не много дополним её командами, которые будет выполнять робот по нажатию определённой клавише на пульте.


Для сборки такого робота нам понадобится:
Драйвер двигателей - я использовал этот (используем режим A, меняется с помощью перемычки)
Контроллер
TSOP1736
Пульт Rc5

Программирование в BascomAVR | Просмотров: 2041 | Автор: Space | Добавил: Space | Дата: 28.06.2011 | Комментарии (0)

   В некоторых микроконтроллерных проектах в качестве дополнительной функции можно сделать дистанционное управление прибором. В качестве протокола часто используется довольно распространенный (но далеко не единственный) протокол RC5, так как по нему в Интернете можно найти очень много разнообразной информации.
   В рассматриваемом примере в качестве приемника используется TSOP 17xx. Последние две цифры 'x' указывают на частоту принимаемого сигнала в кГц. В данном примере использован TSOP 1736 (536АА3Р). В принципе, с его помощью можно декодировать и сигнал другой частоты, например, 38 кГц, однако, при этом существенно снижаются дальность и помехоустойчивость приема. TSOP 1736 содержит демодулятор, который выделяет из несущей частоты полезный сигнал и производит его предварительное усиление. Затем этот сигнал может быть непосредственно обработан.
Программирование в BascomAVR | Просмотров: 2325 | Автор: Space | Добавил: Space | Дата: 22.04.2011 | Комментарии (0)

 Совсем не давно выложил статью "Часы реального времени DS1307". Эта статья можно сказать продолжение. В принципе рассказывать здесь особо не чего. По микросхеме Ds1307, краткую информацию выложил в статье упомянутой выше. К фоткам сделаю комментарии. Так же упомяну о возможных проблемах. И так поехали.

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


 Средний, зелёный провод нам не нужен. P. S. наличие микросхемы 24LCxxx не обязательно. Чтобы собрать часы на отдельной плате можно использовать пример схемы ниже. Мк на схеме atmega16. Естественно добавить ещё обвязки для мк+дисплей и клавиши.
Программирование в BascomAVR | Просмотров: 3018 | Автор: Space | Добавил: Space | Дата: 19.04.2011 | Комментарии (0)

EPROM - встроенная энергонезависимая память (Flash-память) микроконтроллера. EEPROM обычно используется для хранения данных, которые редко изменяются. Вы можете использовать его для хранения калибровочных данных, которые используются при расчетах. EEPROM не стоит использовать в качестве оперативной памяти из-за небольшого лимита циклов перезаписи (читаем даташит!). Читать и записывать данные в EEPROM можно с помощью соответствующих команд Readeeprom и Writeeeprom. 

   Приведу пример использование лишь не которых команд. На мой взгляд самые простые. 
Code
Dim A As Byte
Dim Aa Eram As Byte

A=Aa

writeeeprom A, Aa 'сохраняем переменную A в энергонезависимую память мк Aa
readeeprom A, Aa 'считываем  переменную A из энергонезависимой памяти мк A

Здесь переменная Aa объявлена как переменная типа byte в ERAM (EEPROM). В принципе, это не настоящая переменная. Все, что мы можем сделать:

Code
A = Aa

присваиваем значение Aa из EEPROM переменной A.

Code
Aa = A

помещаем значение переменной A в EEPROM, в область, зарезервированную под хранение значения Aa.
Вы не можете сделать, например, так:

Программирование в BascomAVR | Просмотров: 1542 | Автор: Space | Добавил: Space | Дата: 17.04.2011 | Комментарии (0)

   DS18B20 - Калиброванный цифровой термометр с однопроводным 1-Wire-интерфейсом и перестраиваемой разрядностью преобразования. Диапазон измеряемых температур от -55°C до +125°C. Считываемый с микросхемы цифровой код является результатом непосредственного прямого измерения температуры и не нуждается в дополнительных преобразованиях. Программируемая пользователем разрешающая способность встроенного АЦП может быть изменена в диапазоне от 9 до 12 разрядов выходного кода. Абсолютная погрешность преобразования меньше 0,5°C в диапазоне контролируемых температур -10°C до +85°C. Максимальное время полного 12-ти разрядного преобразования ~750 мс. Энергонезависимая память температурных уставок микросхемы обеспечивает запись произвольных значений верхнего и нижнего контрольных порогов. Кроме того, термометр содержит встроенный логический механизм приоритетной сигнализации в 1-Wire-линию о факте выхода контролируемой им температуры за один из выбранных порогов. Узел 1-Wire-интерфейса компонента организован таким образом, что существует теоретическая возможность адресации неограниченного количества подобных устройств на одной 1-Wire-линии. Термометр имеет индивидуальный 64-разрядный регистрационный номер (групповой код 028Н) и обеспечивает возможность работы без внешнего источника энергии, только за счет паразитного питания 1-Wire-линии. Питание микросхемы через отдельный внешний вывод производится напряжением от 3,0 В до 5,5 В. Термометр размещается в транзисторном корпусе TO-92, или в 8-контактном корпусе SO для поверхностного монтажа (DS18B20Z), или 8-контактном корпусе микро-SOP для поверхностного монтажа (DS18B20U). 
   Выпускается специальная модификация цифрового термометра, предназначенная только для работы в режиме паразитного питания DS18B20-PAR. Она размещается в транзисторном корпусе TO-92, один из выводов которого не используется.

Программирование в BascomAVR | Просмотров: 3545 | Автор: Space | Добавил: Space | Дата: 16.04.2011 | Комментарии (1)

   И так мы добрались до последней темы нашего курса по BascomAVR. И посвящена она сборки робота, который объезжает препятствия за счёт шарпа(ик-датчик). Для большего удобства программу разделил на три файла. Основной это "Bot" его и нужно будет компилировать. Остальные 2 файла для настройки портов и меток на которые будет переходи программа при необходимости. Впрочем объяснять здесь особо не чего. Использовался наш контроллер вместе с модулем, питание двигателей лучше подвести отдельно. для это есть перемычка на модуле. В механике использовался двухмоторный редуктор и гусеницы TAMIYA.

Программирование в BascomAVR | Просмотров: 2852 | Автор: Кирилл | Добавил: Space | Дата: 05.03.2011 | Комментарии (0)

   На нашем контроллере есть микросхема L293D, вот её та мы сейчас и задействуем. Подключим один мотор к ней на выводы M1. In1 на PD2, In2 на PD3 и En1 на PD4. При таком подключение мы сможем управлять скоростью моторов, если это не требуется, то вывод En1 нужно подключить на +5 вольт. Пишем программу:

Code
$regfile = "m16def.dat"                                     ' файл спецификации Меги16
$crystal = 16000000                                         ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pind.2 = Output : R Alias Portd.2                    'ногу сконфигурировали как выход и обозвали R
Config Pind.3 = Output : L Alias Portd.3                    'ногу сконфигурировали как выход и обозвали L
Config Pind.4 = Output                                      'ногу ШИМа  сконфигурировали как выход
'----------------------------------------------------------------------------
Dim Speed As Byte

Speed = 80                                                  ' задаём скорость мотору

Do
  R = 1 : Pwm1b = Speed                                     'вращаем в одну сторону 3 секунды
  Wait 3

  R = 0 : Pwm1b = 0                                         'остановка мотора на 3 секунды
  L = 0 : Pwm1b = 0
  Wait 3

  L = 1 : Pwm1b = Speed                                     'вращаем в другую сторону 3 секунды
  Wait 3

  R = 0 : Pwm1b = 0                                         'остановка мотора на 3 секунды
  L = 0 : Pwm1b = 0
  Wait 3
Loop
Программирование в BascomAVR | Просмотров: 2016 | Автор: Кирилл | Добавил: Space | Дата: 31.01.2011 | Комментарии (0)


Для управления сервой воспользуемся циклом For. Сервопривод возьмём HXT12K. Подключаем на PD0. Лучше всего использовать отдельное питание для сервопривод. чтоб избежать помех. Подключаем питание на Jmp1, и переставляем перемычку рядом.

   Характеристика к сервоприводу:
  • Размер : 40.7x19.7x42.9 мм
  • Напряжение : 5~7в
  • Вес: 55г (паспорт), 63г по факту
  • Скорость вращения : 0.16 сек/60° (4.8в)
  • Усилие : 10 кгс*см
  • Рабочий ход: ~ +\- 60-65°
  • Тип : Цифровой
  • Модификация под постоянное вращение: Возможна!


   Основой управления конструкцией FOR...NEXT служит изменение указанной переменной от начального до конечного значения.
Синтаксис конструкции:
Программирование в BascomAVR | Просмотров: 2263 | Автор: Кирилл | Добавил: Space | Дата: 31.01.2011 | Комментарии (4)

Чтобы подключить данный дальномер. нам потребуется ацп. Как с ним работать я уже рассказывал в статье "Тестируем АЦП на контроллере". Поэтому заострять внимания на ацп не будем. Лучше расскажу о дальномерах. Дальномеры предоставляют данные о расстояние(определение расстояния до объекта) или могут использоваться как датчик для определения препятствия. Коротенько о их работе:

   Для определения расстояния либо просто наличия объекта в поле зрения сенсора используется метод триангуляции и малая линейная CCD матрица. Основная идея в следующем. Импульсы ИК излучения испускаются излучателем. Это излучение распространяется и отражается от обьектов находящихся в поле зрения сенсора. Отраженное излучение возвращается на приемник. Испускаемый и отраженный лучи образуют треугольник «излучатель — обьект отражения — приемник». Угол отражения напрямую зависит от расстояния до обьекта. Полученные отраженные импульсы собираются высококачественной линзой и передаются на линейную CCD матрицу. По засветке определенного участка CCD матрицы определяется угол отражения и высчитывается растояние до обьекта. Этот метод более защищен от эффектов интерференции излучения и разной отражающей способности поверхностей, выполненных из различных материалов и окрашенных в различные цвета. Например, стало возможно определение черной стены при ярком освещении. Если надо будет узнать о дальномерах более подробно, то поищите по интернету.

Программирование в BascomAVR | Просмотров: 2267 | Автор: Кирилл | Добавил: Space | Дата: 30.01.2011 | Комментарии (0)

1-10 11-16