Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Правильно завести сигнал в МК

Непрочитано 24.10.2011, 01:09  
Kostik00
Частый гость
 
Регистрация: 20.03.2011
Сообщений: 16
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Kostik00 на пути к лучшему
По умолчанию Правильно завести сигнал в МК

Привет всем.

Понемногу изучаю программирование МК. Нашел нужную схему в интернете переделал ее под МК и столкнулся с не совсем хорошим результатом. Раньше никогда схемами не занимался, но есть опыт программирования. И этот опыт программирования (не знаю хорошо это или плохо) не дает мне покоя. Так вот когда я пишу программу, то 100 целых (допустим) попугаев - это всегда 100 целых попугаев и эти 100 попугаев без документа никуда не деваются, а тут такое творится:

Измеряю напряжение на конденсаторе 0-300 В. Завожу его в микроконтроллер при помощи резистора и подстроечника (средний вывод которого подаю на АЦП).

В принципе все работает, и даже микроконтроллер регулирует это напряжение, но почемуто оно (регулируемое напряжение) слишком сильно плавает (плюс минус 10 В).

Причем если смотреть в рамках одного цикла, то все так, как и должно быть (300-303 В). Но если сбросить напряжение до 50В, то оно потом поднимается и стабилизируется немного на другом уровне(+-10В). И от цикла к циклу напряжение плывет.

Если я правильно понял, то основные причины следующие:
1. Микроконтроллер, его АЦП (у меня это ATMEGA8А) и его аналоговая обвязка.
2. Прогрев измерительных резисторов
3. Импульсные Помехи
4. Контрольные замеры делаются простейшим тестером.

Вопросы следующие:
1. Какую точность и стабильность можно требовать от данного МК и насколько они плывут при работе ?(питание МК от 7805)
2. Какой минимальный ток должен течь в измерительной цепочке резисторов, чтобы резисторы не плыли, и МК четко замерял нужное напряжение ? (порекомендуйте конкретные типы и номиналы резисторов).
3. Какие есть способы борьбы с импульсами (10-100 KHz питания конденсатора), чтобы не пропустить их в измерительную часть?
4. Есть ли в инете картинки более правильных схем подключения высокого напряжения к АЦП МК или обвязки МК?
5. Может я еще что то пропустил?
Реклама:
Kostik00 вне форума  
Непрочитано 24.10.2011, 02:13  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

Сообщение от Kostik00 Посмотреть сообщение

Измеряю напряжение на конденсаторе 0-300 В. Завожу его в микроконтроллер при помощи резистора и подстроечника (средний вывод которого подаю на АЦП).
"измеряю напряжение на конденсаторе... Чем? Как? Схема? Код показать стыдно? Шаманы, кстати, все в отпуске.

PS сам постоянно работаю с АЦП АВРок - единственное с чем столкнулся - если девайс питается от импульсника, то шум +-5 дискрет гарантирован - хотя даже на приличном осциллографе и питание, и сигнал красивые.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Непрочитано 24.10.2011, 02:54  
Kostik00
Частый гость
 
Регистрация: 20.03.2011
Сообщений: 16
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Kostik00 на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

Прямо как в школе - форма не нравится. Попробуем переписать по новой форме .


ATMEGA8 с ее АЦП 10 БИТ
Програмку показать не стыдно, со схемой сложнее - Измерительная часть в приложении 1.
Аналоговая часть обвязки в приложении 2 (но номиналы из того, что было).

Если пропустить инициализацию то остается

прерывание по завершению АЦП
ISR(ADC_vect)
{
VProbe= ADCW;
CheckConverter();
ADCSRA|=_BV(ADSC);
}
сама обработка
void CheckConverter(void)
{
SetPWMParams();

if (VProbe ›= 1000)
DisableConverter();

}

параметры генератора выбираются из масива

void SetPWMParams(void)
{
int n = VProbe ›› 5;
ICR1 = PWMArray[n][0]+PWMArray[n][1]+DelayTime;

OCR1A=PWMArray[n][0];
OCR1B=ICR1-PWMArray[n][0];

}

Форматирование текста приделал бы, но чтото сегодня казус наровит вирусы в виде обновления оперы прислать.
Миниатюры:
Нажмите на изображение для увеличения
Название: C1.jpg
Просмотров: 71
Размер:	78.4 Кб
ID:	27464   Нажмите на изображение для увеличения
Название: C2.jpg
Просмотров: 62
Размер:	83.6 Кб
ID:	27465  
Kostik00 вне форума  
Непрочитано 24.10.2011, 03:04  
Kostik00
Частый гость
 
Регистрация: 20.03.2011
Сообщений: 16
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Kostik00 на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

Да забыл добавить, что шум +-5 дискрет при условии 1000=300В - превращается в шум +-1.5В - что полностью соответствует тому, что у меня получается 300-303В сразу после подстройки.

Проблема в том что напряжение уплывает со временем и/или с циклами.

Последний раз редактировалось Kostik00; 24.10.2011 в 03:08.
Kostik00 вне форума  
Непрочитано 24.10.2011, 03:58  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

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

Хотя ежели от внутреннего генератора и плата как утюг, то может быть.

Последний раз редактировалось sdsrem; 24.10.2011 в 04:00.
sdsrem вне форума  
Непрочитано 24.10.2011, 04:14  
gary2007
Почётный гражданин KAZUS.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

Не каждый резистор держит 300В. Замените его цепочку из на 2-3-х последовательно. И подстроечник временно на обычный постоянный резистор поменяйте.

VREF не плавает? Попробуйте на внутреннем погонять.
__________________
Мелочи не решают главного. Они решают всё!

Последний раз редактировалось gary2007; 24.10.2011 в 04:22.
gary2007 вне форума  
Сказали "Спасибо" gary2007
Kostik00 (24.10.2011)
Непрочитано 24.10.2011, 08:02  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

1. Ток через резисторы должен на порядок (как минимум) быть больше входного тока АЦП
2. Про резисторы gary2007 правильно сказал, или высоковольтные нужны, или цепочку делать. И, если габариты не критичны, мощностью не меньше 0,5Вт. Не забывайте, что при нагреве резисторы не только плывут, но и шумят.
3. Если не нужно высокое быстродействие, на вход интегрирующую цепь.
4. Про младший бит АЦП забудьте. Хотите больше разрешающую способность - ставьте отдельный АЦП (а не 10-12бит).
5. Проводите несколько замеров, результат усредняйте.
6. Внешний стабильный VREF (или внутренний), но не привязанный к питанию МК
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Сказали "Спасибо" DK
Kostik00 (24.10.2011)
Непрочитано 24.10.2011, 11:49  
Kostik00
Частый гость
 
Регистрация: 20.03.2011
Сообщений: 16
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Kostik00 на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

Сообщение от DK Посмотреть сообщение
1. Ток через резисторы должен на порядок (как минимум) быть больше входного тока АЦП
Спасибо. Осталось найти входной ток АЦП ATMEGА8. Кто нибудь подскажет? (у меня найти пока не получается)

Сообщение от DK Посмотреть сообщение
2. Про резисторы gary2007 правильно сказал, или высоковольтные нужны, или цепочку делать. И, если габариты не критичны, мощностью не меньше 0,5Вт. Не забывайте, что при нагреве резисторы не только плывут, но и шумят.
Об этом я и подозревал, но когда я прихожу в наш местный магазин - меня не всегда понимают. Как по другому можно объяснить продавцу, что мне нужен высоковольтный резистор?
Сообщение от DK Посмотреть сообщение
3. Если не нужно высокое быстродействие, на вход интегрирующую цепь.
4. Про младший бит АЦП забудьте. Хотите больше разрешающую способность - ставьте отдельный АЦП (а не 10-12бит).
Это уже лишнее - точность +-3В - это уже более чем достаточно.

Сообщение от DK Посмотреть сообщение
5. Проводите несколько замеров, результат усредняйте.
6. Внешний стабильный VREF (или внутренний), но не привязанный к питанию МК
Внешний VREF - это черезчур - пока пробую внутренний с внешним конденсатором. А усреднять - уже пробовал - не помогло.
Kostik00 вне форума  
Непрочитано 24.10.2011, 13:05  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

Сообщение от Kostik00 Посмотреть сообщение
высоковольтный резистор
Не заморачивайтесь тогда. Пойдет любой металлопленочный С2-23, С2-33. Но:
Мощность Напряжение
0,125 200
0,250 250
0,5 350
1.0 500
2.0 750

Сообщение от Kostik00 Посмотреть сообщение
+-3В - это уже более чем достаточно
Т.е. Вы 2 бита отбрасываете?

Сообщение от Kostik00 Посмотреть сообщение
входной ток АЦП ATMEGА8
Ну считайте, что примерно 1мкА.

Сообщение от Kostik00 Посмотреть сообщение
А усреднять - уже пробовал - не помогло
Попробуйте больше измерений усреднить. Да еще попробовать выкидывать недостоверные данные.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Сказали "Спасибо" DK
Kostik00 (24.10.2011)
Непрочитано 24.10.2011, 16:57  
Kostik00
Частый гость
 
Регистрация: 20.03.2011
Сообщений: 16
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Kostik00 на пути к лучшему
По умолчанию Re: Правильно завести сигнал в МК

Допустим ток АЦП 1 мкА тоесть 0.000001А
Ток в измерительной цепи должен быть на порядок больше - тоесть 10мкА = 0.000010А
При напряжении 300 В и токе 0.00001А общее сопротивление измерительной цепочки 300/0.00001 = 30000000 Ом то есть сопротивление не больше 30 МОм

у меня 1М+10К = 1010000 Ом
При этом Ток ~0,0003A=300мкА - по току вроде как проходит

Мощность, рассеиваемая на резисторах P=300*300/1010000~0.09Ватт

Сейчас стоит 0.125W - Если я правильно понял и ничего не напутал, то этот 100% надо менять

Что касается подстроечника - у меня чтото типа //http://www.chipdip.ru/product/3296w-103.aspx
Заявленная P - 0.5W при ~0.0009W рабочих - можно ли ему верить?

И еще - не стоит ли увеличить номиналы резисторов?

Последний раз редактировалось Kostik00; 24.10.2011 в 17:05.
Kostik00 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сигнал тахометра Renat_tt Электроника средств транспорта 14 21.04.2011 00:53
IR неизвестный сигнал! помогите!!! LDme Микроконтроллеры, АЦП, память и т.д 21 09.11.2010 19:40
Как завести микрофонный (аналоговый) сигнал в QBASIC 4.5? 66andr Цифровые сигнальные процессоры 0 14.07.2007 16:46
[Решено] про блоки питания бу-га-га! zalman Отвлекитесь, эмбеддеры! 12 29.01.2007 10:46


Часовой пояс GMT +4, время: 09:55.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.