Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Twilo »

что б стабилитрон не сгорел там резистор был :))
2.5 от внутренего источнико в даном случае привлекает тем что оу от 5 В питать можно. Можно на входе ОУ стабилитрон поставить с резистором, если больше 5В с датчика выходит, если не более 5В то с оу все равно больше 4В не выйдет, АЦП МК в этом случае будет видеть это как 1024.
ну далеко не все могут таким достижением похвастаться, поздравляю вас :beer:
Аватара пользователя
Fasterpast
Мучитель микросхем
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Fasterpast »

Twilo, спасибо ))))
В общем, накорябал я программку ) И оно вроде бы даже работает.
Правда подгонять показания я пока не стал, всё равно в реальной схеме всё будет по-другому, как всегда.

Если у кого есть мысли как перевести показания АЦП в Амперы на индикаторе, кроме как делать для каждого значения case, с удовольствием выслушаю. Ибо зависимость исходного напряжения и показаний АЦП - далеко не линейная :(

Вот "чудо-схема" )))) Сразу предупреждаю, там сплошной ужас, только для проверки программы, ибо индикаторы почему-то в протеусе напрямую от МК работать не захотели, пришлось подключать через транзисторы )))

Исходничек.. Всё стандартно, в общем то.

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

#include <mega16.h>
#include <delay.h>

#define a 1   // Эти макросы содержат числа, соответствующие двойке,
#define b 2   // возведенной в степень, равной номеру "ножки" того
#define c 4   // порта, к которому подключен сегмент индикатора с
#define d 8 // одноименным макросу названием. Для того, чтобы вывести
#define e 16  // какую-либо цифру на индикатор, нужно отправить в порт
#define f 32  // число 255 минус сумму соответствующих сегментам макросов.
#define g 64  // Эти числа позволяют сделать программу независимой от подключения.
#define DP 128  // Измените эти числа, если индикатор выводит букву "зю"

unsigned char adc_data;

// Прерывание при переполнении таймера 0
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Сбросить таймер на 0
TCNT0=0x84;
// Запустить преобразование АЦП
ADCSRA.6 = 1;
}

//Прерывание АЦП
interrupt [ADC_INT] void adc_isr(void)
{
// Читаем 8 старших бит АЦП
adc_data=ADCH;
}

void Dig_init()
{
  Dig[0] = (a+b+c+d+e+f);   // Если индикатор с общим анодом,
  Dig[1] = (b+c);           // нужно сумму макросов отнять от
  Dig[2] = (a+b+g+e+d);     // 255. Если с общим катодом, то
  Dig[3] = (a+b+g+c+d);     // отнимать не нужно.
  Dig[4] = (f+g+b+c);       // Имена макросов соответствуют
  Dig[5] = (a+f+g+c+d);     // именам сегментов индикатора
  Dig[6] = (a+f+g+c+d+e);
  Dig[7] = (a+b+c);
  Dig[8] = (a+b+c+d+e+f+g);
  Dig[9] = (a+b+c+d+f+g);
}


void initialization(){
DDRA = 0x00;
DDRC = 0xFF;
DDRB = 0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 31,250 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x84;
OCR0=0x00;

//timer interrupt
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

//ADC init
ADMUX=0x20;
ADCSRA=0x89;

// Global enable interrupts
#asm("sei")
}


main(){

Dig_init();
initialization();



while (1)
{


 
 if (adc_data == 95) {
   PORTC = Dig[0] +128;
   PORTB = Dig[0]; }
 if (adc_data == 155) {
   PORTC = Dig[1];
   PORTB = Dig[0]; }   
 if (adc_data == 97) {
   PORTC = Dig[0] +128;
   PORTB = Dig[2]; }   
 if (adc_data == 98) {
   PORTC = Dig[0] +128;
   PORTB = Dig[4]; }   
 if (adc_data == 36) {
   PORTC = Dig[1];
   PORTB = Dig[0] + 128; }
.
.
.
.
.
итд. не самое красивое решение...
 
Вложения
111.gif
Вот оно ) Здесь -10А
(13.78 КБ) 773 скачивания
Amp.gif
0.4А
(19.89 КБ) 659 скачиваний
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Twilo »

приведите сопоставление того что показывает ацп и реальное значение силы тока
Аватара пользователя
Fasterpast
Мучитель микросхем
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Fasterpast »

204 = 11001100 = 20А
184 = 10111000 = 15А
155 = 10011011 = 10А
98 = 01100010 = 0,4А
97 = 01100001 = 0,2А
95 = 01011111 = 0А
36 = 00100100 = -10А
0 = 00000000 = -20А

Вот то, что проверял. Если еще нужны какие-то промежуточные значения, обеспечу )

Это естественно исходя из того, что датчик тока будет выдавать значения именно такие, как в даташите. Но наверняка там еще будет какой-то шум, погрешность и т.д.
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Twilo »

кусочно-линейная аппр. должна подойти
http://easyelectronics.ru/avr-uchebnyj-kurs-kusochno-linejnaya-approksimaciya.html
ссылка рабочая. у них там проблемы с переездом поэтому иногда не получается зайти.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Meteor »

Может аналогоую часть подправить? Тогда можно более линейный результат получить...
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Twilo »

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

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Meteor »

Ааа, полиномы девятой степени - понимаю :wink:
Мне не понятно назначение резистора (R3) прицепленного к источнику питания. Для "вырезания" части напряжения, достаточно было бы повторить предложенный ранее вариант.
Схему в свое время настраивал на КУ=-10, при этом задавал размах 0,3В и имел на выходе 3В без искажений. Отношение резистора цепи обратной связи к резистору на входе равно 10. А тут цепь с непонятным КУ получилась - делитель одна из ветвей которого в цепи задания усиления.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Fasterpast
Мучитель микросхем
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Fasterpast »

Можно попробовать опорное напряжение АЦП сделать 4В...
А R3 чтобы порог задать... У меня в протеусе что-то не получилось задать порог делителем на входе ОУ, а не на обратной связи. Хотя, может где-то накосячил ))

Смоделировал в протеусе подав на AREF 4В. Уже лучше, нелинейность пропадает только у самых краёв, что в принципе сносно.
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Twilo »

так сделайте тогда уже 5 В опорное. А ОУ питайте например от 9 посредством 7809 какой-нибудь, если это поможет конечно. на выходе ОУ или делитель из резисторов или стабилитрон.
Аватара пользователя
Fasterpast
Мучитель микросхем
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Fasterpast »

В общем, после пары суток коддинга и пайки я таки реализовал сие устройство на макетных платах =)
На макетных палтАХ потому что в итоге кол-во МК увеличилось до двух. Первый измеряет ток, отправляет второму по USART, а тот уже выводит это на экран от S65. :))) Естественно, эти "навороты" просто побочные эффекты моего процесса изучения микроконтроллеров )

Теперь по существу: готовый девайс измеряет постоянный (хотя и переменный тоже, по идее) ток от -100 до 100А с точностью в пределах 10А около 0.3А. Такая точность получилась после убирания всяких шумов и прочего. При обычном преобразовании по таймеру разброс был аж 9 единиц (в восьмибитном режиме), это при том, что из периферии только USART, на AREF напряжение шло со специального ИОН. AVCC подключен через индуктивность с конденсатором и пр. Единственное - разводка платы... её нет. Ибо макетка... После включения ADC Noise Cancelation mode разброс упал до 6, после простого округления типа "собери n результатов и подели сумму на n" вроде бы получилось "устаканенное" значение с точностью измерений 0.3-0.4А. Для моих целей этого более чем достаточно.
При этом никаких шунтов, гальваническая развязка от измеряемого тока и прочие прелести :)

Вот фотки )

http://i027.radikal.ru/1004/8e/543ec11ab278.jpg
http://i057.radikal.ru/1004/a3/b95076e50554.jpg

Код, в принципе, стандартный. если кому надо, пишите в личку, кину )
Аватара пользователя
RadioLab
Открыл глаза
Сообщения: 46
Зарегистрирован: Пт дек 25, 2009 12:29:51
Откуда: Н.Новгород
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение RadioLab »

Fasterpast расскажите прожалуйста о датчике тока.
что он из себя представляет, как называется,
сколько стоит
Аватара пользователя
Fasterpast
Мучитель микросхем
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Fasterpast »

Я брал ACS756SCA-100B-PFF-T
Стоит порядка 200-300р в зависимости от места покупки :)
Представляет из себя микросхему о трёх ногах (плюс две толстых ноги, на которых, собственно, измеряется ток.
Есть еще похожие датчики тока в виде кольца надеваемого на провод, где необходимо измерить ток (как в токовых клещах)
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.

Сообщение Twilo »

Fasterpast, поздравляю!
Закрыто

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