Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Первые шаги с AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2
namelos
Всем доброе время суток. Есть идея разработать девайс на базе контроллера AVR, который снимает данные 8 (и более) температурных датчиков. Программировать умею, но с контроллерами еще дело не имел. С чего начать? Стоит ли покупать Starter-Kit AVR STK 500 для лучшего понятия? Что надо покупать для начала?
С выбором контроллера еще не опредилился. Может что подскажете. 3aранее спасибо.
Tcom
Всё зависит от того, насколько интенсивно хочешь заниматься этим ремеслом. Если раз что-то сделать, ((( , достаточно LPT программатора.
Если серьёзно то можно AVRISP, JTAGICE или подобное обязательно (экономит уйму времени), а так макет на макете схема собранная и вперёд на родину..
И среда разработки ПО дл МК какая нить, я бы для новичка посоветовал AVRStudio и ассемблер.
Ассемблер даёт самое приближённое понимание структуры МК AVR.
muravei
Я бы посоветовал обратиь внимание на h__p://algrom.net/russian.html - тот же ассемблер, но очень приятный, и (имхо) лучший симулятор.
namelos
Спасибо. Посмотрел AVR ISP. Я в принципе могу и через AVR STK 500 программировать контроллер, или всё-таки AVR ISP еще надо будет? JTAGICE дороговат.
Tcom
Цитата(namelos @ Jul 3 2007, 16:37) *
JTAGICE дороговат.

Согласен, в сети есть много схем анологов этого чюдо-устройсва....
GDI
Порекомендую в который раз КИТ AVR Butterfly, дешево и сердито, есть бутлоадер, т.е. на первых порах даже программатор не нужен, хотя желателен. Только макетного поля нету там, а если датчики температуры ставить ds18b20, то макетка и не понадобится. АСМ конечно хорошо бы знать, но имхо - это не панацея, лучше Си, а АСМ по ходу...если понадобиться... Для начинающих очень хорош CodeVision AVR, очень хороший там мастер создания проекта, но в дальнейшем лучше перейти на IAR или gcc(winavr), AVR Studio - однозначно must have в любом случае.
defunct
Цитата(namelos @ Jul 3 2007, 16:37) *
Я в принципе могу и через AVR STK 500 программировать контроллер, или всё-таки AVR ISP еще надо будет? JTAGICE дороговат.

Берите под акцию AVR-Dragon + STK500 за $50.
mdmitry
Посмотрите акцию Atmel на www.efo.ru. Там два варианта за приемлемые деньги.
ZoonMan
Я бы вам посоветовал Altera Byte Blaster. Это недорого и доступно.
Почитать можно здесь:
http://www.ln.com.ua/~real/avreal/adapters.html
pokos
Ну, я начинал с "пяти проводочков" и avrasm. Потом CodeVision - очень начинающему жизнь упрощает.
Теперь мне хватает AVRISP, IAR, ну, и конечно, AVR Studio, куда ж без неё.
А можно и Proteus, правда, я не пользовал.
day177
согласен с pokos - CodeVision сильно жизнь облегчает smile.gif

STK конечно круто, но дорого и не всегда надо, тем паче новичку. По моему проще спаять макет и отлаживать на реальном железе, а не в симуляторах (хотя симуляторы тоже жезнь сильно облегчают)

А вот по девайсу - снимать температуру, а выводить результат куда?
namelos
Цитата(day177 @ Jul 4 2007, 16:45) *
А вот по девайсу - снимать температуру, а выводить результат куда?

На дисплей и парочку реле для подлкючения сигнализации. Проблема в том что количество сенсоров будет меняться от 6 до 12. Вот и думаю или мультиплексер использовать, или мк взять что-нибудь вроде ATmega640. Может кто подскажет? Буду оченъ благодарен.

Спасибо всем за советы.
Думаю купить STK500+Dragon за 50$. Или все-таки на STK500+JTAGICE mkII разоритъся?smile.gif Самому паять нет времени.
vesago
По 1 варе на одном проводе можно посадить сенсоров в количестве отличном от одного.
namelos
Цитата(vesago @ Jul 4 2007, 18:17) *
По 1 варе на одном проводе можно посадить сенсоров в количестве отличном от одного.

sorry, Что-то я ничего не понял...smile.gif

По учебникам надо бы использовать мулътиплексер, sample-hold и АЦП... В принципе могу взять МК с АЦП.
Сергей Борщ
Цитата(namelos @ Jul 4 2007, 17:27) *
sorry, Что-то я ничего не понял...smile.gif
Ключевое слово DS18B20. Если вас устраивает точность 2 градуса, то получаете термометр в трехногом корпусе с цифровым выходом. Разумное количество таких термометров вешаются параллельно и для их опроса достаточно одного вывода МК. Примеры кода ищите в ветке "Исходники программ и библиотек". Можно еще посмотреть серию TMP от Analog Devices, там интерфейс не 1-wire и (если мне не изменяет память) были экземпляры с лучшей точностью.
AndryG
Ну добавлю и я сюда свои мысли.

Если стоит одна задача - нафиг не нужны STK* и т.д.
Если устройство единичное (или несколько) ... дабы не ломать мозги - берете MEGA8/MEGA16 - для Вашей задачи хватит за глаза ... и индикатор прицепить и кнопки и датчики и к компу RS232 присобачить ... и памяти хватит с головой.
Это железная часть.
Качаем Proteus (на kazus.ru), лечим его, ... для отладки такого устройства его вполне хватит - можно ничего не паявши полностью написать и отладить программку.
На чем писать? На С... оно Вам надо для одного устройства колупать систему коман, архитектуру и т.д.
Компилятор можете взять CVAVR - в нем и библиотеки для Вашего железа есть. (хорош он, правда, только для начала - потом его тупость начинает заедать)

Усё "ИМХО" ... посему не стоит заводить длинные беседы о правильности выбора :-)
Автору же ветки могу предложить свою помощь (подобное делал недавно) -> стучитесь в приват или мыло.
namelos
Сергей Борщ , спасибо за подробное разъяснение. Девайс должен обрабатывать температуру от датчиков, которые будут находится на расстоянии 50м, да и точность измерений хотелось бы повыше, чем предлагают "TMP-analog devices" и "Maxim". Датчики я подобрал Pt100(как более точные в диапазоне до 120С) с аналоговым линиаризированным выходом 4/20мА(убрать влияние эл.маг.полей).

AndryG, спасибо за ваши советы и за предложение о помощи, непременно воспользуюсь. А по поводу STK*, признаюсь честно, решил получше разобраться с МК. А вообсче у меня есть идея подсоединить потом USB-контроллер и на PC..smile.gif

Что касается софта, остановился пока на WinAVR и AVRStudio...все/таки open source..smile.gif

А по поводу измерения температуры, может у кого/нибудь будут другие варианты? А то что/то мой вариант у меня вызывает "смутные сомнения". T.e. на каждый сенсор надо будет вешать сопротивление, а с него в свою очередь снимать напряжение. Вот и думаю или через Mux/Sample-hold/АЦП или сразу на АЦП/входы МК (а это МК с 12 АЦП)...
Сергей Борщ
Цитата(namelos @ Jul 5 2007, 00:12) *
Девайс должен обрабатывать температуру от датчиков, которые будут находится на расстоянии 50м, да и точность измерений хотелось бы повыше, чем предлагают "TMP-analog devices" и "Maxim".
Если вы будете на 50м тащить провода от Pt100, то вы (в очень высокой долей вероятности) не получите даже такой точности, какую дают Максимы с Аналоговыми Девицами. Так что быстрее думайте о замене "одного пирога с 8 свечками" на "8 пирогов с одной свечкой", т.е. об отдельном контроллере у каждого датчика. При стоимости контроллера меньше доллара вы больше сэкономите на проводах. Примеры подключения датчика можно посмотреть тут.
Насчет "аналогового линеаризованного выхода" не понял - Pt100 это ведь обычный платиновый терморезистор.
Igor26
Цитата
об отдельном контроллере у каждого датчика

...и объединить их между собой или с центральным контроллером по RS-485 интерфейсу. Расстояние до 1200 метров.
VAHOO
Цитата(mdmitry @ Jul 3 2007, 21:36) *
Посмотрите акцию Atmel на www.efo.ru. Там два варианта за приемлемые деньги.



откудо купить AVR DRAGON+STK500?
за 50$.

Пожалуйста дайте линк.
Igor26
http://www.efo.ru/doc/Atmel/Atmel.pl?212
Объявление от 04.05.2007
GDI
DS18B20 дает точность 0,5 градуса безо всякой калибровки, в свое время мы даже получали сертификат на систему с этими датчиками - все датчики уложились в заявленный производителем диапазон, а если откалибровать его, то можно получить и более высокую точность, у него шаг измерения составляет 0,0625 градуса. В условиях бытовых помех он может работать на удалении до 200метров, один знакомый делал, пришлось ему при этом растянуть тайм слоты, хотя я бы еще и подтяжку уменьшил до 1-0,5 кОм, при этом точность не уменьшается, т.к. передача идет в цифровом виде, диапазон измерений до 125 градусов, кратковременно выдерживает и большие температуры.

Упомянутый мной ранее КИТ AVR Butterfly имеет на своем борту ЖКИ индикатор, мега169, джойстик, пищалку, батарейку, датафлешь на 4мбит и т.д., стоит 600р в ЭФО. Для установки реле конечно потребуется дополнительная плата.
namelos
Цитата(Сергей Борщ @ Jul 5 2007, 04:16) *
Насчет "аналогового линеаризованного выхода" не понял - Pt100 это ведь обычный платиновый терморезистор.

Pt100(RTD) специального исполненеия вместе с преобразователем, но дороговат, однако. Вот и ищу приемлимое решение.

GDI ,спасибо за информацию. Неплохое предложение. Интересно, а поставляются такие датчики в защитных корпусах для измерения темпеартуры жидкости.

Датчики собираюсь устанавливать на двигателе, поэтому хотелось бы там разместить только сами датчики без блока обработки для быстрой замены в случае поломки. Сам девайс будет размещен в 50м-70м и кабель должен будет проходить по цеху рядом с кабелями и ел.моторами, в этом как раз и проблема, как доставить сигнал без потерь. И еще, хотелось бы увеличить скорость обработки температуры, DS18B20-сенсор обрабатывает температуру 0.7с, при 12 сенсорах это почти 8 секунд.sad.gif
AndryG
Цитата
0.7с, при 12 сенсорах это почти 8 секунд

Если не использовать паразитное питание, а Вы его использовать и не будете, то можно всем датчикам послать запрос на преобразование - подождать "время преобразования" (от начала рассылки) - и прочитать температуру ... и никаких 8 секунд.
GDI
Время преобразования зависит от разрядности преобразования на которое настроен датчик:
750мс при 12бит, шаг 0,0625 градусов
~150мс(точно не помню) при 9 бит, шаг 0,5град.
Это настраивается записью режима работы в датчик, с завода он поставляется в режиме работы - 12бит

Не обязательно ждать когда датчик завершит преобразование, я делал так: Чтение результата -> команда на преобразование, пока датчик считает температуру, можно опрашивать остальные. При опросе можно не читать весь СкратчПад, а принять только первые 2 байта, в которых содержится собственно измеренная температура, затем подать ресет на линию, чтоб прервать передачу от датчика.

Мы для датчиков изготавливали металлические корпуса.

Для обеспечения замены датчиков, каждый датчик подключался на независимую линию 1-wire, т.е. со стороны контроллера было выделено несколько шин 1-ware на каждой из которых висел один датчик, что позволяло не использовать команды работы с серийными номерами датчиков, как это требуется при подключении нескольких датчиков на одну шину. В качестве бонуса появляется возможность параллельного опроса датчиков.

P.S. Кстати, это был мой первый проект сделанный на АВР(до этого разработками не занимался) и сделан он был в CV smile.gif
namelos
GDI , еще спасибо за информацию. Если не секрет, на каком МК вы реализовали опрос сенсоров. Полазил по интернету информации по датчикам много.

Хотелось бы теперь опрашивать с помощью одного контроллера до 40 датчиков DS18B20 с подсоединением каждого на отдельный вход. Какой МК порекомендуете?

Интересно, а как они ведут себя датчики DS18B20 в промышленном применении? Есть у кого-нибудь данные? Надолго ли его хватит?
GDI
Я делал на мега16, 8 каналов. Ну а контроллер для 40 каналов... трудно сказать, на первый взгляд приходит на ум мега64 или мега128, у них 53 линии входа/выхода, хватит ли оставшихся 13 ножек для других задач? Может стоит рассмотреть много процессорную систему? несколько мега48 и связь по SPI на какой то центральный контроллер, можно даже ту же мега48 если хватит ресурсов. По цене это может оказаться дешевле чем одна мега128.
Igor26
Цитата(GDI @ Jul 5 2007, 19:33) *
Я делал на мега16, 8 каналов. Ну а контроллер для 40 каналов... трудно сказать, на первый взгляд приходит на ум мега64 или мега128, у них 53 линии входа/выхода, хватит ли оставшихся 13 ножек для других задач? Может стоит рассмотреть много процессорную систему? несколько мега48 и связь по SPI на какой то центральный контроллер, можно даже ту же мега48 если хватит ресурсов. По цене это может оказаться дешевле чем одна мега128.

Вы делали Ваш проект на каком датчике?
Если DSx20, то почему получилось столько портов I/O?
GDI
Igor26 вы про что?
про мега16 и 8 каналов? Вот моя цитата, почему так.
Цитата
каждый датчик подключался на независимую линию 1-wire, т.е. со стороны контроллера было выделено несколько шин 1-ware на каждой из которых висел один датчик, что позволяло не использовать команды работы с серийными номерами датчиков, как это требуется при подключении нескольких датчиков на одну шину. В качестве бонуса появляется возможность параллельного опроса датчиков.

Или про 53 линии i/o у мега 64/128? Так это мои рассуждения на вопрос namelos-а
Цитата
Хотелось бы теперь опрашивать с помощью одного контроллера до 40 датчиков DS18B20 с подсоединением каждого на отдельный вход. Какой МК порекомендуете?


Везде имеются ввиду датчики DS18B20
Igor26
Извиняюсь. Наверное пропустил выделенные цитаты.

Ну а почему Вас пугает работа с датчиками по их "серийникам"? Там же всё просто и прозрачно. Занята одна линия порта и на ней висит масса датчиков и/или иных устройств с 1-Wire интерфейсом. Если задача не сложная, то может хватить какой-нибудь восьминогой Тиньки. Я уж не помню почему, но что-то у меня не заладилось с "далласами", которые висели на нескольких портах.
GDI
Меня то не пугает, просто хотелось оградить заказчиков от заморочек с серийниками в случае замены вышедшего из строя датчика, да и себя от мороки это реализовывать, т.к. в той системе блок сбора был без каких либо органов управления, и к нему по rs485 цеплялись блоки индикации с 7-сегментными светодиодными индикаторами, в общем лишнюю нагрузку не особо квалифицированным пользователям я решил не создавать. smile.gif
Проблем с параллельной работой датчиков у меня не было, а опрос там именно параллельный, одновременный. Все датчики висели на одном 8-ми разрядном порте.
Igor26
Теперь ясно.
namelos
Цитата
GDI...и связь по SPI на какой то центральный контроллер...

И еще небольшой вопрос.A какaя связь между контроллерами является наиболее надежной и стабильной? RS232, I2C, SPI?


Начинаю закупку компонентов. О результатах сборки девайса сообщу.smile.gif
Спасибо всем.
GDI
Цитата
RS232, I2C, SPI

Вот по скорости они так и располагаются, а по надежности, имхо зависит от условий, помех, разводки, мне кажется что тут они примерно равны, только не RS232, а UART с уровнями сигналов 5в.
UART в принципе не рассчитан на много точечное соединение
I2C - топология типа шина, с передачей адреса устройства
SPI - все включаются параллельно на шину, но выбор устройства производится сигналом CS и потом обмен идет как будто никого больше на шине нет.
Последний мне кажется наиболее прост в реализации, особенно с использованием аппаратных SPI.
namelos
GDI, спасибо и хороших выходных.
IgorKossak
Цитата(GDI @ Jul 6 2007, 16:57) *
UART в принципе не рассчитан на много точечное соединение

RS485 базированный на UART и снабжённый соответствующим протоколом - приятное исключение из Вашего категоричного заявления.
А UART в чистом виде (5 вольтовый) практически не применяется.
gm1957
Цитата(Сергей Борщ @ Jul 5 2007, 00:41) *
Ключевое слово DS18B20. Если вас устраивает точность 2 градуса, то получаете термометр в трехногом корпусе с цифровым выходом. Разумное количество таких термометров вешаются параллельно и для их опроса достаточно одного вывода МК. Примеры кода ищите в ветке "Исходники программ и библиотек". Можно еще посмотреть серию TMP от Analog Devices, там интерфейс не 1-wire и (если мне не изменяет память) были экземпляры с лучшей точностью.

точность DS18B20 0.5 градуса по описанию,
для 8 датчиков с минимальной программой TINY2313 хватит "за глаза", ещё и на реле ноги останутся
именно такой контроллер проверен временем, только надо учитывать отличия DS18B20 от DS1820
alexander tom
Привет!

А возможно ли склонировать чип mega16 целиком с прошивкой? И кто бы мог бы это сделать за уе если это реально?

Спасибо
defunct
Цитата(GDI @ Jul 6 2007, 16:57) *
RS232, I2C, SPI
Вот по скорости они так и располагаются,


В контексте AVR насчет "по скорости они так и располагаются" требует поправки:

SPI в силу своей простоты и синхронности - самый скоростной (до 8Mbod/s на 16Mhz)
UART - ограничен цифрой 16, в скоростном режиме цифрой 8. (тобиш максимум можно выжать 2Mbod/s)
I2C - не более 400Kbod/s.

Но в силу того, что I2C аппаратно поддерживает адресацию устройств, и использует шину всего из 2-х проводков, эффективность системы построенная на этом интерфейсе будет наиболее высокая, по следующим критериям:
1. Гибкость масштабирования системы (легко можно добавить новый модуль(и)).
2. Простота разводки интерфейса на плате (всего два провода)
3. Минимальные затраты процессорного времени на обслуживание протокола связи.
=GM=
Цитата(defunct @ Jul 18 2007, 10:44) *
1. Гибкость масштабирования системы (легко можно добавить новый модуль(и)).
2. Простота разводки интерфейса на плате (всего два провода)

Насчёт гибкости. И к SPI точно также можно подключить хоть 150 устройств. Да и 3 провода вместо двух не столь принципиально.
defunct
Цитата(=GM= @ Jul 18 2007, 18:56) *
Насчёт гибкости. И к SPI точно также можно подключить хоть 150 устройств.

Да? И можно полюбопытствовать как?
IgorKossak
Цитата(defunct @ Jul 18 2007, 19:03) *
Да? И можно полюбопытствовать как?

Применив 150 линий chip select. cool.gif
SpyBot
А если сначало передавать адрес нужного устройства? 1111493779.gif
oles_k76
Цитата(pokos @ Jul 4 2007, 14:01) *
Ну, я начинал с "пяти проводочков" и avrasm. Потом CodeVision - очень начинающему жизнь упрощает.
Теперь мне хватает AVRISP, IAR, ну, и конечно, AVR Studio, куда ж без неё.
А можно и Proteus, правда, я не пользовал.

Вот человек отразил то что у меня сейчас...
со временем перейду на ИАР.
Единствееное что сдерживает -это отсутствие библиотеки LCD дисплея.. но я стараюсь подпрограммы
под какой либо интерфейс писать сам TWI,SPI... ,тем более есть примеры в даташите
muravei
Цитата(IgorKossak @ Jul 18 2007, 21:43) *
Применив 150 линий chip select. cool.gif

Если постараться , может хватить 8.
IgorKossak
Цитата(SpyBot @ Jul 18 2007, 20:57) *
А если сначало передавать адрес нужного устройства? 1111493779.gif

В стандартный SPI эта фича не входит, а значит к существующим устройствам (часы, DataFlash, ...) не применима.
Это можно сделать если по SPI общаться между МК, знакомыми с данным протоколом.
WHALE
Цитата(IgorKossak @ Jul 18 2007, 23:02) *
В стандартный SPI эта фича не входит, а значит к существующим устройствам (часы, DataFlash, ...) не применима.
Это можно сделать если по SPI общаться между МК, знакомыми с данным протоколом.

к тому-же по CS сбрасывается счетчик битов и без него в случае сбоя засинхронизироваться снова будет проблематично.
defunct
Цитата(IgorKossak @ Jul 18 2007, 20:43) *
Применив 150 линий chip select. cool.gif

Цитата
Если постараться , может хватить 8.

Ключевое слово "постараться" ;>
Вот вот.. И вся "гибкость" масштабирования летит в тар-тарары.

Может GM что-то другое имел в виду.. С интересом жду что он скажет.
=GM=
Цитата(defunct @ Jul 18 2007, 22:07) *
Может GM что-то другое имел в виду.. С интересом жду что он скажет.

Ого, сколько понаписали, сегодня целый день в разъездах был, не было возможности ответить.

Well to the question. Для начала, например, можно соединить SPI выход первого слейва со входом второго, а его выход с входом третьего, ну и так далее...Очень просто, как говорит мой босс, но проблемо(:-).
defunct
Цитата(=GM= @ Jul 20 2007, 00:22) *
Для начала, например, можно соединить SPI выход первого слейва со входом второго, а его выход с входом третьего, ну и так далее...Очень просто, как говорит мой босс, но проблемо(:-).

Как всегда очень оригинально ;> но действительно проблемно.. smile.gif
Клок как передавать? CS?
И проводов не три а хм.. 150 + 1 (это если клок "расшарить").
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.