Перейти к содержанию

3-х разрядный вольтметр/амперметр на ATmega_8


ummagumma

Рекомендуемые сообщения

8 минут назад, dolmatovva сказал:

аппарат же

да. только к нему балластер нужен. эти звери на чистую козу как лбп не работают. есть у меня лбп на 150а в гараже. только далече(( вот тот на чистую козу или контрольный шунт бес проблемм... да в принципе и балластер там же, можно и престиж 220эс запряч... только гаражная сетка если позволит. ну откалибрую на максимально доступном токе...

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

да можно и так. но с калекой я могу и не дойти до этого интересного момента по причине повышеного давленья... вина в желудке)) балластер оно надежнее)) маловатта дырочка ф8мм для таких ацких потоков

Спойлер

1286095299_IMG_20230710_0803201.thumb.jpg.72a6bb4d1690c47a8f136181fe682464.jpg

 

 

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

4 минуты назад, ummagumma сказал:

маловатта дырочка

пилите Шура, пилите

10 минут назад, ummagumma сказал:

маловатта дырочка

могу показать как выглядит шина и дырочка в электросчётчике на 100А

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

ну короткая верёвочка ф6...7мм оконцованая клемами под болть эм осемь/десять имеет сеченье от 25 квадратов спокойно выдержит эти нещасные сто-стопядисят ампер. а изоляция будет майларная. но согласен, следующюю надо раздраконить под ф12...14мм... это для тока низкого напряженья, в пределах 30...40в. это не суперсила 230/380

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

померял апетит:

Vpwr, [V]       Ipwr, [A]
7vdc              0.22a
10vdc            0.16a
15vdc            0.11a
20vdc            0.09a
24vdc            0.07a
30vdc            0.06a
35vdc            0.05a
38vdc            0.05a

входное сопротивленье чёппера отрицательное

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, ummagumma сказал:

входное сопротивленье чёппера отрицательное

срочно за шнобелевской премией!!!

Мудрость приходит вместе с импотенцией...

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

Ссылка на комментарий
Поделиться на другие сайты

в кавычках)) но отрицательное. положительному приращенью +dVpwr соотвествует отрицательное приращенье -dIpov. Rin = +Vpwr/-Ipwr =-Rin. если дюже сильно пугает такой расклад, то можно зажмурица. а премию за это не дадут даж на паперти никто монетки не кинет))

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

отрицательное - это для того, кто не понимает, как работает понижающий преобразователь.

а для тех, кто понимает - это просто закон сохранения энергии.

Мудрость приходит вместе с импотенцией...

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

Ссылка на комментарий
Поделиться на другие сайты

buon jiorno, amici mio!

12bit-12bit  >> +0...99.99dcc / +0...49.99adc

Спойлер

плавающяя точка...

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

8*12 outrange

Спойлер

pic.1.thumb.jpg.9d43db1b6b8f5d31155b9c3a19727bd5.jpg

одна така малюта отдайёт на козу чуть меньшее 100а...

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

малюту 12в 2ач платка высосола до днища примерно за полсуток потоком 0.125а. выкобениваеца и капризничает верхний преобразователь при отладке не-по-детски. надо делить на два таймера. ещё надо бы придумать програмный компаратор чтоб выводил на дисплееры сигнал оверлоуд при выходе за пределы.

 

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

12bit_12bit. цыфруют каналлы напряженья и потока одноканальные ацп mcp3201. чёппер сглючил. теперь регулировать стал не с ноля. ас 3в. и реле 80а залипло при сработке термозащиты. стучал кувалдой по корпусу чёпера не помогло. какоежеэтоублюдошноекэтайскоеуй...уй...уй. корче надо было ставить на выход контактор и не любить моцк. все эти реле это полный хламиди_OZZбл... но это же уже лирика? дергаюца два младших разряда то. 128 усреднений... бл. пришлось подкоректировать кодировку восновном для таймеров oc1a/b

Спойлер

xtal1/2

Спойлер

oc1a

Спойлер

oc1a_40prcnt.png.5c412444c723d72e22c76757b33be765.png

шумы питанья и опоры. я вспоминаю месные как специализды дюже харно обеспокоились некой астракторной чистатой)) синий +5в0 жёлтый +4в0

Спойлер

noise_5v0_4v1.png.2fbc5e7027ecafc1639dc9e0e054f962.png

и шуми в питании оу синий верх +12в жёлтый низ -7в

Спойлер

noise_12v_7v.png.81cd77b9f5c2239d49b311a2a8d86c97.png

 

xt1_xt2.png

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

флюк ток не мерил. флюк мерил напряженье. ток мерил мастечь. мастечь соврёт не дорого возмёт. кто схему читал, тот всё понял. апой я потом ток мерял. все регулируеца... жор от 8в

Спойлер

P7300125.thumb.JPG.57ce2ad0967026d55447052b219d3d9c.JPG

жор от 39в

Спойлер

P7300131.thumb.JPG.6e9d3571fc8fd877b69487aa44d640ce.JPG

Спойлер

P7290119.thumb.JPG.d58c04c07bc8b16a219de5f0fe72179d.JPG

P7290123.thumb.JPG.7024e8e427858ff90ae2da59ed8769cf.JPG

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

сигнал на колехторе чёпорного ключика при разных входных уровнях (блакитный) и после шунта 0.33R (жёвтый)

Спойлер

Vpwr=8dcVc_Vpwr_8v.png.fff5a84fcc7f7c82b3f17e4857cf3e64.png

Спойлер

Vpwr=8dcVc_Ipk_Vpwr_8v.png.ddd5f501718055e7c89c0798cec34027.png

Спойлер

Vpwr=15dcVc_Ipk_Vpwr_15v.png.a8f626e1ca48e1c2e8382755eecf88db.png

Спойлер

Vpwr=24dcVc_Ipk_Vpwr_24v.png.16f64e86a4368af6e48040c36d2ad474.png

Спойлер

Vpwr=39dcVc_Ipk_Vpwr_39v.png.e537acb184bc311f353209e230e8d0f9.png

 

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

наиновейший код для 10bit_12bit цыфрой головы 65vdc_150adc

Спойлер
//кодировка для 3/4-х разрядного va-метра //ATmega_8A + max7219 + mcp3201 для 4-разрядных индикаторов 
//comm cath с разделительным двоеточием 0 0. : 0.0.
//va-meter +0...64.9v / +0...149.9a (10bit/12bit)
//16MHz

//Other Linker Flafs: -Wl,-u,vfprintf -lprintf_flt -lm (активизация режима вычислений с плавающей точкой)

#define F_CPU 16000000UL                                     //тактовая частота мк (unsigned long)
#include <avr/io.h>                                          //подключение библиотеки "ввод/вывод" мк
#include <util/delay.h>                                      //подключение библиотеки "пауза" мк
#include <avr/interrupt.h>                                   //подключение библиотеки "прерывание" мк

#define ADC_CS_0 PORTB &= ~(1<<PORTB2) //ADC_CS=0
#define ADC_CS_1 PORTB |= (1<<PORTB2) //ADC_CS=1
#define ADC_CLK_0 PORTB &= ~(1<<PORTB5) //ADC_CLK=0
#define ADC_CLK_1 PORTB |= (1<<PORTB5) //ADC_CLK=1

#define Vref 4.096 //+Vref=4.096vdc
#define Kv 6.456 //коэффициент преобразования для вычисления величины [V] Kv=1023*4.096/649
#define Ki 11.19 //коэффициент преобразования для вычисления величины [I] Ki=4095*4.096/1 499

#define DRV_CLK_0 PORTC &= ~(1<<PORTC0) //DRV_CLK=0
#define DRV_CLK_1 PORTC |= (1<<PORTC0) //DRV_CLK=1
#define DRV_CS_0 PORTC &= ~(1<<PORTC1) //DRV_CS=0
#define DRV_CS_1 PORTC |= (1<<PORTC1) //DRV_CS=1
#define DRV_MOSI_0 PORTC &= ~(1<<PORTC2) //DRV_MOSI=0
#define DRV_MOSI_1 PORTC |= (1<<PORTC2) //DRV_MOSI=1

#define voltage Mv
#define current Mi

//-----------------
unsigned int Digit[8]; //массив переменных Digit[8] из 8 переменных (разряды драйвера digit_0...digit_7)
unsigned char DRV_MOSI[8]; //массив переменных DRV_MOSI из 8 переменных (адреса rg и данные dt для led-драйвера)

unsigned char V; //переменная для передачи разложенной величины измеренного напряжения в led-драйвер
unsigned char I; //переменная для передачи разложенной величины измеренного тока в led-драйвер

unsigned char n; //символьная переменная (количество разрядов led-драйвера n=8)
unsigned int count; //переменная (счётчик циклов основной функции)

unsigned int adcv_value; //10-битный результат преобразования внутреннего ацп mux_n (adc_mux_n code)
unsigned int adci_value; //12-битный результат преобразования внешнего ацп  (ext_adc code)

float dt_v; //результат преобразования adc_code канала mux_5 в измеренное напряжение [V]
float Av; //входной параметр сглаживающего фильтра Av=dt_v
float Mv; //выходной результат работы сглаживающего фильтра в канале [V]
float Mv1 = 0; //сброс промежуточного результата работы сглаживающего фильтра в канале [V]
float Ks_v = 0.025; //коэффициент сглаживания в канале [V]

float dt_i; //результат преобразования adc_code внешнего ацп в измеренный ток [I]
float Ai; //Ai=dt_i
float Mi; //окончательный результат работы сглаживающего фильтра в канале [I]
float Mi1 = 0; //сброс промежуточного результата работы сглаживающего фильтра в канале [I]
float Ks_i = 0.025; //коэффициент сглаживания в канале [I]

//--- инициализация выхода таймера oc1a ---
void PB1_ini(void) //инициализация порта PB1 (pwm_out)
{
	DDRB |= (1<<PORTB1); //PB1_out (timer_oc1a)
	PORTB &= ~(1<<PORTB1); //PB1_lo
}

//--- инициализация ADC_CS ---
void CS_ini(void) //функция инициализации порта PB2
{
	DDRB |= (1<<PORTB2); //PB2_out
	PORTB |= (1<<PORTB2); //PB2_hi
}

//--- инициализация таймера oc1a ---
void timer_ini(void) //pwm_out: Tosc=16us; Fosc=62.5kHz; +tp=8us; +DC=-DC=50%
{
	ASSR=0x00; //сбрасываем полностью регистр assr
	TCCR1A |= ((1<<COM1A1)|(1<<WGM10)); //Fast PWM oc1a, Clear OC1A on Compare Match, clkT2S/1 (no prescalling)
	TCCR1B |= ((1<<WGM12)|(1<<CS10));
	TCNT1H=0x00;
	TCNT1L=0x00; // Timer Value = 0 сброс счётного регистра таймера oc1a
	OCR1AH=0x00;
	OCR1AL=0x7F; //Output Compare Register = dec127: заполнение шим +DC~50%, -DC~50%
	TIMSK=0x00; //сброс регистра timsk
}

//--- инициализация шины ADC_SPI ---
void ADC_SPI_ini(void)
{
	DDRB &= ~(1<<PORTB4); PORTB |= (1<<PORTB4); //MISO, pull-up=ON
	DDRB |= ((1<<PORTB5)|(1<<PORTB2)); //ADC_CLK, ADC_CS
	PORTB |= (1<<PORTB2); //CS_hi
	PORTB &= ~(1<<PORTB5); //CLC_lo
	SPCR |= ((1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0)); //включим шину SPI, объ§вим ведущим, SCK=16e+06/128=125kHz
}

//--- функция передачи/приёма данных по шине ADC_SPI ---
void SPI_SendByte(char byte)
{
	SPDR = byte; //
	while(!(SPSR & (1<<SPIF))); //подождем пока данные передадутс¤
}
unsigned char SPI_ChangeByte(char byte)
{
	SPDR = byte;
	while(!(SPSR & (1<<SPIF))); //подождем пока данные передадутс¤ (обмен¤ютс¤)
	return SPDR; //
}

//--- функция опроса внешнего ацп mcp3201 ---
unsigned int Read_3201(void)
{
	unsigned int b1,b2;
	ADC_CS_0; //CS=0
	b1=SPI_ChangeByte(0); //первый байт
	b2=SPI_ChangeByte(0); //второй байт
	b1=(b1<<8)|b2; //собираем два байта в двухбайтовую величину
	b1<<=3;
	b1>>=4; //убираем ненужные биты (3 слева и 1 справа)
	ADC_CS_1; //CS=1
	return b1; //возвращаем 12-битный результат ацп-преобразования
}

//--- инициализация шины данных LED-драйвера max7219 ---
void LED_SPI_ini(void)
{
	DDRC |= ((1<<PORTC2)|(1<<PORTC1)|(1<<PORTC0)); //PС0_out; PC1_out; PС2_out
	PORTC &= ~((1<<PORTC2)|(1<<PORTC1)|(1<<PORTC0)); //PС0-PС2_lo
}

//--- функция побитовой отправки данных в драйвер max7219 ---
void Send_max7219(unsigned char rg, unsigned char dt) //
{
	unsigned char rg_copy; //копия значения переменной rg
	unsigned char i; //переменная для побитной отправки данных в драйвер индикаторов
	
	DRV_MOSI[rg] = dt; //
	rg_copy = rg; //создадим копию значения переменной rg
	
	DRV_CS_0; //отправим «0» на вывод CS микросхемы MAX7219, чтобы начать процесс передачи адреса и данных
	asm("nop"); //пауза в 1 такт
	
	for(i=0;i<8;i++) //цикл от 0 до 7 с шагом 1, для побитовой отправки байта адреса в микросхему MAX7219
	{
		if((rg & 0x80)==0x80) //пока rg * 0b1000 0000 > 0, ...
		{
			DRV_MOSI_1; //...отправим 1 на вывод Din микросхемы MAX7219
		}
		else //если же rg * 0b1000 0000 = 0, ...
		{
			DRV_MOSI_0; //...отправим 0 на вывод Din микросхемы MAX7219
		}
		
		//создадим тактовый импульс на выводе CLK микросхемы MAX7219
		asm("nop"); //пауза в 1 такт
		DRV_CLK_1; //отправим 1 на вывод Clk микросхемы MAX7219
		asm("nop"); //пауза в 1 такт
		DRV_CLK_0; //отправим 0 на вывод Clk микросхемы MAX7219
		rg <<= 1; //сдвинем значение переменной rg на 1 бит влево
	} //выйдем из цикла когда i станет равной 7, т.е. когда отправка байта адреса в микросхему MAX7219 будет окончена
	
	for(i=0;i<8;i++) //цикл от 0 до 7 с шагом 1, для побитовой отправки байта данных в микросхему MAX7219
	{
		if((DRV_MOSI[rg_copy] & 0x80)==0x80) //пока rg * 0b1000 0000 > 0, ...
		{
			DRV_MOSI_1; //...отправим 1 на вывод Din микросхемы MAX7219
		}
		else //если же rg * 0b1000 0000 = 0, ...
		{
			DRV_MOSI_0; //отправим 0 на вывод Din микросхемы MAX7219
		}
		
		//создадим тактовый импульс на выводе CLK микросхемы MAX7219
		asm("nop"); //пауза в 1 такт
		DRV_CLK_1; //отправим 1 на вывод Clk микросхемы MAX7219
		asm("nop"); //пауза в 1 такт
		DRV_CLK_0; //отправим 0 на вывод Clk микросхемы MAX7219
		DRV_MOSI[rg_copy] <<= 1; //сдвинем значение переменной DRV_MOSI на 1 бит влево
	}
	//выйдем из цикла когда i станет равной 7, т.е. когда отправка байта данных в микросхему MAX7219 будет окончена
	DRV_CS_1; //отправим «1» на вывод CS микросхемы MAX7219, чтобы завершить процесс передачи адреса и данных
}

//--- инициализация драйвера max7219 ---
void MAX7219_ini(void)
{
	Send_max7219(0x09,0xFF); //(номер регистра, данные) включаем режим BCD code B, для 0-7 разрядов
	Send_max7219(0x0A,0x0A); //DC = 21/32 яркость свечения
	Send_max7219(0x0B,0x06); //число используемых разрядов (0-6 разрядов)
	Send_max7219(0x0C,0x01); //отключаем режим энергосбережения (Shutdown)
	
	for(n=1;n<8;n++)
	{
		Send_max7219(n,0x0F); //гасим все разряды драйвера дисплея V/A до момента вывода информации
	}
}

//--- Функция вывода значений на индикатор вольтметра 000.0v (display_1) ---
void ledprint_1(unsigned int number) //number - величина напряжения Mv
{
	if((float)Mv < 648) //если Mv < 64.8v, то выводим на дисплей результат...
	{
		//Digit[8]=0x0F; //blanking digit_8
		Digit[7]=number/100 ? number/100 : 0x0F; //сотни /гасим незначащий нуль
		Digit[6]=number%100/10; //десятки
		Digit[6]=Digit[6]|0x80; //2^7 вкл децимальную точку в разряде Digit_6
		Digit[5]=number%10; //единицы
	}
	else //...в противном случае, выводим на дисплей 0L (overload)
	{
		//Digit[8]=0x0F; //blanking digit_8
		Digit[7]=0x0F; //blanking digit_7
		Digit[6]=0x00; //<<O>>
		Digit[5]=0x0D; //<<L>>
	}
	for(V=5;V<8;V++)
	{
		DRV_MOSI[V] = Digit[V];
		Send_max7219(V,DRV_MOSI[V]);
	}
}

//--- функция вывода значений на индикатор амперметра 000.0a (display_2) ---
void ledprint_2(unsigned int number) //number - величина измеренного тока Mi
{
	if((float)Mi < 1498) //если Mi < 149.8, то выводим на дисплей результат...
	{
		Digit[4]=number/1000 ? number/1000 : 0x0F; //тысячи /гасим старший незначащий нуль
		Digit[3]=number/1000 || number%1000/100 ? number%1000/100 : 0x0F; //сотни /гасим младший незначащий нуль
		Digit[2]=number%100/10; //десятки
		Digit[2]=Digit[2]|0x80; //вкл децимальную точку в разряде Digit_2
		Digit[1]=number%10; //единицы
	}
	else //...в противном случае, выводим на дисплей 0L (overload)
	{
		Digit[4]=0x0F; //blanking digit_4
		Digit[3]=0x0F; //blanking digit_3
		Digit[2]=0x00; //<<O>>
		Digit[1]=0x0D; //<<L>>
	}
	
	for(I=1;I<5;I++)
	{
		DRV_MOSI[I] = Digit[I];
		Send_max7219(I,DRV_MOSI[I]);
	}
}

//--- инициализация внутреннего ацп ---
void ADC_ini(void)
{
	ADCSRA |= ((1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)); //разрешение использования АЦП, предделитель 16M/128 = 125 кГц
	ADMUX &= ~((1<<REFS1)|(1<<REFS0)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0)); //внешний источник опорного напряжения Aref, сброс mux
}

///--- функция ацп-преобразователя с переменным каналом ch_ADC ---
unsigned int ADC_Conv(unsigned char ch_ADC) //(переменная ch_ADC - канал ацп)
{
	unsigned int adc_value = 0; //сброс регистра хранения результата ацп-преобразования
	unsigned char set_ADMUX = ADMUX; //переменная для выбора канала АЦП
	set_ADMUX &= ((1 << REFS1) | (1 << REFS0)); //оставить неизменным только Vref
	set_ADMUX |= ch_ADC; //выбор канала АЦП ch_ADC
	ADMUX = set_ADMUX;
	_delay_us(10); //пауза 10us
	ADCSRA |= (1 << ADSC); //запуск АЦП
	while ((ADCSRA & (1 << ADSC))); //ожидание окончания ацп-преобразования
	adc_value = ADCW; //10-битный результат ацп-преобразования (из регистров результата ADCL и ADCH)
	return (unsigned int)adc_value; //выйдем из функции и вернём значение (из регистров результата ADCL и ADCH АЦП)
}

//--- функция преобразования результата оцифровки канала mux_n в величину измеренного напряжения ---
float ADCV_Conv(void)
{
	//adc_value - 10-битный результат внутреннего ацп mux_n
	float dt_v; //величина измеренного напряжения [V]
	dt_v=((unsigned int)adcv_value*(Vref))/Kv; //преобразование 10-битного числа типа u_int в величину измеренного напряжения (float)
	return (float)dt_v; //возвращаем величину измеренного напряжения в вольтах [V]
}

	//--- функция преобразования результата оцифровки внешнего ацп в величину измеренного тока ---
	float ADCI_Conv(void)
	{
		float dt_i; //величина измеренного тока [I]
		dt_i=((unsigned int)adci_value*(Vref))/Ki; //преобразование 12-битного числа типа u_int в величину измеренного тока (float)
		return (float)dt_i; //возвращаем величину измеренного тока в амперах [A]
	}

	//--- основная функция с бесконечным циклом ---
	int main(void)
	{
		float dt_v=0; //
		float dt_i=0; //
		PB1_ini(); //инициализация порта PB1
		CS_ini(); //инициализация порта PB2
		timer_ini(); //инициализация pwm_out
		OCR1AH = 0x00; //запись в регистр сравнения...
		OCR1AL = 0x7F; //...числа dec127
		ADC_SPI_ini(); //инициализация шины данных ADC_SPI
		LED_SPI_ini(); //инициализация шины данных LED-драйвера
		MAX7219_ini(); //инициализация MAX7219
		ADC_ini(); //инициализация внутреннего АЦП
		//-------------------------------------------
		while(1)
		{
			adcv_value = ADC_Conv(5); //считаем результат ацп-преобразования канала mux_5
			dt_v = ADCV_Conv(); //преобразуем результат в величину измеренного напряжения [V]
			
			Av=dt_v; //входной параметр сглаживающего фильра
			//фильтр Кальмана Mn=Ks*An + Mn1*(1-Ks)
			Mv = Ks_v * Av + Mv1 * (1-Ks_v); //вычисляем среднее Vavr_out=Mv
			Mv1=Mv; //усредним значение Vavr = Vavr_out
			
			adci_value = Read_3201(); //считаем значение с внешнего ацп 
			dt_i = ADCI_Conv(); //преобразуем результат в величину измеренного тока [A]
			
			Ai=dt_i; //входной параметр сглаживающего фильра
			//фильтр Кальмана Mn=Ks*An + Mn1*(1-Ks)
			Mi = Ks_i * Ai + Mi1 * (1-Ks_i); //вычисляем среднее Iavr_out=Mi
			Mi1=Mi; //усредним значение Iavr = Iavr_out
			
			count++;  //инкрементируем счётчик основного цикла
			if(count==3000) //обновляем показания каждый 3 000 цикл
			{
				count=0; //сброс счётчика основного цикла
				ledprint_1(voltage); //отправим значение в функцию вывода на индикатор вольтметра
				ledprint_2(current); //отправим значение в функцию вывода на индикатор амперметра
			}
		}
	}








 

 

 

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

предварительный тест 3/4-разрядной головы 0,28inch запитаной от переменки 100в через флаерок на top224yn

 

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
Спойлер

клиника "каннатчикова дача" на проводе...

новвейшей гаммра_рэй вылез с левого мерси_боку. головка начала виснуть и тухнуть от помех в режиме CC. причём перезапуск возможен и ресетом на платке. но походу виснет сам видеодрайвер 7219, процессеру по_уй. чего делать хбз. на платке диси модулька +330 >> +24 не было конденсора. поставил полипропилен 1n5 5% 250vac Y2 между +330 и -24. стало лучше, но всё одно тухнет если правой крутейкой снижать ток плавно. начинаеца тряска и свистопляска. думаю wdt как нибудь активизировать, но пока  не знаю как

Спойлер

 

 

слабоумие и отвага

внимание! все трюки выполнены профессионалом! не пытайтесь повторить это дома!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Сила с вами прЕбудет, только в том случае, если корпуса м/сх совпадают. А вообще такие вопросы решают иногда заглядывая в datasheet на микросхемы.
    • 350 стоит по умолчанию, вшито . Я так понял. Я включил . У меня сразу лым пошёл и само жало чуть по чернело но ещё рабочее ... Я научился пользоваться термопарой , измеряю, смотрю по таблице - разница очень большая . Кручу ратио - показания меняются, это гуд. Я думал что 100% - это предел. Но они пошли и дальше ..... Отсюда вопрос может кто знает как меняется температура в какую сторону при прокрутке туда или обратно? Хотя бы примерно?
    • Была у меня книжка (что-то типа помощь сельскому радиолюбителю) и в разделе самодельные источники питания был "рецепт" батарейки: две пластины меди и цинк(алюминий, не могу точно утверждать) между ними помещалась промокашка, предварительно замоченная в солевом растворе и присыпанная с одной стороны толченым углем. Элемент позиционировался как походный и потому промокашку сушили и вкладывали между пластин, а при необходимости ее мочили и элемент начинал работать. Точно не помню технологию и могу где-то ошибаться. Так вот вопрос к сторожилам, может кто  помнит данный "рецепт" или книгу в которой он был описан?
    • Попробуйте магнитолу отремонтировать. Говорят помогает. Иногда спасает поиск профильных специалистов по месту.
    • Офигенный заход... Отлично, не смеем отговаривать, хоть это будет дорого или очень дорого и больно. ШТА? При чем тут 220В? что в вашем понимании "нормальная"? Ну так а в чем проблема? Удивительно, учитывая что это основная задача частотного преобразователя. Куда подходит? Зачем он вообще идет? Параметры это агрегата за вас искать надо? Или удосужитесь дать побольше информации? З.Ы. А нафига реактивному дигателю вообще частотник? https://ru.wikipedia.org/wiki/РД-9
    • А что там анализировать? 1) Монтируется успешно. 2) Запрашивается в функции чтения данные с сектором 0, и перед каждым не успешно найденным файлом. 3) если выкинуть отладку, то один файл находит, но чтение буфера 0 и сам буфер пустой. Где-то косяк с конфигами... Кто работал пожалуйста подскажите, чтобы меньше потратить времени... Можно конечно. Какая разница как название указывать? Через массив символов либо явно указав массив символов в виде строки.
×
×
  • Создать...