Меряем напряжение с помощью АЦП ATMEGA-8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Smokeman
Родился
Сообщения: 10
Зарегистрирован: Сб май 15, 2010 13:37:45

Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Smokeman »

Уважаемые форумчане, возникла такая задача. Необходимо замерять напряжение на 2-х клеймах генератора или сельсина, напряжение меняется от 0-100В, причем в зависимости от направления вращения меняется соответственно полярность питания. Предполагается использовать МК ATMEGA-8. Так же необходим удаленный контроль с компа, куда соответственно будут поступать данные, для этого предполагается использовать микросхему FT232RL для связи МК по USART и для подключения к USB порту.
Ничего не приходит на ум как сделать входное устройство с делителем напряжения, т.к. меняется полярность напряжения, посоветуйте у кого есть какие соображения по этому поводу!!
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение PB_EXPERT »

Smokeman писал(а):Предполагается использовать МК ATMEGA-8...
...предполагается использовать микросхему FT232RL для связи МК по USART и для подключения к USB порту.
А зачем лишнее звено - FT232RL?
На ATMEGA-8 можно реализовать софтовую поддержку USB.
Smokeman
Родился
Сообщения: 10
Зарегистрирован: Сб май 15, 2010 13:37:45

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Smokeman »

PB_EXPERT писал(а):
Smokeman писал(а):Предполагается использовать МК ATMEGA-8...
...предполагается использовать микросхему FT232RL для связи МК по USART и для подключения к USB порту.
А зачем лишнее звено - FT232RL?
На ATMEGA-8 можно реализовать софтовую поддержку USB.

Каким образом?
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение PB_EXPERT »

Smokeman писал(а):Каким образом?
Например, таким http://mcselec.com/index.php?option=com ... &Itemid=57
В устройствах использован обычный ATmega8, который непосредственно подключается к USB

Вот аналогичный пример на Русском http://purebasic.mybb.ru/viewtopic.php?id=46
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Danko »

Smokeman писал(а): причем в зависимости от направления вращения меняется соответственно полярность питания.


клемы генератора -> делитель -> mega8 -> USB -> Комп

Интересно, что сгорит раньше?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
of_silence
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб май 08, 2010 09:33:42

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение of_silence »

Интересно, что сгорит раньше?

Поддерживаю. гальваническая развязка не помешает. Если развязывать, я бы делал на генератор - делитель - контроллер самый дохлый - опторазвязка - FT232 - USB
Smokeman
Родился
Сообщения: 10
Зарегистрирован: Сб май 15, 2010 13:37:45

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Smokeman »

Вот набросал примерную схемку, подскажите как тут сделать гальваническую развязку.
PIC-0001.jpg
(158.75 КБ) 992 скачивания
of_silence
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб май 08, 2010 09:33:42

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение of_silence »

между мегой и FT232 воткнуть по оптопаре туда и обратно. Земли и питания по левой и правой части схемы должны быть отдельные.
Smokeman
Родился
Сообщения: 10
Зарегистрирован: Сб май 15, 2010 13:37:45

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Smokeman »

of_silence писал(а):между мегой и FT232 воткнуть по оптопаре туда и обратно. Земли и питания по левой и правой части схемы должны быть отдельные.

Питание FT232 я так понимаю будет от USB, на МЕГУ отдельное. Если есть какие-нибудь наброски относительно развязки, выложите плиз!
Smokeman
Родился
Сообщения: 10
Зарегистрирован: Сб май 15, 2010 13:37:45

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Smokeman »

Вот набросал схемку с развязкой на оптронах H11L1.
АЦП.gif
(46.48 КБ) 943 скачивания
Аватара пользователя
vitecd
Родился
Сообщения: 14
Зарегистрирован: Вт ноя 27, 2007 23:31:32
Откуда: Auckland
Контактная информация:

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение vitecd »

чот мне кажется, резистивный делитель при 0-100в это не очень хорошо... у меня на 15В уже нелинейная характеристика получается... хотя тут всего 1/3 делитель. а вот 100в просимулировать бы в excell для начала :)
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Meteor »

А поставить трансформатор (400Гц как понимаю раз сельсин) понижающий напряжение со 100В до 2...2,5В и привязать один из выводов к середине диапазона (те же 2,5В) нельзя?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Харизмат
Родился
Сообщения: 16
Зарегистрирован: Пн апр 26, 2010 15:00:53
Откуда: Киев
Контактная информация:

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Харизмат »

Товарищи, коты. Можно ли как-нибудь мерить напряжение питания контроллера его собственным АЦП? Необходимо сделать мониторинг питания, чтобы в случае разрядки подать сигнла о необходимости заряда батареи. :roll: благодарю!
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение GP1 »

Харизмат писал(а):Товарищи, коты. Можно ли как-нибудь мерить напряжение питания контроллера его собственным АЦП? Необходимо сделать мониторинг питания, чтобы в случае разрядки подать сигнла о необходимости заряда батареи. :roll: благодарю!

Вообще никаких проблем.
Причем есть кача вариантов с выбором опорного напряжения.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
zhu4er
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пт июн 04, 2010 17:40:13
Откуда: Непокорный город-герой Севастополь

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение zhu4er »

Вот и мне интересно как запрограммировать АЦП на Меге8. Как раз хочу небольшой лабораторный блок питания забацать. Программы писать умею, но с АЦП первый раз сталкиваюсь.

Нашёл в Инете вот это: http://my-avr.at.ua/publ/1-1-0-15, но комментариев к данному проекту фиг да нифига. Может кто-нибудь сможет дать комментарии, а?
Даже у стен есть уши...
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение GP1 »

мда...
А почитать ДШ, книжки там разные умные, это никак...
Ну как же, супер программисту, программирующему на Си с помощью матеров СV, книжки-то читать, не по рангу.
просто жесть куда мы кОтимся :shock:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
zhu4er
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пт июн 04, 2010 17:40:13
Откуда: Непокорный город-герой Севастополь

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение zhu4er »

И читаем и учимся! И чем плох CVAVR? Может у меня времени нету АСМ выучить! Программлю на СИ, что знаю очень хорошо! А мне бы вот для интереса узнать что делает это прерывание? опишите строчки помеченные вопросиком...

Код: Выделить всё

interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR
{
static unsigned char input_index=0;
adc_data[input_index]=ADCH; //?
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) //?
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index; //?
delay_us(10); //задержка перед началом преобразования
ADCSRA|=0x40; //старт АЦП
Даже у стен есть уши...
Аватара пользователя
zhu4er
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пт июн 04, 2010 17:40:13
Откуда: Непокорный город-герой Севастополь

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение zhu4er »

кое что просветила книженция "CVAVR пособие для начинающих" будем ковырять АЦП дальше
Даже у стен есть уши...
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Murav »

zhu4er писал(а):И чем плох CVAVR?

CVAVR плох тем, что тамошним мастером пользуются люди, не способные без него написать этот же код. И как следствие, не понимающие, что код, сгенерённый мастером делает.
Например из всех строк, которые ты привёл на самом деле тебе нужна только
zhu4er писал(а):ADCSRA|=0x40; //старт АЦП

И то читабельность у такого кода нулевая - биты в регистрах очень желательно указывать по именам: ADCSRA|=(1<<ADSC);

Возможно ещё нужны строки
zhu4er писал(а):interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR
{

но вполне возможно можно обойтись и без них.

Так что для начала всё таки стоит почитать даташит http://www.atmel.com/dyn/resources/prod ... oc2486.pdf или его перевод http://www.gaw.ru/html.cgi/txt/doc/micr ... /index.htm (ATMega8 и ATMega128 весьма похожи, но всё таки не забывай поглядывать в даташит, мало ли чем они отличаются).

Вкратце, сначала нужно включить и инициализовать основные настройки АЦП(частота, наличие прерывания, режим постоянной работы, если он нужен) в регистре ADCSRA(а в более новых контроллерах есть ещё ADCSRB), после чего выставить в ADMUX нужный канал и вход опорного напряжения(обрати внимание, что после некоторых изменений этих настроек АЦП в течение некоторого времени будет измерять непойми что, так что сделанные в это время измерения использовать нельзя) и запустить АЦП флагом ADSC(та самая единственная нужная строка, про которую я писал выше) и затем когда он закончит работу и выставит флаг ADIF прочитать результат из ADCL и ADCH(читать их обязательно нужно именно в таком порядке).
Аватара пользователя
Харизмат
Родился
Сообщения: 16
Зарегистрирован: Пн апр 26, 2010 15:00:53
Откуда: Киев
Контактная информация:

Re: Меряем напряжение с помощью АЦП ATMEGA-8

Сообщение Харизмат »

Murav писал(а):Вкратце, сначала нужно включить и инициализовать основные настройки АЦП(частота, наличие прерывания, режим постоянной работы, если он нужен) в регистре ADCSRA(а в более новых контроллерах есть ещё ADCSRB), после чего выставить в ADMUX нужный канал и вход опорного напряжения(обрати внимание, что после некоторых изменений этих настроек АЦП в течение некоторого времени будет измерять непойми что, так что сделанные в это время измерения использовать нельзя) и запустить АЦП флагом ADSC(та самая единственная нужная строка, про которую я писал выше) и затем когда он закончит работу и выставит флаг ADIF прочитать результат из ADCL и ADCH(читать их обязательно нужно именно в таком порядке).

Ценная информация, особенно для тех, у кого с английским пока туго! Спасибо.
Последний раз редактировалось Харизмат Ср окт 06, 2010 12:20:30, всего редактировалось 1 раз.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»