Страница 2 из 2
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 00:17:38
Twilo
что б стабилитрон не сгорел там резистор был
2.5 от внутренего источнико в даном случае привлекает тем что оу от 5 В питать можно. Можно на входе ОУ стабилитрон поставить с резистором, если больше 5В с датчика выходит, если не более 5В то с оу все равно больше 4В не выйдет, АЦП МК в этом случае будет видеть это как 1024.
ну далеко не все могут таким достижением похвастаться, поздравляю вас

Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 12:27:33
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; }
.
.
.
.
.
итд. не самое красивое решение...
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 12:48:01
Twilo
приведите сопоставление того что показывает ацп и реальное значение силы тока
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 12:53:45
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А
Вот то, что проверял. Если еще нужны какие-то промежуточные значения, обеспечу )
Это естественно исходя из того, что датчик тока будет выдавать значения именно такие, как в даташите. Но наверняка там еще будет какой-то шум, погрешность и т.д.
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 15:42:01
Twilo
кусочно-линейная аппр. должна подойти
http://easyelectronics.ru/avr-uchebnyj- ... aciya.html
ссылка рабочая. у них там проблемы с переездом поэтому иногда не получается зайти.
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 20:41:08
Meteor
Может аналогоую часть подправить? Тогда можно более линейный результат получить...
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 21:03:56
Twilo
если получится было бы здорово. я не знаю как это сделать. столкнулся бы с такой проблемой - решалбы програмно, я програмист
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 22:15:58
Meteor
Ааа, полиномы девятой степени - понимаю
Мне не понятно назначение резистора (R3) прицепленного к источнику питания. Для "вырезания" части напряжения, достаточно было бы повторить предложенный ранее вариант.
Схему в свое время настраивал на КУ=-10, при этом задавал размах 0,3В и имел на выходе 3В без искажений. Отношение резистора цепи обратной связи к резистору на входе равно 10. А тут цепь с непонятным КУ получилась - делитель одна из ветвей которого в цепи задания усиления.
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Пн мар 22, 2010 22:17:50
Fasterpast
Можно попробовать опорное напряжение АЦП сделать 4В...
А R3 чтобы порог задать... У меня в протеусе что-то не получилось задать порог делителем на входе ОУ, а не на обратной связи. Хотя, может где-то накосячил ))
Смоделировал в протеусе подав на AREF 4В. Уже лучше, нелинейность пропадает только у самых краёв, что в принципе сносно.
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Вт мар 23, 2010 11:54:21
Twilo
так сделайте тогда уже 5 В опорное. А ОУ питайте например от 9 посредством 7809 какой-нибудь, если это поможет конечно. на выходе ОУ или делитель из резисторов или стабилитрон.
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Вт апр 06, 2010 23:48:08
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
Код, в принципе, стандартный. если кому надо, пишите в личку, кину )
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Ср апр 07, 2010 08:16:59
RadioLab
Fasterpast расскажите прожалуйста о датчике тока.
что он из себя представляет, как называется,
сколько стоит
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Ср апр 07, 2010 08:59:36
Fasterpast
Я брал ACS756SCA-100B-PFF-T
Стоит порядка 200-300р в зависимости от места покупки

Представляет из себя микросхему о трёх ногах (плюс две толстых ноги, на которых, собственно, измеряется ток.
Есть еще похожие датчики тока в виде кольца надеваемого на провод, где необходимо измерить ток (как в токовых клещах)
Re: Датчик тока на - ATmega16+датчик тока на эффекте Холла.
Добавлено: Ср апр 07, 2010 10:29:43
Twilo
Fasterpast, поздравляю!