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

Вопросы от начинающих по МК


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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

On 4/27/2020 at 4:48 PM, Андрей Протаскин said:

и сами попробуете написать код для LCD дисплея и загрузить его в Proteus

А зачем ему пробовать, он это умеет.

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества. Подробнее>>

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

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

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

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

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

1 час назад, Андрей Протаскин сказал:

чтобы он через тимвивер мне помог

 

2 часа назад, Андрей Протаскин сказал:

почему?

Потому, что я не вижу в этом смысла. Вы не разобрались с тем, почему у вас н мигали светодиоды в предыдущем проекте - то, что в тут сказали в качестве объяснения, ответом быть не может, это заблуждение. А истинная причина проблем осталась неизвестной.

То же самое будет и с новым вопросом: я вам сделаю рабочи пример, вы на него начнете навешивать свою "рюшечки", а когда снова станете в тупик, снова будете просить "через тимвьюер" вам помочь. Я не вижу, что вы стремитесь к пониманию, а дрессировкой я заниматься не хочу. Я могу помочь думать, а не думать - это вы сами справляйтесь.

Вот такое я говно, извините.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

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

Добрий день,
Делаю вольтамперметр с градусником.
Это уже второе устройство. Первым был вольтметр на семисегментных индикаторах удалось добиться хорошей точности.
На этот раз делаю на LCD HD44780, решил попробовать внутреннее опорное напряжение самого МК
Мне показалось что это удобно и с опорным 2,5V можно добатись большей точности  чем от 5V.
AVCC соединил к 5V на AREF конденсатор 0,1 мкф к GND.
Напряжение подаю через потенциометр
Частота 8мгц.
Среда Atmel Studio.
В основном цикле раз в несколько миллисекунд вызываю adc_conv()
Я не понимаю почему но очень большая нелинейность значений с АЦП
например:

1,3v   ADC = 26       (26 / 1,23 = 20)

2,5v   ADC = 72       (72 / 2,5 = 28,8)

4,2v   ADC = 143     (34,04)

5,1v     ADC = 176   (34,5)

6,4v   ADC = 232     (36.25)

14v   ADC = 537      (38,3)

Почему так?

Инициализация ADC:

void adc_init ()
{
	DDRC &= ~(1<<0); //ADC port init PC0
	DDRC &= ~(1<<1); //ADC port init PC1
	DDRC &= ~(1<<2); //ADC port init PC2
	//DDRC &= ~(1<<3); //adc port init PC3
	//DDRC &= ~(1<<4); //adc port init PC4
	//DDRC &= ~(1<<5); //adc port init PC5
	
	ADCSRA |= (1<<ADEN) //ADC enable
	|(1<<ADPS2) |(1<<ADPS1) |(1<<ADPS0) ; //prescaler 128
	
	ADMUX |= (1<<REFS1) |  (1<<REFS0);  //Internal 2.56V Voltage Reference with external capacitor at AREF pin
	
	MCUCR |= (1<<SM0); //ADC Noise Reduction
	
	//ADMUX &= 0b11110000; ADMUX |= 0b00000101;
	ADMUX &= 0b11110000;
}

Функция чтения значений ADC:
 

unsigned int adc_conv (){
	/*
	#define adcinp0 ADMUX &= 0b11110000; //clear last 4 bytes
	#define adcinp1 ADMUX &= 0b11110000; ADMUX |= 0b00000001
	#define adcinp2 ADMUX &= 0b11110000; ADMUX |= 0b00000010
	#define adcinp3 ADMUX &= 0b11110000; ADMUX |= 0b00000011
	#define adcinp4 ADMUX &= 0b11110000; ADMUX |= 0b00000100
	#define adcinp5 ADMUX &= 0b11110000; ADMUX |= 0b00000101
	*/
	/*
	switch (adc_channel){
		case 0 : adcinp0;
		case 1 : adcinp1;
		case 2 : adcinp2;
		case 3 : adcinp3;
		case 4 : adcinp4;
		case 5 : adcinp5;
	}
	*/
	ADCSRA |= (1<<ADSC); //start convert
	while ( ADCSRA & (1<<ADSC) );
	return (unsigned int) ADC;
}
int main(void)
{
	cli();	
	PORTD=0x00;
	DDRD=0xFF;
	//USART_Init (103);
	LCD_ini();
	//clearlcd();
	timer0_init();
	//clearlcd();
	sei();
	clearlcd();
	adc_init();
	//adc_choose_channel(0);
	
	ADMUX &= 0b11110000;
	
	while(1){

		if (ldccadr < 1000){
			ldccadr++;
		}
		else{
			ldccadr = 0;
			setpos(0,0);
			lcd_print_num(adc0);}

		now_time = millis();
		if (now_time - prev_time > 200 ){
			prev_time = now_time;
			adc0 = adc_conv();
		}
	}
}

 

Изменено пользователем Vit@lik
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

35 минут назад, Vit@lik сказал:

почему но очень большая нелинейность значений с АЦП

наверно потому что после переключения канала АЦП нужно сделать паузу для правильного напряжения на CHOLD

 

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

1 час назад, Vit@lik сказал:

Напряжение подаю через потенциометр

не знаю как вы это там подаете... но думаю это будет полезно к прочтению https://forum.cxem.net/index.php?/blogs/entry/317-точный-делитель-из-неточных-резисторов-и-грабли-при-применении-резистивных-делителей/

 

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

 

14 минут назад, IMXO сказал:

не знаю как вы это там подаете


через многооборотный переменный резистор, использую как делитель на нелинейность не влияет,
я им добился чтобы при 24вольтах напряжение на порту было не более 2,5вольта, и больше его не кручу

Изменено пользователем Vit@lik
Ссылка на комментарий
Поделиться на другие сайты

13 минут назад, snn_krs сказал:

Какой номинал у переменного резистора ? Поставьте другой и сделайте теже измерения.

я переминик не крутил.
Я подавал напряжение с лабораторного блока питания.

 

Screenshot_3.png

Изменено пользователем Vit@lik
Ссылка на комментарий
Поделиться на другие сайты

тогда где-то вы обманываете...

24в/2,5в=9.6 - коэф. делителя.  2,5/1023 = 0,00244в одна дискрета АЦП

1,3в/9,6= 0,1354в /0,00244в=55 дискрет в пост1 у вас их почти в два раза меньше 26

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

1 час назад, Vit@lik сказал:

чтобы при 24вольтах напряжение на порту было не более 2,5вольта,

 

7 минут назад, IMXO сказал:

24в/2,5в=9.6 - коэф. делителя

чтобы было не больше 2.5, это примерно а не точно что на входе 24в а на выходе 2.5В.
Я не понимаю почему интерес вызывает имено делитель. У него коэффициент деления будет одинаковым вне зависимости от напряжения 1воль или 24в.
Я думал ошибка может в инициализации АЦП ... в коде ... программная

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

14 часов назад, Vit@lik сказал:

Функция чтения значений ADC:

Вообще говоря, тут как-то очень с переподвыподвертом сделано... Неужели нельзя было так сделать:

unsigned int adc_conv (unsigned char adc_chanel){
	ADMUX = (ADMUX & 0xF0) | (adc_chanel & 0x0F);
	ADCSRA |= (1<<ADSC); //start convert
	while ( ADCSRA & (1<<ADSC) );
	return (unsigned int) ADC;
}

 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

5 часов назад, ARV сказал:

Неужели нельзя было так сделать:

можно конечно, но мне еще не хватает знаний.  Написание таких конструкций отнимает много времени. Поэтому сначала делаю по простому.
Кстати у меня моя функция с таким выбором канала АЦП работала плохо.
это причина почему define і case закомментированные
вписал вашу конструкцию,

unsigned int adc_conv (int adc_chanel){
ADMUX = (ADMUX & 0xF0) | (adc_chanel & 0x0F);
...

работает. спасибо
 

17 часов назад, IMXO сказал:

тогда где-то вы обманываете...

24в/2,5в=9.6 - коэф. делителя.  2,5/1023 = 0,00244в одна дискрета АЦП

1,3в/9,6= 0,1354в /0,00244в=55 дискрет в пост1 у вас их почти в два раза меньше 26

Не знаю в чем была ошибка.
проверил делитель на переменном резисторе по входу  посчитал коэффициент
коефицинт деления 0.105
Написал новий ф-ю
теперь работает спасиобо

void voltmetr_f(){	
	adc0calc = (adc0*0.0025) / 0.105; //num before dot
	
	adc0dotcalc = ( (adc0*0.0025)/0.105 ) *10 ;
	adc0dotcalc = adc0dotcalc % 10; //num after dot
}//vf

Теперь меряет нормально. Ошибка измерений не большая.

Теперь делаю измерения тока (использую ACS712).

Еще есть две проблемы:
1.Почему цифры на экране (HD44780 0802 с Китая) мелькают будто полоски горизонтальные. Особенно если смотреть под углом сверху.

Тут код обновления экрана (частота МК 8Мгц)

		if (ldccadr < 1000)
			{ldccadr++;}
		else{
			ldccadr = 0;
			setpos(0,0);
			lcd_print_num(adc0calc);
			setpos(2,0);
			sendchar(',');
			setpos(3,0);
			lcd_print_num(adc0dotcalc);
			setpos(0,1);
			lcd_print_num(adc1calc);
		}//if acadr
void lcd_print_num (int num) 
{
		static int dig1, dig2, dig3, dig4, val = 0;
		val = num;
		
			if (val < 10){
				sendchar((unsigned char) val +0x30);
				sendchar((unsigned char) " " +0x30);
				sendchar((unsigned char) " " +0x30);
				sendchar((unsigned char) " " +0x30);
			}
			
			else if ((val < 100) && (val > 9)){
				dig1 = val / 10;
				dig2 = val % 10;
...


2.В вольтметра цифра после запятой время от времени то увеличивается то уменьшается на единичку. То есть например
1.21 _1.20 _1.21_1.22_1.21...
Пробовал делать 5-10 измерений а потом искать среднее арифметическое
значительной разницы не заметил

Изменено пользователем Vit@lik
Ссылка на комментарий
Поделиться на другие сайты

ПодскажитеПодскажите, пожалуйста. МК Аттини 45. PB1 и PB2 натраиваю на выход- DDRB |=(1<<1)|(1<<2); . Мне нужно, чтоб на них был ноль. PORTB &=~((1<<1)|(1<<2)); НО в момент подачи питания на микроконтроллер, и именно в момент, когда эти пины устанавливаются на выход, на них проскакивает короткий импульс напряжения. Что это значит и как это победить?

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

6 часов назад, Гость Жека сказал:

НО в момент подачи питания на микроконтроллер, и именно в момент, когда эти пины устанавливаются на выход, на них проскакивает короткий импульс напряжения. Что это значит и как это победить?

Если это переходный процесс при запуске МК, то вряд ли что-то простое можно посоветовать. Для начала покажите схему реального устройства, где этот всплеск проявляется, а там посмотрим, как быть.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

@ARV Здравствуйте! Может давайте я вам скину тимвивер, а то я не понимаю в LCD дисплее, вроде же код написал правильно,а белый экран и все.

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

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

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...