Easyelectronics.ru

Электроника для всех
Текущее время: 16 май 2022, 23:42

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 17:00 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
вот смотрел видео https://www.youtube.com/watch?v=9kzu_eoKQKo&index=1&list=PLVva02RumD1xnXxx0Qo29ibgQAHtev1O- и там у него когда он пишет команду ADC_GetConversion он просто пишет ADC и у него все всплывают контекстные окошки и там все имеющиеся функции и т.п. Я повторяю теже движения но у меня ничего не всплывает.Может это какие то горячие клавиши нада нажимать,подскажет кто?
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 17:10 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
и еще вопрос почему у меня значения в минус уходят?Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 17:35 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
rakka писал(а):
Может это какие то горячие клавиши нада нажимать,подскажет кто?


Стоят ли галки Tools->Options->Code completion -> Auto Popup Completion Window ?
Для ручного вызова Ctrl+ Space , после набора нескольких первых символов (даже одного)



Код:
в минус уходят?

Вангую - переменная просто char , не unsigned . Знаменитые грабли нубов...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 19:58 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
еще вопрос.чето я не очень въезжаю как конвертировать значения АЦП в реальные вольты.вот например у меня программа меряет канал АН0. мне нужно мерять напругу 0-14В.я поставил делитель из резюков,т.е. при максимальном 14вольтном напряжении через делитель на вход АЦП попадает ровно 5 вольт как и надо. и когда я снижаю напряжение ниже 14 вольт естественно через делитель также напруга снижается от 5 вольт и ниже.так.у меня выдает АЦПшник значения от 0 до 1023 - ну то есть я так понимаю 10разрядный АЦП.вот теперь как мне реализовать преобразование этих значений 0-1023 в реальные вольты перед делителем.то есть мне ж не пятивольтовую напругу нада мерять а 14 вольтовую.так вот как согласовать.понятен вопрос?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:27 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Я так понимаю - вы хотите привести выдаваемые данные ADC в "попугаях" к реальным .
1) Какой контроллер?
2) VREF чему равен ?

Vin = res_ADC*(VREF/1024); // вычисляем напряжение на входе ADC
Vreal = Vin*k ; //где k коэффициент резистивного делителя


Код:
Vreal =k*(res_ADC*(Vref/1024));


Последний раз редактировалось dosikus_2 06 июл 2015, 20:43, всего редактировалось 7 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:33 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
res_ADC = ADC_GetConversion (channel_AN0);
вот сюда приходит значение от 0-1023. получается если входное напряжение 14 вольт то есть 14000мВ разделить на 1024 мы получим коэффициент 13.67.
вот теперь вопрос как правильно перемножить такие значения?
вот res_ADC = ADC_GetConversion (channel_AN0); в переменную к примеру пришло значение 930 что равно реальному напряжению 930*13.67=12713мВ примерно правильно я проверил через протеус.
теперь как правильно реализовать вот такое выражение с учетом типов переменным и тд и тп (res_ADC = 13,67 * ADC_GetConversion (channel_AN0);)
напрямую чепуха получается перемножать ибо видимо типы переменным несовпадают ведь коэффициент с точкой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:35 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
dosikus_2 писал(а):
Я так понимаю - вы хотите привести выдаваемые данные ADC в "попугаях" к реальным .
1) Какой контроллер?
2) VREF чему равен ?

16F1827
Vref = 5V


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:38 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Смотрите выше - обновил свой пост.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:44 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
а что за коэф резистивного делителя?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:45 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
rakka , это тот делитель что делит ваши 14v до 5v на входе ADC . В вашем случае 14/5 = 2,8 ...


Последний раз редактировалось dosikus_2 06 июл 2015, 20:47, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:47 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
я понял но как коэф взять?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:47 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
щас попробую


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:50 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
Vreal =k*(res_ADC*(Vref/1024)); проблемы в то что я напишу вот так не будет? вреал = 2.8 * (рез_АДЦ*(Вреф/1024)) я имею в виду число с плавающей точкой


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:50 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Вы не находите что вам еще рано заниматься МК ?
Изучите сначала основы схемотехники , а то что вы сейчас спрашиваете вообще школьный курс физики.
http://g.zeos.in/?q=%D1%80%D0%B5%D0%B7% ... 0%BB%D1%8C
https://ru.wikipedia.org/wiki/%D0%94%D0 ... 0%B8%D1%8F


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:51 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
rakka, можно все считать в целых числах .


Последний раз редактировалось dosikus_2 06 июл 2015, 20:55, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:54 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
voltage = (14/5) * (res_ADC * (5/1024));
printf ("Voltage_level_of_BATTERY = %d\r\n", voltage);
__delay_ms (100);
в результате дает 0.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 20:57 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
rakka, вы приведите сначала в милливольты .
Не 14 а 14000 не 5 а 5000 .


Последний раз редактировалось dosikus_2 06 июл 2015, 21:06, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 21:04 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
опять не получается.результат от реального и рядом не стоял.тот коэфициент который я дал 13,67 он очень близкий результат давал,очень очень.ты мне скажи как такое выражение с учетом преобразования типов там и вообще в этом компиляторе число с точкой писать запятую или точку.
то есть вот такое преобразование дает что надо Vreal = 13.67 * res_ADC


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 21:14 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Проще умножить на кратное 10 чем возиться с плавучкой :
Переменные должны быть 16 разрядные
5000/1024 = 4 // вес 1 разряда в милливольтах
res_ADC * 4 // значение на входе ADC в милливольтах
14/5 =2,8 - умножим на 10 потом результат разделим на 10
В итоге Vreal= ((res_ADC*4)*28)/10 - получаем результат в милливольтах.

Это лишь объяснения "на пальцах" - для осознания. Но рабочее.

Гы... и один фиг имеем переполнение ... :))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 22:18 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Сколько знаков после запятой надо?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 22:46 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
Одного знака достаточно.да мне в принципе значения в милливольтах хватит.ну эта последняя формула для конвертации хватит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 06 июл 2015, 23:03 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Да тут дело в том что при (res_ADC*4)*28 уже получаем максимальное 114 688 что больше uint16_t (16 разрядов)
Да и значение 1 разряда -4 , притянуто за уши к целому . Должно быть 4.8.

Вообщем так , если нужны только десятые :
Код:
uint16_t temp,res_ADC;
temp= (res_ADC*4)/10; // получаем промежуточный результат  - чтобы избежать переполнения
temp=temp*34;     // получаем результат в милливольтах + учитываем то что потеряли (4,8 )

В итоге
Код:
Vreal = 34*((res_ADC*4)/10);



Должно работать . Пробуйте , отписывайтесь...

Хотя может это будет ближе
Код:
Vreal = 27*((res_ADC*5)/10);


Этого должно хватить , и все эти "магические" финты лишь для того чтобы код не разбух .
С флоат все будет намного хуже.
Ну а далее обсудим проблему с выводом на дисплей ... :))))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 07 июл 2015, 01:09 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
Так какую мне итоговую формулу лучше выбрать верхнюю или нижнюю или обе проверить какие результаты ближе к реальным?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 07 июл 2015, 01:44 
Заглядывает иногда

Зарегистрирован: 22 июн 2014, 14:36
Сообщения: 197
Погрешность великовата при коэфициенте 34 и составляет примерно 80мВ. А при коэф 27 вообще далеко и при подгонке 34 самый близкий,пробовал значения рядом 33 вообще далеко.что неужели формулы поточнее нету?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по горячим клавишам и всплываниям
СообщениеДобавлено: 07 июл 2015, 09:19 
Старожил

Зарегистрирован: 26 авг 2014, 10:34
Сообщения: 774
Vin = (res_ADC*5000)/1024;
можно подсократить - 5000 и 1024 делятся на 8:
Vin = (res_ADC*625UL)/128;
но требуется long умножение - на PIC16F676 занимает чуть более 100 слов
Код:
    while (1)
    {
        adcw = read_adc();
        result = (unsigned int) ((adcw * 625UL) / 128);
        Bin2bcd(result / 10);
        delay_ms(100);
    }

Вложение:
PIC16F676_voltm.png
PIC16F676_voltm.png [ 31.17 Кб | Просмотров: 5306 ]

результат компиляции (с настройками и индикацией):
Цитата:
Memory Summary:
Program space used 166h ( 358) of 400h words ( 35.0%)
Data space used 22h ( 34) of 40h bytes ( 53.1%)
EEPROM space used 0h ( 0) of 80h bytes ( 0.0%)
Configuration bits used 1h ( 1) of 1h word (100.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)

Mplab X + XC8 C Compiler (PRO Mode) V1.10


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB